diff --git a/.babelrc b/.babelrc deleted file mode 100644 index dada780..0000000 --- a/.babelrc +++ /dev/null @@ -1,14 +0,0 @@ -{ - "presets": [ - [ - "@babel/preset-env", - { - "useBuiltIns": "usage", - "corejs": 2 - } - ] - ], - "plugins": [ - "@babel/syntax-dynamic-import" - ] -} \ No newline at end of file diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..8c52ff9 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,12 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +trim_trailing_whitespace = false diff --git a/.eslintrc b/.eslintrc deleted file mode 100644 index 546a922..0000000 --- a/.eslintrc +++ /dev/null @@ -1,9 +0,0 @@ -{ - "parserOptions": { - "ecmaVersion": 2017, - "sourceType": "module" - }, - "env": { - "es7": true - } -} \ No newline at end of file diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..6313b56 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +* text=auto eol=lf diff --git a/.github/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md index 5950883..dab93cd 100644 --- a/.github/CODE_OF_CONDUCT.md +++ b/.github/CODE_OF_CONDUCT.md @@ -17,23 +17,23 @@ diverse, inclusive, and healthy community. 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, +- 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 +- 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 +- 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 +- 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 +- Other conduct which could reasonably be considered inappropriate in a professional setting ## Enforcement Responsibilities @@ -106,7 +106,7 @@ 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 +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 @@ -125,4 +125,4 @@ enforcement ladder](https://github.com/mozilla/diversity). 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. \ No newline at end of file +https://www.contributor-covenant.org/translations. diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md deleted file mode 100644 index 5a3c056..0000000 --- a/.github/CONTRIBUTING.md +++ /dev/null @@ -1,20 +0,0 @@ -# Contributing to AdminKit - -If you're reading this, you're awesome! Thank you for helping us make this project great. Here are a few guidelines that will help you along the way. - -## Submitting a Pull Request - -* Include **screenshots** or animated GIFs in your pull request whenever possible -* Use the **present** tense ("Add feature" not "Added feature") -* Use the **imperative** mood ("Move cursor to..." not "Moves cursor to...") -* Limit the first line to 72 characters or fewer -* Reference issues and pull requests liberally - -## Try your changes - -When modifying any of the files located in the `/src` folder, you will need to recompile the assets. You can do this by running: - -``` -npm install -npm run build -``` \ No newline at end of file diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index b739308..f4b9789 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1 +1 @@ -custom: "https://adminkit.io/pricing/" \ No newline at end of file +custom: "https://adminkit.io/pricing/" diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 8adea9b..a521341 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -30,7 +30,7 @@ Steps: - Theme version: -- Free or paid version: +- Free or paid version: - Browser: - OS: - Screen size: diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 8fbc964..55f8153 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -2,4 +2,4 @@ blank_issues_enabled: false contact_links: - name: Support ❔ url: https://adminkit.io/support/ - about: I need support with AdminKit. \ No newline at end of file + about: I need support with AdminKit. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index afefc70..0e2f75e 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -22,4 +22,4 @@ labels: enhancement \ No newline at end of file +--> diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 23ce187..06d48b5 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,3 +1,3 @@ -- [ ] I have followed (at least) the [PR section of the contributing guide](https://github.com/adminkit/adminkit/blob/HEAD/.github/CONTRIBUTING.md#submitting-a-pull-request). +- [ ] I have followed (at least) the [PR section of the contributing guide](https://github.com/adminkit/adminkit/blob/HEAD/CONTRIBUTING.md#branches-and-prs). diff --git a/.github/editions/html.svg b/.github/editions/html.svg new file mode 100644 index 0000000..6d10945 --- /dev/null +++ b/.github/editions/html.svg @@ -0,0 +1,7 @@ + +AdminKit for HTML + + + +HTML + diff --git a/.github/editions/nextjs.svg b/.github/editions/nextjs.svg new file mode 100644 index 0000000..c3c0708 --- /dev/null +++ b/.github/editions/nextjs.svg @@ -0,0 +1,7 @@ + +AdminKit for Next.js + + + +Next.js + diff --git a/.github/editions/react.svg b/.github/editions/react.svg new file mode 100644 index 0000000..10d09a6 --- /dev/null +++ b/.github/editions/react.svg @@ -0,0 +1,7 @@ + +AdminKit for React + + + +React + diff --git a/.github/screenshots/dashboard-dark.webp b/.github/screenshots/dashboard-dark.webp new file mode 100644 index 0000000..841a6e2 Binary files /dev/null and b/.github/screenshots/dashboard-dark.webp differ diff --git a/.github/screenshots/dashboard-light.webp b/.github/screenshots/dashboard-light.webp new file mode 100644 index 0000000..6e64bc6 Binary files /dev/null and b/.github/screenshots/dashboard-light.webp differ diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..9942a3d --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,52 @@ +name: CI + +on: + pull_request: + push: + branches: [main] + +env: + LEFTHOOK: "0" + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + - uses: actions/setup-node@v5 + with: + node-version-file: .nvmrc + cache: npm + - run: npm ci + - run: npm run lint + + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + - uses: actions/setup-node@v5 + with: + node-version-file: .nvmrc + cache: npm + - run: npm ci + - run: npm run build + + commitlint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + with: + fetch-depth: 0 + - uses: actions/setup-node@v5 + with: + node-version-file: .nvmrc + cache: npm + - run: npm ci + - if: github.event_name == 'pull_request' + run: npx --no -- commitlint --from ${{ github.event.pull_request.base.sha }} --to ${{ github.event.pull_request.head.sha }} --verbose + - if: github.event_name == 'push' + run: npx --no -- commitlint --last --verbose diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..88cc566 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,26 @@ +name: Release + +on: + push: + tags: ["v*"] + +env: + LEFTHOOK: "0" + +jobs: + release: + runs-on: ubuntu-latest + permissions: + contents: write + steps: + - uses: actions/checkout@v5 + - uses: actions/setup-node@v5 + with: + node-version-file: .nvmrc + cache: npm + - run: npm ci + - run: npm run build + - run: cd dist && zip -r "../adminkit-${GITHUB_REF_NAME}.zip" . + - uses: softprops/action-gh-release@v2 + with: + files: adminkit-${{ github.ref_name }}.zip diff --git a/.gitignore b/.gitignore index 34ae63d..db0a46d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,9 @@ # dependencies /node_modules -/package-lock.json /yarn.lock # production /dist -/_builder # misc .DS_Store diff --git a/.nvmrc b/.nvmrc index 3c79f30..a45fd52 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -18.16.0 \ No newline at end of file +24 diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..9c218f5 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,8 @@ +dist +public +node_modules +package-lock.json +src/js/modules/vector-maps +# Handlebars templates break Prettier's HTML parser +*.hbs +src/pages/*.html diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..dcdfde4 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,5 @@ +{ + "trailingComma": "es5", + "semi": true, + "singleQuote": false +} diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..a709ce2 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,35 @@ +# AdminKit + +Free Bootstrap 5 admin template, published to npm as `@adminkit/core`. + +## Commands + +- `npm run dev`: dev server on http://localhost:8080 +- `npm run build`: build into `dist/`; `npm run preview` serves it +- `npm run lint`: ESLint, Prettier, the icon check and the stats check; must pass +- `npm run format`: Prettier write +- `npm run stats`: regenerate `src/data/stats.json` and the README counts +- `npm run stats:sync -- --pro ../adminkit-pro`: refresh PRO's counts; run it before every release + +## Layout + +- `src/pages/*.html` are Handlebars pages with YAML frontmatter; `src/layouts` and `src/partials` are partials, `src/helpers` helpers, `src/data` global data. +- `src/js` and `src/scss` build to `js/app.js` and `css/app.css`. Keep the output names: the pages and the npm package use them. `js/app.js` stays one self-contained file (no dynamic imports, no chunks); `src/types/app.d.ts` types its globals. +- `src/js/head.js` is a blocking script in ``: it sets the color mode before the first paint and must not import anything. + +## Rules + +- Only CSS custom properties get a prefix: `--ak-*`, like Bootstrap's `--bs-*`. Classes, Sass variables, functions and mixins never do. +- Light and dark mode: colors that follow the mode use custom properties (`var(--bs-body-color)`, `var(--ak-surface-bg)`); dark-only overrides go in `@include color-mode(dark) { ... }` at the end of the partial. Check both modes. +- Icons are Lucide, `` with canonical names from lucide.dev. Add a new icon to `src/js/modules/icons.js`, or lint fails. +- Page scripts go in `{{#push "scripts"}}` at the end of the page or of the widget's partial, inside `DOMContentLoaded`. Charts and maps use `adminkit.chartjs("#id", function(theme) { ... })` and `adminkit.vectorMap(...)`; read colors from `theme`. +- JavaScript that enhances markup registers it with `mount(selector, setup)` (`src/js/modules/mount.js`), so markup added later works too. +- Counts come from `src/data/stats.json` (`{{formatNumber stats.pages.count}}`). Never type a count by hand. +- Motion: write transitions with `@include transition(...)`; under reduced motion nothing moves (a fade is fine). Cards inside `.reveal-cards` and `.reveal` elements fade in on scroll without extra code. +- Layout shift stays 0: reserve the final size of anything a script draws (`{{> skeleton }}`), give images `width` and `height`. +- Accessibility: WCAG 2.2 AA in both modes. Text colors come from `readable($color, $background)`, text on a fill from `text-on($background)`. Icon-only buttons get an `aria-label`; card titles are `h2.card-title`. + +## Conventions + +- Conventional Commits, see `CONTRIBUTING.md`; lefthook enforces them. Releases follow "Releasing" there. +- A PR that changes behaviour adds a short, user-facing line under `Unreleased` in `CHANGELOG.md`, like "Add pricing page (/pages-pricing.html)" or "Upgrade dependencies". diff --git a/CHANGELOG.md b/CHANGELOG.md index 48cb7a0..8890b4b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,13 +2,45 @@ All notable changes to this project will be documented in this file. -## [3.5.0] 2026-08-01 +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +### Added + +- Social preview image: `public/og-image.png` (1200x630) with its `og:image` and `twitter:card` tags in `src/partials/site-meta.hbs`. Change the domain in the image URL to yours. + +### Changed + +- Upgrade dependencies + +## [4.1.0] - 2026-10-31 + +- Drop the `ak-` prefix from classes, Sass variables and functions (`.ak-reveal` → `.reveal`); the old names work until v5 +- Upgrade dependencies + +## [4.0.0] - 2026-10-28 + +- Add dark mode with light, dark and auto color modes (`data-bs-theme`) +- Add pricing, invoice, 404, 500, alerts, modals and tables pages +- Add off-canvas sidebar on mobile +- Add subtle animations (respects reduced motion) +- Redesign Analytics dashboard and profile pages +- Replace Feather icons with Lucide (`data-feather` → `data-lucide`) +- Replace flatpickr with Vanilla Calendar Pro +- Improve color contrast to meet WCAG 2.2 AA +- Migrate to Vite v8 +- Upgrade to Chart.js v4 and SimpleBar v6 +- Upgrade dependencies + +## [3.5.0] - 2026-08-01 - Upgrade to Webpack v5.109.2 - Upgrade to Bootstrap v5.3.8 - Upgrade dependencies -## [3.4.0] 2023-06-08 +## [3.4.0] - 2023-06-08 - Add error catching to JavaScript modules - Update browserslist @@ -16,21 +48,21 @@ All notable changes to this project will be documented in this file. - Upgrade to Bootstrap v5.3.0 - Upgrade dependencies -## [3.3.0] 2022-08-10 +## [3.3.0] - 2022-08-10 - Fix table in card styling issues - Upgrade to Webpack v5.74.0 - Upgrade to Bootstrap v5.2.0 - Upgrade dependencies -## [3.2.0] 2022-02-04 +## [3.2.0] - 2022-02-04 - Migrate to Dart Sass - Upgrade to Webpack v5.68.0 - Upgrade to Bootstrap v5.1.3 - Upgrade dependencies -## [3.1.0] 2021-09-29 +## [3.1.0] - 2021-09-29 - Replace OptimizeCssAssetsPlugin with CssMinimizerPlugin - Remove HardSourceWebpackPlugin @@ -38,7 +70,7 @@ All notable changes to this project will be documented in this file. - Upgrade to Bootstrap v5.1.1 - Upgrade dependencies -## [3.0.2] 2021-05-19 +## [3.0.2] - 2021-05-19 - Add file structure to README.md - Add icons to dashboard (/index.html) @@ -48,13 +80,13 @@ All notable changes to this project will be documented in this file. - Various visual changes - Upgrade dependencies -## [3.0.1] 2021-05-17 +## [3.0.1] - 2021-05-17 - Fix Simplebar bug on auth pages - Upgrade to bootstrap@5.0.1 - Upgrade dependencies -## [3.0.0] 2021-05-12 +## [3.0.0] - 2021-05-12 - Set Chart.js font family - Remove Moment.js dependency @@ -63,13 +95,13 @@ All notable changes to this project will be documented in this file. - Upgrade to bootstrap@5.0.0 - Upgrade dependencies -## [2.3.0] 2021-04-05 +## [2.3.0] - 2021-04-05 - Add CDN to `README.md` - Upgrade to bootstrap@5.0.0-beta3 - Upgrade dependencies -## [2.2.0] 2021-02-25 +## [2.2.0] - 2021-02-25 - Replace Inter font with CDN - Replace Font Awesome icons with Feather @@ -79,7 +111,7 @@ All notable changes to this project will be documented in this file. - Upgrade to bootstrap@5.0.0-beta2 - Upgrade dependencies -## [2.1.0] 2020-11-07 +## [2.1.0] - 2020-11-07 - Add Sign In page - Add Sign Up page @@ -87,12 +119,12 @@ All notable changes to this project will be documented in this file. - Upgrade to bootstrap@5.0.0-alpha2 - Upgrade dependencies -## [2.0.1] 2020-09-14 +## [2.0.1] - 2020-09-14 - Fix console error on auth pages (#6) - Upgrade dependencies -## [2.0.0] 2020-09-04 +## [2.0.0] - 2020-09-04 - Upgrade to Bootstrap 5 - Drop jQuery as dependency @@ -100,16 +132,16 @@ All notable changes to this project will be documented in this file. - Replace tempusdominus with flatpickr - Upgrade dependencies -## [1.0.2] 2020-07-26 +## [1.0.2] - 2020-07-26 - Fix issue with dropdown overflow on mobile - Upgrade dependencies -## [1.0.1] 2020-05-25 +## [1.0.1] - 2020-05-25 - Upgrade to latest Bootstrap (4.5.0) - Upgrade dependencies -## [1.0.0] 2020-03-21 +## [1.0.0] - 2020-03-21 - Initial release diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..43c994c --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1 @@ +@AGENTS.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..05423f9 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,61 @@ +# Contributing to AdminKit + +If you're reading this, you're awesome! Thank you for helping us make this project great. Here are a few guidelines that will help you along the way. + +## Setup + +Node 24 is required. The version is pinned in `.nvmrc`. + +```sh +nvm use +npm ci +npm run dev +``` + +`npm run dev` serves the pages on http://localhost:8080 and reloads on changes to `src/`. `npm run build` writes the production build to `dist/` (gitignored); `npm run preview` serves it. `npm ci` also installs the git hooks described below. + +## Branches and PRs + +- Branch from `main` using a short prefixed name: `feat/`, `fix/`, `docs/`, `chore/` +- Open the pull request against `main` +- CI must be green before a PR is merged: lint, build and commitlint all run on every PR +- Include **screenshots** or animated GIFs in your pull request for visual changes +- Reference issues and pull requests liberally + +## Commits + +Commit messages follow [Conventional Commits](https://www.conventionalcommits.org/): `type(scope): subject`. + +- Allowed types come from [`@commitlint/config-conventional`](https://github.com/conventional-changelog/commitlint/tree/master/%40commitlint/config-conventional): `build`, `chore`, `ci`, `docs`, `feat`, `fix`, `perf`, `refactor`, `revert`, `style`, `test` +- Allowed scopes: `free`, `pro`, `docs`, `web`, `build`, `deps` +- Use the **imperative** mood in the subject ("Add feature" not "Added feature") and keep it under 100 characters + +Examples: + +``` +feat(free): add offcanvas sidebar variant +fix(free): keep dropdown inside viewport on mobile +chore(deps): upgrade bootstrap to 5.3.8 +``` + +[lefthook](https://github.com/evilmartians/lefthook) enforces this locally. The `commit-msg` hook runs commitlint on your message and the `pre-commit` hook runs ESLint and Prettier on staged files. Run `npm run lint` to check the whole repo and `npm run format` to fix formatting. + +## Counts + +Page, plugin and icon counts are generated, never typed: `npm run stats` updates `src/data/stats.json` and the README table, and `npm run lint` fails while either is stale. When AdminKit PRO's pages, plugins or icons change, and before every release, refresh the PRO snapshot with `npm run stats:sync -- --pro ../adminkit-pro` and commit `src/data/editions/pro.json`. + +## Changelog + +A PR that changes behaviour adds a line under `Unreleased` in `CHANGELOG.md`. The file follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). Pure refactors, formatting and tooling changes that users never notice don't need an entry. Keep each line short, imperative and user-facing, like the released entries ("Add pricing page (/pages-pricing.html)", "Upgrade to Bootstrap v5.3.8"); one line per change a template user would notice, no internal tooling and no explanations. Notable dependency majors get "Upgrade to X vN", the rest "Upgrade dependencies". + +## Releasing + +Release AdminKit PRO first, so its counts are final, then this repository. A fix is a patch release; new features or names that keep the old ones working are a minor; anything that breaks a page or a name is a major. + +1. Branch `chore/release-` from `main`. +2. Run `npm version --no-git-tag-version`, then `npm run stats:sync -- --pro ../adminkit-pro` (it runs `npm run stats` too). +3. In `CHANGELOG.md`, add `## [] - ` right under `## [Unreleased]`, so the unreleased lines move into it. +4. Commit as `chore(release): `, open a PR titled `chore(release): ` and squash-merge it (commitlint checks the squashed subject on `main`). +5. Tag the merge commit and push the tag: `git tag -a v -m "AdminKit " && git push origin v`. The Release workflow builds `dist/` and attaches `adminkit-v.zip` to a GitHub release; name it `AdminKit ` and paste the version's changelog lines as its notes. +6. Publish to npm from the tagged commit: `npm publish` (`prepublishOnly` builds first). +7. In the website repository, refresh the docs previews: `npm run preview:sync -- --free ../adminkit --pro ../adminkit-pro`. diff --git a/README.md b/README.md index bea434d..40a8010 100644 --- a/README.md +++ b/README.md @@ -8,9 +8,15 @@ AdminKit is a free & open-source HTML dashboard & admin template based on Bootstrap 5.

+

+ AdminKit for HTML (this repository) + AdminKit for React + AdminKit for Next.js +

+

NPM version - License + License GitHub issues open GitHub issues closed Live Demo @@ -20,129 +26,91 @@

## Preview -A professional Admin & Dashboard template based on Bootstrap 5 that comes with hundreds of UI components, forms, tables, charts, pages and icons. AdminKit **does not require jQuery** and neither does one of the 3rd party libraries AdminKit is using. [Open demo](https://demo.adminkit.io/). -AdminKit Demo +A professional admin and dashboard template based on Bootstrap 5, with dashboards, pages, forms, tables, charts and icons. Free and MIT-licensed. [Open the demo](https://demo.adminkit.io/). + + + + The AdminKit Analytics dashboard: visitors, page views, bounce rate and session duration, monthly visitors, browser usage, a calendar, a real-time visitors map, top pages and traffic sources + ## Features -* **Customizable:** You don't need to be an expert to customize AdminKit. Our code is very readable and well documented. -* **Fully Responsive:** With mobile, tablet & desktop support it doesn't matter what device you're using. AdminKit is responsive in all browsers. -* **Cross-Browser:** Our themes are working perfectly with Chrome, Firefox, Safari, Opera, and Edge. We're working hard to support them. -* **Clean Code:** We strictly follow Bootstrap's guidelines to make your integration as easy as possible. All code is handwritten. -* **No jQuery:** AdminKit, and all third-party libraries used in the admin template, do not require jQuery as a dependency. -* **Regular Updates:** From time to time you'll receive an update containing new components, improvements, and bugfixes. +- **Dark mode:** light, dark and auto, built on Bootstrap's color modes. +- **No jQuery:** AdminKit and every plugin it uses run on plain JavaScript. +- **Accessible:** targets WCAG 2.2 AA in light and dark mode. +- **Fully responsive:** the sidebar turns into an off-canvas sheet on small screens. +- **Any framework:** plain HTML, CSS and JavaScript, with setup guides for React, Vue, Angular, Laravel and more. +- **npm and CDN:** `@adminkit/core` ships TypeScript declarations and is safe to import during server-side rendering. +- **Modern tooling:** Vite, Handlebars pages and Sass. -## Quick start +## AdminKit and AdminKit PRO + +Need more? [AdminKit PRO](https://adminkit.io/pricing/) adds more pages, dashboards and plugins, AI features and a settings panel. -### Download + -* Clone this repo `git clone https://github.com/adminkit/adminkit.git` -* [Download from GitHub](https://github.com/adminkit/adminkit/archive/master.zip) -* [Download from Website](https://adminkit.io/#download) +| | AdminKit | [AdminKit PRO](https://adminkit.io/pricing/) | +| --------------------- | ------------- | -------------------------------------------- | +| Pages | 20 | 53 | +| Dashboards | 1 | 5 | +| Plugins | 4 | 11 | +| Icons | 2,015 | 4,178 | +| Sidebar color schemes | 1 | 3 | +| Dark mode | ✔ | ✔ | +| AI features | | ✔ | +| Settings panel | | ✔ | +| Support | GitHub issues | Email | +| License | MIT | Commercial | -### Build tools + -The theme includes a custom Webpack file, which can be used to quickly recompile and minify theme assets while developing or for deployment. You'll need to install Node.js before using Webpack. +## Quick start -Once Node.js is installed, run npm install to install the rest of AdminKit's dependencies. All dependencies will be downloaded to the node_modules directory. +Clone the repository and install the dependencies (Node.js 24): ```sh +git clone https://github.com/adminkit/adminkit.git +cd adminkit npm install ``` -Now you're ready to modify the source files and generate new dist/ files. AdminKit uses webpack-dev-server to automatically detect file changes and start a local webserver at http://localhost:8080. +Start the development server on http://localhost:8080: ```sh npm start ``` -Compile, optimize, minify and uglify all source files to dist/ folder: +Build the production files into `dist/`: ```sh npm run build ``` -## CDN support +You can also [download a zip](https://adminkit.io/#download), or install the built files from npm (`npm install @adminkit/core`) or the unpkg CDN; see [Download](https://adminkit.io/bootstrap/docs/getting-started/download/). -All files included in the `@adminkit/core` npm package are available over a CDN. +## Frameworks -**CSS:** +Want a ready-made app? AdminKit also comes as [AdminKit for React](https://github.com/adminkit/adminkit-react) ([demo](https://react-demo.adminkit.io/)) and [AdminKit for Next.js](https://github.com/adminkit/adminkit-nextjs) ([demo](https://nextjs-demo.adminkit.io/)), free and MIT-licensed like this template. -```html - -``` +Setup guides for [HTML](https://adminkit.io/bootstrap/docs/frameworks/html/), [Laravel](https://adminkit.io/bootstrap/docs/frameworks/laravel/), [Django](https://adminkit.io/bootstrap/docs/frameworks/django/), [Rails](https://adminkit.io/bootstrap/docs/frameworks/rails/), [Symfony](https://adminkit.io/bootstrap/docs/frameworks/symfony/), [React](https://adminkit.io/bootstrap/docs/frameworks/react/), [Next.js](https://adminkit.io/bootstrap/docs/frameworks/nextjs/), [Vue](https://adminkit.io/bootstrap/docs/frameworks/vue/), [Nuxt](https://adminkit.io/bootstrap/docs/frameworks/nuxt/), [Angular](https://adminkit.io/bootstrap/docs/frameworks/angular/), [SvelteKit](https://adminkit.io/bootstrap/docs/frameworks/sveltekit/) and [Astro](https://adminkit.io/bootstrap/docs/frameworks/astro/). -**Javascript:** +## Documentation -```html - -``` +[Quick start](https://adminkit.io/bootstrap/docs/getting-started/quick-start/), [file structure](https://adminkit.io/bootstrap/docs/getting-started/contents/), [customization](https://adminkit.io/bootstrap/docs/getting-started/customization/), [dark mode](https://adminkit.io/bootstrap/docs/getting-started/dark-mode/), [icons](https://adminkit.io/bootstrap/docs/icons/lucide-icons/), [animations](https://adminkit.io/bootstrap/docs/getting-started/animations/), [accessibility](https://adminkit.io/bootstrap/docs/getting-started/accessibility/) and every component are documented at [adminkit.io/docs](https://adminkit.io/bootstrap/docs/). -## File structure -The package contains the following directories and files: - -``` -adminkit/ -├── .babelrc -├── .eslintrc -├── .nvmrc -├── README.md -├── package.json -├── postcss.config.js -├── webpack.config.js -├── src/ -│ ├── fonts/ -│ ├── img/ -│ ├── js/ -│ │ ├── modules/ -│ │ └── app.js -│ └── scss/ -│ ├── 1-variables/ -│ ├── 2-mixins/ -│ ├── 3-components/ -│ ├── 4-utilities/ -│ ├── 5-vendor/ -│ └── app.scss -└── dist/ - ├── css/ - │ └── app.css - └── js/ - └── app.js -``` - -## Browser Support +## Browser support | Edge
Edge | Firefox
Firefox | Chrome
Chrome | Safari
Safari | iOS Safari
iOS Safari | -| --------- | --------- | --------- | --------- | --------- | -| last version| last 2 versions| last 2 versions| last 2 versions| last 2 versions +| --------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | +| 111+ | 114+ | 111+ | 16.4+ | 16.4+ | ## Resources -* [Demo](https://demo.adminkit.io/) -* [Website](https://adminkit.io/) -* [Documentation](https://adminkit.io/docs) -* [Support](https://adminkit.io/support/) -* [Affiliate Program](https://adminkit.io/affiliate-program) - -## Bugs and feature requests - -Found a bug or have a feature request? [Please open a new issue](https://github.com/adminkit/adminkit/issues/new). - -## Upgrade to PRO -Get more power with AdminKit PRO, a premium variant of AdminKit, featuring hundreds of UI components, forms, tables, charts, pages, and icons. - -| Free Version | [AdminKit PRO](https://adminkit.io/pricing/) | -|---------------------|----------------------------------------------| -| 15 Demo Pages | ✔ 45+ Demo Pages | -| 1 Plugin | ✔ 10+ Plugins | -| 1 Color Scheme | ✔ 3 Color Schemes | -| | ✔ All Bootstrap 5 Components | -| | ✔ Dark Mode 🌙 | -| | ✔ Compact Sidebar | -| | ✔ Calendar | -| | ✔ Advanced Forms | -| | ✔ Drag and Drop | -| | ✔ Toast Notifications | -| | ✔ WYSIWYG Editors | -| | ✔ Premium Support | +- [Demo](https://demo.adminkit.io/) +- [Website](https://adminkit.io/) +- [Documentation](https://adminkit.io/bootstrap/docs/) +- [Support](https://adminkit.io/support/) +- [Affiliate Program](https://adminkit.io/affiliate-program/) + +To report a bug or request a feature, [open a new issue](https://github.com/adminkit/adminkit/issues/new). diff --git a/commitlint.config.mjs b/commitlint.config.mjs new file mode 100644 index 0000000..19fe9af --- /dev/null +++ b/commitlint.config.mjs @@ -0,0 +1,10 @@ +export default { + extends: ["@commitlint/config-conventional"], + rules: { + "scope-enum": [ + 2, + "always", + ["free", "pro", "docs", "web", "build", "deps"], + ], + }, +}; diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000..a2e939e --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,24 @@ +import js from "@eslint/js"; +import globals from "globals"; + +export default [ + { + ignores: [ + "dist/**", + "public/**", + "node_modules/**", + "src/js/modules/vector-maps/**", + ], + }, + js.configs.recommended, + { + languageOptions: { + ecmaVersion: "latest", + sourceType: "module", + globals: { + ...globals.browser, + ...globals.node, + }, + }, + }, +]; diff --git a/lefthook.yml b/lefthook.yml new file mode 100644 index 0000000..40ec33e --- /dev/null +++ b/lefthook.yml @@ -0,0 +1,14 @@ +commit-msg: + commands: + commitlint: + run: npx --no -- commitlint --edit {1} + +pre-commit: + parallel: true + commands: + lint: + glob: "*.{js,mjs,cjs}" + run: npx --no -- eslint {staged_files} + format: + glob: "*.{js,mjs,cjs,json,md,scss,css,yml,yaml}" + run: npx --no -- prettier --check {staged_files} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..ad83a22 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,4683 @@ +{ + "name": "@adminkit/core", + "version": "4.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "@adminkit/core", + "version": "4.1.0", + "license": "MIT", + "dependencies": { + "@fontsource/inter": "5.3.0", + "@popperjs/core": "2.11.8", + "bootstrap": "5.3.8", + "chart.js": "4.6.1", + "jsvectormap": "1.7.0", + "lucide": "1.66.0", + "simplebar": "6.3.3", + "vanilla-calendar-pro": "3.4.0" + }, + "devDependencies": { + "@commitlint/cli": "21.2.4", + "@commitlint/config-conventional": "21.2.4", + "@eslint/js": "10.0.1", + "autoprefixer": "10.6.2", + "eslint": "10.14.0", + "globals": "17.14.0", + "gray-matter": "4.0.3", + "handlebars": "4.7.10", + "js-beautify": "2.0.3", + "lefthook": "2.2.2", + "lucide-static": "1.66.0", + "playwright": "1.64.1", + "prettier": "3.9.10", + "sass": "1.107.1", + "sharp": "0.35.5", + "vite": "8.3.6", + "vite-plugin-handlebars": "2.0.3" + }, + "engines": { + "node": ">=24" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", + "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.29.7", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", + "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@cacheable/memory": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@cacheable/memory/-/memory-2.2.0.tgz", + "integrity": "sha512-CTLKqLItRCEixEAewD3/j9DB3/o96gpTPD4eJ1v+DGOlxZRZncRQkGYqqnAGCscYd6RNeXfGeiuCphsPtqyIfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@cacheable/utils": "^2.5.0", + "@keyv/bigmap": "^1.3.1", + "hookified": "^1.15.1", + "keyv": "^5.6.0" + } + }, + "node_modules/@cacheable/utils": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@cacheable/utils/-/utils-2.5.0.tgz", + "integrity": "sha512-buipgOVDkkPXNR5+xBpDw7Zk2n1EvU7qBJCNUcL7rhQ//kfpOXPAvQ511Os0vpLYJ1pZnvudNytkQt2hst3wqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hashery": "^1.5.1", + "keyv": "^5.6.0" + } + }, + "node_modules/@commitlint/cli": { + "version": "21.2.4", + "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-21.2.4.tgz", + "integrity": "sha512-g3M/wrQdElqGH5vROIeL2QiYIxrzqUkhCgsDyDlWfKEyQdCt10OyMB28W2cJtpZ+VNGMvmaN923infr1hOfyrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/config-conventional": "^21.2.4", + "@commitlint/format": "^21.2.3", + "@commitlint/lint": "^21.2.4", + "@commitlint/load": "^21.2.4", + "@commitlint/read": "^21.2.3", + "@commitlint/types": "^21.2.3", + "tinyexec": "^1.0.0", + "yargs": "^18.0.0" + }, + "bin": { + "commitlint": "cli.js" + }, + "engines": { + "node": ">=22.12.0" + } + }, + "node_modules/@commitlint/config-conventional": { + "version": "21.2.4", + "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-21.2.4.tgz", + "integrity": "sha512-IRldtwgNmR0SySR7wizFbhRmq45lPt6H3XCNTMyVN7jrPLgi8JlTRR6Eg1HLWUQt9P1Lh3k6eY25ilDa47EE6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/types": "^21.2.3", + "conventional-changelog-conventionalcommits": "^10.0.0" + }, + "engines": { + "node": ">=22.12.0" + } + }, + "node_modules/@commitlint/config-validator": { + "version": "21.2.3", + "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-21.2.3.tgz", + "integrity": "sha512-JQ13v0GafSM4fBYX8UowSy++07Was20auq0NcTdnzSEq6/05Cq5GBUMIfKkqjzyBwC9sJFmPpKWgLLhH7cygkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/types": "^21.2.3", + "ajv": "^8.11.0" + }, + "engines": { + "node": ">=22.12.0" + } + }, + "node_modules/@commitlint/config-validator/node_modules/ajv": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", + "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/@commitlint/config-validator/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/@commitlint/ensure": { + "version": "21.2.4", + "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-21.2.4.tgz", + "integrity": "sha512-woLOLV4pBMUBLyr5+MDM3WSG1r+eb2DObkysFSDxqyDUE4c6hZUOrpebJb2f8XcP3zKGJLb8H5w2suERVGI+Ag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/types": "^21.2.3", + "es-toolkit": "^1.46.0" + }, + "engines": { + "node": ">=22.12.0" + } + }, + "node_modules/@commitlint/execute-rule": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-21.0.1.tgz", + "integrity": "sha512-RifH+FmImozKBE6mozhF4K3r2RRKP7SMi/Q/zLCmExtp5e05lhHOUYqGBlFBAGNHaZxU/WYw1XuugYK9jQzqnA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=22.12.0" + } + }, + "node_modules/@commitlint/format": { + "version": "21.2.3", + "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-21.2.3.tgz", + "integrity": "sha512-KKwCjXYqA8r295uhLnulDXL9yekdXmj2yp2Q0XsBPhxQ2iPuvRE8F43j7g7yexo69wTdmUQmFz15jpderluzUQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/types": "^21.2.3", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=22.12.0" + } + }, + "node_modules/@commitlint/is-ignored": { + "version": "21.2.3", + "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-21.2.3.tgz", + "integrity": "sha512-Ng4nRj/LBAOvc+GQu7bsFW4/fL89LvZ14OOC/ERLbUpnG6QBwWRzY/1oXGwPs3C8YHWjJObin4kLYo2YeEn70w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/types": "^21.2.3", + "semver": "^7.6.0" + }, + "engines": { + "node": ">=22.12.0" + } + }, + "node_modules/@commitlint/lint": { + "version": "21.2.4", + "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-21.2.4.tgz", + "integrity": "sha512-HR8SGl1oEGfi/cqyBipanVY0a9CfEzIcJjPC37t7oQedaUUngw3d5E17g5Cfr2S3p6KsZM7UOHFq5fXHLRh7DQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/is-ignored": "^21.2.3", + "@commitlint/parse": "^21.2.3", + "@commitlint/rules": "^21.2.4", + "@commitlint/types": "^21.2.3" + }, + "engines": { + "node": ">=22.12.0" + } + }, + "node_modules/@commitlint/load": { + "version": "21.2.4", + "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-21.2.4.tgz", + "integrity": "sha512-Gi+aAW9nL8XPgvg8kIO0gZOw1/ePvpDLkv1bm8tj0RqenhNtCzk0frtctJhl41uIAP7OSx9bgQ6HCOa9En4g2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/config-validator": "^21.2.3", + "@commitlint/execute-rule": "^21.0.1", + "@commitlint/resolve-extends": "^21.2.3", + "@commitlint/types": "^21.2.3", + "cosmiconfig": "^9.0.1", + "es-toolkit": "^1.46.0", + "is-plain-obj": "^4.1.0", + "jiti": "^2.6.1", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=22.12.0" + } + }, + "node_modules/@commitlint/load/node_modules/cosmiconfig": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.2.tgz", + "integrity": "sha512-gtTZxTDau1wL7Y7zifc2dd8jHSK/k6BTx/2Xp/BpdlAdnlYWFVt7qhJqgwi7637yRwRQ3qL4ZidbB4I8tA5VOg==", + "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/@commitlint/load/node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/load/node_modules/jiti": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.7.0.tgz", + "integrity": "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/@commitlint/load/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/@commitlint/message": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-21.2.0.tgz", + "integrity": "sha512-YxGoiXD/HXNXLJPrQwE5poXa+XH0CBEm+mdvbHQP0g6MV/dmJyUFCzPNzZbxL93GvZ70TmtTK0Z0/IBpAqHv8g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=22.12.0" + } + }, + "node_modules/@commitlint/parse": { + "version": "21.2.3", + "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-21.2.3.tgz", + "integrity": "sha512-Jt61QpF1xA88damCELe8I0FlDZPSpXNc8IhN7z5kZ0EcDYPjdZ+ZHPvsSXl69r2MIlLnNKeHhOn2cmVpziFE9w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/types": "^21.2.3", + "conventional-changelog-angular": "^9.0.0", + "conventional-commits-parser": "^7.0.0" + }, + "engines": { + "node": ">=22.12.0" + } + }, + "node_modules/@commitlint/read": { + "version": "21.2.3", + "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-21.2.3.tgz", + "integrity": "sha512-szAepuLA1vTTr7fuudEg7jYyVHudf+FH+vptU91bhxE1WnE8TKrfTAi44HVllz8XpI8Pvp4GjR/iP5Nshgh+og==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/top-level": "^21.2.0", + "@commitlint/types": "^21.2.3", + "@conventional-changelog/git-client": "^3.0.0", + "tinyexec": "^1.0.0" + }, + "engines": { + "node": ">=22.12.0" + } + }, + "node_modules/@commitlint/resolve-extends": { + "version": "21.2.3", + "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-21.2.3.tgz", + "integrity": "sha512-bqJdmAtXgAQel+l02uIsF7rHgKgx1AGZdGBjam7uK4XW54ZAQtB6XAIUXezYprQiCcRMpBh4fHs5JodXK4mVZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/config-validator": "^21.2.3", + "@commitlint/types": "^21.2.3", + "es-toolkit": "^1.46.0", + "global-directory": "^5.0.0", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=22.12.0" + } + }, + "node_modules/@commitlint/resolve-extends/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/@commitlint/rules": { + "version": "21.2.4", + "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-21.2.4.tgz", + "integrity": "sha512-wranK/aevXs/WiW4N3orQlXY4sU2pQWjRSjN7I3TsZmP146Rr4CpsG38lpyqVcbNfMgvUVGy7ffYm7nCziTUwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/ensure": "^21.2.4", + "@commitlint/message": "^21.2.0", + "@commitlint/to-lines": "^21.0.1", + "@commitlint/types": "^21.2.3" + }, + "engines": { + "node": ">=22.12.0" + } + }, + "node_modules/@commitlint/to-lines": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-21.0.1.tgz", + "integrity": "sha512-bd1BFII7p1EQZre9Kaj+kKaMFP3cFCdt21K7DItVux9XP5WjLgJ0/Uy1pJJh9aPwVJ6SKg62PxqlZaHI8hQAXw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=22.12.0" + } + }, + "node_modules/@commitlint/top-level": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-21.2.0.tgz", + "integrity": "sha512-Y5gmQ+KxzqCrBFJfLvFEPvvwD3LDiNZoTT2yeFBm96M8qhmqSzQc5DvX3rheAaAMjyIvMXOCLS/mWfdpONsjyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0" + }, + "engines": { + "node": ">=22.12.0" + } + }, + "node_modules/@commitlint/types": { + "version": "21.2.3", + "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-21.2.3.tgz", + "integrity": "sha512-sGEA473TlCvhCGNoTBY9OXZVWdscIXdGt0dm8EpB+2MRfmt8LNh/X56P/T3nCtEB+eH5qGEa3odphSAoUxSfSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "conventional-commits-parser": "^7.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=22.12.0" + } + }, + "node_modules/@conventional-changelog/git-client": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@conventional-changelog/git-client/-/git-client-3.2.0.tgz", + "integrity": "sha512-sD/E0vzpkoDz/dqM1Hhv0ihC4KBw6RXjefeO8SG1XrX+wGkMxe1pKeedkKDPCtr2JjuhbuS9aJNgOvnT8hbeBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@simple-libs/child-process-utils": "^2.0.0", + "@simple-libs/stream-utils": "^2.0.0", + "verkit": "^0.5.0" + }, + "engines": { + "node": ">=22" + }, + "peerDependencies": { + "conventional-commits-filter": "^6.0.1", + "conventional-commits-parser": "^7.1.3" + }, + "peerDependenciesMeta": { + "conventional-commits-filter": { + "optional": true + }, + "conventional-commits-parser": { + "optional": true + } + } + }, + "node_modules/@conventional-changelog/template": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@conventional-changelog/template/-/template-1.4.0.tgz", + "integrity": "sha512-aalGyl7dbB5PArRebDIX43ZvBlXrYm9uWzGJ26t+4SzJVPsOuvfILGGbw5X4yX7i50YEmJ8zvbiWnqH/AAnZqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=22" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.3.tgz", + "integrity": "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.10.1.tgz", + "integrity": "sha512-cuadcxVFE8sDK6iWJbs8Sn0av2Nrh2QSGQhVlBW9AaAHqHwjWsZHT8LJ4hFGPh7ASBV2deFdM7H/DPjulmh8rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.23.5", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.5.tgz", + "integrity": "sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^3.0.5", + "debug": "^4.3.1", + "minimatch": "^10.2.4" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.7.0.tgz", + "integrity": "sha512-DObd/KKUsU+FaFv4PLxSRenpXfQWmPXXP3pPZ6/K1PCrMu2vQpMDMuQe/BqYeoLcz8ro0bVDF1RxOJgfVEdhUw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^1.2.1" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@eslint/core": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.2.1.tgz", + "integrity": "sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@eslint/js": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-10.0.1.tgz", + "integrity": "sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "eslint": "^10.0.0" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/@eslint/object-schema": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.5.tgz", + "integrity": "sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.7.3.tgz", + "integrity": "sha512-IkO+/KEUvwbVpiURZg+P7zF74z5Jxe0UgJxVni+RtoHQ6IZieXaO02kmadomap/q+l6bc/jdPGGqTjhuZnuz1Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^1.2.1", + "levn": "^0.4.1" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@fontsource/inter": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@fontsource/inter/-/inter-5.3.0.tgz", + "integrity": "sha512-RofMylZmjlJEfELXeNHFWBRcSs75rGU/6bV2S2jfnvv/3rPXPGe0LgUJTklcHZ9lM4OZmAVFhcJPnACfb91A3g==", + "license": "OFL-1.1", + "funding": { + "url": "https://github.com/sponsors/ayuhito" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.2.tgz", + "integrity": "sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/types": "^0.15.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.8.tgz", + "integrity": "sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.2", + "@humanfs/types": "^0.15.0", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/types": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/@humanfs/types/-/types-0.15.0.tgz", + "integrity": "sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@img/colour": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.1.0.tgz", + "integrity": "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.35.5.tgz", + "integrity": "sha512-QRUlFQ0WxvdWyqqG/WtI3iupfD5rBzmCHXSdPsY91sAtVtTo7Q4cb6zOccZ3gqEqkr0f1As1ehLqmEpDsRf+lg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.3.4" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.35.5.tgz", + "integrity": "sha512-+BR255RhDlpygUpOc/Jdt1nT6DQ3XG/ERo5wbcdOf5Q320dKtPCKPLR1LJs9VGXRaMa8l1uUa0tkCNOXiAxZUw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.3.4" + } + }, + "node_modules/@img/sharp-freebsd-wasm32": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-freebsd-wasm32/-/sharp-freebsd-wasm32-0.35.5.tgz", + "integrity": "sha512-Y/z91nEZ4uIBX5X3nfTovjU9lHNKFYbL2lpHCLVNmXQK03VIZvXBBt0KxbPGp2SdGSF+2mQU4e+hQaWOt86iAw==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "dependencies": { + "@img/sharp-wasm32": "0.35.5" + }, + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.3.4.tgz", + "integrity": "sha512-5R89nBYiRdUlSWJxPhO+GVtaXzXSxKnRu/xqMn3KTA3L9EB9Oy/P+Nn2f2vlhPuUdy/Zusb2DarbyTpGCfEDuw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.3.4.tgz", + "integrity": "sha512-iR2OKH80yi0U+dUplyh3/xdpFvps6YkCwsXenIJxqxR1v9o+xtKTGbS9H7cps+2Vxjc8B1j96p75NmTGjIhtpQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.3.4.tgz", + "integrity": "sha512-LmRtTsOHuvM2+wlO2Db37dx5MiZhB0FvSunciw48YjdOkZz9KAiRbm8ujeMOA1INqmei5NapFxYEK1D1ZSidmw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.3.4.tgz", + "integrity": "sha512-Y3dgX/6lE2QhQb+Gxy0WZxfg9MEm/JBjamZpS2IklP7xIQoKN4hzAm7KcMVGtaVDt3neE9OKBC7vAfonA/Lr1A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-ppc64": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.3.4.tgz", + "integrity": "sha512-Le6boB8Tai0Nis+gIxIpKx68UDVVIqdR8Tin5Yf1z2LJJQLDJvCDRqRu+jC2qCoD+eIomonmOwB4smBRxfVpYQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-riscv64": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.3.4.tgz", + "integrity": "sha512-aHkkIEHPRdQEegJN20MLmGtxYD9R2wQr3Cwpddnu5+YKMt6Uzax7S9h5gpZTo8wyrGuZSlfQ63OevL5mTyOC7Q==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.3.4.tgz", + "integrity": "sha512-ra/mB6MikESDUO7Yg+Mi95bFBb9GsObURuhnOv3OqknjGe9sZrG8tCe9q0xSIGrtLgvgw0gKnFWcK4blSgQOuQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.3.4.tgz", + "integrity": "sha512-GJ//SSXbnwSDes02umB3nDJLFcQzw8a18V8fyhqr6tV515tOEMdImjjxj1AoafMRz56F3PHgftnj1QEKSU1zkw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.3.4.tgz", + "integrity": "sha512-hvulFwtjUcagsis6BBxHwGFwWoNZjgYmULGVrZcyfNbjA8hKILbRxGg15/7w5HDyXHXUos/j6baAWqnCyQ2DWA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.3.4.tgz", + "integrity": "sha512-6zXKeE/p39I1AmA3cJG35eyBGNqNddLnUXjhwBnsGjFPWqf5VKkDBEqaEkPDoTEtkxwi2vv8Tcr2mDyP4So7Fg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.35.5.tgz", + "integrity": "sha512-LEaXK2WdXVK5ykcw0buWyPMsmLLL2vpHLD6yrNSW+JGEL3BZPA4tpKN6iaMc4AxTTAoaX/sU1rOL51lcIz48ZQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.3.4" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.35.5.tgz", + "integrity": "sha512-LYVx5JTsOM2CBzmxreh+nl64/3H6Xb09iSLknqH47z2T2DFFxDeFLP5y4dJwe6H7uGQlHPyEEtIqyo3DYsRwdQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.3.4" + } + }, + "node_modules/@img/sharp-linux-ppc64": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.35.5.tgz", + "integrity": "sha512-QVxAAq8evVRI9ia2vqgwrmWucn5Dfv+JdWzj75pD8omHLPSP7f8p20O8jxzjCcuCEQEOtYOZUmX1hkiZ0kdevA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-ppc64": "1.3.4" + } + }, + "node_modules/@img/sharp-linux-riscv64": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.35.5.tgz", + "integrity": "sha512-LtdreXguaavKODPIfzJ4kffx7UNt1omwtK0rch4EBbbSTXPnxWmYSayXdLJw0fJzQ97kHt1gL/yh4tvU+nCyRQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-riscv64": "1.3.4" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.35.5.tgz", + "integrity": "sha512-UZasTOFiYzotTsGOCu42BfUzP6Tu6Do/947iRm1RsLKvlllxwGcn4RN27LibGWceix4Y+Pmw3jsnTcCQIgWjqA==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.3.4" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.35.5.tgz", + "integrity": "sha512-SxFtLTeJInhAA9Q836kux2vZNeOBQEx658qvbboZScr0wIARym3IcGmW7KpVD5sbVg0Ojy+udFQdayYIZyoNog==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.3.4" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.35.5.tgz", + "integrity": "sha512-9HbMclmI1zlNkFRs3z9/eBtDjfD0sGlrX1z6b1qwmiFY5ElDLh4BC0LPBdVp7z1DXFiKlIcznf+ZlsuZzLxQqg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.3.4" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.35.5.tgz", + "integrity": "sha512-4KOphqB035HrVdqLZfCgMzzERrQkkzOwRhl4OAkRO1YCldbaFjySXMaK534Mo0V+LndnlJk+sbUyLeU0ULyD1A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.3.4" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.35.5.tgz", + "integrity": "sha512-Ptsga1su4tQx+LLF1ECS9U6nz5kmrXKo6XVbtR48Ke3ZRxxgaWBu7IDtEe1quo8hiupwm6WFqxVlXaSf7IINGQ==", + "dev": true, + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.11.3" + }, + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-webcontainers-wasm32": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-webcontainers-wasm32/-/sharp-webcontainers-wasm32-0.35.5.tgz", + "integrity": "sha512-hfhF/FmoQyTUkA0bIKFOtw536BQSeBMe6BF6QyWlrPxT754+TFLaZ7sKKTfvvM0yJgKgaYTwnFCIZ/GuDw5SUA==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@img/sharp-wasm32": "0.35.5" + }, + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-arm64": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.35.5.tgz", + "integrity": "sha512-X4t7g+7ZA5DKblCBEXGjUqqemj4vczING/5viFwAL8h4N3qYeyjwdCvRLHi4EdOUI+2Z7UFlp1VM+p/AuEtm6Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.35.5.tgz", + "integrity": "sha512-5Zm82LoBc43nhwNybZlG7Y1KO//Zhsn306fQl29ZOuStHLGTo3BWL83q3cznX0poxSAMuYL1On/BHBxkBeKr6A==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.35.5.tgz", + "integrity": "sha512-x76eH0vEiHlcMQu8Y8IenntaACtddpT6W0wmXtWrnKcnKI7ME5DdgqhAD6SEWOEl1v2zDvkZDhFA9KnURwpfqg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@isaacs/nonrecursive-glob-match": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@isaacs/nonrecursive-glob-match/-/nonrecursive-glob-match-1.0.3.tgz", + "integrity": "sha512-SI7kyKHq4XXDRozw+r9GlRZkia1ZkFrpLW98r2IC2Bpr8YkFGE3fvjzmxCG0x78A++69HmDNrDvSMYBZmHGpKA==", + "dev": true, + "license": "BlueOak-1.0.0" + }, + "node_modules/@keyv/bigmap": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@keyv/bigmap/-/bigmap-1.3.1.tgz", + "integrity": "sha512-WbzE9sdmQtKy8vrNPa9BRnwZh5UF4s1KTmSK0KUVLo3eff5BlQNNWDnFOouNpKfPKDnms9xynJjsMYjMaT/aFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "hashery": "^1.4.0", + "hookified": "^1.15.0" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "keyv": "^5.6.0" + } + }, + "node_modules/@keyv/serialize": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@keyv/serialize/-/serialize-1.1.1.tgz", + "integrity": "sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@kurkle/color": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.4.tgz", + "integrity": "sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==", + "license": "MIT" + }, + "node_modules/@one-ini/wasm": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@one-ini/wasm/-/wasm-0.2.1.tgz", + "integrity": "sha512-TUqERXGNTifZ9y2g3wPxQrw3HpHv/02DsW3D90T9x0hhonrL1ZqpSmNrU2XkoIq0fP1N6gZfVQzy2Fw1ZvGBNg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@oxc-project/types": { + "version": "0.156.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.156.0.tgz", + "integrity": "sha512-1Duyg48TdJNdyhEB8Xn1L36bT9Pv6GUtlKjHxOys8xkaF/rQq3XJE+bAurSK/AgIz5mGFsb77cn9Pb20+WCScw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/oxc-project" + } + }, + "node_modules/@parcel/watcher": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.6.0.tgz", + "integrity": "sha512-7FNeNl8NCE7aINx7WXiKQrPYZWC/hvrTsmk6zmxbI7LTXE7hVek/n8AfVgpe2y82zl3w0HvCHN0bVKMBoJcC0w==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "detect-libc": "^2.0.3", + "is-glob": "^4.0.3", + "node-addon-api": "^7.0.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.6.0", + "@parcel/watcher-darwin-arm64": "2.6.0", + "@parcel/watcher-darwin-x64": "2.6.0", + "@parcel/watcher-freebsd-x64": "2.6.0", + "@parcel/watcher-linux-arm-glibc": "2.6.0", + "@parcel/watcher-linux-arm-musl": "2.6.0", + "@parcel/watcher-linux-arm64-glibc": "2.6.0", + "@parcel/watcher-linux-arm64-musl": "2.6.0", + "@parcel/watcher-linux-x64-glibc": "2.6.0", + "@parcel/watcher-linux-x64-musl": "2.6.0", + "@parcel/watcher-win32-arm64": "2.6.0", + "@parcel/watcher-win32-x64": "2.6.0" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.6.0.tgz", + "integrity": "sha512-trgpLSCKRC/huFjXX/Smh+0sWe4+YtKfktIToiMl59ghz7z+qkH6kMvNnUbLyRs9N11t8l4svSCs1+5B3rOAhA==", + "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.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.6.0.tgz", + "integrity": "sha512-Y3QV0gl7Q1zbfueunkWIERICbEojQFCgpyG7YqOGNFLsckXyI1xu9mAIUpKY9QBYzBtSkN8dBPwd3yiAO9ovMw==", + "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.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.6.0.tgz", + "integrity": "sha512-Ohv6OpzhUfKYD7Beb8kDvG0jbIxORCYY1JRdZnaBtnjjkJxgD7ZVL0nw2sCYd0yTMKTvz3nnTnOF3cDifK+kvw==", + "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.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.6.0.tgz", + "integrity": "sha512-5HmXvDgs8VK+74jF9y9/2FE3/OnlcKmc56tjmSrEuZjpSZOGL+fvAu+HKJBdPs9uwoP2hE6TlSUpXZ/C5jUFmQ==", + "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.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.6.0.tgz", + "integrity": "sha512-Ps/hui3A+vMbjdqlqAowK2ZL8+BO8dBjxeWXj6npTBs3jx4wWmbPpaLuqwrQrSqIVMCnpWo238bJ1U37GhQOYg==", + "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-arm-musl": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.6.0.tgz", + "integrity": "sha512-9c6AUHgHoG+IY88MRIHupztQiQnrbqHYQjkM2btA+Bf/wQnQMuiD0Wfk1EVv3TlNT3x41uU71rn6E4xh/+zvkw==", + "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.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.6.0.tgz", + "integrity": "sha512-yHRqS2owEXe6Hic9z6Mh1ECsCd+ODVOGvZDyciqRd21+v+o+DnXMOrw50DSpIG2sb8GPEaPPmfeCAWKPJdq46g==", + "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.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.6.0.tgz", + "integrity": "sha512-WhB2e/V7rqdHHWZusBSPuy5Ei8S6lSz6FE5TKKQz5h3a0O+C+mhY7vxU9b/stqvMb8beLnPY82ZrFTLKs+SrKA==", + "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.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.6.0.tgz", + "integrity": "sha512-ulGE6x6Oz6iAwg75T8YQSoguBWasniIbX+QWpaYPcCnDOpdWX3k+4xbEYPZVLxOuoJI+svJJPD3sEj8G7lrQ3A==", + "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.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.6.0.tgz", + "integrity": "sha512-tkBYKt7YQrjIJWYDnto2YgO8MRkjlMTSNoRHzsXinBqbLdeOM3L32wPZJvIZxqaLMfSlS/4sUjH/6STVP/XDLw==", + "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.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.6.0.tgz", + "integrity": "sha512-gIZAP23jaHjGWasY/TY6yL7NHFClf0Ga7FN+iINvk+KN94rhm94lYZhFsbYFNcA04/onvGD9kKmiJLJB2HbNwQ==", + "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-x64": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.6.0.tgz", + "integrity": "sha512-cA+/pXV2YkfxlIcXOQ5fSWqAzzPyD78/x5qbK/I0vUkrlYHA8TIz+MXjAbGouguKVSI4bOmkTSJ1/poVSsgt+A==", + "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/@parcel/watcher/node_modules/picomatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", + "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@rolldown/binding-android-arm-eabi": { + "version": "1.2.16", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm-eabi/-/binding-android-arm-eabi-1.2.16.tgz", + "integrity": "sha512-ia3DwAs0OsMGS7+IConptSiyk9pEXkOx/AbJ2n/lAGxH3QkWQus1t8d7gnAT38FCU2sQu8lUbeR6AiZFv4JxaA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-android-arm64": { + "version": "1.2.16", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.2.16.tgz", + "integrity": "sha512-kx5wBiMB6E7TEvpl2B9gjLU004BkvEm2Dr941BFjx/SontPwSzNuQUIoVKxHHoSjpFIfHMmcguyLOtyn0hObRg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-arm64": { + "version": "1.2.16", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.16.tgz", + "integrity": "sha512-qslZrXnKJU4cUpjoAmtAo/KQM9e2IRMlmpig6Zpwj+8KWxW8v+nkAf9216Bsek9lOC1jvg2yCjygCFo2f83msQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-x64": { + "version": "1.2.16", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.2.16.tgz", + "integrity": "sha512-FdF+y48ND13eAyM2mQn+85kvAqNlvRWROy2rhgA463X/0Gv4vGtazZtfaF1mRBLscYvtOlh4QnLjOWiFzX69OQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-freebsd-x64": { + "version": "1.2.16", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.2.16.tgz", + "integrity": "sha512-ddjqFM5e95AgLbUPtKIS7V1KTVlA0RUgCVr5mn+/IEhsdy3pr+Vuj/HZ7nlMN2FyxIwUktOH1LEPIQXO1v9y1Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm-gnueabihf": { + "version": "1.2.16", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.2.16.tgz", + "integrity": "sha512-tHdKWbFkFBI687iim3LIyIvyL7j66VvQYkDPss5Stn/qyE2tWkR1YD0dXmXPFKKqT/o5ZEJVsaRsWS2meQwGOA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-gnu": { + "version": "1.2.16", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.16.tgz", + "integrity": "sha512-FJiLGAblPBMlBEdbOqw6kW6QcXDWAf/oJu7gYs9ZJZwmg+K+/zjFLxPTIY9izJUzxzc24FHvmseyA0IvJSl17w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-musl": { + "version": "1.2.16", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.16.tgz", + "integrity": "sha512-hrJpblMsrQ58U9veWpbXzkhV5zStunds6HWLprqq1qauvgBr1E6P+24kLj6lSLI9vjRn/RYpjprhkHQPKGWpNg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-ppc64-gnu": { + "version": "1.2.16", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.2.16.tgz", + "integrity": "sha512-qJd/dC6j6CwLG9/s/RP2nb1RZ0GIgj7Ioj7x/SYa3RzjVrlzrmH0fhIOpfvqQDeIsdP0loi+kHaMhJzY1PBIaA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-s390x-gnu": { + "version": "1.2.16", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.2.16.tgz", + "integrity": "sha512-Vx7Xg5uUJuNcujJjI70OICaH0EYj80BtOLZTSN7uOYg8QOLlyKnaG0IW7Fn/J0IpJsaKzmDKMhOQv1JBM9m9vg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-gnu": { + "version": "1.2.16", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.16.tgz", + "integrity": "sha512-TNKhgE3uJTsTzatUSSYt0Kgo+Oa2uSlSjz4r1aEIea7HX6ULBym4fAlYUhG1i6pjNf2njfCUAfKwr6C3E9Xg1w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-musl": { + "version": "1.2.16", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.16.tgz", + "integrity": "sha512-7chXdpjXZ8qG0+mIxECN3cT9kvhZ3/oZhMX6Pp876P7CDrIy8nJswva6Mq357JR7eYXfuskwZxMeV1SzoZdHrA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-openharmony-arm64": { + "version": "1.2.16", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.2.16.tgz", + "integrity": "sha512-Kwjt+7uNTJK5/MDkGWGVO2KQPnj8yAV75dMpfwyHZrJSXWHrniOB0aUEWlVYf3H1hOqFLIStLdM5QXq6bnKmOQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-win32-arm64-msvc": { + "version": "1.2.16", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.16.tgz", + "integrity": "sha512-/LH6WfjDRXXJz/p5xl4TmU+jpcnwcxbKEQBW/GZE0JHfN0lGIyTtsUEGaQ/q/GikkGJ2yLKe6pwm7AnEWO8pdw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-win32-x64-msvc": { + "version": "1.2.16", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.16.tgz", + "integrity": "sha512-1lv1KvX0Z871zfk7vw+dnXMMnHNyDwMzWG8Kv3HxDXMOhzCX4SHc7HK319fInP0i+0p9D8brkfzL7pJOaGl+tw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz", + "integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@simple-libs/child-process-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@simple-libs/child-process-utils/-/child-process-utils-2.0.0.tgz", + "integrity": "sha512-dvNoRKLijXnD0XoJAz94pbNuB5GQgDr55UhpSPhffDkTT0Cmcqh9jSCOtwfT2d4H6MI9E7c4SgtMuJXZ6F3c6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@simple-libs/stream-utils": "^2.0.0" + }, + "engines": { + "node": ">=22" + }, + "funding": { + "url": "https://ko-fi.com/dangreen" + } + }, + "node_modules/@simple-libs/stream-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@simple-libs/stream-utils/-/stream-utils-2.0.0.tgz", + "integrity": "sha512-fCTuZK4QBa+39Oz9l4OGfJfz+GpwCp3AqO7Zch3to99xHPgstVsRFpeQ8LNd2o1Gv8raL2mCFwiaHh7bFSp5DQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=22" + }, + "funding": { + "url": "https://ko-fi.com/dangreen" + } + }, + "node_modules/@types/esrecurse": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@types/esrecurse/-/esrecurse-4.3.1.tgz", + "integrity": "sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/abbrev": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-5.0.0.tgz", + "integrity": "sha512-/XrFJgzQQQHpti1raDJC6m4ws6aNktmjBlhk8Fdlk7LwCEuDoieEJJY9OFHjfiFJFFRM2tK+Ky/IsfbbmlMu1w==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^22.22.2 || ^24.15.0 || >=26.0.0" + } + }, + "node_modules/acorn": { + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.19.0.tgz", + "integrity": "sha512-oJlA3XiRm7Cyk6qFD2Jn8ak9B7jSy0qy00ADO3+8dpT0LSjFihQYv4C02LFCSYJV3Q37xYwwRy5m+IpIiUzqWw==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", + "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "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/argue-cli": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/argue-cli/-/argue-cli-3.2.0.tgz", + "integrity": "sha512-VipTB0gXgGIFO2Rg9yEVN5wLt2AurJcZqDbgmYSwPwsykhLrQhs240/bfceev4w68lI8JshoOJIk9uW7tFzROw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=22" + }, + "funding": { + "url": "https://ko-fi.com/dangreen" + } + }, + "node_modules/autoprefixer": { + "version": "10.6.2", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.6.2.tgz", + "integrity": "sha512-VOw9/yGTGwPPgzFcODtcv6zhEPIeIWkRSe10L2ri2f5vZ7ID7lCt6jZzRF5/ubgOZ+szYydmEF5AYsA5jxX1tA==", + "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.28.9", + "caniuse-lite": "^1.0.30001810", + "fraction.js": "^5.3.4", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/baseline-browser-mapping": { + "version": "2.11.33", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.33.tgz", + "integrity": "sha512-yiVKDX+qCMRKBE084lXvq9EcwFUhKZ2nU8TK1EQQuOgPNR/lmbGxXOeDdlGUqC2Zz11Cs9rk1d/8NfgBmlkt0w==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/bootstrap": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.8.tgz", + "integrity": "sha512-HP1SZDqaLDPwsNiqRqi5NcP0SSXciX2s9E+RyqJIIqGo+vJeN5AJVM98CXmW/Wux0nQ5L7jeWUdplCEf0Ee+tg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/twbs" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + } + ], + "license": "MIT", + "peerDependencies": { + "@popperjs/core": "^2.11.8" + } + }, + "node_modules/brace-expansion": { + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.12.tgz", + "integrity": "sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/browserslist": { + "version": "4.29.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.29.5.tgz", + "integrity": "sha512-khTmKu5NGYTotqcYo8Bew2k4RAE9PuXRSFRXG2lQBrCEQHyeQ/vX6gKMxfokwywBsLiXZMnHsmWMG1pnO8J7uQ==", + "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": { + "baseline-browser-mapping": "^2.11.33", + "caniuse-lite": "^1.0.30001819", + "electron-to-chromium": "^1.5.464", + "node-releases": "^2.0.60", + "update-browserslist-db": "^1.3.4" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/cacheable": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-2.5.0.tgz", + "integrity": "sha512-60cyAOytib/OzBw1JNSoSV/boK1AtHryDIjvVBk7XbN4ugfkM3+Sry7fEjNgPMGgOjuaZPAp8ruZ0Cxafwyq9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@cacheable/memory": "^2.2.0", + "@cacheable/utils": "^2.5.0", + "hookified": "^1.15.0", + "keyv": "^5.6.0", + "qified": "^0.10.1" + } + }, + "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/caniuse-lite": { + "version": "1.0.30001819", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001819.tgz", + "integrity": "sha512-LFUqIIAwpzsIuevnKnsR9qnStBcgzPShTX61lBwN9uFkkf8o8zLiebEjbW8AYtZiF+1YKDWfdt/pWDtMuG8Xwg==", + "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/chart.js": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.6.1.tgz", + "integrity": "sha512-hJyniucsFmq//EvXYvJ6c6mahPoI3kaxdjVH8awTaJ/fDNWeSqqqArixMJWkWNN6fcYvPU3HneSANFNYtRi61g==", + "license": "MIT", + "dependencies": { + "@kurkle/color": "^0.3.0" + }, + "engines": { + "pnpm": ">=8" + } + }, + "node_modules/cliui": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz", + "integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^7.2.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.4.0.tgz", + "integrity": "sha512-KzTVk2tCWAHtYrvvvaP8bJKJq2pVinhLcGEQdtLIYPbmNGNyYe8QwNaTUYQp2J7/vIsUKt5QCqAfUkYyG9DkOw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/cliui/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/config-chain/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/conventional-changelog-angular": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-9.4.0.tgz", + "integrity": "sha512-HdxRxuS8bBXVIuo4V82gvSwAXT0vYQUizrjs/izmPg5JdDstr8v8I5hduGL3iQbG+o310dUDxC4+LetuS5hu9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "@conventional-changelog/template": "^1.4.0" + }, + "engines": { + "node": ">=22" + } + }, + "node_modules/conventional-changelog-conventionalcommits": { + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-10.4.1.tgz", + "integrity": "sha512-jS1LRFSbRoAr6JbhhRy1JYfNNUj5LM3+v49hRE03CgccsiYqgdVj/RTmrw4J1rylrqijHwdOlJWiJa61JHOgHg==", + "dev": true, + "license": "ISC", + "dependencies": { + "@conventional-changelog/template": "^1.4.0" + }, + "engines": { + "node": ">=22" + } + }, + "node_modules/conventional-commits-parser": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-7.1.3.tgz", + "integrity": "sha512-Q9oWm1o9uy/oEsZQIraoFMZ4RuPD+79KgwWj6mJVP356tazolCB0piRLZ5Kz9te9p027uSEcUW+Gu44Eh+X79g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@simple-libs/stream-utils": "^2.0.0", + "argue-cli": "^3.1.0" + }, + "bin": { + "conventional-commits-parser": "dist/cli/index.js" + }, + "engines": { + "node": ">=22" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/editorconfig": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-3.0.2.tgz", + "integrity": "sha512-T0ix8GhtxyKVfUFEcvdNDt3YGqlwkFHbD4/5bgFUDgFmxhI/cSRAeJ87/Sz//Cq8Eam6JX/e23RkoFO71P7aAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@one-ini/wasm": "0.2.1", + "commander": "^14.0.3", + "minimatch": "~10.2.4", + "semver": "^7.7.4" + }, + "bin": { + "editorconfig": "bin/editorconfig" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/editorconfig/node_modules/commander": { + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.3.tgz", + "integrity": "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.465", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.465.tgz", + "integrity": "sha512-zg4iUpbeGw7YNZsswc2xKr2uiBex2d8dELAXo92Icw3but1ULbrvK8USe6wVLaWjgJnKBARv0pchx9Owktx6wQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "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.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-toolkit": { + "version": "1.53.0", + "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.53.0.tgz", + "integrity": "sha512-3+AYXp9fmJ/UhHBMYj2/U+RaUouMD90SzoItyDOB2Za7W6dB7fQApFGnZPl2MF6K8/Tv1koh1JyirSx/kju6Pw==", + "dev": true, + "license": "MIT", + "workspaces": [ + "docs", + "benchmarks", + "tests/types", + "tests/browser-compat" + ] + }, + "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-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "10.14.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.14.0.tgz", + "integrity": "sha512-T0pNsxkb9IKmtQjhpK3d7nWOpFv+YHuMbTJnSVMoQblF0onvXfErrtp4V1jHtsQPan7dKaGVD0q1WCXnzMF31A==", + "dev": true, + "license": "MIT", + "workspaces": [ + "packages/*" + ], + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.2", + "@eslint/config-array": "^0.23.5", + "@eslint/config-helpers": "^0.7.0", + "@eslint/core": "^1.2.1", + "@eslint/plugin-kit": "^0.7.3", + "@humanfs/node": "^0.16.8", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.14.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^9.1.2", + "eslint-visitor-keys": "^5.0.1", + "espree": "^11.2.0", + "esquery": "^1.7.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "11.1.5 || >11.1.6 <12", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "minimatch": "^10.2.6", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-scope": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-9.1.2.tgz", + "integrity": "sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@types/esrecurse": "^4.3.1", + "@types/estree": "^1.0.8", + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-11.2.0.tgz", + "integrity": "sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.16.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^5.0.1" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "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/esquery": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "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/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.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-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-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.9.tgz", + "integrity": "sha512-hS/0Wt3Ya043oKXs0sIxrMpKQITXhMLIrVAKKXi4gozGC9v7YRWVnXIZzjNPTO02M9BdxLCWqK1yRXgNziVyJQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/file-entry-cache": { + "version": "11.1.5", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-11.1.5.tgz", + "integrity": "sha512-+PFTHITI08JIGhnNpGNI8T8inUpgZfk3GNEqfT9R2zZV2iFXg3CvqzSl/uEhs7TSGujYRELEANyDvS8Fj7+S7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^6.1.23" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "6.1.23", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.23.tgz", + "integrity": "sha512-f++BY9pTk+983xK1FLzlLpmM0i0z+jHmx3QESGkURMXujQZz1k5wzwX6hjnQ8goaD0B+sYnDK1yZ6MTyZfUaqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cacheable": "^2.5.0", + "flatted": "^3.4.2", + "hookified": "^1.15.0" + } + }, + "node_modules/flatted": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.4.tgz", + "integrity": "sha512-5+ybhBZANEJxaH3X5evAFatUxLfEHSr7n6kYJ+1Qd0mUqr4eu9gIf6GDbWHf8RJijHrjjO8G+la14SlL2SeS1Q==", + "dev": true, + "license": "ISC" + }, + "node_modules/fraction.js": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", + "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/rawify" + } + }, + "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/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-east-asian-width": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.7.0.tgz", + "integrity": "sha512-XjH1AECxf0giL2V1aU8vKyRR2ppRUb5c0EvT7zuJTokQ74bNo52zOtghqdWIqrhUD79fo3x0WfKZdOqxF6LG1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-14.0.3.tgz", + "integrity": "sha512-A1vjIwC3qpdCso45Iw127gnp7sPhqgY8lUQhDrArIs+GbmfaaVPFuoyy7WyLT9EPZCRZ7j7aLdwUhQmHWesEow==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^11.0.2", + "minipass": "^7.1.3", + "path-scurry": "^3.0.0" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/global-directory": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/global-directory/-/global-directory-5.0.0.tgz", + "integrity": "sha512-1pgFdhK3J2LeM+dVf2Pd424yHx2ou338lC0ErNP2hPx4j8eW1Sp0XqSjNxtk6Tc4Kr5wlWtSvz8cn2yb7/SG/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ini": "6.0.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globals": { + "version": "17.14.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-17.14.0.tgz", + "integrity": "sha512-UtdkTVyAJePQv0J2M9Xe4L0ruNSDV314XiIJsADI2Zf40bcdAonE/D/OhAU8AT99oij9mhLByb+NvA3QWZYgCg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gray-matter": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", + "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "js-yaml": "^3.13.1", + "kind-of": "^6.0.2", + "section-matter": "^1.0.0", + "strip-bom-string": "^1.0.0" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/gray-matter/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/gray-matter/node_modules/js-yaml": { + "version": "3.15.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.15.2.tgz", + "integrity": "sha512-6EuL879VkRA+1Cz578mKMiKvjPNEuk6+r1JaFzoSWejZmtf7xWbIyw1e3KkxlkzTIt9Taw6JBhEppG7utc1P+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/handlebars": { + "version": "4.7.10", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.10.tgz", + "integrity": "sha512-P5VJMVM7qgBn6vjXMw8WG9uVI+ncf2pi72j4de4yz5ZULLj2RGqLYaKOYGsgyrViQ0tePOVlN1tDCCXXtFqXKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.8", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/hashery": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/hashery/-/hashery-1.5.1.tgz", + "integrity": "sha512-iZyKG96/JwPz1N55vj2Ie2vXbhu440zfUfJvSwEqEbeLluk7NnapfGqa7LH0mOsnDxTF85Mx8/dyR6HfqcbmbQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "hookified": "^1.15.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/hookified": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/hookified/-/hookified-1.15.1.tgz", + "integrity": "sha512-MvG/clsADq1GPM2KGo2nyfaWVyn9naPiXrqIe4jYjXNZQt238kWyOGrsyc/DmRAQ+Re6yeo6yX/yoNCG5KAEVg==", + "dev": true, + "license": "MIT" + }, + "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/immutable": { + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.9.tgz", + "integrity": "sha512-m8nVez3rwrgmWxtLMt1ZYXB2Lv7OKYn/disyxAlSDYAlKSlFoPPfIAmAM/M5xqL4m4C/wAPw7S2/CNaUii1Hxg==", + "dev": true, + "license": "MIT" + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "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/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/ini": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-6.0.0.tgz", + "integrity": "sha512-IBTdIkzZNOpqm7q3dRqJvMaldXjDHWkEDfrwGEQTs5eaQMWV+djAhR+wahyNNMAa+qpbDUhBMVt4ZKNwpPm7xQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "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-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "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-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/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/js-beautify": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-2.0.3.tgz", + "integrity": "sha512-cyFbh3tkPhknnTD/0bLf0T0yy2ZIbqL05mttzbt4y1Zfr7NxqXQZ62dkBLKs3oHH/lpjmDRAnciJiSUyOy8XwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "config-chain": "^1.1.13", + "editorconfig": "^3.0.2", + "glob": "^13.0.6", + "js-cookie": "^3.0.8", + "nopt": "^10.0.1" + }, + "bin": { + "css-beautify": "js/bin/css-beautify.js", + "html-beautify": "js/bin/html-beautify.js", + "js-beautify": "js/bin/js-beautify.js" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/js-cookie": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.8.tgz", + "integrity": "sha512-yeJd4aNAdYZQjaon2bpD/Gb0B/omw7HQOsynXXcOiWVCacbBcPlgn8S/d1X6blFSaHao7ozqtW7NZW19xpCtIw==", + "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": "4.3.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.2.tgz", + "integrity": "sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nodeca" + } + ], + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "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": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsvectormap": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/jsvectormap/-/jsvectormap-1.7.0.tgz", + "integrity": "sha512-8VmL3Uuen08Es9xb2N6Wdc32TrQDGPXYCIdTB126jAhTJsYd/4r4Mc63VQA3qHxG0p4zeCI8sFO5XRsdjljMJg==", + "license": "MIT" + }, + "node_modules/keyv": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.6.0.tgz", + "integrity": "sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@keyv/serialize": "^1.1.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/lefthook": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/lefthook/-/lefthook-2.2.2.tgz", + "integrity": "sha512-37fYHAhL12r1twaEV0PA5TwoIT491eTGGYjhhXxlYNMq3DSkiGZBQ++Jfk5maXj0vq52NRauLtMikBKtbNJs3Q==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "lefthook": "bin/index.js" + }, + "optionalDependencies": { + "lefthook-android-arm64": "2.2.2", + "lefthook-darwin-arm64": "2.2.2", + "lefthook-darwin-x64": "2.2.2", + "lefthook-freebsd-arm64": "2.2.2", + "lefthook-freebsd-x64": "2.2.2", + "lefthook-linux-arm64": "2.2.2", + "lefthook-linux-x64": "2.2.2", + "lefthook-openbsd-arm64": "2.2.2", + "lefthook-openbsd-x64": "2.2.2", + "lefthook-windows-arm64": "2.2.2", + "lefthook-windows-x64": "2.2.2" + } + }, + "node_modules/lefthook-android-arm64": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/lefthook-android-arm64/-/lefthook-android-arm64-2.2.2.tgz", + "integrity": "sha512-wb9rQQFLX7u1dJLxvMrq9VUfMYi5kxM7tJQ6Y4mWEOwaU+SmIm2wjoT/nromKq27Y8fh2Qd7FgCD3G1wfW8CnQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/lefthook-darwin-arm64": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/lefthook-darwin-arm64/-/lefthook-darwin-arm64-2.2.2.tgz", + "integrity": "sha512-6V8D3bLnD/60Xhqn0o2EQD6H3Fe/U9LGkt4WF1O/3eBHbux+5ZJqoH0hfrC+Bi9Dy1Ve1AWxiAY7U2asYl8qVA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/lefthook-darwin-x64": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/lefthook-darwin-x64/-/lefthook-darwin-x64-2.2.2.tgz", + "integrity": "sha512-fH/kArZ9ZZ65wCFtvBMgGcq25qwQpkQ5jp93ba+8wpjgxxzjczYGluwHvM/NQDJWLOFXuKXW0yFs76SramQkyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/lefthook-freebsd-arm64": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/lefthook-freebsd-arm64/-/lefthook-freebsd-arm64-2.2.2.tgz", + "integrity": "sha512-MCRsU01ju989QQffOfS3gCeFfyVDXs5B/FzR65fmrNvqcxb98fldvfzzoAbnK2q6SBJlRT3QT1tNEMCxddCwlA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/lefthook-freebsd-x64": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/lefthook-freebsd-x64/-/lefthook-freebsd-x64-2.2.2.tgz", + "integrity": "sha512-LkKuJU0S2oLimeoHwPTy1TLWB6GcN0t5lLxiXNlsBKUkr6R47QRcvPMZMoXmu3IetQtd+WliXMLE8qTwi2fqBg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/lefthook-linux-arm64": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/lefthook-linux-arm64/-/lefthook-linux-arm64-2.2.2.tgz", + "integrity": "sha512-d+HFtS2DEKaOnD7vRU0tUz8pNgHwsUYmQ22+1dyXpOrXGyzNXR0AqX5KsIRF36JGhVvO5X5Anw5QYgR3mxVSuA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/lefthook-linux-x64": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/lefthook-linux-x64/-/lefthook-linux-x64-2.2.2.tgz", + "integrity": "sha512-N/OlQyAhcU6RAXjrwFxLsh70sn96rBoi+XkuLJ8CVBkk9Ci3VDXQayDZTNz5B1xML8RwoMcV8Wblniy1xFOmSA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/lefthook-openbsd-arm64": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/lefthook-openbsd-arm64/-/lefthook-openbsd-arm64-2.2.2.tgz", + "integrity": "sha512-6G/gKXcpIwC+XcODg7ELZYP/hIrVIHQxhy2GoRdVyecmpGMFj+BZo3iqcUmeWusQMuL+UdNexbkrUaeJalIkNw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/lefthook-openbsd-x64": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/lefthook-openbsd-x64/-/lefthook-openbsd-x64-2.2.2.tgz", + "integrity": "sha512-eMJGi3/tqKEqu7XCZlqwQWRtK5JlL/9diaqqgRlEdlRD7GxwzHZN21z6awbITum9emea3lALvXFe6V8odQLGOA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/lefthook-windows-arm64": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/lefthook-windows-arm64/-/lefthook-windows-arm64-2.2.2.tgz", + "integrity": "sha512-4P1EaQb5xG1zhYD1RLJ6TEGdFkmHkB+Slqx6yRDPKuBDNxMiD0+kTAAdUY2E8xPuRR35xHpVPR+b3/HtzPrjQQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/lefthook-windows-x64": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/lefthook-windows-x64/-/lefthook-windows-x64-2.2.2.tgz", + "integrity": "sha512-9Ck4zancQilBfXT3ZeRipm7Lcq4RQfxyMpy8SAVINw0t/BrbjsT25V46ZuziERcwdajnE4myfMzC33GoCBwr7g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lightningcss": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.33.0.tgz", + "integrity": "sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.33.0", + "lightningcss-darwin-arm64": "1.33.0", + "lightningcss-darwin-x64": "1.33.0", + "lightningcss-freebsd-x64": "1.33.0", + "lightningcss-linux-arm-gnueabihf": "1.33.0", + "lightningcss-linux-arm64-gnu": "1.33.0", + "lightningcss-linux-arm64-musl": "1.33.0", + "lightningcss-linux-x64-gnu": "1.33.0", + "lightningcss-linux-x64-musl": "1.33.0", + "lightningcss-win32-arm64-msvc": "1.33.0", + "lightningcss-win32-x64-msvc": "1.33.0" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.33.0.tgz", + "integrity": "sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.33.0.tgz", + "integrity": "sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.33.0.tgz", + "integrity": "sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.33.0.tgz", + "integrity": "sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.33.0.tgz", + "integrity": "sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.33.0.tgz", + "integrity": "sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.33.0.tgz", + "integrity": "sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.33.0.tgz", + "integrity": "sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.33.0.tgz", + "integrity": "sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.33.0.tgz", + "integrity": "sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.33.0.tgz", + "integrity": "sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "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/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", + "license": "MIT" + }, + "node_modules/lodash-es": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.18.1.tgz", + "integrity": "sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==", + "license": "MIT" + }, + "node_modules/lru-cache": { + "version": "11.5.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.3.tgz", + "integrity": "sha512-U4N8FgzmWxc8k1VH8Kr6lQg18U7Fjvby6wXHVRX/ZZ7IwWbRMgrRbP0Wrb5q5NVinryp4SQampHKdvtecItxUg==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/lucide": { + "version": "1.66.0", + "resolved": "https://registry.npmjs.org/lucide/-/lucide-1.66.0.tgz", + "integrity": "sha512-Ngq8coV3XJ9S/DLTNnIWk9lmdJusoSnuuoO1rK7C0H9/VaV93LoWkv/u5GyUAJhL+rFesAd4gL3YG544bnH6gQ==", + "license": "ISC" + }, + "node_modules/lucide-static": { + "version": "1.66.0", + "resolved": "https://registry.npmjs.org/lucide-static/-/lucide-static-1.66.0.tgz", + "integrity": "sha512-j8Bjf/f21PtlD8p0wx1lRxyOrs98WZ1QEImkWmfskuJ8mOCwTN7Dwc6EHUzJDSzh79aB+Bo7SWcoTCM2zEjnJg==", + "dev": true, + "license": "ISC" + }, + "node_modules/minimatch": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-11.0.1.tgz", + "integrity": "sha512-t+Vn6DX4wPCxS23y03C0uhF7S1jpi1GfqPrnlEipCJaA2ykiNbMkVlDutZtmvLfRcUN6R8AYVlzTsQrT4RZoLQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/nonrecursive-glob-match": "^1.0.1", + "brace-expansion": "^5.0.12" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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/minipass": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "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/nanoid": { + "version": "3.3.20", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.20.tgz", + "integrity": "sha512-uKdg2G3GNCKQn9byYOpxbGqrT2fGO5KRt5J/8b3pok8rT6qxGWF6hxMyJiEYtAf+FVyYuD9hRaDqX5uPFYJ4ZQ==", + "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/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "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", + "optional": true + }, + "node_modules/node-releases": { + "version": "2.0.60", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.60.tgz", + "integrity": "sha512-OmO8+GM1JUZqXET720VrJCwkjUCXmCMQm0Z3UDDRbfNLHS4NEAvY60j5jiFv0tkKw2PNNlqOLhahVmwJIOLDIQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/nopt": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-10.0.1.tgz", + "integrity": "sha512-df3sBr/6ax9hSGuC3CspvLlbnX8cP5L5nZwXF8cGN8l0zSWR6BvzmQ6jPUKjvo6+/xdpkNvEcucBNUdBeeV13g==", + "dev": true, + "license": "ISC", + "dependencies": { + "abbrev": "^5.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^22.22.2 || ^24.15.0 || >=26.0.0" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "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": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/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-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-scurry": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-3.0.0.tgz", + "integrity": "sha512-1pTbQqH1wIwMi/eleQ5leFTTCkzFsPcgXNjwOA8YGGW/W4/kHT3dssE7Z6NH+zuqNLOzOB0uaD61yl7cAcVhgg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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/playwright": { + "version": "1.64.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.64.1.tgz", + "integrity": "sha512-HCrVhHr5QQuwYoswEUGTb7gGp522yflbv/ST8nF4sFWGuLjQCt17Q/EubpGGSNKYn1tsTCPZxqHhHCfVURu7UA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "1.64.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/playwright-core": { + "version": "1.64.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.64.1.tgz", + "integrity": "sha512-BC4s8y6SEVA6Q1rSxZTto8hI1KUI3xXlHGZgvGqP4IqPdI/a6FX9H29IDNz7vKo9l21b6LfYosScPL6M3xxyDQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/postcss": { + "version": "8.5.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.32.tgz", + "integrity": "sha512-LJlKCCAUFKOuZxipUdYw1NzIITEsPcgyOG9LkvRJvuKj/bRzbuRY0ARXvL0pWGpsZvn8jku+LMep2eU0seHp8g==", + "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.20", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "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/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.9.10", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.9.10.tgz", + "integrity": "sha512-skGHTH1Yb9QvaTC4hWnRTzEYtCpApF0UMBPz+t/0ZPzP8ihefo/btKd+QA7pUE0fEwA1SbS/NmhyEcstdXOIdA==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true, + "license": "ISC" + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/qified": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/qified/-/qified-0.10.1.tgz", + "integrity": "sha512-+Owyggi9IxT1ePKGafcI87ubSmxol6smwJ+RAHDQlx9+9cPwFWDiKFFCPuWhr9ignlGpZ9vDQLw67N4dcTVFEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hookified": "^2.1.1" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/qified/node_modules/hookified": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/hookified/-/hookified-2.2.0.tgz", + "integrity": "sha512-p/LgFzRN5FeoD3DLS6bkUapeye6E4SI6yJs6KetENd18S+FBthqYq2amJUWpt5z0EQwwHemidjY5OqJGEKm5uA==", + "dev": true, + "license": "MIT" + }, + "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/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/rolldown": { + "version": "1.2.16", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.2.16.tgz", + "integrity": "sha512-bWvlMpFKiTfDKfnK7FC2MPgPeWCf/Kpwsq49ApdW+FQaBZb6O6dZ4MAPbPUjp7hYQrw/RobqCzn64BRrQecGHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@oxc-project/types": "=0.156.0", + "@rolldown/pluginutils": "^1.0.0" + }, + "bin": { + "rolldown": "bin/cli.mjs" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "optionalDependencies": { + "@rolldown/binding-android-arm-eabi": "1.2.16", + "@rolldown/binding-android-arm64": "1.2.16", + "@rolldown/binding-darwin-arm64": "1.2.16", + "@rolldown/binding-darwin-x64": "1.2.16", + "@rolldown/binding-freebsd-x64": "1.2.16", + "@rolldown/binding-linux-arm-gnueabihf": "1.2.16", + "@rolldown/binding-linux-arm64-gnu": "1.2.16", + "@rolldown/binding-linux-arm64-musl": "1.2.16", + "@rolldown/binding-linux-ppc64-gnu": "1.2.16", + "@rolldown/binding-linux-s390x-gnu": "1.2.16", + "@rolldown/binding-linux-x64-gnu": "1.2.16", + "@rolldown/binding-linux-x64-musl": "1.2.16", + "@rolldown/binding-openharmony-arm64": "1.2.16", + "@rolldown/binding-win32-arm64-msvc": "1.2.16", + "@rolldown/binding-win32-x64-msvc": "1.2.16" + } + }, + "node_modules/sass": { + "version": "1.107.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.107.1.tgz", + "integrity": "sha512-aJ1/LvxOOb04YhmiBjzZn3jVwdHKol+OVhoMV6fFl02fF9T3i+5Mg9l/CnzqtM+NX5Jn5o3lAbs/ZJivTCLHfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": "^5.0.0", + "immutable": "^5.1.5", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=20.19.0" + }, + "optionalDependencies": { + "@parcel/watcher": "^2.4.1" + } + }, + "node_modules/sass/node_modules/chokidar": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz", + "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^5.0.0" + }, + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/sass/node_modules/readdirp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.0.0.tgz", + "integrity": "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/section-matter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", + "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "extend-shallow": "^2.0.1", + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/semver": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/sharp": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.35.5.tgz", + "integrity": "sha512-Ywn4OnzGukp7CDMrp08RQ50YKmuwG47brZgIVPTvBaaAfQlRlygrRqSrxdCiL9M+LlzLBiJ68IR1QqvzHyjC7g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@img/colour": "^1.1.0", + "detect-libc": "^2.1.2", + "semver": "^7.8.5" + }, + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.35.5", + "@img/sharp-darwin-x64": "0.35.5", + "@img/sharp-freebsd-wasm32": "0.35.5", + "@img/sharp-libvips-darwin-arm64": "1.3.4", + "@img/sharp-libvips-darwin-x64": "1.3.4", + "@img/sharp-libvips-linux-arm": "1.3.4", + "@img/sharp-libvips-linux-arm64": "1.3.4", + "@img/sharp-libvips-linux-ppc64": "1.3.4", + "@img/sharp-libvips-linux-riscv64": "1.3.4", + "@img/sharp-libvips-linux-s390x": "1.3.4", + "@img/sharp-libvips-linux-x64": "1.3.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.3.4", + "@img/sharp-libvips-linuxmusl-x64": "1.3.4", + "@img/sharp-linux-arm": "0.35.5", + "@img/sharp-linux-arm64": "0.35.5", + "@img/sharp-linux-ppc64": "0.35.5", + "@img/sharp-linux-riscv64": "0.35.5", + "@img/sharp-linux-s390x": "0.35.5", + "@img/sharp-linux-x64": "0.35.5", + "@img/sharp-linuxmusl-arm64": "0.35.5", + "@img/sharp-linuxmusl-x64": "0.35.5", + "@img/sharp-webcontainers-wasm32": "0.35.5", + "@img/sharp-win32-arm64": "0.35.5", + "@img/sharp-win32-ia32": "0.35.5", + "@img/sharp-win32-x64": "0.35.5" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "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/simplebar": { + "version": "6.3.3", + "resolved": "https://registry.npmjs.org/simplebar/-/simplebar-6.3.3.tgz", + "integrity": "sha512-ni9cIiA8GRitiaenV7A/gh8nTStiVqO3gLxrfCMmq6CSy/pB+fz+QxqvJLo142QHb2Tvgvr8ILwZxf3qzAq7pg==", + "license": "MIT", + "dependencies": { + "simplebar-core": "^1.3.2" + } + }, + "node_modules/simplebar-core": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/simplebar-core/-/simplebar-core-1.3.2.tgz", + "integrity": "sha512-qKgTTuTqapjsFGkNhCjyPhysnbZGpQqNmjk0nOYjFN5ordC/Wjvg+RbYCyMSnW60l/Z0ZS82GbNltly6PMUH1w==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.21", + "lodash-es": "^4.17.21" + } + }, + "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.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.2.tgz", + "integrity": "sha512-KGj/8Y43x35aZVDtt+J4mK1hoLGHULMYfSkODJNQjNDC3oW1PqPoxMwo0pLUsWM/UEGzON/NxeHywEfNXNP3Vw==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.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/string-width": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.3.0.tgz", + "integrity": "sha512-ZbmZM0JCihQN91dWnxoipT2KOEyHqEyfRXUyjuRhW8b/xnqPDoq4gWEVApTVa9db2wN8mmoikgFBbjh71+cGeQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-east-asian-width": "^1.5.0", + "strip-ansi": "^7.1.2" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.4.0.tgz", + "integrity": "sha512-KzTVk2tCWAHtYrvvvaP8bJKJq2pVinhLcGEQdtLIYPbmNGNyYe8QwNaTUYQp2J7/vIsUKt5QCqAfUkYyG9DkOw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tinyexec": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.3.1.tgz", + "integrity": "sha512-GCvB3aoys96IuDFBMcTB46JOR6mdMtAToqwiW8JlWhsoh1mhHi/xn9ss/Dg7N555GiJyEt2qzoG/NHCwM6h1EA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", + "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz", + "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD", + "optional": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/uglify-js": { + "version": "3.19.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", + "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", + "dev": true, + "license": "BSD-2-Clause", + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.3.4.tgz", + "integrity": "sha512-t8wonIOdQyOjtPd2VktlBu6QjTVTks6v8bSi7kd0r2Vll8TK1JYDZtRRdbmCHOAMphkZgrzK+L+vXK4pyZ8t4A==", + "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.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/vanilla-calendar-pro": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/vanilla-calendar-pro/-/vanilla-calendar-pro-3.4.0.tgz", + "integrity": "sha512-HLWjzHOWvMIrjI77tXK5bYzp0s5TeBSrZC247STjcTAdWI7kqEwWT6Xvu20vqdwzF498H1Da8l4WpdgVIGtc1Q==", + "license": "MIT", + "funding": { + "type": "individual", + "url": "https://buymeacoffee.com/uvarov" + } + }, + "node_modules/verkit": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/verkit/-/verkit-0.5.0.tgz", + "integrity": "sha512-u4J1hr6Y+C/hit34GwL3eIcUf3wngT8TlYUjK7tk0jxydKLAq3sYvifjdTDA6U3KCKRcQCQDGf/srjxfZF3l7g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12.0" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + } + }, + "node_modules/vite": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.3.6.tgz", + "integrity": "sha512-UI7dK29NnS54Fk+mmo7o+jI6U8Fp7hDl+X5Q1k45WH+d4dSlbLVUETGQ+hfkNgvLQGyoElPj837nZyv4MBc0VA==", + "dev": true, + "license": "MIT", + "dependencies": { + "lightningcss": "^1.33.0", + "picomatch": "^4.0.7", + "postcss": "^8.5.32", + "rolldown": "~1.2.16", + "tinyglobby": "^0.2.17" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "@vitejs/devtools": "^0.7.1 || ^0.8.0", + "esbuild": "^0.27.0 || ^0.28.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "@vitejs/devtools": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite-plugin-handlebars": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/vite-plugin-handlebars/-/vite-plugin-handlebars-2.0.3.tgz", + "integrity": "sha512-LnzLfYtmHfK66R5M3yL/2EAYmsZh+/0SrlBStRPJYhww0pBDQBDzDgxmxHl9JV2UHZ/21uOx5+kPPZiEp2gMCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "handlebars": "^4.7.9" + }, + "peerDependencies": { + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/vite/node_modules/picomatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz", + "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "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/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", + "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.4.0.tgz", + "integrity": "sha512-KzTVk2tCWAHtYrvvvaP8bJKJq2pVinhLcGEQdtLIYPbmNGNyYe8QwNaTUYQp2J7/vIsUKt5QCqAfUkYyG9DkOw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "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/yargs": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.2.0.tgz", + "integrity": "sha512-9OpKOLeaoNFecEp7P6iYbzze/5CqWoH7N3SMs/6y1XF4nMvFMspEGZzJ6uFi9MmQwXhyzqYoSEKO3tvA3Z/o2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^9.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "string-width": "^8.2.1", + "y18n": "^5.0.5", + "yargs-parser": "^22.0.0" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=23" + } + }, + "node_modules/yargs-parser": { + "version": "22.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz", + "integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=23" + } + }, + "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 index a880833..d56bb1b 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,10 @@ { "name": "@adminkit/core", - "version": "3.5.0", + "version": "4.1.0", "description": "AdminKit - Bootstrap 5 Admin Template", + "engines": { + "node": ">=24" + }, "keywords": [ "bootstrap", "bootstrap 5", @@ -32,57 +35,84 @@ "files": [ "dist" ], + "type": "module", + "main": "./dist/js/app.js", + "types": "./dist/js/app.d.ts", + "style": "./dist/css/app.css", + "exports": { + ".": { + "types": "./dist/js/app.d.ts", + "default": "./dist/js/app.js" + }, + "./css": { + "types": "./dist/css/app.d.css.ts", + "default": "./dist/css/app.css" + }, + "./head": "./dist/js/head.js", + "./dist/*": "./dist/*", + "./package.json": "./package.json" + }, + "sideEffects": [ + "*.css", + "*.js" + ], "scripts": { - "build": "cross-env NODE_ENV=production webpack --config webpack.config.js --progress", - "watch": "webpack --config webpack.config.js --watch --progress", - "start": "webpack serve --config webpack.config.js --progress", - "prepublishOnly": "cross-env NODE_ENV=production webpack --progress --config webpack.config.js" + "dev": "vite", + "start": "vite --open", + "build": "vite build", + "preview": "vite preview", + "prepublishOnly": "npm run build", + "lint": "eslint . && prettier --check . && node scripts/check-icons.mjs && node scripts/stats.mjs --check", + "format": "prettier --write .", + "icons:list": "node scripts/generate-icon-list.mjs", + "stats": "node scripts/stats.mjs", + "stats:sync": "node scripts/stats.mjs --sync", + "screenshots": "node scripts/screenshots.mjs" }, "browserslist": [ - ">= 0.5%", - "last 2 major versions", - "not dead", - "Chrome >= 60", - "Firefox >= 60", - "Firefox ESR", - "iOS >= 12", - "Safari >= 12", - "not Explorer <= 11" + "Chrome >= 111", + "Edge >= 111", + "Firefox >= 114", + "Safari >= 16.4", + "iOS >= 16.4" ], "dependencies": { - "@babel/polyfill": "7.12.1", + "@fontsource/inter": "5.3.0", "@popperjs/core": "2.11.8", "bootstrap": "5.3.8", - "chart.js": "2.9.4", - "feather-icons": "4.29.2", - "flatpickr": "4.6.13", + "chart.js": "4.6.1", "jsvectormap": "1.7.0", - "simplebar": "5.3.9" + "lucide": "1.66.0", + "simplebar": "6.3.3", + "vanilla-calendar-pro": "3.4.0" }, "devDependencies": { - "@babel/core": "7.29.7", - "@babel/plugin-syntax-dynamic-import": "7.8.3", - "@babel/preset-env": "7.29.7", - "@babel/register": "7.29.7", - "autoprefixer": "10.5.4", - "babel-eslint": "10.1.0", - "babel-loader": "9.2.1", - "copy-webpack-plugin": "11.0.0", - "cross-env": "7.0.3", - "css-loader": "6.11.0", - "css-minimizer-webpack-plugin": "5.0.1", - "eslint": "8.57.1", - "file-loader": "6.2.0", - "filemanager-webpack-plugin": "8.0.0", - "hard-source-webpack-plugin": "0.13.1", - "mini-css-extract-plugin": "2.10.2", - "postcss-loader": "7.3.4", - "sass": "1.102.0", - "sass-loader": "13.3.3", - "terser-webpack-plugin": "5.6.1", - "url-loader": "4.1.1", - "webpack": "5.109.2", - "webpack-cli": "5.1.4", - "webpack-dev-server": "4.15.2" + "@commitlint/cli": "21.2.4", + "@commitlint/config-conventional": "21.2.4", + "@eslint/js": "10.0.1", + "autoprefixer": "10.6.2", + "eslint": "10.14.0", + "globals": "17.14.0", + "gray-matter": "4.0.3", + "handlebars": "4.7.10", + "js-beautify": "2.0.3", + "lefthook": "2.2.2", + "lucide-static": "1.66.0", + "playwright": "1.64.1", + "prettier": "3.9.10", + "sass": "1.107.1", + "sharp": "0.35.5", + "vite": "8.3.6", + "vite-plugin-handlebars": "2.0.3" + }, + "allowScripts": { + "lefthook": true + }, + "adminkit": { + "edition": "free" + }, + "overrides": { + "minimatch": "11.0.1", + "glob": "14.0.3" } } diff --git a/postcss.config.js b/postcss.config.js deleted file mode 100644 index 88752c6..0000000 --- a/postcss.config.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - plugins: [ - require('autoprefixer') - ] -} diff --git a/postcss.config.mjs b/postcss.config.mjs new file mode 100644 index 0000000..0d0268f --- /dev/null +++ b/postcss.config.mjs @@ -0,0 +1,5 @@ +import autoprefixer from "autoprefixer"; + +export default { + plugins: [autoprefixer], +}; diff --git a/src/img/avatars/avatar-2.jpg b/public/img/avatars/avatar-2.jpg similarity index 100% rename from src/img/avatars/avatar-2.jpg rename to public/img/avatars/avatar-2.jpg diff --git a/src/img/avatars/avatar-3.jpg b/public/img/avatars/avatar-3.jpg similarity index 100% rename from src/img/avatars/avatar-3.jpg rename to public/img/avatars/avatar-3.jpg diff --git a/src/img/avatars/avatar-4.jpg b/public/img/avatars/avatar-4.jpg similarity index 100% rename from src/img/avatars/avatar-4.jpg rename to public/img/avatars/avatar-4.jpg diff --git a/src/img/avatars/avatar-5.jpg b/public/img/avatars/avatar-5.jpg similarity index 100% rename from src/img/avatars/avatar-5.jpg rename to public/img/avatars/avatar-5.jpg diff --git a/src/img/avatars/avatar.jpg b/public/img/avatars/avatar.jpg similarity index 100% rename from src/img/avatars/avatar.jpg rename to public/img/avatars/avatar.jpg diff --git a/src/img/icons/icon-48x48.png b/public/img/icons/icon-48x48.png similarity index 100% rename from src/img/icons/icon-48x48.png rename to public/img/icons/icon-48x48.png diff --git a/src/img/photos/unsplash-1.jpg b/public/img/photos/unsplash-1.jpg similarity index 100% rename from src/img/photos/unsplash-1.jpg rename to public/img/photos/unsplash-1.jpg diff --git a/src/img/photos/unsplash-2.jpg b/public/img/photos/unsplash-2.jpg similarity index 100% rename from src/img/photos/unsplash-2.jpg rename to public/img/photos/unsplash-2.jpg diff --git a/public/img/screenshots/pro/ai-chat-dark-800.webp b/public/img/screenshots/pro/ai-chat-dark-800.webp new file mode 100644 index 0000000..61083c1 Binary files /dev/null and b/public/img/screenshots/pro/ai-chat-dark-800.webp differ diff --git a/public/img/screenshots/pro/ai-chat-dark.webp b/public/img/screenshots/pro/ai-chat-dark.webp new file mode 100644 index 0000000..19b0d0c Binary files /dev/null and b/public/img/screenshots/pro/ai-chat-dark.webp differ diff --git a/public/img/screenshots/pro/ai-chat-light-800.webp b/public/img/screenshots/pro/ai-chat-light-800.webp new file mode 100644 index 0000000..a177dbb Binary files /dev/null and b/public/img/screenshots/pro/ai-chat-light-800.webp differ diff --git a/public/img/screenshots/pro/ai-chat-light.webp b/public/img/screenshots/pro/ai-chat-light.webp new file mode 100644 index 0000000..3e5477a Binary files /dev/null and b/public/img/screenshots/pro/ai-chat-light.webp differ diff --git a/public/img/screenshots/pro/ai-usage-dark-800.webp b/public/img/screenshots/pro/ai-usage-dark-800.webp new file mode 100644 index 0000000..8cb0cc8 Binary files /dev/null and b/public/img/screenshots/pro/ai-usage-dark-800.webp differ diff --git a/public/img/screenshots/pro/ai-usage-dark.webp b/public/img/screenshots/pro/ai-usage-dark.webp new file mode 100644 index 0000000..630ddd2 Binary files /dev/null and b/public/img/screenshots/pro/ai-usage-dark.webp differ diff --git a/public/img/screenshots/pro/ai-usage-light-800.webp b/public/img/screenshots/pro/ai-usage-light-800.webp new file mode 100644 index 0000000..36d8028 Binary files /dev/null and b/public/img/screenshots/pro/ai-usage-light-800.webp differ diff --git a/public/img/screenshots/pro/ai-usage-light.webp b/public/img/screenshots/pro/ai-usage-light.webp new file mode 100644 index 0000000..2eeecba Binary files /dev/null and b/public/img/screenshots/pro/ai-usage-light.webp differ diff --git a/public/img/screenshots/pro/analytics-dark-800.webp b/public/img/screenshots/pro/analytics-dark-800.webp new file mode 100644 index 0000000..12f7006 Binary files /dev/null and b/public/img/screenshots/pro/analytics-dark-800.webp differ diff --git a/public/img/screenshots/pro/analytics-dark.webp b/public/img/screenshots/pro/analytics-dark.webp new file mode 100644 index 0000000..4f2a0ee Binary files /dev/null and b/public/img/screenshots/pro/analytics-dark.webp differ diff --git a/public/img/screenshots/pro/analytics-light-800.webp b/public/img/screenshots/pro/analytics-light-800.webp new file mode 100644 index 0000000..31ddd82 Binary files /dev/null and b/public/img/screenshots/pro/analytics-light-800.webp differ diff --git a/public/img/screenshots/pro/analytics-light.webp b/public/img/screenshots/pro/analytics-light.webp new file mode 100644 index 0000000..b46420f Binary files /dev/null and b/public/img/screenshots/pro/analytics-light.webp differ diff --git a/public/img/screenshots/pro/calendar-dark-800.webp b/public/img/screenshots/pro/calendar-dark-800.webp new file mode 100644 index 0000000..ac3a513 Binary files /dev/null and b/public/img/screenshots/pro/calendar-dark-800.webp differ diff --git a/public/img/screenshots/pro/calendar-dark.webp b/public/img/screenshots/pro/calendar-dark.webp new file mode 100644 index 0000000..7ead5ed Binary files /dev/null and b/public/img/screenshots/pro/calendar-dark.webp differ diff --git a/public/img/screenshots/pro/calendar-light-800.webp b/public/img/screenshots/pro/calendar-light-800.webp new file mode 100644 index 0000000..d279eae Binary files /dev/null and b/public/img/screenshots/pro/calendar-light-800.webp differ diff --git a/public/img/screenshots/pro/calendar-light.webp b/public/img/screenshots/pro/calendar-light.webp new file mode 100644 index 0000000..c4b0af5 Binary files /dev/null and b/public/img/screenshots/pro/calendar-light.webp differ diff --git a/public/img/screenshots/pro/crm-dark-800.webp b/public/img/screenshots/pro/crm-dark-800.webp new file mode 100644 index 0000000..4c41d28 Binary files /dev/null and b/public/img/screenshots/pro/crm-dark-800.webp differ diff --git a/public/img/screenshots/pro/crm-dark.webp b/public/img/screenshots/pro/crm-dark.webp new file mode 100644 index 0000000..808abbf Binary files /dev/null and b/public/img/screenshots/pro/crm-dark.webp differ diff --git a/public/img/screenshots/pro/crm-light-800.webp b/public/img/screenshots/pro/crm-light-800.webp new file mode 100644 index 0000000..6fc7cd4 Binary files /dev/null and b/public/img/screenshots/pro/crm-light-800.webp differ diff --git a/public/img/screenshots/pro/crm-light.webp b/public/img/screenshots/pro/crm-light.webp new file mode 100644 index 0000000..0ed646f Binary files /dev/null and b/public/img/screenshots/pro/crm-light.webp differ diff --git a/public/img/screenshots/pro/crypto-dark-800.webp b/public/img/screenshots/pro/crypto-dark-800.webp new file mode 100644 index 0000000..19b786e Binary files /dev/null and b/public/img/screenshots/pro/crypto-dark-800.webp differ diff --git a/public/img/screenshots/pro/crypto-dark.webp b/public/img/screenshots/pro/crypto-dark.webp new file mode 100644 index 0000000..fd38168 Binary files /dev/null and b/public/img/screenshots/pro/crypto-dark.webp differ diff --git a/public/img/screenshots/pro/crypto-light-800.webp b/public/img/screenshots/pro/crypto-light-800.webp new file mode 100644 index 0000000..b8e33d6 Binary files /dev/null and b/public/img/screenshots/pro/crypto-light-800.webp differ diff --git a/public/img/screenshots/pro/crypto-light.webp b/public/img/screenshots/pro/crypto-light.webp new file mode 100644 index 0000000..0821909 Binary files /dev/null and b/public/img/screenshots/pro/crypto-light.webp differ diff --git a/public/img/screenshots/pro/datatables-dark-800.webp b/public/img/screenshots/pro/datatables-dark-800.webp new file mode 100644 index 0000000..97e0382 Binary files /dev/null and b/public/img/screenshots/pro/datatables-dark-800.webp differ diff --git a/public/img/screenshots/pro/datatables-dark.webp b/public/img/screenshots/pro/datatables-dark.webp new file mode 100644 index 0000000..726d9b5 Binary files /dev/null and b/public/img/screenshots/pro/datatables-dark.webp differ diff --git a/public/img/screenshots/pro/datatables-light-800.webp b/public/img/screenshots/pro/datatables-light-800.webp new file mode 100644 index 0000000..b79e0d4 Binary files /dev/null and b/public/img/screenshots/pro/datatables-light-800.webp differ diff --git a/public/img/screenshots/pro/datatables-light.webp b/public/img/screenshots/pro/datatables-light.webp new file mode 100644 index 0000000..a4b12b3 Binary files /dev/null and b/public/img/screenshots/pro/datatables-light.webp differ diff --git a/public/img/screenshots/pro/ecommerce-dark-800.webp b/public/img/screenshots/pro/ecommerce-dark-800.webp new file mode 100644 index 0000000..05aeb8f Binary files /dev/null and b/public/img/screenshots/pro/ecommerce-dark-800.webp differ diff --git a/public/img/screenshots/pro/ecommerce-dark.webp b/public/img/screenshots/pro/ecommerce-dark.webp new file mode 100644 index 0000000..cc1bb61 Binary files /dev/null and b/public/img/screenshots/pro/ecommerce-dark.webp differ diff --git a/public/img/screenshots/pro/ecommerce-light-800.webp b/public/img/screenshots/pro/ecommerce-light-800.webp new file mode 100644 index 0000000..ac5075c Binary files /dev/null and b/public/img/screenshots/pro/ecommerce-light-800.webp differ diff --git a/public/img/screenshots/pro/ecommerce-light.webp b/public/img/screenshots/pro/ecommerce-light.webp new file mode 100644 index 0000000..f2798ce Binary files /dev/null and b/public/img/screenshots/pro/ecommerce-light.webp differ diff --git a/public/img/screenshots/pro/settings-dark-800.webp b/public/img/screenshots/pro/settings-dark-800.webp new file mode 100644 index 0000000..b2c104e Binary files /dev/null and b/public/img/screenshots/pro/settings-dark-800.webp differ diff --git a/public/img/screenshots/pro/settings-dark.webp b/public/img/screenshots/pro/settings-dark.webp new file mode 100644 index 0000000..0bcb98e Binary files /dev/null and b/public/img/screenshots/pro/settings-dark.webp differ diff --git a/public/img/screenshots/pro/settings-light-800.webp b/public/img/screenshots/pro/settings-light-800.webp new file mode 100644 index 0000000..69865a5 Binary files /dev/null and b/public/img/screenshots/pro/settings-light-800.webp differ diff --git a/public/img/screenshots/pro/settings-light.webp b/public/img/screenshots/pro/settings-light.webp new file mode 100644 index 0000000..079afce Binary files /dev/null and b/public/img/screenshots/pro/settings-light.webp differ diff --git a/public/og-image.png b/public/og-image.png new file mode 100644 index 0000000..c41a803 Binary files /dev/null and b/public/og-image.png differ diff --git a/scripts/check-icons.mjs b/scripts/check-icons.mjs new file mode 100644 index 0000000..e943be0 --- /dev/null +++ b/scripts/check-icons.mjs @@ -0,0 +1,115 @@ +// Checks that src/js/modules/icons.js bundles exactly the Lucide icons the templates use: +// every data-lucide="name" in src/**/*.{html,hbs,js} (and every value passed to a partial +// that renders data-lucide="{{ param }}") must be imported, and every import must be used. +// The icons page loads js/icons-all.js with the full set, so it is skipped. +import { readFile, readdir } from "node:fs/promises"; +import { createRequire } from "node:module"; +import { extname, join, relative, sep } from "node:path"; + +const root = join(import.meta.dirname, ".."); +const src = join(root, "src"); +const iconsModule = join(src, "js/modules/icons.js"); +const skipped = [iconsModule, join(src, "pages/icons-lucide.html")]; + +const require = createRequire(import.meta.url); +const canonical = new Set(Object.keys(require("lucide-static/tags.json"))); + +const display = (file) => relative(root, file).split(sep).join("/"); + +// Same conversion as lucide's createIcons: "circle-alert" -> "CircleAlert" +const toPascalCase = (name) => + name + .split("-") + .map((part) => part.charAt(0).toUpperCase() + part.slice(1)) + .join(""); + +const files = (await readdir(src, { recursive: true })) + .map((file) => join(src, file)) + .filter((file) => [".html", ".hbs", ".js"].includes(extname(file))) + .filter((file) => !file.includes(join("js", "modules", "vector-maps"))) + .filter((file) => !skipped.includes(file)); +const sources = new Map( + await Promise.all( + files.map(async (file) => [file, await readFile(file, "utf8")]) + ) +); + +const errors = []; +const used = new Map(); +const use = (name, file) => { + if (!used.has(name)) used.set(name, new Set()); + used.get(name).add(display(file)); +}; + +for (const [file, source] of sources) { + for (const [, value] of source.matchAll(/data-lucide="([^"]*)"/g)) { + const param = value.match(/^\{\{\s*([\w-]+)\s*\}\}$/)?.[1]; + if (!value.includes("{{")) { + use(value, file); + } else if (param && file.startsWith(join(src, "partials"))) { + // Partials are named by their path in src/partials: dashboard/stats + const partial = relative(join(src, "partials"), file) + .split(sep) + .join("/") + .replace(/\.hbs$/, ""); + const call = new RegExp( + String.raw`\{\{>\s*${partial}\s[^}]*\b${param}="([^"]+)"`, + "g" + ); + for (const [caller, callerSource] of sources) { + for (const [, name] of callerSource.matchAll(call)) use(name, caller); + } + } else { + errors.push(`${display(file)}: cannot resolve data-lucide="${value}"`); + } + } +} + +const iconsSource = await readFile(iconsModule, "utf8"); +const imports = new Set( + iconsSource + .match(/import\s*\{([^}]*)\}\s*from\s*"lucide"/)[1] + .split(",") + .map((name) => name.trim()) + .filter((name) => name && name !== "createElement") +); +const registered = new Set( + iconsSource + .match(/const icons = \{([^}]*)\}/)[1] + .split(",") + .map((name) => name.trim()) + .filter(Boolean) +); + +for (const [name, where] of used) { + const component = toPascalCase(name); + const files = [...where].join(", "); + if (!canonical.has(name)) { + errors.push( + `"${name}" is not a Lucide icon name (or is a deprecated alias), used in ${files}` + ); + } else if (!imports.has(component) || !registered.has(component)) { + errors.push( + `"${name}" is used in ${files} but ${component} is not imported and added to icons in src/js/modules/icons.js` + ); + } +} + +const usedComponents = new Set([...used.keys()].map(toPascalCase)); +for (const component of new Set([...imports, ...registered])) { + if (!usedComponents.has(component)) { + errors.push( + `${component} is bundled in src/js/modules/icons.js but no template uses it` + ); + } else if (!imports.has(component) || !registered.has(component)) { + errors.push( + `${component} must be both imported and added to icons in src/js/modules/icons.js` + ); + } +} + +if (errors.length) { + console.error(errors.join("\n")); + process.exit(1); +} +console.log(`check-icons: ${used.size} Lucide icons used, all bundled`); diff --git a/scripts/generate-icon-list.mjs b/scripts/generate-icon-list.mjs new file mode 100644 index 0000000..298358e --- /dev/null +++ b/scripts/generate-icon-list.mjs @@ -0,0 +1,25 @@ +// Writes src/data/icons-lucide.json (name and search tags of every Lucide icon) from +// lucide-static, for the icons page. Run `npm run icons:list` after upgrading lucide. +import { readFile, writeFile } from "node:fs/promises"; +import { createRequire } from "node:module"; +import { fileURLToPath } from "node:url"; +import prettier from "prettier"; + +const require = createRequire(import.meta.url); +const tags = JSON.parse( + await readFile(require.resolve("lucide-static/tags.json"), "utf8") +); +const output = fileURLToPath( + new URL("../src/data/icons-lucide.json", import.meta.url) +); + +const icons = Object.keys(tags) + .sort() + .map((name) => ({ name, tags: tags[name] })); + +const json = await prettier.format(JSON.stringify(icons), { + ...(await prettier.resolveConfig(output)), + filepath: output, +}); +await writeFile(output, json); +console.log(`Wrote ${icons.length} icons to src/data/icons-lucide.json`); diff --git a/scripts/screenshots.mjs b/scripts/screenshots.mjs new file mode 100644 index 0000000..c95caa6 --- /dev/null +++ b/scripts/screenshots.mjs @@ -0,0 +1,218 @@ +// Captures the screenshots the upgrade page and the README show. Run it on demand, never +// in the build: +// +// npm run screenshots -- --pro ../adminkit-pro PRO pages -> public/img/screenshots/pro/ +// npm run screenshots -- --free this dashboard -> .github/screenshots/ +// +// For each checkout it runs `vite build` there (its dependencies must be installed), +// serves dist/ on a free port and captures every shot in light and dark mode at 1440×900 +// with devicePixelRatio 2, with reduced motion so cards, numbers and charts show their +// final state. sharp writes WebP at quality 80, at most 1600 pixels wide; the PRO shots +// also get an 800 pixel wide copy for srcset. The browser is Playwright's Chromium +// (npx playwright install chromium). +import { spawn } from "node:child_process"; +import { existsSync } from "node:fs"; +import { mkdir, readFile, rm, stat, writeFile } from "node:fs/promises"; +import { createServer } from "node:http"; +import { extname, join, normalize, relative, resolve, sep } from "node:path"; +import { chromium } from "playwright"; +import sharp from "sharp"; + +const root = resolve(import.meta.dirname, ".."); +const viewport = { width: 1440, height: 900 }; +const quality = 80; +const modes = ["light", "dark"]; + +const editions = { + pro: { + output: join(root, "public/img/screenshots/pro"), + widths: [1600, 800], + shots: [ + { name: "analytics", page: "index.html" }, + { name: "ecommerce", page: "dashboard-ecommerce.html" }, + { name: "crm", page: "dashboard-crm.html" }, + { name: "crypto", page: "dashboard-crypto.html" }, + { name: "ai-usage", page: "dashboard-ai.html" }, + { name: "ai-chat", page: "pages-chat-ai.html" }, + { name: "calendar", page: "calendar.html" }, + { name: "datatables", page: "tables-datatables-responsive.html" }, + { + name: "settings", + page: "index.html", + async prepare(page) { + await page.locator(".settings-toggle").click(); + await page.locator("#settings-panel.show").waitFor(); + }, + }, + ], + }, + free: { + output: join(root, ".github/screenshots"), + widths: [1600], + shots: [{ name: "dashboard", page: "index.html" }], + }, +}; + +const display = (file) => relative(root, file).split(sep).join("/"); + +const parseArgs = (args) => { + const runs = []; + for (let i = 0; i < args.length; i++) { + const edition = args[i].match(/^--([a-z]+)$/)?.[1]; + if (!(edition in editions)) { + throw new Error( + `Unknown option ${args[i]}; use --pro or --free` + ); + } + const next = args[i + 1]; + const checkout = next && !next.startsWith("--") ? args[++i] : null; + if (!checkout && edition !== "free") { + throw new Error(`--${edition} needs the path of a checkout`); + } + runs.push({ edition, checkout: checkout ? resolve(checkout) : root }); + } + if (!runs.length) { + throw new Error( + "Name what to capture: npm run screenshots -- --pro ../adminkit-pro, or --free" + ); + } + return runs; +}; + +const build = (checkout) => + new Promise((done, fail) => { + const vite = join(checkout, "node_modules/vite/bin/vite.js"); + if (!existsSync(vite)) { + fail( + new Error(`${checkout} has no node_modules; run npm ci there first`) + ); + return; + } + const child = spawn( + process.execPath, + [vite, "build", "--logLevel", "warn"], + { + cwd: checkout, + stdio: "inherit", + } + ); + child.on("error", fail); + child.on("exit", (code) => + code === 0 ? done() : fail(new Error(`vite build failed in ${checkout}`)) + ); + }); + +const types = { + ".html": "text/html", + ".js": "text/javascript", + ".css": "text/css", + ".json": "application/json", + ".svg": "image/svg+xml", + ".png": "image/png", + ".jpg": "image/jpeg", + ".webp": "image/webp", + ".woff2": "font/woff2", + ".woff": "font/woff", +}; + +const serve = (directory) => + new Promise((listening) => { + const server = createServer(async (request, response) => { + const path = decodeURIComponent( + new URL(request.url, "http://x").pathname + ); + const file = join( + directory, + normalize(path.endsWith("/") ? `${path}index.html` : path) + ); + try { + const body = await readFile(file); + response.writeHead(200, { + "content-type": types[extname(file)] ?? "application/octet-stream", + }); + response.end(body); + } catch { + response.writeHead(404); + response.end(); + } + }); + server.listen(0, "127.0.0.1", () => listening(server)); + }); + +const capture = async (browser, base, { output, widths, shots }) => { + await rm(output, { recursive: true, force: true }); + await mkdir(output, { recursive: true }); + const written = []; + + for (const mode of modes) { + const context = await browser.newContext({ + viewport, + deviceScaleFactor: 2, + colorScheme: mode, + reducedMotion: "reduce", + }); + // The stored color mode wins over the system one; "visited" keeps the PRO settings + // panel from opening by itself + await context.addInitScript((colorMode) => { + localStorage.setItem("adminkit_config_colorMode", colorMode); + localStorage.setItem("adminkit_config_visited", "true"); + }, mode); + const page = await context.newPage(); + + for (const shot of shots) { + await page.goto(`${base}/${shot.page}`, { waitUntil: "networkidle" }); + await page.evaluate(() => document.fonts.ready); + await page + .locator('[aria-busy="true"]') + .first() + .waitFor({ state: "detached", timeout: 5000 }) + .catch(() => {}); + await shot.prepare?.(page); + // Charts, the reveal fade and offcanvas transitions settle + await page.waitForTimeout(1200); + const png = await page.screenshot(); + + for (const width of widths) { + const suffix = width === widths[0] ? "" : `-${width}`; + const file = join(output, `${shot.name}-${mode}${suffix}.webp`); + await writeFile( + file, + await sharp(png) + .resize({ width, withoutEnlargement: true }) + .webp({ quality }) + .toBuffer() + ); + written.push(file); + } + } + await context.close(); + } + return written; +}; + +const runs = parseArgs(process.argv.slice(2)); +const browser = await chromium.launch(); +try { + for (const { edition, checkout } of runs) { + console.log(`Building ${checkout}`); + await build(checkout); + const server = await serve(join(checkout, "dist")); + const base = `http://127.0.0.1:${server.address().port}`; + try { + const files = await capture(browser, base, editions[edition]); + let total = 0; + for (const file of files) { + const { size } = await stat(file); + total += size; + console.log(`${display(file)} ${(size / 1024).toFixed(0)} KB`); + } + console.log( + `${edition}: ${files.length} files, ${(total / 1024).toFixed(0)} KB` + ); + } finally { + server.close(); + } + } +} finally { + await browser.close(); +} diff --git a/scripts/stats.mjs b/scripts/stats.mjs new file mode 100644 index 0000000..ef21edd --- /dev/null +++ b/scripts/stats.mjs @@ -0,0 +1,466 @@ +// Counts what this edition ships and writes src/data/stats.json, the single source for +// every page, plugin and icon count in the templates and the README. +// +// node scripts/stats.mjs write src/data/stats.json and the README block +// node scripts/stats.mjs --check fail when either is stale or the data is invalid +// node scripts/stats.mjs --sync --pro +// copy /src/data/stats.json to +// src/data/editions/pro.json, then write as above +// +// The build runs it too (vite/stats.js), so dist/ never shows stale numbers. It reads only +// this repository: another edition's numbers come from its committed snapshot in +// src/data/editions/, refreshed with --sync. +// +// Sources: +// - pages: src/pages/*.html and their frontmatter (`title`, or `label` for a page without +// one; `category: dashboard`) +// - plugins: src/data/plugins.json; every dependency is a listed plugin or in `notPlugins` +// - icons: src/data/icons-lucide.json, and src/data/icons-fa-*.json where the Font Awesome +// icons page uses them +// - color modes and schemes: src/data/appearance.json +// - comparison: src/data/comparison.json, this edition's column; the snapshots add theirs +import { existsSync } from "node:fs"; +import { mkdir, readFile, readdir, writeFile } from "node:fs/promises"; +import { + basename, + dirname, + extname, + join, + relative, + resolve, + sep, +} from "node:path"; +import matter from "gray-matter"; +import * as prettier from "prettier"; + +const root = resolve(import.meta.dirname, ".."); +const data = join(root, "src/data"); +const files = { + stats: join(data, "stats.json"), + plugins: join(data, "plugins.json"), + appearance: join(data, "appearance.json"), + comparison: join(data, "comparison.json"), + editions: join(data, "editions"), + readme: join(root, "README.md"), +}; +const markers = ["", ""]; +const categories = ["dashboard"]; + +const display = (file) => relative(root, file).split(sep).join("/"); +const readJson = async (file) => JSON.parse(await readFile(file, "utf8")); +const number = (value) => value.toLocaleString("en-US"); +const list = (items) => + items.length < 2 + ? items.join("") + : `${items.slice(0, -1).join(", ")} and ${items.at(-1)}`; + +const format = async (source, file) => + prettier.format(source, { + ...(await prettier.resolveConfig(file)), + filepath: file, + }); + +const readPages = async (errors) => { + const directory = join(root, "src/pages"); + const names = (await readdir(directory)) + .filter((file) => extname(file) === ".html") + .sort(); + + return Promise.all( + names.map(async (file) => { + const { data: frontmatter } = matter( + await readFile(join(directory, file), "utf8") + ); + const title = frontmatter.title ?? frontmatter.label; + const category = [frontmatter.category ?? []].flat(); + + if (title === undefined) { + errors.push( + `src/pages/${file}: add a title or label to the frontmatter` + ); + } + for (const name of category) { + if (!categories.includes(name)) { + errors.push( + `src/pages/${file}: unknown category "${name}" (use ${categories.join(" or ")})` + ); + } + } + + return { file, title: String(title), category }; + }) + ); +}; + +const readPlugins = async (errors) => { + const pkg = await readJson(join(root, "package.json")); + const dependencies = Object.keys(pkg.dependencies ?? {}); + const { plugins, notPlugins } = await readJson(files.plugins); + const listed = new Set(plugins.map((plugin) => plugin.package)); + + for (const plugin of plugins) { + if (!dependencies.includes(plugin.package)) { + errors.push( + `src/data/plugins.json: ${plugin.name} (${plugin.package}) is not in dependencies` + ); + continue; + } + const installed = await readJson( + join(root, "node_modules", plugin.package, "package.json") + ); + if (installed.license !== plugin.license) { + errors.push( + `src/data/plugins.json: ${plugin.package} is licensed "${installed.license}", not "${plugin.license}"` + ); + } + } + for (const dependency of dependencies) { + if (!listed.has(dependency) && !(dependency in notPlugins)) { + errors.push( + `src/data/plugins.json: add the ${dependency} dependency to plugins, or to notPlugins with the reason it is not a plugin` + ); + } + } + for (const dependency of Object.keys(notPlugins)) { + if (!dependencies.includes(dependency)) { + errors.push( + `src/data/plugins.json: notPlugins lists ${dependency}, which is not a dependency` + ); + } + } + + return plugins.map(({ name, package: packageName, url, license }) => ({ + name, + package: packageName, + url, + license, + })); +}; + +const readIcons = async () => { + const lucide = (await readJson(join(data, "icons-lucide.json"))).length; + const icons = { total: lucide, lucide }; + + // Font Awesome counts only where a page shows the icons + if (existsSync(join(root, "src/pages/icons-font-awesome.html"))) { + const count = async (style) => + (await readJson(join(data, `icons-fa-${style}.json`))).length; + const fontAwesome = { + solid: await count("solid"), + regular: await count("regular"), + brands: await count("brand"), + }; + fontAwesome.total = + fontAwesome.solid + fontAwesome.regular + fontAwesome.brands; + icons.fontAwesome = fontAwesome; + icons.total += fontAwesome.total; + } + + return icons; +}; + +export const readEditions = async () => { + if (!existsSync(files.editions)) { + return {}; + } + const names = (await readdir(files.editions)) + .filter((file) => extname(file) === ".json") + .sort(); + return Object.fromEntries( + await Promise.all( + names.map(async (file) => [ + basename(file, ".json"), + await readJson(join(files.editions, file)), + ]) + ) + ); +}; + +const resolveStat = (stats, path) => + path.split(".").reduce((value, key) => value?.[key], stats); + +// Each edition's comparison.json holds its own column: per row a stat path +// ({ "stat": "pages.count" }) or a literal. The other editions' columns come from their +// snapshots, matched by row id. +const readComparison = async (own, editions, errors) => { + if (!existsSync(files.comparison)) { + return undefined; + } + const rows = await readJson(files.comparison); + const ids = new Set(rows.map((row) => row.id)); + + const comparison = rows.map(({ id, label, value }) => { + const row = { id, label }; + if (value === undefined) { + errors.push(`src/data/comparison.json: ${id} has no value`); + } else if (value !== null && typeof value === "object") { + row[own.edition] = resolveStat(own, value.stat); + if (typeof row[own.edition] !== "number") { + errors.push( + `src/data/comparison.json: ${id} reads ${value.stat}, which is not a number in the stats` + ); + } + } else { + row[own.edition] = value; + } + + for (const [edition, snapshot] of Object.entries(editions)) { + const theirs = snapshot.comparison?.find((other) => other.id === id); + if (theirs === undefined || !(edition in theirs)) { + errors.push( + `src/data/editions/${edition}.json has no ${id} comparison row; add it to the ${edition} src/data/comparison.json, then run npm run stats:sync` + ); + continue; + } + row[edition] = theirs[edition]; + } + return row; + }); + + for (const [edition, snapshot] of Object.entries(editions)) { + for (const { id } of snapshot.comparison ?? []) { + if (!ids.has(id)) { + errors.push( + `src/data/editions/${edition}.json has a ${id} comparison row that src/data/comparison.json lacks` + ); + } + } + } + return comparison; +}; + +export const generateStats = async () => { + const errors = []; + const pkg = await readJson(join(root, "package.json")); + const pages = await readPages(errors); + const plugins = await readPlugins(errors); + const appearance = await readJson(files.appearance); + const pageList = (filter) => { + const matching = pages + .filter(filter) + .map(({ file, title }) => ({ file, title })); + return { count: matching.length, list: matching }; + }; + + const stats = { + edition: pkg.adminkit.edition, + version: pkg.version, + pages: pageList(() => true), + dashboards: pageList((page) => page.category.includes("dashboard")), + plugins: { count: plugins.length, list: plugins }, + icons: await readIcons(), + colorModes: { + count: appearance.colorModes.length, + list: appearance.colorModes, + }, + colorSchemes: { + count: appearance.colorSchemes.length, + list: appearance.colorSchemes, + }, + }; + + const editions = await readEditions(); + for (const [edition, snapshot] of Object.entries(editions)) { + if (snapshot.edition !== edition) { + errors.push( + `src/data/editions/${edition}.json holds the stats of "${snapshot.edition}"` + ); + } + } + const comparison = await readComparison(stats, editions, errors); + if (comparison) { + stats.comparison = comparison; + } + + return { stats, errors }; +}; + +// The README block: the edition comparison where another edition's snapshot adds a column, +// a summary otherwise +const editionNames = { free: "AdminKit", pro: "AdminKit PRO" }; +const editionLinks = { pro: "https://adminkit.io/pricing/" }; + +const renderValue = (value) => { + if (typeof value === "number") return number(value); + if (typeof value === "boolean") return value ? "✔" : ""; + return value; +}; + +const comparisonEditions = (stats) => + Object.keys(stats.comparison?.[0] ?? {}).filter((key) => key in editionNames); + +const renderComparison = (stats) => { + const editions = comparisonEditions(stats); + const heading = editions.map((edition) => + editionLinks[edition] + ? `[${editionNames[edition]}](${editionLinks[edition]})` + : editionNames[edition] + ); + return [ + `| | ${heading.join(" | ")} |`, + `| - | ${editions.map(() => "-").join(" | ")} |`, + ...stats.comparison.map( + (row) => + `| ${row.label} | ${editions.map((edition) => renderValue(row[edition])).join(" | ")} |` + ), + ].join("\n"); +}; + +const renderSummary = (stats) => { + const titles = (pages) => list(pages.list.map((page) => page.title)); + const { icons } = stats; + const iconSets = [`${number(icons.lucide)} Lucide`]; + if (icons.fontAwesome) { + const fa = icons.fontAwesome; + iconSets.push( + `${number(fa.total)} Font Awesome (${number(fa.solid)} solid, ${number(fa.regular)} regular, ${number(fa.brands)} brands)` + ); + } + return [ + `- ${stats.pages.count} pages, ${stats.dashboards.count === 1 ? "one of them a dashboard" : `${stats.dashboards.count} of them dashboards`}: ${titles(stats.dashboards)}`, + `- ${stats.plugins.count} plugins: ${list(stats.plugins.list.map((plugin) => `[${plugin.name}](${plugin.url})`))}`, + `- ${number(icons.total)} icons: ${list(iconSets)}`, + `- ${stats.colorModes.count} color modes: ${list(stats.colorModes.list)}, picked by hand or following the system, and ${stats.colorSchemes.count} sidebar color ${stats.colorSchemes.count === 1 ? "scheme" : "schemes"}`, + ].join("\n"); +}; + +const renderReadme = async (readme, stats, errors) => { + const start = readme.indexOf(markers[0]); + const end = readme.indexOf(markers[1]); + if (start < 0 || end < start) { + errors.push(`README.md: add the ${markers.join(" and ")} markers`); + return readme; + } + const block = + comparisonEditions(stats).length > 1 + ? renderComparison(stats) + : renderSummary(stats); + return format( + `${readme.slice(0, start + markers[0].length)}\n\n${block}\n\n${readme.slice(end)}`, + files.readme + ); +}; + +const render = async () => { + const { stats, errors } = await generateStats(); + const json = await format(JSON.stringify(stats), files.stats); + const readme = await renderReadme( + await readFile(files.readme, "utf8"), + stats, + errors + ); + return { stats, json, readme, errors }; +}; + +const writeIfChanged = async (file, content) => { + const current = existsSync(file) ? await readFile(file, "utf8") : null; + if (current !== content) { + await mkdir(dirname(file), { recursive: true }); + await writeFile(file, content); + return true; + } + return false; +}; + +// For the build: writes src/data/stats.json when it changed and returns the stats +export const writeStats = async () => { + const { stats, json, errors } = await render(); + if (errors.length) { + throw new Error(`scripts/stats.mjs:\n${errors.join("\n")}`); + } + await writeIfChanged(files.stats, json); + return stats; +}; + +// --sync -- : snapshot another edition's committed stats +const sync = async (args) => { + const pairs = []; + for (let i = 0; i < args.length; i++) { + const edition = args[i].match(/^--([a-z]+)$/)?.[1]; + if (edition && args[i + 1]) { + pairs.push([edition, resolve(args[++i])]); + } + } + if (!pairs.length) { + throw new Error( + "Name the checkout to read, e.g. npm run stats:sync -- --pro ../adminkit-pro" + ); + } + + for (const [edition, checkout] of pairs) { + const source = join(checkout, "src/data/stats.json"); + if (!existsSync(source)) { + throw new Error( + `${source} does not exist; is ${checkout} an AdminKit checkout with npm run stats?` + ); + } + const snapshot = await readJson(source); + if (snapshot.edition !== edition) { + throw new Error( + `${source} holds the ${snapshot.edition} stats, not ${edition}` + ); + } + const pages = (await readdir(join(checkout, "src/pages"))).filter( + (file) => extname(file) === ".html" + ).length; + if (pages !== snapshot.pages.count) { + throw new Error( + `${source} counts ${snapshot.pages.count} pages but ${checkout} has ${pages}; run npm run stats there first` + ); + } + const target = join(files.editions, `${edition}.json`); + const changed = await writeIfChanged( + target, + await format(JSON.stringify(snapshot), target) + ); + console.log( + `${display(target)} ${changed ? "updated" : "unchanged"} (${edition} ${snapshot.version})` + ); + } +}; + +if (import.meta.main) { + const args = process.argv.slice(2); + try { + if (args.includes("--sync")) { + await sync(args.filter((arg) => arg !== "--sync")); + } + + const { stats, json, readme, errors } = await render(); + if (errors.length) { + console.error(errors.join("\n")); + process.exit(1); + } + + if (args.includes("--check")) { + const stale = []; + if ( + !existsSync(files.stats) || + (await readFile(files.stats, "utf8")) !== json + ) { + stale.push(display(files.stats)); + } + if ((await readFile(files.readme, "utf8")) !== readme) { + stale.push(`the ${markers[0]} block in README.md`); + } + if (stale.length) { + console.error(`${stale.join(" and ")} out of date; run npm run stats`); + process.exit(1); + } + console.log( + `stats: ${stats.pages.count} pages, ${stats.plugins.count} plugins, ${number(stats.icons.total)} icons, up to date` + ); + } else { + for (const [file, content] of [ + [files.stats, json], + [files.readme, readme], + ]) { + const changed = await writeIfChanged(file, content); + console.log(`${display(file)} ${changed ? "updated" : "unchanged"}`); + } + } + } catch (error) { + console.error(error.message); + process.exit(1); + } +} diff --git a/src/data/appearance.json b/src/data/appearance.json new file mode 100644 index 0000000..28a3219 --- /dev/null +++ b/src/data/appearance.json @@ -0,0 +1,4 @@ +{ + "colorModes": ["light", "dark"], + "colorSchemes": ["default"] +} diff --git a/src/data/colors-theme.json b/src/data/colors-theme.json new file mode 100644 index 0000000..16f7b38 --- /dev/null +++ b/src/data/colors-theme.json @@ -0,0 +1,20 @@ +[ + { + "name": "primary" + }, + { + "name": "secondary" + }, + { + "name": "success" + }, + { + "name": "danger" + }, + { + "name": "warning" + }, + { + "name": "info" + } +] diff --git a/src/data/comparison.json b/src/data/comparison.json new file mode 100644 index 0000000..83fb7eb --- /dev/null +++ b/src/data/comparison.json @@ -0,0 +1,62 @@ +[ + { + "id": "pages", + "label": "Pages", + "value": { + "stat": "pages.count" + } + }, + { + "id": "dashboards", + "label": "Dashboards", + "value": { + "stat": "dashboards.count" + } + }, + { + "id": "plugins", + "label": "Plugins", + "value": { + "stat": "plugins.count" + } + }, + { + "id": "icons", + "label": "Icons", + "value": { + "stat": "icons.total" + } + }, + { + "id": "colorSchemes", + "label": "Sidebar color schemes", + "value": { + "stat": "colorSchemes.count" + } + }, + { + "id": "darkMode", + "label": "Dark mode", + "value": true + }, + { + "id": "aiChat", + "label": "AI features", + "value": false + }, + { + "id": "settingsPanel", + "label": "Settings panel", + "value": false + }, + { + "id": "support", + "label": "Support", + "value": "GitHub issues" + }, + { + "id": "license", + "label": "License", + "value": "MIT" + } +] diff --git a/src/data/editions/pro.json b/src/data/editions/pro.json new file mode 100644 index 0000000..15a6b1b --- /dev/null +++ b/src/data/editions/pro.json @@ -0,0 +1,187 @@ +{ + "edition": "pro", + "version": "4.1.0", + "pages": { + "count": 53, + "list": [ + { "file": "calendar.html", "title": "Calendar" }, + { "file": "charts-apexcharts.html", "title": "ApexCharts" }, + { "file": "charts-chartjs.html", "title": "Chart.js" }, + { "file": "dashboard-ai.html", "title": "AI Analytics Dashboard" }, + { "file": "dashboard-crm.html", "title": "CRM Dashboard" }, + { "file": "dashboard-crypto.html", "title": "Crypto Dashboard" }, + { "file": "dashboard-ecommerce.html", "title": "E-Commerce Dashboard" }, + { "file": "forms-advanced-inputs.html", "title": "Advanced Inputs" }, + { "file": "forms-basic-inputs.html", "title": "Basic Inputs" }, + { "file": "forms-editors.html", "title": "Editors" }, + { "file": "forms-input-groups.html", "title": "Input Groups" }, + { "file": "forms-layouts.html", "title": "Form Layouts" }, + { "file": "forms-validation.html", "title": "Validation" }, + { "file": "icons-font-awesome.html", "title": "Font Awesome" }, + { "file": "icons-lucide.html", "title": "Lucide" }, + { "file": "index.html", "title": "Analytics Dashboard" }, + { "file": "maps-google.html", "title": "Google Maps" }, + { "file": "maps-vector.html", "title": "Vector Maps" }, + { "file": "notifications.html", "title": "Notifications" }, + { "file": "pages-404.html", "title": "404" }, + { "file": "pages-500.html", "title": "500" }, + { "file": "pages-blank.html", "title": "Blank Page" }, + { "file": "pages-chat-ai.html", "title": "AI Chat" }, + { "file": "pages-chat.html", "title": "Messages" }, + { "file": "pages-clients.html", "title": "Clients" }, + { "file": "pages-invoice.html", "title": "Invoice" }, + { "file": "pages-orders.html", "title": "Orders" }, + { "file": "pages-pricing.html", "title": "Plans & Pricing" }, + { "file": "pages-profile.html", "title": "Profile" }, + { "file": "pages-projects.html", "title": "Projects" }, + { "file": "pages-prompts.html", "title": "Prompt Library" }, + { "file": "pages-reset-password.html", "title": "Reset Password" }, + { "file": "pages-settings.html", "title": "Settings" }, + { "file": "pages-sign-in.html", "title": "Sign In" }, + { "file": "pages-sign-up.html", "title": "Sign Up" }, + { "file": "pages-tasks.html", "title": "Tasks" }, + { "file": "tables-bootstrap.html", "title": "Tables" }, + { "file": "tables-datatables-ajax.html", "title": "Ajax Sourced Data" }, + { + "file": "tables-datatables-buttons.html", + "title": "Table with Buttons" + }, + { + "file": "tables-datatables-column-search.html", + "title": "Column Search" + }, + { + "file": "tables-datatables-fixed-header.html", + "title": "Fixed Header" + }, + { "file": "tables-datatables-multi.html", "title": "Multi Selection" }, + { + "file": "tables-datatables-responsive.html", + "title": "Responsive DataTables" + }, + { "file": "ui-alerts.html", "title": "Alerts" }, + { "file": "ui-buttons.html", "title": "Buttons" }, + { "file": "ui-cards.html", "title": "Cards" }, + { "file": "ui-general.html", "title": "General" }, + { "file": "ui-grid.html", "title": "Grid" }, + { "file": "ui-modals.html", "title": "Modals" }, + { "file": "ui-offcanvas.html", "title": "Offcanvas" }, + { "file": "ui-placeholders.html", "title": "Placeholders" }, + { "file": "ui-tabs.html", "title": "Tabs" }, + { "file": "ui-typography.html", "title": "Typography" } + ] + }, + "dashboards": { + "count": 5, + "list": [ + { "file": "dashboard-ai.html", "title": "AI Analytics Dashboard" }, + { "file": "dashboard-crm.html", "title": "CRM Dashboard" }, + { "file": "dashboard-crypto.html", "title": "Crypto Dashboard" }, + { "file": "dashboard-ecommerce.html", "title": "E-Commerce Dashboard" }, + { "file": "index.html", "title": "Analytics Dashboard" } + ] + }, + "plugins": { + "count": 11, + "list": [ + { + "name": "ApexCharts", + "package": "apexcharts", + "url": "https://apexcharts.com/", + "license": "MIT" + }, + { + "name": "Chart.js", + "package": "chart.js", + "url": "https://www.chartjs.org/", + "license": "MIT" + }, + { + "name": "Choices.js", + "package": "choices.js", + "url": "https://github.com/Choices-js/Choices", + "license": "MIT" + }, + { + "name": "DataTables", + "package": "datatables.net", + "url": "https://datatables.net/", + "license": "MIT" + }, + { + "name": "FullCalendar", + "package": "fullcalendar", + "url": "https://fullcalendar.io/", + "license": "MIT" + }, + { + "name": "Inputmask", + "package": "inputmask", + "url": "https://github.com/RobinHerbots/Inputmask", + "license": "MIT" + }, + { + "name": "jsVectorMap", + "package": "jsvectormap", + "url": "https://jvm-docs.vercel.app/", + "license": "MIT" + }, + { + "name": "Quill", + "package": "quill", + "url": "https://quilljs.com/", + "license": "BSD-3-Clause" + }, + { + "name": "SimpleBar", + "package": "simplebar", + "url": "https://grsmto.github.io/simplebar/", + "license": "MIT" + }, + { + "name": "SortableJS", + "package": "sortablejs", + "url": "https://sortablejs.github.io/Sortable/", + "license": "MIT" + }, + { + "name": "Vanilla Calendar Pro", + "package": "vanilla-calendar-pro", + "url": "https://vanilla-calendar.pro/", + "license": "MIT" + } + ] + }, + "icons": { + "total": 4178, + "lucide": 2015, + "fontAwesome": { + "solid": 1422, + "regular": 169, + "brands": 572, + "total": 2163 + } + }, + "colorModes": { "count": 2, "list": ["light", "dark"] }, + "colorSchemes": { "count": 3, "list": ["default", "colored", "light"] }, + "aiPages": { + "count": 3, + "list": [ + { "file": "dashboard-ai.html", "title": "AI Analytics Dashboard" }, + { "file": "pages-chat-ai.html", "title": "AI Chat" }, + { "file": "pages-prompts.html", "title": "Prompt Library" } + ] + }, + "comparison": [ + { "id": "pages", "label": "Pages", "pro": 53 }, + { "id": "dashboards", "label": "Dashboards", "pro": 5 }, + { "id": "plugins", "label": "Plugins", "pro": 11 }, + { "id": "icons", "label": "Icons", "pro": 4178 }, + { "id": "colorSchemes", "label": "Sidebar color schemes", "pro": 3 }, + { "id": "darkMode", "label": "Dark mode", "pro": true }, + { "id": "aiChat", "label": "AI features", "pro": true }, + { "id": "settingsPanel", "label": "Settings panel", "pro": true }, + { "id": "support", "label": "Support", "pro": "Email" }, + { "id": "license", "label": "License", "pro": "Commercial" } + ] +} diff --git a/src/data/icons-fa-brand.json b/src/data/icons-fa-brand.json new file mode 100644 index 0000000..5485390 --- /dev/null +++ b/src/data/icons-fa-brand.json @@ -0,0 +1,381 @@ +[ + "500px", + "accessible-icon", + "accusoft", + "adn", + "adversal", + "affiliatetheme", + "algolia", + "alipay", + "amazon", + "amazon-pay", + "amilia", + "android", + "angellist", + "angrycreative", + "angular", + "app-store", + "app-store-ios", + "apper", + "apple", + "apple-pay", + "asymmetrik", + "audible", + "autoprefixer", + "avianex", + "aviato", + "aws", + "bandcamp", + "behance", + "behance-square", + "bimobject", + "bitbucket", + "bitcoin", + "bity", + "black-tie", + "blackberry", + "blogger", + "blogger-b", + "bluetooth", + "bluetooth-b", + "btc", + "buromobelexperte", + "cc-amazon-pay", + "cc-amex", + "cc-apple-pay", + "cc-diners-club", + "cc-discover", + "cc-jcb", + "cc-mastercard", + "cc-paypal", + "cc-stripe", + "cc-visa", + "centercode", + "chrome", + "cloudscale", + "cloudsmith", + "cloudversify", + "codepen", + "codiepie", + "connectdevelop", + "contao", + "cpanel", + "creative-commons", + "creative-commons-by", + "creative-commons-nc", + "creative-commons-nc-eu", + "creative-commons-nc-jp", + "creative-commons-nd", + "creative-commons-pd", + "creative-commons-pd-alt", + "creative-commons-remix", + "creative-commons-sa", + "creative-commons-sampling", + "creative-commons-sampling-plus", + "creative-commons-share", + "css3", + "css3-alt", + "cuttlefish", + "d-and-d", + "dashcube", + "delicious", + "deploydog", + "deskpro", + "deviantart", + "digg", + "digital-ocean", + "discord", + "discourse", + "dochub", + "docker", + "draft2digital", + "dribbble", + "dribbble-square", + "dropbox", + "drupal", + "dyalog", + "earlybirds", + "ebay", + "edge", + "elementor", + "ello", + "ember", + "empire", + "envira", + "erlang", + "ethereum", + "etsy", + "expeditedssl", + "facebook", + "facebook-f", + "facebook-messenger", + "facebook-square", + "firefox", + "first-order", + "first-order-alt", + "firstdraft", + "flickr", + "flipboard", + "fly", + "font-awesome", + "font-awesome-alt", + "font-awesome-flag", + "font-awesome-logo-full", + "fonticons", + "fonticons-fi", + "fort-awesome", + "fort-awesome-alt", + "forumbee", + "foursquare", + "free-code-camp", + "freebsd", + "fulcrum", + "galactic-republic", + "galactic-senate", + "get-pocket", + "gg", + "gg-circle", + "git", + "git-square", + "github", + "github-alt", + "github-square", + "gitkraken", + "gitlab", + "gitter", + "glide", + "glide-g", + "gofore", + "goodreads", + "goodreads-g", + "google", + "google-drive", + "google-play", + "google-plus", + "google-plus-g", + "google-plus-square", + "google-wallet", + "gratipay", + "grav", + "gripfire", + "grunt", + "gulp", + "hacker-news", + "hacker-news-square", + "hackerrank", + "hips", + "hire-a-helper", + "hooli", + "hornbill", + "hotjar", + "houzz", + "html5", + "hubspot", + "imdb", + "instagram", + "internet-explorer", + "ioxhost", + "itunes", + "itunes-note", + "java", + "jedi-order", + "jenkins", + "joget", + "joomla", + "js", + "js-square", + "jsfiddle", + "kaggle", + "keybase", + "keycdn", + "kickstarter", + "kickstarter-k", + "korvue", + "laravel", + "lastfm", + "lastfm-square", + "leanpub", + "less", + "line", + "linkedin", + "linkedin-in", + "linode", + "linux", + "lyft", + "magento", + "mailchimp", + "mandalorian", + "markdown", + "mastodon", + "maxcdn", + "medapps", + "medium", + "medium-m", + "medrt", + "meetup", + "megaport", + "microsoft", + "mix", + "mixcloud", + "mizuni", + "modx", + "monero", + "napster", + "neos", + "nimblr", + "nintendo-switch", + "node", + "node-js", + "npm", + "ns8", + "nutritionix", + "odnoklassniki", + "odnoklassniki-square", + "old-republic", + "opencart", + "openid", + "opera", + "optin-monster", + "osi", + "page4", + "pagelines", + "palfed", + "patreon", + "paypal", + "periscope", + "phabricator", + "phoenix-framework", + "phoenix-squadron", + "php", + "pied-piper", + "pied-piper-alt", + "pied-piper-hat", + "pied-piper-pp", + "pinterest", + "pinterest-p", + "pinterest-square", + "playstation", + "product-hunt", + "pushed", + "python", + "qq", + "quinscape", + "quora", + "r-project", + "ravelry", + "react", + "readme", + "rebel", + "red-river", + "reddit", + "reddit-alien", + "reddit-square", + "renren", + "replyd", + "researchgate", + "resolving", + "rev", + "rocketchat", + "rockrms", + "safari", + "sass", + "schlix", + "scribd", + "searchengin", + "sellcast", + "sellsy", + "servicestack", + "shirtsinbulk", + "shopware", + "simplybuilt", + "sistrix", + "sith", + "skyatlas", + "skype", + "slack", + "slack-hash", + "slideshare", + "snapchat", + "snapchat-ghost", + "snapchat-square", + "soundcloud", + "speakap", + "spotify", + "squarespace", + "stack-exchange", + "stack-overflow", + "staylinked", + "steam", + "steam-square", + "steam-symbol", + "sticker-mule", + "strava", + "stripe", + "stripe-s", + "studiovinari", + "stumbleupon", + "stumbleupon-circle", + "superpowers", + "supple", + "teamspeak", + "telegram", + "telegram-plane", + "tencent-weibo", + "the-red-yeti", + "themeco", + "themeisle", + "trade-federation", + "trello", + "tripadvisor", + "tumblr", + "tumblr-square", + "twitch", + "twitter", + "twitter-square", + "typo3", + "uber", + "uikit", + "uniregistry", + "untappd", + "usb", + "ussunnah", + "vaadin", + "viacoin", + "viadeo", + "viadeo-square", + "viber", + "vimeo", + "vimeo-square", + "vimeo-v", + "vine", + "vk", + "vnv", + "vuejs", + "weebly", + "weibo", + "weixin", + "whatsapp", + "whatsapp-square", + "whmcs", + "wikipedia-w", + "windows", + "wix", + "wolf-pack-battalion", + "wordpress", + "wordpress-simple", + "wpbeginner", + "wpexplorer", + "wpforms", + "xbox", + "xing", + "xing-square", + "y-combinator", + "yahoo", + "yandex", + "yandex-international", + "yelp", + "yoast", + "youtube", + "youtube-square", + "zhihu" +] diff --git a/src/data/icons-fa-regular.json b/src/data/icons-fa-regular.json new file mode 100644 index 0000000..c8f866e --- /dev/null +++ b/src/data/icons-fa-regular.json @@ -0,0 +1,154 @@ +[ + "address-book", + "address-card", + "angry", + "arrow-alt-circle-down", + "arrow-alt-circle-left", + "arrow-alt-circle-right", + "arrow-alt-circle-up", + "bell", + "bell-slash", + "bookmark", + "building", + "calendar", + "calendar-alt", + "calendar-check", + "calendar-minus", + "calendar-plus", + "calendar-times", + "caret-square-down", + "caret-square-left", + "caret-square-right", + "caret-square-up", + "chart-bar", + "check-circle", + "check-square", + "circle", + "clipboard", + "clock", + "clone", + "closed-captioning", + "comment", + "comment-alt", + "comment-dots", + "comments", + "compass", + "copy", + "copyright", + "credit-card", + "dizzy", + "dot-circle", + "edit", + "envelope", + "envelope-open", + "eye", + "eye-slash", + "file", + "file-alt", + "file-archive", + "file-audio", + "file-code", + "file-excel", + "file-image", + "file-pdf", + "file-powerpoint", + "file-video", + "file-word", + "flag", + "flushed", + "folder", + "folder-open", + "font-awesome-logo-full", + "frown", + "frown-open", + "futbol", + "gem", + "grimace", + "grin", + "grin-alt", + "grin-beam", + "grin-beam-sweat", + "grin-hearts", + "grin-squint", + "grin-squint-tears", + "grin-stars", + "grin-tears", + "grin-tongue", + "grin-tongue-squint", + "grin-tongue-wink", + "grin-wink", + "hand-lizard", + "hand-paper", + "hand-peace", + "hand-point-down", + "hand-point-left", + "hand-point-right", + "hand-point-up", + "hand-pointer", + "hand-rock", + "hand-scissors", + "hand-spock", + "handshake", + "hdd", + "heart", + "hospital", + "hourglass", + "id-badge", + "id-card", + "image", + "images", + "keyboard", + "kiss", + "kiss-beam", + "kiss-wink-heart", + "laugh", + "laugh-beam", + "laugh-squint", + "laugh-wink", + "lemon", + "life-ring", + "lightbulb", + "list-alt", + "map", + "meh", + "meh-blank", + "meh-rolling-eyes", + "minus-square", + "money-bill-alt", + "moon", + "newspaper", + "object-group", + "object-ungroup", + "paper-plane", + "pause-circle", + "play-circle", + "plus-square", + "question-circle", + "registered", + "sad-cry", + "sad-tear", + "save", + "share-square", + "smile", + "smile-beam", + "smile-wink", + "snowflake", + "square", + "star", + "star-half", + "sticky-note", + "stop-circle", + "sun", + "surprise", + "thumbs-down", + "thumbs-up", + "times-circle", + "tired", + "trash-alt", + "user", + "user-circle", + "window-close", + "window-maximize", + "window-minimize", + "window-restore" +] diff --git a/src/data/icons-fa-solid.json b/src/data/icons-fa-solid.json new file mode 100644 index 0000000..2b1b683 --- /dev/null +++ b/src/data/icons-fa-solid.json @@ -0,0 +1,743 @@ +[ + "ad", + "address-book", + "address-card", + "adjust", + "air-freshener", + "align-center", + "align-justify", + "align-left", + "align-right", + "allergies", + "ambulance", + "american-sign-language-interpreting", + "anchor", + "angle-double-down", + "angle-double-left", + "angle-double-right", + "angle-double-up", + "angle-down", + "angle-left", + "angle-right", + "angle-up", + "angry", + "ankh", + "apple-alt", + "archive", + "archway", + "arrow-alt-circle-down", + "arrow-alt-circle-left", + "arrow-alt-circle-right", + "arrow-alt-circle-up", + "arrow-circle-down", + "arrow-circle-left", + "arrow-circle-right", + "arrow-circle-up", + "arrow-down", + "arrow-left", + "arrow-right", + "arrow-up", + "arrows-alt", + "arrows-alt-h", + "arrows-alt-v", + "assistive-listening-systems", + "asterisk", + "at", + "atlas", + "atom", + "audio-description", + "award", + "backspace", + "backward", + "balance-scale", + "ban", + "band-aid", + "barcode", + "bars", + "baseball-ball", + "basketball-ball", + "bath", + "battery-empty", + "battery-full", + "battery-half", + "battery-quarter", + "battery-three-quarters", + "bed", + "beer", + "bell", + "bell-slash", + "bezier-curve", + "bible", + "bicycle", + "binoculars", + "birthday-cake", + "blender", + "blind", + "bold", + "bolt", + "bomb", + "bone", + "bong", + "book", + "book-open", + "book-reader", + "bookmark", + "bowling-ball", + "box", + "box-open", + "boxes", + "braille", + "brain", + "briefcase", + "briefcase-medical", + "broadcast-tower", + "broom", + "brush", + "bug", + "building", + "bullhorn", + "bullseye", + "burn", + "bus", + "bus-alt", + "business-time", + "calculator", + "calendar", + "calendar-alt", + "calendar-check", + "calendar-minus", + "calendar-plus", + "calendar-times", + "camera", + "camera-retro", + "cannabis", + "capsules", + "car", + "car-alt", + "car-battery", + "car-crash", + "car-side", + "caret-down", + "caret-left", + "caret-right", + "caret-square-down", + "caret-square-left", + "caret-square-right", + "caret-square-up", + "caret-up", + "cart-arrow-down", + "cart-plus", + "certificate", + "chalkboard", + "chalkboard-teacher", + "charging-station", + "chart-area", + "chart-bar", + "chart-line", + "chart-pie", + "check", + "check-circle", + "check-double", + "check-square", + "chess", + "chess-bishop", + "chess-board", + "chess-king", + "chess-knight", + "chess-pawn", + "chess-queen", + "chess-rook", + "chevron-circle-down", + "chevron-circle-left", + "chevron-circle-right", + "chevron-circle-up", + "chevron-down", + "chevron-left", + "chevron-right", + "chevron-up", + "child", + "church", + "circle", + "circle-notch", + "city", + "clipboard", + "clipboard-check", + "clipboard-list", + "clock", + "clone", + "closed-captioning", + "cloud", + "cloud-download-alt", + "cloud-upload-alt", + "cocktail", + "code", + "code-branch", + "coffee", + "cog", + "cogs", + "coins", + "columns", + "comment", + "comment-alt", + "comment-dollar", + "comment-dots", + "comment-slash", + "comments", + "comments-dollar", + "compact-disc", + "compass", + "compress", + "concierge-bell", + "cookie", + "cookie-bite", + "copy", + "copyright", + "couch", + "credit-card", + "crop", + "crop-alt", + "cross", + "crosshairs", + "crow", + "crown", + "cube", + "cubes", + "cut", + "database", + "deaf", + "desktop", + "dharmachakra", + "diagnoses", + "dice", + "dice-five", + "dice-four", + "dice-one", + "dice-six", + "dice-three", + "dice-two", + "digital-tachograph", + "directions", + "divide", + "dizzy", + "dna", + "dollar-sign", + "dolly", + "dolly-flatbed", + "donate", + "door-closed", + "door-open", + "dot-circle", + "dove", + "download", + "drafting-compass", + "draw-polygon", + "drum", + "drum-steelpan", + "dumbbell", + "edit", + "eject", + "ellipsis-h", + "ellipsis-v", + "envelope", + "envelope-open", + "envelope-open-text", + "envelope-square", + "equals", + "eraser", + "euro-sign", + "exchange-alt", + "exclamation", + "exclamation-circle", + "exclamation-triangle", + "expand", + "expand-arrows-alt", + "external-link-alt", + "external-link-square-alt", + "eye", + "eye-dropper", + "eye-slash", + "fast-backward", + "fast-forward", + "fax", + "feather", + "feather-alt", + "female", + "fighter-jet", + "file", + "file-alt", + "file-archive", + "file-audio", + "file-code", + "file-contract", + "file-download", + "file-excel", + "file-export", + "file-image", + "file-import", + "file-invoice", + "file-invoice-dollar", + "file-medical", + "file-medical-alt", + "file-pdf", + "file-powerpoint", + "file-prescription", + "file-signature", + "file-upload", + "file-video", + "file-word", + "fill", + "fill-drip", + "film", + "filter", + "fingerprint", + "fire", + "fire-extinguisher", + "first-aid", + "fish", + "flag", + "flag-checkered", + "flask", + "flushed", + "folder", + "folder-minus", + "folder-open", + "folder-plus", + "font", + "font-awesome-logo-full", + "football-ball", + "forward", + "frog", + "frown", + "frown-open", + "funnel-dollar", + "futbol", + "gamepad", + "gas-pump", + "gavel", + "gem", + "genderless", + "gift", + "glass-martini", + "glass-martini-alt", + "glasses", + "globe", + "globe-africa", + "globe-americas", + "globe-asia", + "golf-ball", + "gopuram", + "graduation-cap", + "greater-than", + "greater-than-equal", + "grimace", + "grin", + "grin-alt", + "grin-beam", + "grin-beam-sweat", + "grin-hearts", + "grin-squint", + "grin-squint-tears", + "grin-stars", + "grin-tears", + "grin-tongue", + "grin-tongue-squint", + "grin-tongue-wink", + "grin-wink", + "grip-horizontal", + "grip-vertical", + "h-square", + "hamsa", + "hand-holding", + "hand-holding-heart", + "hand-holding-usd", + "hand-lizard", + "hand-paper", + "hand-peace", + "hand-point-down", + "hand-point-left", + "hand-point-right", + "hand-point-up", + "hand-pointer", + "hand-rock", + "hand-scissors", + "hand-spock", + "hands", + "hands-helping", + "handshake", + "hashtag", + "haykal", + "hdd", + "heading", + "headphones", + "headphones-alt", + "italic", + "joint", + "key", + "keyboard", + "kiss", + "kiss-beam", + "kiss-wink-heart", + "kiwi-bird", + "language", + "laptop", + "laugh", + "laugh-beam", + "laugh-squint", + "laugh-wink", + "leaf", + "lemon", + "less-than", + "less-than-equal", + "level-down-alt", + "level-up-alt", + "life-ring", + "lightbulb", + "link", + "lira-sign", + "list", + "list-alt", + "list-ol", + "list-ul", + "location-arrow", + "lock", + "lock-open", + "long-arrow-alt-down", + "long-arrow-alt-left", + "long-arrow-alt-right", + "long-arrow-alt-up", + "low-vision", + "luggage-cart", + "magic", + "magnet", + "male", + "map", + "map-marked", + "map-marked-alt", + "map-marker", + "map-marker-alt", + "map-pin", + "map-signs", + "marker", + "mars", + "mars-double", + "mars-stroke", + "mars-stroke-h", + "mars-stroke-v", + "medal", + "medkit", + "meh", + "meh-blank", + "meh-rolling-eyes", + "memory", + "mercury", + "microchip", + "microphone", + "microphone-alt", + "microphone-alt-slash", + "microphone-slash", + "minus", + "minus-circle", + "minus-square", + "mobile", + "mobile-alt", + "money-bill", + "money-bill-alt", + "money-bill-wave", + "money-bill-wave-alt", + "money-check", + "money-check-alt", + "monument", + "moon", + "mortar-pestle", + "motorcycle", + "mouse-pointer", + "music", + "neuter", + "newspaper", + "not-equal", + "notes-medical", + "object-group", + "object-ungroup", + "outdent", + "paint-brush", + "paint-roller", + "palette", + "pallet", + "paper-plane", + "paperclip", + "parachute-box", + "paragraph", + "parking", + "passport", + "paste", + "pause", + "pause-circle", + "paw", + "pen", + "pen-alt", + "pen-fancy", + "pen-nib", + "pen-square", + "pencil-alt", + "pencil-ruler", + "people-carry", + "percent", + "percentage", + "phone", + "phone-slash", + "phone-square", + "phone-volume", + "piggy-bank", + "pills", + "plane", + "plane-arrival", + "plane-departure", + "play", + "play-circle", + "plug", + "plus", + "plus-circle", + "plus-square", + "podcast", + "poo", + "portrait", + "pound-sign", + "power-off", + "prescription", + "prescription-bottle", + "prescription-bottle-alt", + "print", + "procedures", + "project-diagram", + "puzzle-piece", + "qrcode", + "question", + "question-circle", + "quidditch", + "quote-left", + "quote-right", + "random", + "receipt", + "recycle", + "redo", + "redo-alt", + "registered", + "reply", + "reply-all", + "retweet", + "ribbon", + "road", + "robot", + "rocket", + "rss", + "rss-square", + "ruble-sign", + "ruler", + "ruler-combined", + "ruler-horizontal", + "ruler-vertical", + "rupee-sign", + "sad-cry", + "sad-tear", + "save", + "school", + "screwdriver", + "search", + "search-minus", + "search-plus", + "seedling", + "server", + "share", + "share-alt", + "share-alt-square", + "share-square", + "shekel-sign", + "shield-alt", + "ship", + "shipping-fast", + "shoe-prints", + "shopping-bag", + "shopping-basket", + "shopping-cart", + "shower", + "shuttle-van", + "sign", + "sign-in-alt", + "sign-language", + "sign-out-alt", + "signal", + "signature", + "sitemap", + "skull", + "sliders-h", + "smile", + "smile-beam", + "smile-wink", + "smoking", + "smoking-ban", + "snowflake", + "solar-panel", + "sort", + "sort-alpha-down", + "sort-alpha-up", + "sort-amount-down", + "sort-amount-up", + "sort-down", + "sort-numeric-down", + "sort-numeric-up", + "sort-up", + "spa", + "space-shuttle", + "spinner", + "splotch", + "spray-can", + "square", + "square-full", + "stamp", + "star", + "star-half", + "star-half-alt", + "step-backward", + "step-forward", + "stethoscope", + "sticky-note", + "stop", + "stop-circle", + "stopwatch", + "store", + "store-alt", + "stream", + "street-view", + "strikethrough", + "stroopwafel", + "subscript", + "subway", + "suitcase", + "suitcase-rolling", + "sun", + "superscript", + "surprise", + "swatchbook", + "swimmer", + "swimming-pool", + "sync", + "sync-alt", + "syringe", + "table", + "table-tennis", + "tablet", + "tablet-alt", + "tablets", + "tachometer-alt", + "tag", + "tags", + "tape", + "tasks", + "taxi", + "terminal", + "text-height", + "text-width", + "th", + "th-large", + "th-list", + "thermometer", + "thermometer-empty", + "thermometer-full", + "thermometer-half", + "thermometer-quarter", + "thermometer-three-quarters", + "thumbs-down", + "thumbs-up", + "thumbtack", + "ticket-alt", + "times", + "times-circle", + "tint", + "tint-slash", + "tired", + "toggle-off", + "toggle-on", + "toolbox", + "tooth", + "trademark", + "train", + "transgender", + "transgender-alt", + "trash", + "trash-alt", + "tree", + "trophy", + "truck", + "truck-loading", + "truck-moving", + "tshirt", + "tty", + "tv", + "umbrella", + "umbrella-beach", + "underline", + "undo", + "undo-alt", + "universal-access", + "university", + "unlink", + "unlock", + "unlock-alt", + "upload", + "user", + "user-alt", + "user-alt-slash", + "user-astronaut", + "user-check", + "user-circle", + "user-clock", + "user-cog", + "user-edit", + "user-friends", + "user-graduate", + "user-lock", + "user-md", + "user-minus", + "user-ninja", + "user-plus", + "user-secret", + "user-shield", + "user-slash", + "user-tag", + "user-tie", + "user-times", + "users", + "users-cog", + "utensil-spoon", + "utensils", + "vector-square", + "venus", + "venus-double", + "venus-mars", + "vial", + "vials", + "video", + "video-slash", + "volleyball-ball", + "volume-down", + "volume-off", + "volume-up", + "walking", + "wallet", + "warehouse", + "weight", + "weight-hanging", + "wheelchair", + "wifi", + "window-close", + "window-maximize", + "window-minimize", + "window-restore", + "wine-glass", + "wine-glass-alt", + "won-sign", + "wrench", + "x-ray", + "yen-sign", + "yin-yang" +] diff --git a/src/data/icons-lucide.json b/src/data/icons-lucide.json new file mode 100644 index 0000000..92b3537 --- /dev/null +++ b/src/data/icons-lucide.json @@ -0,0 +1,38005 @@ +[ + { + "name": "a-arrow-down", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "direction", + "movement", + "vertical", + "downward", + "downwards", + "south", + "descend", + "page down", + "letter", + "font size", + "formatting", + "smaller" + ] + }, + { + "name": "a-arrow-up", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "direction", + "movement", + "vertical", + "upward", + "upwards", + "north", + "ascend", + "page up", + "letter", + "font size", + "formatting", + "larger", + "bigger" + ] + }, + { + "name": "a-large-small", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "letter", + "font size", + "formatting" + ] + }, + { + "name": "accessibility", + "tags": ["disability", "disabled", "dda", "wheelchair"] + }, + { + "name": "activity", + "tags": [ + "pulse", + "action", + "motion", + "movement", + "exercise", + "fitness", + "healthcare", + "heart rate monitor", + "vital signs", + "vitals", + "emergency room", + "er", + "intensive care", + "hospital", + "defibrillator", + "earthquake", + "seismic", + "magnitude", + "richter scale", + "aftershock", + "tremor", + "shockwave", + "audio", + "waveform", + "synthesizer", + "synthesiser", + "music" + ] + }, + { + "name": "ad", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "advert", + "affiliate", + "brand", + "campaign", + "commercial", + "marketing", + "monetize", + "paid", + "partner", + "promo", + "sponsor", + "audio description", + "video description", + "described video", + "visual description" + ] + }, + { + "name": "air-vent", + "tags": [ + "air conditioner", + "ac", + "central air", + "cooling", + "climate-control" + ] + }, + { + "name": "airplay", + "tags": ["stream", "cast", "mirroring", "screen", "monitor", "macos", "osx"] + }, + { + "name": "alarm-clock", + "tags": [ + "clock", + "time", + "hour", + "minute", + "second", + "timestamp", + "timer", + "duration", + "interval", + "frequency", + "schedule", + "deadline", + "pending", + "delayed", + "watch", + "history", + "morning" + ] + }, + { + "name": "alarm-clock-check", + "tags": [ + "clock", + "time", + "hour", + "minute", + "second", + "timestamp", + "timer", + "duration", + "interval", + "frequency", + "schedule", + "deadline", + "pending", + "delayed", + "watch", + "history", + "morning", + "checkmark", + "done", + "completed", + "finished", + "successful", + "confirmed", + "verified", + "validated", + "approved", + "accepted", + "correct", + "valid", + "ticked", + "task", + "todo", + "reminder", + "wake-up" + ] + }, + { + "name": "alarm-clock-minus", + "tags": [ + "clock", + "time", + "hour", + "minute", + "second", + "timestamp", + "timer", + "duration", + "interval", + "frequency", + "schedule", + "deadline", + "pending", + "delayed", + "watch", + "history", + "morning", + "minus", + "remove", + "delete", + "cancel", + "erase", + "subtract", + "reduce", + "clear", + "exclude", + "-", + "reminder", + "unschedule" + ] + }, + { + "name": "alarm-clock-off", + "tags": [ + "clock", + "time", + "hour", + "minute", + "second", + "timestamp", + "timer", + "duration", + "interval", + "frequency", + "schedule", + "deadline", + "pending", + "delayed", + "watch", + "history", + "morning", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "silent", + "silence", + "disarmed", + "muted" + ] + }, + { + "name": "alarm-clock-plus", + "tags": [ + "clock", + "time", + "hour", + "minute", + "second", + "timestamp", + "timer", + "duration", + "interval", + "frequency", + "schedule", + "deadline", + "pending", + "delayed", + "watch", + "history", + "morning", + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added" + ] + }, + { + "name": "alarm-smoke", + "tags": [ + "fire", + "alert", + "warning", + "detector", + "carbon monoxide", + "safety", + "equipment", + "amenities" + ] + }, + { "name": "align-center-horizontal", "tags": ["items", "flex", "justify"] }, + { "name": "align-center-vertical", "tags": ["items", "flex", "justify"] }, + { + "name": "align-end-horizontal", + "tags": [ + "position", + "placement", + "bottom", + "bottommost", + "bottom edge", + "lower edge", + "lower", + "below", + "vertical", + "block", + "y", + "y-axis", + "items", + "flex", + "justify" + ] + }, + { + "name": "align-end-vertical", + "tags": [ + "position", + "placement", + "right", + "right edge", + "rightmost", + "right side", + "horizontal", + "inline", + "x", + "x-axis", + "items", + "flex", + "justify" + ] + }, + { + "name": "align-horizontal-distribute-center", + "tags": ["items", "flex", "justify", "space", "evenly", "around"] + }, + { + "name": "align-horizontal-distribute-end", + "tags": [ + "position", + "placement", + "right", + "right edge", + "rightmost", + "right side", + "horizontal", + "inline", + "x", + "x-axis", + "items", + "flex", + "justify" + ] + }, + { + "name": "align-horizontal-distribute-start", + "tags": [ + "position", + "placement", + "left", + "left edge", + "leftmost", + "left side", + "horizontal", + "inline", + "x", + "x-axis", + "items", + "flex", + "justify" + ] + }, + { + "name": "align-horizontal-justify-center", + "tags": ["center", "items", "flex", "justify"] + }, + { + "name": "align-horizontal-justify-end", + "tags": [ + "position", + "placement", + "right", + "right edge", + "rightmost", + "right side", + "horizontal", + "inline", + "x", + "x-axis", + "items", + "flex", + "justify" + ] + }, + { + "name": "align-horizontal-justify-start", + "tags": [ + "position", + "placement", + "left", + "left edge", + "leftmost", + "left side", + "horizontal", + "inline", + "x", + "x-axis", + "items", + "flex", + "justify" + ] + }, + { + "name": "align-horizontal-space-around", + "tags": ["center", "items", "flex", "justify", "distribute", "between"] + }, + { + "name": "align-horizontal-space-between", + "tags": [ + "position", + "placement", + "left", + "left edge", + "leftmost", + "left side", + "horizontal", + "inline", + "x", + "x-axis", + "right", + "right edge", + "rightmost", + "right side", + "around", + "items", + "bottom", + "flex", + "justify" + ] + }, + { + "name": "align-start-horizontal", + "tags": [ + "position", + "placement", + "top", + "topmost", + "top edge", + "upper edge", + "upper", + "above", + "vertical", + "block", + "y", + "y-axis", + "items", + "flex", + "justify" + ] + }, + { + "name": "align-start-vertical", + "tags": [ + "position", + "placement", + "left", + "left edge", + "leftmost", + "left side", + "horizontal", + "inline", + "x", + "x-axis", + "items", + "flex", + "justify" + ] + }, + { + "name": "align-vertical-distribute-center", + "tags": ["items", "flex", "justify", "space", "evenly", "around"] + }, + { + "name": "align-vertical-distribute-end", + "tags": [ + "position", + "placement", + "bottom", + "bottommost", + "bottom edge", + "lower edge", + "lower", + "below", + "vertical", + "block", + "y", + "y-axis", + "items", + "flex", + "justify" + ] + }, + { + "name": "align-vertical-distribute-start", + "tags": [ + "position", + "placement", + "top", + "topmost", + "top edge", + "upper edge", + "upper", + "above", + "vertical", + "block", + "y", + "y-axis", + "items", + "flex", + "justify" + ] + }, + { + "name": "align-vertical-justify-center", + "tags": ["center", "items", "flex", "justify", "distribute", "between"] + }, + { + "name": "align-vertical-justify-end", + "tags": [ + "position", + "placement", + "bottom", + "bottommost", + "bottom edge", + "lower edge", + "lower", + "below", + "vertical", + "block", + "y", + "y-axis", + "items", + "flex", + "justify", + "distribute", + "between" + ] + }, + { + "name": "align-vertical-justify-start", + "tags": [ + "position", + "placement", + "top", + "topmost", + "top edge", + "upper edge", + "upper", + "above", + "vertical", + "block", + "y", + "y-axis", + "items", + "flex", + "justify", + "distribute", + "between" + ] + }, + { + "name": "align-vertical-space-around", + "tags": ["center", "items", "flex", "justify", "distribute", "between"] + }, + { + "name": "align-vertical-space-between", + "tags": [ + "position", + "placement", + "top", + "topmost", + "top edge", + "upper edge", + "upper", + "above", + "vertical", + "block", + "y", + "y-axis", + "bottom", + "bottommost", + "bottom edge", + "lower edge", + "lower", + "below", + "center", + "items", + "flex", + "justify", + "distribute", + "between" + ] + }, + { + "name": "ambulance", + "tags": [ + "ambulance", + "emergency", + "medical", + "vehicle", + "siren", + "healthcare", + "transportation", + "rescue", + "urgent", + "first aid" + ] + }, + { + "name": "ampersand", + "tags": [ + "and", + "typography", + "operator", + "join", + "concatenate", + "code", + "&" + ] + }, + { "name": "ampersands", "tags": ["and", "operator", "then", "code", "&&"] }, + { + "name": "amphora", + "tags": [ + "pottery", + "artifact", + "artefact", + "vase", + "ceramics", + "clay", + "archaeology", + "museum", + "wine", + "oil" + ] + }, + { "name": "anchor", "tags": ["ship"] }, + { + "name": "angle", + "tags": [ + "angle", + "degree", + "corner", + "geometry", + "measure", + "math", + "rotate", + "vertex", + "slope", + "protractor", + "measurement", + "dimension", + "arc", + "drafting", + "cad" + ] + }, + { + "name": "antenna", + "tags": [ + "signal", + "connection", + "connectivity", + "tv", + "television", + "broadcast", + "live", + "frequency", + "tune", + "scan", + "channels", + "aerial", + "receiver", + "transmission", + "transducer", + "terrestrial", + "satellite", + "cable" + ] + }, + { + "name": "anvil", + "tags": [ + "metal", + "iron", + "alloy", + "materials", + "heavy", + "weight", + "blacksmith", + "forge", + "acme" + ] + }, + { + "name": "aperture", + "tags": ["camera", "photo", "pictures", "shutter", "exposure"] + }, + { + "name": "app-window", + "tags": ["application", "menu bar", "pane", "executable"] + }, + { + "name": "app-window-mac", + "tags": [ + "application", + "menu bar", + "pane", + "executable", + "preferences", + "macos", + "osx", + "desktop", + "title bar", + "traffic lights", + "close button", + "minimize", + "maximize", + "native app" + ] + }, + { + "name": "apple", + "tags": [ + "fruit", + "food", + "healthy", + "snack", + "nutrition", + "fresh", + "produce", + "grocery", + "organic", + "harvest", + "vitamin", + "red", + "green", + "juicy", + "sweet", + "tart", + "bite", + "orchard", + "plant", + "core", + "raw", + "diet" + ] + }, + { + "name": "archive", + "tags": ["index", "backup", "box", "storage", "records"] + }, + { + "name": "archive-arrow-down", + "tags": [ + "index", + "backup", + "box", + "storage", + "records", + "unarchive", + "email", + "download", + "save" + ] + }, + { + "name": "archive-arrow-up", + "tags": ["index", "backup", "box", "storage", "records", "unarchive"] + }, + { + "name": "archive-x", + "tags": [ + "index", + "backup", + "box", + "storage", + "records", + "x", + "remove", + "delete", + "cancel", + "clear", + "close", + "discard", + "dismiss", + "erase", + "abort", + "reject", + "canceled", + "cancelled", + "cancellation", + "cross", + "times", + "ex", + "×", + "junk" + ] + }, + { + "name": "armchair", + "tags": ["sofa", "furniture", "leisure", "lounge", "loveseat", "couch"] + }, + { + "name": "armenian-dram", + "tags": [ + "currency", + "money", + "cash", + "banknote", + "funds", + "finance", + "payment", + "balance", + "transaction", + "bill", + "invoice", + "receipt", + "fee", + "subscription", + "price", + "cost", + "amount", + "revenue", + "income", + "expense", + "banking", + "exchange", + "financial", + "economy", + "pricing", + "prices", + "monetization", + "symbol" + ] + }, + { + "name": "arrow-big-down", + "tags": [ + "direction", + "movement", + "vertical", + "downward", + "downwards", + "south", + "descend", + "page down", + "navigation", + "following", + "forward", + "forwards", + "subsequent", + "next page", + "backwards", + "reverse" + ] + }, + { + "name": "arrow-big-down-dash", + "tags": [ + "direction", + "movement", + "vertical", + "downward", + "downwards", + "south", + "descend", + "page down", + "navigation", + "following", + "forward", + "forwards", + "subsequent", + "next page", + "backwards", + "reverse", + "slow", + "download" + ] + }, + { + "name": "arrow-big-left", + "tags": [ + "direction", + "movement", + "horizontal", + "leftward", + "leftwards", + "west", + "navigation", + "preceding", + "back", + "backward", + "backwards", + "prior", + "previous page", + "previous", + "indicate turn" + ] + }, + { + "name": "arrow-big-left-dash", + "tags": [ + "direction", + "movement", + "horizontal", + "leftward", + "leftwards", + "west", + "navigation", + "preceding", + "back", + "backward", + "backwards", + "prior", + "previous page", + "previous", + "indicate turn", + "turn", + "corner" + ] + }, + { + "name": "arrow-big-right", + "tags": [ + "direction", + "movement", + "horizontal", + "rightward", + "rightwards", + "east", + "navigation", + "following", + "forward", + "forwards", + "subsequent", + "next page", + "next", + "indicate turn" + ] + }, + { + "name": "arrow-big-right-dash", + "tags": [ + "direction", + "movement", + "horizontal", + "rightward", + "rightwards", + "east", + "navigation", + "following", + "forward", + "forwards", + "subsequent", + "next page", + "next", + "indicate turn", + "turn", + "corner" + ] + }, + { + "name": "arrow-big-up", + "tags": [ + "direction", + "movement", + "vertical", + "upward", + "upwards", + "north", + "ascend", + "page up", + "navigation", + "preceding", + "back", + "backward", + "backwards", + "prior", + "previous page", + "shift", + "keyboard", + "button", + "mac", + "capitalize", + "capitalise", + "forward" + ] + }, + { + "name": "arrow-big-up-dash", + "tags": [ + "direction", + "movement", + "vertical", + "upward", + "upwards", + "north", + "ascend", + "page up", + "navigation", + "preceding", + "back", + "backward", + "backwards", + "prior", + "previous page", + "shift", + "keyboard", + "button", + "mac", + "capitalize", + "capitalise", + "forward", + "caps lock", + "capitals", + "faster", + "speed", + "boost" + ] + }, + { + "name": "arrow-down", + "tags": [ + "direction", + "movement", + "vertical", + "downward", + "downwards", + "south", + "descend", + "page down", + "navigation", + "following", + "forward", + "forwards", + "subsequent", + "next page", + "backwards", + "reverse" + ] + }, + { + "name": "arrow-down-0-1", + "tags": [ + "digit", + "number", + "numeral", + "numeric", + "numerical", + "direction", + "movement", + "vertical", + "downward", + "downwards", + "south", + "descend", + "page down", + "sort", + "order", + "arrange", + "reorder", + "ascending", + "descending", + "increasing", + "decreasing", + "rising", + "falling", + "ordering", + "arrangement", + "sequence", + "ranking", + "filter" + ] + }, + { + "name": "arrow-down-1-0", + "tags": [ + "digit", + "number", + "numeral", + "numeric", + "numerical", + "direction", + "movement", + "vertical", + "downward", + "downwards", + "south", + "descend", + "page down", + "sort", + "order", + "arrange", + "reorder", + "ascending", + "descending", + "increasing", + "decreasing", + "rising", + "falling", + "ordering", + "arrangement", + "sequence", + "ranking", + "filter" + ] + }, + { + "name": "arrow-down-a-z", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "direction", + "movement", + "vertical", + "downward", + "downwards", + "south", + "descend", + "page down", + "sort", + "order", + "arrange", + "reorder", + "ascending", + "descending", + "increasing", + "decreasing", + "rising", + "falling", + "ordering", + "arrangement", + "sequence", + "ranking", + "filter", + "alphabetical" + ] + }, + { + "name": "arrow-down-from-line", + "tags": [ + "direction", + "movement", + "vertical", + "downward", + "downwards", + "south", + "descend", + "page down", + "navigation", + "following", + "forward", + "forwards", + "subsequent", + "next page", + "backwards", + "reverse", + "download", + "expand", + "fold" + ] + }, + { + "name": "arrow-down-left", + "tags": [ + "direction", + "movement", + "diagonal", + "southwest", + "south-west", + "south west" + ] + }, + { + "name": "arrow-down-narrow-wide", + "tags": [ + "direction", + "movement", + "vertical", + "downward", + "downwards", + "south", + "descend", + "page down", + "sort", + "order", + "arrange", + "reorder", + "ascending", + "descending", + "increasing", + "decreasing", + "rising", + "falling", + "ordering", + "arrangement", + "sequence", + "ranking", + "filter" + ] + }, + { + "name": "arrow-down-right", + "tags": [ + "direction", + "movement", + "diagonal", + "southeast", + "south-east", + "south east" + ] + }, + { + "name": "arrow-down-to-dot", + "tags": [ + "direction", + "movement", + "vertical", + "downward", + "downwards", + "south", + "descend", + "page down", + "navigation", + "following", + "forward", + "forwards", + "subsequent", + "next page", + "backwards", + "reverse", + "waypoint", + "location", + "step", + "into" + ] + }, + { + "name": "arrow-down-to-line", + "tags": [ + "direction", + "movement", + "vertical", + "downward", + "downwards", + "south", + "descend", + "page down", + "navigation", + "following", + "forward", + "forwards", + "subsequent", + "next page", + "backwards", + "reverse", + "import", + "export", + "save", + "pull", + "final", + "ending", + "end", + "last page", + "latest", + "behind", + "download", + "git", + "version control", + "collapse", + "fold" + ] + }, + { + "name": "arrow-down-up", + "tags": [ + "direction", + "movement", + "vertical", + "downward", + "downwards", + "south", + "descend", + "page down", + "upward", + "upwards", + "north", + "ascend", + "page up", + "sort", + "order", + "arrange", + "reorder", + "ascending", + "descending", + "increasing", + "decreasing", + "rising", + "falling", + "ordering", + "arrangement", + "sequence", + "ranking", + "filter", + "bidirectional", + "two-way", + "2-way", + "swap", + "switch", + "network", + "traffic", + "flow", + "mobile data", + "internet", + "move" + ] + }, + { + "name": "arrow-down-wide-narrow", + "tags": [ + "direction", + "movement", + "vertical", + "downward", + "downwards", + "south", + "descend", + "page down", + "sort", + "order", + "arrange", + "reorder", + "ascending", + "descending", + "increasing", + "decreasing", + "rising", + "falling", + "ordering", + "arrangement", + "sequence", + "ranking", + "filter" + ] + }, + { + "name": "arrow-down-z-a", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "direction", + "movement", + "vertical", + "downward", + "downwards", + "south", + "descend", + "page down", + "sort", + "order", + "arrange", + "reorder", + "ascending", + "descending", + "increasing", + "decreasing", + "rising", + "falling", + "ordering", + "arrangement", + "sequence", + "ranking", + "filter", + "alphabetical", + "reverse" + ] + }, + { + "name": "arrow-left", + "tags": [ + "direction", + "movement", + "horizontal", + "leftward", + "leftwards", + "west", + "navigation", + "preceding", + "back", + "backward", + "backwards", + "prior", + "previous page", + "previous", + "<-" + ] + }, + { + "name": "arrow-left-from-line", + "tags": [ + "direction", + "movement", + "horizontal", + "leftward", + "leftwards", + "west", + "navigation", + "preceding", + "back", + "backward", + "backwards", + "prior", + "previous page", + "previous", + "<-", + "expand", + "fold", + "<-|" + ] + }, + { + "name": "arrow-left-right", + "tags": [ + "direction", + "movement", + "horizontal", + "leftward", + "leftwards", + "west", + "rightward", + "rightwards", + "east", + "bidirectional", + "two-way", + "2-way", + "swap", + "switch", + "transaction", + "reorder", + "move", + "<-", + "->" + ] + }, + { + "name": "arrow-left-to-line", + "tags": [ + "direction", + "movement", + "horizontal", + "leftward", + "leftwards", + "west", + "navigation", + "preceding", + "back", + "backward", + "backwards", + "prior", + "previous page", + "previous", + "<-", + "initial", + "beginning", + "home", + "first page", + "earliest", + "collapse", + "fold", + "|<-" + ] + }, + { + "name": "arrow-right", + "tags": [ + "direction", + "movement", + "horizontal", + "rightward", + "rightwards", + "east", + "navigation", + "following", + "forward", + "forwards", + "subsequent", + "next page", + "next", + "->" + ] + }, + { + "name": "arrow-right-from-line", + "tags": [ + "direction", + "movement", + "horizontal", + "rightward", + "rightwards", + "east", + "navigation", + "following", + "forward", + "forwards", + "subsequent", + "next page", + "next", + "->", + "export", + "expand", + "fold", + "|->" + ] + }, + { + "name": "arrow-right-left", + "tags": [ + "direction", + "movement", + "horizontal", + "rightward", + "rightwards", + "east", + "leftward", + "leftwards", + "west", + "bidirectional", + "two-way", + "2-way", + "swap", + "switch", + "transaction", + "reorder", + "move", + "<-", + "->" + ] + }, + { + "name": "arrow-right-to-line", + "tags": [ + "direction", + "movement", + "horizontal", + "rightward", + "rightwards", + "east", + "navigation", + "following", + "forward", + "forwards", + "subsequent", + "next page", + "next", + "->", + "final", + "ending", + "end", + "last page", + "latest", + "tab", + "keyboard", + "mac", + "indent", + "collapse", + "fold", + "->|" + ] + }, + { + "name": "arrow-up", + "tags": [ + "direction", + "movement", + "vertical", + "upward", + "upwards", + "north", + "ascend", + "page up", + "navigation", + "preceding", + "back", + "backward", + "backwards", + "prior", + "previous page", + "forward" + ] + }, + { + "name": "arrow-up-0-1", + "tags": [ + "digit", + "number", + "numeral", + "numeric", + "numerical", + "direction", + "movement", + "vertical", + "upward", + "upwards", + "north", + "ascend", + "page up", + "sort", + "order", + "arrange", + "reorder", + "ascending", + "descending", + "increasing", + "decreasing", + "rising", + "falling", + "ordering", + "arrangement", + "sequence", + "ranking", + "filter" + ] + }, + { + "name": "arrow-up-1-0", + "tags": [ + "digit", + "number", + "numeral", + "numeric", + "numerical", + "direction", + "movement", + "vertical", + "upward", + "upwards", + "north", + "ascend", + "page up", + "sort", + "order", + "arrange", + "reorder", + "ascending", + "descending", + "increasing", + "decreasing", + "rising", + "falling", + "ordering", + "arrangement", + "sequence", + "ranking", + "filter" + ] + }, + { + "name": "arrow-up-a-z", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "direction", + "movement", + "vertical", + "upward", + "upwards", + "north", + "ascend", + "page up", + "sort", + "order", + "arrange", + "reorder", + "ascending", + "descending", + "increasing", + "decreasing", + "rising", + "falling", + "ordering", + "arrangement", + "sequence", + "ranking", + "filter", + "alphabetical" + ] + }, + { + "name": "arrow-up-down", + "tags": [ + "direction", + "movement", + "vertical", + "upward", + "upwards", + "north", + "ascend", + "page up", + "downward", + "downwards", + "south", + "descend", + "page down", + "sort", + "order", + "arrange", + "reorder", + "ascending", + "descending", + "increasing", + "decreasing", + "rising", + "falling", + "ordering", + "arrangement", + "sequence", + "ranking", + "filter", + "bidirectional", + "two-way", + "2-way", + "swap", + "switch", + "network", + "mobile data", + "internet", + "move" + ] + }, + { + "name": "arrow-up-from-dot", + "tags": [ + "direction", + "movement", + "vertical", + "upward", + "upwards", + "north", + "ascend", + "page up", + "navigation", + "preceding", + "back", + "backward", + "backwards", + "prior", + "previous page", + "forward", + "step", + "out" + ] + }, + { + "name": "arrow-up-from-line", + "tags": [ + "direction", + "movement", + "vertical", + "upward", + "upwards", + "north", + "ascend", + "page up", + "navigation", + "preceding", + "back", + "backward", + "backwards", + "prior", + "previous page", + "forward", + "upload", + "git", + "version control", + "push", + "expand", + "fold" + ] + }, + { + "name": "arrow-up-left", + "tags": [ + "direction", + "movement", + "diagonal", + "northwest", + "north-west", + "north west" + ] + }, + { + "name": "arrow-up-narrow-wide", + "tags": [ + "direction", + "movement", + "vertical", + "upward", + "upwards", + "north", + "ascend", + "page up", + "sort", + "order", + "arrange", + "reorder", + "ascending", + "descending", + "increasing", + "decreasing", + "rising", + "falling", + "ordering", + "arrangement", + "sequence", + "ranking", + "filter" + ] + }, + { + "name": "arrow-up-right", + "tags": [ + "direction", + "movement", + "diagonal", + "northeast", + "north-east", + "north east" + ] + }, + { + "name": "arrow-up-to-line", + "tags": [ + "direction", + "movement", + "vertical", + "upward", + "upwards", + "north", + "ascend", + "page up", + "navigation", + "preceding", + "back", + "backward", + "backwards", + "prior", + "previous page", + "forward", + "initial", + "beginning", + "home", + "first page", + "earliest", + "upload", + "collapse", + "fold" + ] + }, + { + "name": "arrow-up-wide-narrow", + "tags": [ + "direction", + "movement", + "vertical", + "upward", + "upwards", + "north", + "ascend", + "page up", + "sort", + "order", + "arrange", + "reorder", + "ascending", + "descending", + "increasing", + "decreasing", + "rising", + "falling", + "ordering", + "arrangement", + "sequence", + "ranking", + "filter" + ] + }, + { + "name": "arrow-up-z-a", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "direction", + "movement", + "vertical", + "upward", + "upwards", + "north", + "ascend", + "page up", + "sort", + "order", + "arrange", + "reorder", + "ascending", + "descending", + "increasing", + "decreasing", + "rising", + "falling", + "ordering", + "arrangement", + "sequence", + "ranking", + "filter", + "alphabetical", + "reverse" + ] + }, + { + "name": "arrows-up-from-line", + "tags": [ + "direction", + "movement", + "vertical", + "upward", + "upwards", + "north", + "ascend", + "page up", + "orientation", + "this way up", + "package", + "box", + "fragile", + "postage", + "shipping" + ] + }, + { + "name": "asterisk", + "tags": [ + "symbol", + "mark", + "pointer", + "pencil", + "sign", + "alert", + "notification", + "indicator", + "symbolic", + "reference", + "times", + "multiply", + "multiplication", + "operator", + "code", + "glob pattern", + "wildcard", + "*" + ] + }, + { + "name": "astroid", + "tags": [ + "star", + "math", + "shape", + "curve", + "sharp", + "four-pointed", + "hypocycloid", + "ai", + "artificial intelligence" + ] + }, + { + "name": "at-sign", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "mention", + "at", + "email", + "message", + "@" + ] + }, + { + "name": "atom", + "tags": [ + "atomic", + "nuclear", + "physics", + "particle", + "element", + "molecule", + "electricity", + "energy", + "chemistry" + ] + }, + { + "name": "audio-lines", + "tags": [ + "graphic equaliser", + "sound", + "noise", + "listen", + "hearing", + "hertz", + "frequency", + "wavelength", + "vibrate", + "sine", + "synthesizer", + "synthesiser", + "levels", + "track", + "music", + "playback", + "radio", + "broadcast", + "airwaves", + "voice", + "vocals", + "singer", + "song" + ] + }, + { + "name": "audio-lines-off", + "tags": [ + "graphic equaliser", + "sound", + "noise", + "listen", + "hearing", + "hertz", + "frequency", + "wavelength", + "vibrate", + "sine", + "synthesizer", + "synthesiser", + "levels", + "track", + "music", + "playback", + "radio", + "broadcast", + "airwaves", + "voice", + "vocals", + "singer", + "song", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "audio", + "mute", + "silence", + "equalizer", + "equaliser", + "waveform" + ] + }, + { + "name": "audio-lines-x", + "tags": [ + "graphic equaliser", + "sound", + "noise", + "listen", + "hearing", + "hertz", + "frequency", + "wavelength", + "vibrate", + "sine", + "synthesizer", + "synthesiser", + "levels", + "track", + "music", + "playback", + "radio", + "broadcast", + "airwaves", + "voice", + "vocals", + "singer", + "song", + "x", + "remove", + "delete", + "cancel", + "clear", + "close", + "discard", + "dismiss", + "erase", + "abort", + "reject", + "canceled", + "cancelled", + "cancellation", + "cross", + "times", + "ex", + "×", + "mute", + "silence", + "disabled", + "unavailable", + "equalizer", + "equaliser", + "waveform" + ] + }, + { + "name": "audio-waveform", + "tags": [ + "sound", + "noise", + "listen", + "hearing", + "hertz", + "frequency", + "wavelength", + "vibrate", + "sine", + "synthesizer", + "synthesiser", + "levels", + "track", + "music", + "playback", + "radio", + "broadcast", + "airwaves", + "voice", + "vocals", + "singer", + "song" + ] + }, + { + "name": "avocado", + "tags": [ + "fruit", + "snack", + "meal", + "lunch", + "ingredient", + "cooking", + "cookery", + "kitchen", + "cuisine", + "eating", + "healthy", + "nutrition", + "diet", + "guacamole", + "mexican", + "green", + "pit", + "seed", + "half", + "produce", + "vegetarian", + "vegan", + "grocery", + "supermarket", + "toast", + "superfood", + "plant based", + "ripe" + ] + }, + { + "name": "award", + "tags": ["achievement", "badge", "rosette", "prize", "winner"] + }, + { + "name": "axe", + "tags": [ + "hatchet", + "weapon", + "chop", + "sharp", + "equipment", + "fireman", + "firefighter", + "brigade", + "lumberjack", + "woodcutter", + "logger", + "forestry" + ] + }, + { "name": "axis-3d", "tags": ["gizmo", "coordinates", "model"] }, + { + "name": "azerbaijani-manat", + "tags": [ + "currency", + "money", + "cash", + "banknote", + "funds", + "finance", + "payment", + "balance", + "transaction", + "bill", + "invoice", + "receipt", + "fee", + "subscription", + "price", + "cost", + "amount", + "revenue", + "income", + "expense", + "banking", + "exchange", + "financial", + "economy", + "pricing", + "prices", + "monetization", + "azerbaijan", + "azn" + ] + }, + { "name": "baby", "tags": ["child", "childproof", "children"] }, + { + "name": "backpack", + "tags": ["bag", "hiking", "travel", "camping", "school", "childhood"] + }, + { + "name": "bacon", + "tags": [ + "rashers", + "smoked", + "streaky", + "crispy", + "meat", + "fast food", + "junk food", + "snack", + "dish", + "restaurant", + "brunch", + "lunch", + "meal", + "savory", + "savoury", + "cookery", + "cooking", + "grilled", + "barbecue", + "barbeque", + "bbq", + "pig", + "pork", + "breakfast", + "cured", + "butcher", + "sandwich", + "protein", + "grocery", + "kitchen" + ] + }, + { + "name": "badge", + "tags": [ + "seal", + "emblem", + "rosette", + "insignia", + "sticker", + "stamp", + "label", + "award", + "achievement", + "certification", + "official", + "status", + "starburst", + "scalloped", + "shape" + ] + }, + { + "name": "badge-alert", + "tags": [ + "seal", + "emblem", + "rosette", + "insignia", + "sticker", + "stamp", + "label", + "award", + "achievement", + "certification", + "official", + "status", + "starburst", + "scalloped", + "shape", + "alert", + "warning", + "danger", + "caution", + "notice", + "error", + "risk", + "concern", + "hazard", + "exclamation mark", + "exclamation point", + "!", + "security", + "safety", + "issue" + ] + }, + { + "name": "badge-cent", + "tags": [ + "discount", + "offer", + "sale", + "voucher", + "tag", + "monetization", + "marketing", + "finance", + "financial", + "exchange", + "transaction", + "payment", + "cents", + "dollar", + "usd", + "$", + "¢" + ] + }, + { + "name": "badge-check", + "tags": [ + "seal", + "emblem", + "rosette", + "insignia", + "sticker", + "stamp", + "label", + "award", + "achievement", + "certification", + "official", + "status", + "starburst", + "scalloped", + "shape", + "checkmark", + "done", + "completed", + "finished", + "successful", + "confirmed", + "verified", + "validated", + "approved", + "accepted", + "correct", + "valid", + "ticked", + "task", + "todo" + ] + }, + { + "name": "badge-dollar-sign", + "tags": [ + "discount", + "offer", + "sale", + "voucher", + "tag", + "monetization", + "marketing", + "finance", + "financial", + "exchange", + "transaction", + "payment", + "usd", + "$" + ] + }, + { + "name": "badge-euro", + "tags": [ + "currency", + "money", + "cash", + "banknote", + "funds", + "finance", + "payment", + "balance", + "transaction", + "bill", + "invoice", + "receipt", + "fee", + "subscription", + "price", + "cost", + "amount", + "revenue", + "income", + "expense", + "banking", + "exchange", + "financial", + "economy", + "pricing", + "prices", + "monetization", + "discount", + "offer", + "sale", + "voucher", + "tag", + "marketing", + "€" + ] + }, + { + "name": "badge-indian-rupee", + "tags": [ + "discount", + "offer", + "sale", + "voucher", + "tag", + "monetization", + "marketing", + "finance", + "financial", + "exchange", + "transaction", + "payment", + "inr", + "₹" + ] + }, + { + "name": "badge-info", + "tags": [ + "seal", + "emblem", + "rosette", + "insignia", + "sticker", + "stamp", + "label", + "award", + "achievement", + "certification", + "official", + "status", + "starburst", + "scalloped", + "shape", + "alphabet", + "character", + "text", + "font", + "typography", + "help" + ] + }, + { + "name": "badge-japanese-yen", + "tags": [ + "currency", + "money", + "cash", + "banknote", + "funds", + "finance", + "payment", + "balance", + "transaction", + "bill", + "invoice", + "receipt", + "fee", + "subscription", + "price", + "cost", + "amount", + "revenue", + "income", + "expense", + "banking", + "exchange", + "financial", + "economy", + "pricing", + "prices", + "monetization", + "discount", + "offer", + "sale", + "voucher", + "tag", + "marketing", + "jpy", + "¥" + ] + }, + { + "name": "badge-minus", + "tags": [ + "seal", + "emblem", + "rosette", + "insignia", + "sticker", + "stamp", + "label", + "award", + "achievement", + "certification", + "official", + "status", + "starburst", + "scalloped", + "shape", + "minus", + "remove", + "delete", + "cancel", + "erase", + "subtract", + "reduce", + "clear", + "exclude", + "-" + ] + }, + { + "name": "badge-percent", + "tags": [ + "seal", + "emblem", + "rosette", + "insignia", + "sticker", + "stamp", + "label", + "award", + "achievement", + "certification", + "official", + "status", + "starburst", + "scalloped", + "shape", + "discount", + "sale", + "offer", + "deal", + "markdown", + "savings", + "reduction", + "rate", + "interest", + "tax", + "ratio", + "fraction", + "proportion", + "percentage", + "%", + "marketing", + "reduced", + "price tag" + ] + }, + { + "name": "badge-plus", + "tags": [ + "seal", + "emblem", + "rosette", + "insignia", + "sticker", + "stamp", + "label", + "award", + "achievement", + "certification", + "official", + "status", + "starburst", + "scalloped", + "shape", + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added" + ] + }, + { + "name": "badge-pound-sterling", + "tags": [ + "discount", + "offer", + "sale", + "voucher", + "tag", + "monetization", + "marketing", + "finance", + "financial", + "exchange", + "transaction", + "payment", + "british", + "gbp", + "£" + ] + }, + { + "name": "badge-question-mark", + "tags": [ + "seal", + "emblem", + "rosette", + "insignia", + "sticker", + "stamp", + "label", + "award", + "achievement", + "certification", + "official", + "status", + "starburst", + "scalloped", + "shape", + "help", + "guide", + "tutorial", + "manual", + "unknown", + "unidentified", + "unspecified", + "uncertain", + "undetermined", + "missing", + "to be determined", + "mystery", + "question", + "question mark", + "?" + ] + }, + { + "name": "badge-russian-ruble", + "tags": [ + "discount", + "offer", + "sale", + "voucher", + "tag", + "monetization", + "marketing", + "finance", + "financial", + "exchange", + "transaction", + "payment", + "rub", + "₽" + ] + }, + { + "name": "badge-swiss-franc", + "tags": [ + "discount", + "offer", + "sale", + "voucher", + "tag", + "monetization", + "marketing", + "finance", + "financial", + "exchange", + "transaction", + "payment", + "chf", + "₣" + ] + }, + { + "name": "badge-turkish-lira", + "tags": [ + "discount", + "offer", + "sale", + "voucher", + "tag", + "monetization", + "marketing", + "finance", + "financial", + "exchange", + "transaction", + "payment", + "try", + "₺" + ] + }, + { + "name": "badge-x", + "tags": [ + "seal", + "emblem", + "rosette", + "insignia", + "sticker", + "stamp", + "label", + "award", + "achievement", + "certification", + "official", + "status", + "starburst", + "scalloped", + "shape", + "x", + "remove", + "delete", + "cancel", + "clear", + "close", + "discard", + "dismiss", + "erase", + "abort", + "reject", + "canceled", + "cancelled", + "cancellation", + "cross", + "times", + "ex", + "×", + "lost" + ] + }, + { + "name": "baggage-claim", + "tags": ["baggage", "luggage", "travel", "cart", "trolley", "suitcase"] + }, + { + "name": "ball-wave", + "tags": [ + "polo", + "watercraft", + "athlete", + "feature", + "sport", + "ball", + "aquatic", + "swimming", + "pool", + "team", + "game", + "competition", + "olympic", + "water", + "match", + "aquatic sports", + "water polo", + "aquatics", + "water sports", + "pool sport", + "team sport", + "tournament", + "league" + ] + }, + { + "name": "balloon", + "tags": [ + "party", + "festival", + "congratulations", + "celebration", + "decoration", + "colorful", + "floating", + "fun", + "birthday", + "event", + "entertainment" + ] + }, + { + "name": "ban", + "tags": [ + "cancel", + "no", + "stop", + "forbidden", + "prohibited", + "error", + "incorrect", + "mistake", + "wrong", + "failure", + "circle", + "slash", + "null", + "void" + ] + }, + { "name": "banana", "tags": ["fruit", "food"] }, + { + "name": "bandage", + "tags": [ + "plaster", + "band-aid", + "first aid", + "medical", + "health", + "wound", + "injury", + "care", + "treatment", + "healing", + "protection", + "emergency", + "aid", + "safety", + "patch" + ] + }, + { + "name": "bangladeshi-taka", + "tags": [ + "currency", + "money", + "cash", + "banknote", + "funds", + "finance", + "payment", + "balance", + "transaction", + "bill", + "invoice", + "receipt", + "fee", + "subscription", + "price", + "cost", + "amount", + "revenue", + "income", + "expense", + "banking", + "exchange", + "financial", + "economy", + "pricing", + "prices", + "monetization", + "bdt", + "৳", + "remittance", + "ecommerce" + ] + }, + { + "name": "banknote", + "tags": [ + "currency", + "money", + "payment", + "bill", + "cash", + "funds", + "transaction", + "finance" + ] + }, + { + "name": "banknote-arrow-down", + "tags": [ + "currency", + "money", + "payment", + "bill", + "cash", + "funds", + "transaction", + "finance", + "direction", + "movement", + "vertical", + "downward", + "downwards", + "south", + "descend", + "page down", + "withdraw", + "expense", + "out", + "payout", + "refund", + "debit", + "spending", + "decrease" + ] + }, + { + "name": "banknote-arrow-up", + "tags": [ + "currency", + "money", + "payment", + "bill", + "cash", + "funds", + "transaction", + "finance", + "direction", + "movement", + "vertical", + "upward", + "upwards", + "north", + "ascend", + "page up", + "deposit", + "earnings", + "income", + "in", + "credit", + "prepaid", + "growth", + "increase" + ] + }, + { + "name": "banknote-check", + "tags": [ + "currency", + "money", + "payment", + "bill", + "cash", + "funds", + "transaction", + "finance", + "checkmark", + "done", + "completed", + "finished", + "successful", + "confirmed", + "verified", + "validated", + "approved", + "accepted", + "correct", + "valid", + "ticked", + "task", + "todo", + "banknote", + "document", + "verification", + "found", + "paid" + ] + }, + { + "name": "banknote-x", + "tags": [ + "currency", + "money", + "payment", + "bill", + "cash", + "funds", + "transaction", + "finance", + "x", + "remove", + "delete", + "cancel", + "clear", + "close", + "discard", + "dismiss", + "erase", + "abort", + "reject", + "canceled", + "cancelled", + "cancellation", + "cross", + "times", + "ex", + "×", + "error", + "failed", + "rejected", + "declined", + "lost" + ] + }, + { + "name": "barcode", + "tags": [ + "scan", + "checkout", + "till", + "cart", + "transaction", + "purchase", + "buy", + "product", + "packaging", + "retail", + "consumer" + ] + }, + { + "name": "barrel", + "tags": [ + "keg", + "drum", + "tank", + "wine", + "beer", + "oak", + "wood", + "firkin", + "hogshead", + "kilderkin", + "barrique", + "solera", + "aging", + "whiskey", + "brewery", + "distillery", + "winery", + "vineyard" + ] + }, + { + "name": "baseline", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "format", + "color" + ] + }, + { "name": "bath", "tags": ["amenities", "services", "bathroom", "shower"] }, + { + "name": "battery", + "tags": ["power", "electricity", "energy", "accumulator", "charge"] + }, + { + "name": "battery-charging", + "tags": ["power", "electricity", "energy", "accumulator", "charge"] + }, + { + "name": "battery-full", + "tags": ["power", "electricity", "energy", "accumulator", "charge"] + }, + { + "name": "battery-low", + "tags": ["power", "electricity", "energy", "accumulator", "charge"] + }, + { + "name": "battery-medium", + "tags": ["power", "electricity", "energy", "accumulator", "charge"] + }, + { + "name": "battery-plus", + "tags": [ + "power", + "electricity", + "energy", + "accumulator", + "charge", + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added", + "economy", + "health", + "maximum", + "upgrade" + ] + }, + { + "name": "battery-warning", + "tags": [ + "power", + "electricity", + "energy", + "accumulator", + "charge", + "alert", + "warning", + "danger", + "caution", + "notice", + "error", + "risk", + "concern", + "hazard", + "exclamation mark", + "exclamation point", + "!" + ] + }, + { + "name": "beaker", + "tags": ["cup", "lab", "chemistry", "experiment", "test"] + }, + { "name": "bean", "tags": ["legume", "soy", "food", "seed"] }, + { + "name": "bean-off", + "tags": [ + "legume", + "soy", + "food", + "seed", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "soy free", + "allergy", + "intolerance", + "diet" + ] + }, + { "name": "bed", "tags": ["sleep", "hotel", "furniture"] }, + { "name": "bed-double", "tags": ["sleep", "hotel", "furniture"] }, + { "name": "bed-single", "tags": ["sleep", "hotel", "furniture"] }, + { + "name": "beef", + "tags": [ + "food", + "dish", + "restaurant", + "course", + "meal", + "meat", + "bbq", + "steak" + ] + }, + { + "name": "beef-off", + "tags": [ + "food", + "dish", + "restaurant", + "course", + "meal", + "meat", + "bbq", + "steak", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "vegetarian" + ] + }, + { + "name": "beer", + "tags": ["alcohol", "bar", "beverage", "brewery", "drink"] + }, + { + "name": "beer-off", + "tags": [ + "alcohol", + "bar", + "beverage", + "brewery", + "drink", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line" + ] + }, + { + "name": "belarusian-ruble", + "tags": [ + "currency", + "money", + "cash", + "banknote", + "funds", + "finance", + "payment", + "balance", + "transaction", + "bill", + "invoice", + "receipt", + "fee", + "subscription", + "price", + "cost", + "amount", + "revenue", + "income", + "expense", + "banking", + "exchange", + "financial", + "economy", + "pricing", + "prices", + "monetization", + "byn", + "iso4217", + "fiat", + "localization", + "checkout", + "wallet", + "exchange-rate" + ] + }, + { "name": "bell", "tags": ["alarm", "notification", "sound", "reminder"] }, + { + "name": "bell-check", + "tags": [ + "alarm", + "notification", + "sound", + "reminder", + "checkmark", + "done", + "completed", + "finished", + "successful", + "confirmed", + "verified", + "validated", + "approved", + "accepted", + "correct", + "valid", + "ticked", + "task", + "todo" + ] + }, + { + "name": "bell-dot", + "tags": [ + "alarm", + "notification", + "sound", + "reminder", + "indicator", + "badge", + "pill", + "bullet", + "spot", + "marker", + "new", + "status", + "online", + "active", + "unread", + "current" + ] + }, + { + "name": "bell-electric", + "tags": [ + "fire alarm", + "flames", + "smoke", + "firefighter", + "fireman", + "department", + "brigade", + "station", + "emergency", + "alert", + "safety", + "school bell", + "period break", + "recess", + "doorbell", + "entrance", + "entry", + "ring", + "reception" + ] + }, + { + "name": "bell-minus", + "tags": [ + "alarm", + "notification", + "sound", + "reminder", + "minus", + "remove", + "delete", + "cancel", + "erase", + "subtract", + "reduce", + "clear", + "exclude", + "-", + "silent" + ] + }, + { + "name": "bell-off", + "tags": [ + "alarm", + "notification", + "sound", + "reminder", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "silent" + ] + }, + { + "name": "bell-plus", + "tags": [ + "alarm", + "notification", + "sound", + "reminder", + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added", + "silent" + ] + }, + { + "name": "bell-ring", + "tags": ["alarm", "notification", "sound", "reminder"] + }, + { + "name": "between-horizontal-end", + "tags": [ + "position", + "placement", + "right", + "right edge", + "rightmost", + "right side", + "horizontal", + "inline", + "x", + "x-axis", + "insert", + "add", + "left", + "slot", + "squeeze", + "space", + "vertical", + "grid", + "table", + "rows", + "cells", + "excel", + "spreadsheet", + "accountancy", + "data", + "enter", + "entry", + "entries", + "blocks", + "rectangles", + "chevron" + ] + }, + { + "name": "between-horizontal-start", + "tags": [ + "position", + "placement", + "left", + "left edge", + "leftmost", + "left side", + "horizontal", + "inline", + "x", + "x-axis", + "insert", + "add", + "right", + "slot", + "squeeze", + "space", + "vertical", + "grid", + "table", + "rows", + "cells", + "excel", + "spreadsheet", + "accountancy", + "data", + "enter", + "entry", + "entries", + "blocks", + "rectangles", + "chevron" + ] + }, + { + "name": "between-vertical-end", + "tags": [ + "position", + "placement", + "bottom", + "bottommost", + "bottom edge", + "lower edge", + "lower", + "below", + "vertical", + "block", + "y", + "y-axis", + "insert", + "add", + "top", + "slot", + "squeeze", + "space", + "grid", + "table", + "columns", + "cells", + "data", + "enter", + "entry", + "entries", + "blocks", + "rectangles", + "chevron" + ] + }, + { + "name": "between-vertical-start", + "tags": [ + "position", + "placement", + "top", + "topmost", + "top edge", + "upper edge", + "upper", + "above", + "vertical", + "block", + "y", + "y-axis", + "insert", + "add", + "bottom", + "slot", + "squeeze", + "space", + "grid", + "table", + "columns", + "cells", + "data", + "enter", + "entry", + "entries", + "blocks", + "rectangles", + "chevron" + ] + }, + { + "name": "biceps-flexed", + "tags": [ + "arm", + "muscle", + "strong", + "working out", + "athletic", + "toned", + "muscular", + "forelimb", + "curled" + ] + }, + { "name": "bike", "tags": ["bicycle", "transport", "trip"] }, + { + "name": "binary", + "tags": [ + "digit", + "number", + "numeral", + "numeric", + "numerical", + "code", + "digits", + "computer", + "zero", + "one", + "boolean" + ] + }, + { + "name": "binoculars", + "tags": [ + "field glasses", + "lorgnette", + "pince-nez", + "observation", + "sightseeing", + "nature", + "wildlife", + "birdwatching", + "scouting", + "surveillance", + "search", + "discovery", + "monitoring", + "lookout", + "viewpoint", + "travel", + "tourism", + "research" + ] + }, + { + "name": "biohazard", + "tags": ["fallout", "waste", "biology", "chemistry", "chemical", "element"] + }, + { "name": "bird", "tags": ["peace", "freedom", "wing", "avian", "tweet"] }, + { + "name": "birdhouse", + "tags": ["birdhouse", "bird", "garden", "home", "house", "woodwork"] + }, + { + "name": "bitcoin", + "tags": [ + "currency", + "money", + "cash", + "banknote", + "funds", + "finance", + "payment", + "balance", + "transaction", + "bill", + "invoice", + "receipt", + "fee", + "subscription", + "price", + "cost", + "amount", + "revenue", + "income", + "expense", + "banking", + "exchange", + "financial", + "economy", + "pricing", + "prices", + "monetization", + "cryptocurrency", + "digital", + "blockchain", + "coin", + "market", + "decentralized", + "investment", + "crypto" + ] + }, + { + "name": "blend", + "tags": [ + "mode", + "overlay", + "multiply", + "screen", + "opacity", + "transparency", + "alpha", + "filters", + "lenses", + "mixed", + "shades", + "tints", + "hues", + "saturation", + "brightness", + "overlap", + "colors", + "colours", + "marriage", + "rings", + "couple", + "connection" + ] + }, + { + "name": "blender", + "tags": [ + "mixer", + "appliances", + "food", + "liquid", + "juicer", + "vitamizer", + "mix", + "emulsify", + "smoothie", + "drink", + "blade", + "container", + "kitchen", + "milkshake", + "cocktail", + "beverage", + "culinary", + "shredder", + "processor", + "cooking", + "recipe", + "chef", + "restaurant" + ] + }, + { + "name": "blinds", + "tags": [ + "shades", + "screen", + "curtain", + "shutter", + "roller blind", + "window", + "lighting", + "household", + "home" + ] + }, + { + "name": "blocks", + "tags": [ + "addon", + "plugin", + "integration", + "extension", + "package", + "build", + "stack", + "toys", + "kids", + "children", + "learning", + "squares", + "corner" + ] + }, + { "name": "bluetooth", "tags": ["wireless"] }, + { "name": "bluetooth-connected", "tags": ["wireless", "paired"] }, + { + "name": "bluetooth-off", + "tags": [ + "wireless", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "lost" + ] + }, + { "name": "bluetooth-searching", "tags": ["wireless", "pairing"] }, + { + "name": "bolt", + "tags": [ + "nut", + "screw", + "settings", + "preferences", + "configuration", + "controls", + "edit", + "diy", + "fixed", + "build", + "construction", + "parts" + ] + }, + { + "name": "bomb", + "tags": [ + "fatal", + "error", + "crash", + "blockbuster", + "mine", + "explosion", + "explode", + "explosive" + ] + }, + { + "name": "bone", + "tags": ["health", "skeleton", "skull", "death", "pets", "dog"] + }, + { + "name": "bone-fracture", + "tags": [ + "bone", + "fracture", + "injury", + "orthopedic", + "medical", + "anatomy", + "skeletal", + "broken", + "xray", + "trauma", + "health", + "vet", + "veterinary", + "crack", + "break", + "damage" + ] + }, + { + "name": "book", + "tags": [ + "reading", + "paperback", + "booklet", + "magazine", + "leaflet", + "pamphlet", + "tome", + "library", + "writing", + "written", + "writer", + "author", + "story", + "script", + "fiction", + "novel", + "information", + "knowledge", + "education", + "high school", + "university", + "college", + "academy", + "student", + "study", + "learning", + "homework", + "research", + "documentation" + ] + }, + { + "name": "book-a", + "tags": [ + "reading", + "paperback", + "booklet", + "magazine", + "leaflet", + "pamphlet", + "tome", + "library", + "writing", + "written", + "writer", + "author", + "story", + "script", + "fiction", + "novel", + "information", + "knowledge", + "education", + "high school", + "university", + "college", + "academy", + "student", + "study", + "learning", + "homework", + "research", + "documentation", + "alphabet", + "character", + "text", + "font", + "typography", + "dictionary", + "define", + "definition", + "thesaurus", + "encyclopedia", + "encyclopaedia", + "language", + "translate", + "alphabetical", + "a-z", + "ordered" + ] + }, + { + "name": "book-alert", + "tags": [ + "reading", + "paperback", + "booklet", + "magazine", + "leaflet", + "pamphlet", + "tome", + "library", + "writing", + "written", + "writer", + "author", + "story", + "script", + "fiction", + "novel", + "information", + "knowledge", + "education", + "high school", + "university", + "college", + "academy", + "student", + "study", + "learning", + "homework", + "research", + "documentation", + "alert", + "warning", + "danger", + "caution", + "notice", + "error", + "risk", + "concern", + "hazard", + "exclamation mark", + "exclamation point", + "!" + ] + }, + { + "name": "book-audio", + "tags": [ + "reading", + "paperback", + "booklet", + "magazine", + "leaflet", + "pamphlet", + "tome", + "library", + "writing", + "written", + "writer", + "author", + "story", + "script", + "fiction", + "novel", + "information", + "knowledge", + "education", + "high school", + "university", + "college", + "academy", + "student", + "study", + "learning", + "homework", + "research", + "documentation", + "graphic equaliser", + "sound", + "noise", + "listen", + "hearing", + "hertz", + "frequency", + "wavelength", + "vibrate", + "sine", + "synthesizer", + "synthesiser", + "levels", + "track", + "music", + "playback", + "radio", + "broadcast", + "airwaves", + "voice", + "vocals", + "singer", + "song", + "audiobook", + "listening" + ] + }, + { + "name": "book-bookmark", + "tags": [ + "reading", + "paperback", + "booklet", + "magazine", + "leaflet", + "pamphlet", + "tome", + "library", + "writing", + "written", + "writer", + "author", + "story", + "script", + "fiction", + "novel", + "information", + "knowledge", + "education", + "high school", + "university", + "college", + "academy", + "student", + "study", + "learning", + "homework", + "research", + "documentation", + "dictionary", + "saved", + "later", + "future", + "reference", + "index", + "code", + "coding", + "version control", + "git", + "repository" + ] + }, + { + "name": "book-check", + "tags": [ + "reading", + "paperback", + "booklet", + "magazine", + "leaflet", + "pamphlet", + "tome", + "library", + "writing", + "written", + "writer", + "author", + "story", + "script", + "fiction", + "novel", + "information", + "knowledge", + "education", + "high school", + "university", + "college", + "academy", + "student", + "study", + "learning", + "homework", + "research", + "documentation", + "checkmark", + "done", + "completed", + "finished", + "successful", + "confirmed", + "verified", + "validated", + "approved", + "accepted", + "correct", + "valid", + "ticked", + "task", + "todo", + "read", + "authored", + "published", + "informed", + "knowledgeable", + "educated", + "schooled", + "examined", + "tested", + "marked", + "passed", + "graduated", + "studied", + "learned", + "lesson", + "researched", + "documented", + "revealed", + "blank", + "plain language", + "true", + "truth", + "corrected" + ] + }, + { + "name": "book-copy", + "tags": [ + "reading", + "paperback", + "booklet", + "magazine", + "leaflet", + "pamphlet", + "tome", + "library", + "writing", + "written", + "writer", + "author", + "story", + "script", + "fiction", + "novel", + "information", + "knowledge", + "education", + "high school", + "university", + "college", + "academy", + "student", + "study", + "learning", + "homework", + "research", + "documentation", + "clone", + "duplicate", + "multiple", + "code", + "coding", + "version control", + "git", + "repository", + "fork", + "books", + "copies", + "copied", + "plagiarism", + "plagiarised", + "plagiarized", + "reading list", + "informed", + "knowledgeable", + "knowledgable", + "smart", + "intelligent", + "intellectual" + ] + }, + { + "name": "book-dashed", + "tags": [ + "reading", + "paperback", + "booklet", + "magazine", + "leaflet", + "pamphlet", + "tome", + "library", + "writing", + "written", + "writer", + "author", + "story", + "script", + "fiction", + "novel", + "information", + "knowledge", + "education", + "high school", + "university", + "college", + "academy", + "student", + "study", + "learning", + "homework", + "research", + "documentation", + "code", + "coding", + "version control", + "git", + "repository", + "template", + "draft", + "screenplay", + "unwritten", + "unpublished", + "untold" + ] + }, + { + "name": "book-down", + "tags": [ + "reading", + "paperback", + "booklet", + "magazine", + "leaflet", + "pamphlet", + "tome", + "library", + "writing", + "written", + "writer", + "author", + "story", + "script", + "fiction", + "novel", + "information", + "knowledge", + "education", + "high school", + "university", + "college", + "academy", + "student", + "study", + "learning", + "homework", + "research", + "documentation", + "direction", + "movement", + "vertical", + "downward", + "downwards", + "south", + "descend", + "page down", + "code", + "coding", + "version control", + "git", + "repository", + "pull" + ] + }, + { + "name": "book-headphones", + "tags": [ + "reading", + "paperback", + "booklet", + "magazine", + "leaflet", + "pamphlet", + "tome", + "library", + "writing", + "written", + "writer", + "author", + "story", + "script", + "fiction", + "novel", + "information", + "knowledge", + "education", + "high school", + "university", + "college", + "academy", + "student", + "study", + "learning", + "homework", + "research", + "documentation", + "music", + "audio", + "sound", + "audiobook", + "listening" + ] + }, + { + "name": "book-heart", + "tags": [ + "reading", + "paperback", + "booklet", + "magazine", + "leaflet", + "pamphlet", + "tome", + "library", + "writing", + "written", + "writer", + "author", + "story", + "script", + "fiction", + "novel", + "information", + "knowledge", + "education", + "high school", + "university", + "college", + "academy", + "student", + "study", + "learning", + "homework", + "research", + "documentation", + "favorite", + "favourite", + "like", + "love", + "save", + "wishlist", + "reaction", + "health", + "diary", + "romance", + "journal", + "entry", + "entries", + "personal", + "private", + "secret", + "crush", + "emotion", + "feminine", + "girls", + "teens", + "teenager", + "therapy", + "therapeutic", + "therapist", + "planner", + "organizer", + "organiser", + "notes", + "notepad", + "stationery", + "sketchbook" + ] + }, + { + "name": "book-image", + "tags": [ + "reading", + "paperback", + "booklet", + "magazine", + "leaflet", + "pamphlet", + "tome", + "library", + "writing", + "written", + "writer", + "author", + "story", + "script", + "fiction", + "novel", + "information", + "knowledge", + "education", + "high school", + "university", + "college", + "academy", + "student", + "study", + "learning", + "homework", + "research", + "documentation", + "picture", + "photo", + "images", + "pictures", + "photos", + "album", + "collection", + "event", + "catalog", + "catalogue", + "brochure", + "browse", + "gallery" + ] + }, + { + "name": "book-key", + "tags": [ + "reading", + "paperback", + "booklet", + "magazine", + "leaflet", + "pamphlet", + "tome", + "library", + "writing", + "written", + "writer", + "author", + "story", + "script", + "fiction", + "novel", + "information", + "knowledge", + "education", + "high school", + "university", + "college", + "academy", + "student", + "study", + "learning", + "homework", + "research", + "documentation", + "key", + "password", + "security", + "secure", + "keychain", + "key ring", + "access", + "credentials", + "unlocked", + "permission", + "authentication", + "authorization", + "passkey", + "secret", + "token", + "API key", + "encryption", + "protection", + "protected", + "privacy", + "private", + "public", + "license", + "ownership", + "code", + "coding", + "version control", + "git", + "repository", + "hidden", + "revealed" + ] + }, + { + "name": "book-lock", + "tags": [ + "reading", + "paperback", + "booklet", + "magazine", + "leaflet", + "pamphlet", + "tome", + "library", + "writing", + "written", + "writer", + "author", + "story", + "script", + "fiction", + "novel", + "information", + "knowledge", + "education", + "high school", + "university", + "college", + "academy", + "student", + "study", + "learning", + "homework", + "research", + "documentation", + "lock", + "padlock", + "private", + "privacy", + "protection", + "password", + "secure", + "security", + "safety", + "protected", + "restricted", + "encrypted", + "authorization", + "read-only", + "blocked", + "locked", + "code", + "coding", + "version control", + "git", + "repository", + "secret", + "hidden" + ] + }, + { + "name": "book-minus", + "tags": [ + "reading", + "paperback", + "booklet", + "magazine", + "leaflet", + "pamphlet", + "tome", + "library", + "writing", + "written", + "writer", + "author", + "story", + "script", + "fiction", + "novel", + "information", + "knowledge", + "education", + "high school", + "university", + "college", + "academy", + "student", + "study", + "learning", + "homework", + "research", + "documentation", + "minus", + "remove", + "delete", + "cancel", + "erase", + "subtract", + "reduce", + "clear", + "exclude", + "-", + "code", + "coding", + "version control", + "git", + "repository", + "censor", + "forbid", + "prohibit", + "ban", + "uneducated", + "re-educate", + "unlearn", + "downgrade" + ] + }, + { + "name": "book-open", + "tags": [ + "reading", + "paperback", + "booklet", + "magazine", + "leaflet", + "pamphlet", + "tome", + "library", + "writing", + "written", + "writer", + "author", + "story", + "script", + "fiction", + "novel", + "information", + "knowledge", + "education", + "high school", + "university", + "college", + "academy", + "student", + "study", + "learning", + "homework", + "research", + "documentation", + "pages", + "screenplay", + "revealed", + "blank", + "plain" + ] + }, + { + "name": "book-open-check", + "tags": [ + "reading", + "paperback", + "booklet", + "magazine", + "leaflet", + "pamphlet", + "tome", + "library", + "writing", + "written", + "writer", + "author", + "story", + "script", + "fiction", + "novel", + "information", + "knowledge", + "education", + "high school", + "university", + "college", + "academy", + "student", + "study", + "learning", + "homework", + "research", + "documentation", + "pages", + "screenplay", + "revealed", + "blank", + "plain", + "checkmark", + "done", + "completed", + "finished", + "successful", + "confirmed", + "verified", + "validated", + "approved", + "accepted", + "correct", + "valid", + "ticked", + "task", + "todo", + "read", + "authored", + "published", + "informed", + "knowledgeable", + "educated", + "schooled", + "examined", + "tested", + "marked", + "passed", + "graduated", + "studied", + "learned", + "lesson", + "researched", + "documented", + "plain language", + "true", + "truth", + "corrected" + ] + }, + { + "name": "book-open-text", + "tags": [ + "reading", + "paperback", + "booklet", + "magazine", + "leaflet", + "pamphlet", + "tome", + "library", + "writing", + "written", + "writer", + "author", + "story", + "script", + "fiction", + "novel", + "information", + "knowledge", + "education", + "high school", + "university", + "college", + "academy", + "student", + "study", + "learning", + "homework", + "research", + "documentation", + "pages", + "screenplay", + "revealed", + "blank", + "plain" + ] + }, + { + "name": "book-plus", + "tags": [ + "reading", + "paperback", + "booklet", + "magazine", + "leaflet", + "pamphlet", + "tome", + "library", + "writing", + "written", + "writer", + "author", + "story", + "script", + "fiction", + "novel", + "information", + "knowledge", + "education", + "high school", + "university", + "college", + "academy", + "student", + "study", + "learning", + "homework", + "research", + "documentation", + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added", + "code", + "coding", + "version control", + "git", + "repository", + "read", + "write", + "publish", + "inform", + "graduate", + "re-educate", + "learn", + "improve", + "upgrade", + "level up" + ] + }, + { + "name": "book-search", + "tags": [ + "reading", + "paperback", + "booklet", + "magazine", + "leaflet", + "pamphlet", + "tome", + "library", + "writing", + "written", + "writer", + "author", + "story", + "script", + "fiction", + "novel", + "information", + "knowledge", + "education", + "high school", + "university", + "college", + "academy", + "student", + "study", + "learning", + "homework", + "research", + "documentation", + "search", + "magnifier", + "scan", + "scanning", + "browsing", + "finding", + "find", + "lookup", + "query", + "locate", + "explore", + "discover", + "browse", + "inspect", + "examine", + "investigate", + "magnifying glass", + "lens", + "zoom" + ] + }, + { + "name": "book-text", + "tags": [ + "reading", + "paperback", + "booklet", + "magazine", + "leaflet", + "pamphlet", + "tome", + "library", + "writing", + "written", + "writer", + "author", + "story", + "script", + "fiction", + "novel", + "information", + "knowledge", + "education", + "high school", + "university", + "college", + "academy", + "student", + "study", + "learning", + "homework", + "research", + "documentation" + ] + }, + { + "name": "book-type", + "tags": [ + "reading", + "paperback", + "booklet", + "magazine", + "leaflet", + "pamphlet", + "tome", + "library", + "writing", + "written", + "writer", + "author", + "story", + "script", + "fiction", + "novel", + "information", + "knowledge", + "education", + "high school", + "university", + "college", + "academy", + "student", + "study", + "learning", + "homework", + "research", + "documentation", + "alphabet", + "character", + "text", + "font", + "typography", + "thesaurus", + "synonym", + "language", + "translate", + "fonts", + "collection" + ] + }, + { + "name": "book-up", + "tags": [ + "reading", + "paperback", + "booklet", + "magazine", + "leaflet", + "pamphlet", + "tome", + "library", + "writing", + "written", + "writer", + "author", + "story", + "script", + "fiction", + "novel", + "information", + "knowledge", + "education", + "high school", + "university", + "college", + "academy", + "student", + "study", + "learning", + "homework", + "research", + "documentation", + "direction", + "movement", + "vertical", + "upward", + "upwards", + "north", + "ascend", + "page up", + "code", + "coding", + "version control", + "git", + "repository", + "push" + ] + }, + { + "name": "book-up-2", + "tags": [ + "reading", + "paperback", + "booklet", + "magazine", + "leaflet", + "pamphlet", + "tome", + "library", + "writing", + "written", + "writer", + "author", + "story", + "script", + "fiction", + "novel", + "information", + "knowledge", + "education", + "high school", + "university", + "college", + "academy", + "student", + "study", + "learning", + "homework", + "research", + "documentation", + "direction", + "movement", + "vertical", + "upward", + "upwards", + "north", + "ascend", + "page up", + "code", + "coding", + "version control", + "git", + "repository", + "push", + "force" + ] + }, + { + "name": "book-user", + "tags": [ + "reading", + "paperback", + "booklet", + "magazine", + "leaflet", + "pamphlet", + "tome", + "library", + "writing", + "written", + "writer", + "author", + "story", + "script", + "fiction", + "novel", + "information", + "knowledge", + "education", + "high school", + "university", + "college", + "academy", + "student", + "study", + "learning", + "homework", + "research", + "documentation", + "user", + "people", + "identity", + "individual", + "personal", + "person", + "account", + "contact", + "profile", + "member", + "client", + "participant", + "guest", + "family", + "friends", + "acquaintances", + "details", + "addresses", + "phone numbers", + "directory", + "listing", + "networking" + ] + }, + { + "name": "book-x", + "tags": [ + "reading", + "paperback", + "booklet", + "magazine", + "leaflet", + "pamphlet", + "tome", + "library", + "writing", + "written", + "writer", + "author", + "story", + "script", + "fiction", + "novel", + "information", + "knowledge", + "education", + "high school", + "university", + "college", + "academy", + "student", + "study", + "learning", + "homework", + "research", + "documentation", + "x", + "remove", + "delete", + "cancel", + "clear", + "close", + "discard", + "dismiss", + "erase", + "abort", + "reject", + "canceled", + "cancelled", + "cancellation", + "cross", + "times", + "ex", + "×", + "code", + "coding", + "version control", + "git", + "repository", + "misinformation", + "disinformation", + "misinformed", + "charlatan", + "sophistry", + "false", + "lies", + "untruth", + "propaganda", + "censored", + "forbidden", + "prohibited", + "banned", + "uneducated", + "re-education", + "unlearn" + ] + }, + { + "name": "bookmark", + "tags": [ + "save", + "favorite", + "favourite", + "mark", + "label", + "attachment", + "file", + "stick", + "pin", + "read", + "clip", + "marker", + "tag" + ] + }, + { + "name": "bookmark-check", + "tags": [ + "save", + "favorite", + "favourite", + "mark", + "label", + "attachment", + "file", + "stick", + "pin", + "read", + "clip", + "marker", + "tag", + "checkmark", + "done", + "completed", + "finished", + "successful", + "confirmed", + "verified", + "validated", + "approved", + "accepted", + "correct", + "valid", + "ticked", + "task", + "todo" + ] + }, + { + "name": "bookmark-minus", + "tags": [ + "save", + "favorite", + "favourite", + "mark", + "label", + "attachment", + "file", + "stick", + "pin", + "read", + "clip", + "marker", + "tag", + "minus", + "remove", + "delete", + "cancel", + "erase", + "subtract", + "reduce", + "clear", + "exclude", + "-" + ] + }, + { + "name": "bookmark-off", + "tags": [ + "save", + "favorite", + "favourite", + "mark", + "label", + "attachment", + "file", + "stick", + "pin", + "read", + "clip", + "marker", + "tag", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "unsaved", + "unfavorite", + "unmarked", + "unlabel", + "removed", + "unpin", + "unread", + "unclip", + "untag" + ] + }, + { + "name": "bookmark-plus", + "tags": [ + "save", + "favorite", + "favourite", + "mark", + "label", + "attachment", + "file", + "stick", + "pin", + "read", + "clip", + "marker", + "tag", + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added" + ] + }, + { + "name": "bookmark-x", + "tags": [ + "save", + "favorite", + "favourite", + "mark", + "label", + "attachment", + "file", + "stick", + "pin", + "read", + "clip", + "marker", + "tag", + "x", + "remove", + "delete", + "cancel", + "clear", + "close", + "discard", + "dismiss", + "erase", + "abort", + "reject", + "canceled", + "cancelled", + "cancellation", + "cross", + "times", + "ex", + "×" + ] + }, + { + "name": "boom-box", + "tags": [ + "radio", + "speakers", + "audio", + "music", + "sound", + "broadcast", + "live", + "frequency" + ] + }, + { "name": "bot", "tags": ["robot", "ai", "chat", "assistant"] }, + { + "name": "bot-message-square", + "tags": ["robot", "ai", "chat", "assistant"] + }, + { + "name": "bot-off", + "tags": [ + "robot", + "ai", + "chat", + "assistant", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line" + ] + }, + { + "name": "bottle-wine", + "tags": [ + "alcohol", + "drink", + "glass", + "goblet", + "chalice", + "vineyard", + "winery", + "red", + "white", + "rose", + "dry", + "sparkling", + "bar", + "party", + "nightclub", + "nightlife", + "sommelier", + "restaurant", + "dinner", + "meal" + ] + }, + { + "name": "bow-arrow", + "tags": ["archer", "archery", "game", "war", "weapon"] + }, + { + "name": "box", + "tags": [ + "cube", + "package", + "container", + "storage", + "geometry", + "3d", + "isometric" + ] + }, + { + "name": "boxes", + "tags": [ + "cubes", + "packages", + "parts", + "group", + "units", + "collection", + "cluster", + "geometry" + ] + }, + { + "name": "boxes-linked", + "tags": [ + "network", + "nodes", + "edges", + "links", + "connections", + "relationships", + "structure", + "topology", + "cubes", + "package", + "module", + "dependencies", + "link", + "chain", + "blockchain", + "supply chain", + "integration", + "component", + "logistics", + "distributed", + "interconnected", + "relationship", + "coupling", + "system architecture", + "distributed systems", + "inventory" + ] + }, + { + "name": "braces", + "tags": [ + "json", + "code", + "token", + "curly brackets", + "curly braces", + "data", + "{", + "}" + ] + }, + { + "name": "brackets", + "tags": ["code", "token", "array", "list", "square", "[", "]"] + }, + { + "name": "brain", + "tags": [ + "medical", + "mind", + "mental", + "intellect", + "cerebral", + "consciousness", + "genius", + "artificial intelligence", + "ai", + "think", + "thought", + "insight", + "intelligent", + "smart", + "deep learning", + "machine learning", + "computing" + ] + }, + { + "name": "brain-circuit", + "tags": [ + "medical", + "mind", + "mental", + "intellect", + "cerebral", + "consciousness", + "genius", + "artificial intelligence", + "ai", + "think", + "thought", + "insight", + "intelligent", + "smart", + "deep learning", + "machine learning", + "computing" + ] + }, + { + "name": "brain-cog", + "tags": [ + "medical", + "mind", + "mental", + "intellect", + "cerebral", + "consciousness", + "genius", + "artificial intelligence", + "ai", + "think", + "thought", + "insight", + "intelligent", + "smart", + "deep learning", + "machine learning", + "computing", + "cog", + "cogwheel", + "gear", + "pinion", + "sprocket", + "settings", + "configuration", + "preferences", + "options", + "customization", + "controls", + "control panel", + "edit", + "tools" + ] + }, + { + "name": "brain-off", + "tags": [ + "medical", + "mind", + "mental", + "intellect", + "cerebral", + "consciousness", + "genius", + "artificial intelligence", + "ai", + "think", + "thought", + "insight", + "intelligent", + "smart", + "deep learning", + "machine learning", + "computing", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line" + ] + }, + { + "name": "brick-wall", + "tags": [ + "bricks", + "mortar", + "cement", + "materials", + "construction", + "builder", + "labourer", + "quantity surveyor", + "blocks", + "stone" + ] + }, + { + "name": "brick-wall-fire", + "tags": [ + "bricks", + "mortar", + "cement", + "materials", + "construction", + "builder", + "labourer", + "quantity surveyor", + "blocks", + "stone", + "firewall", + "security", + "campfire", + "camping", + "wilderness", + "outdoors", + "lit", + "warmth", + "wood", + "twigs", + "sticks" + ] + }, + { + "name": "brick-wall-shield", + "tags": [ + "bricks", + "mortar", + "cement", + "materials", + "construction", + "builder", + "labourer", + "quantity surveyor", + "blocks", + "stone", + "shield", + "privacy", + "safeguard", + "security", + "cybersecurity", + "secure", + "safety", + "protection", + "protected", + "guard", + "guardian", + "defense", + "defence", + "defender", + "prevention", + "firewall", + "armored", + "armoured", + "block", + "threat", + "antivirus", + "vigilance", + "vigilant", + "detection", + "scan", + "find", + "strength", + "strong", + "tough", + "invincible", + "invincibility", + "invulnerable", + "undamaged", + "audit", + "admin", + "verification", + "crest", + "bravery", + "knight", + "foot soldier", + "infantry", + "trooper", + "pawn", + "battle", + "war", + "military", + "army", + "cadet", + "scout" + ] + }, + { + "name": "bridge", + "tags": [ + "overpass", + "cross over", + "traverse", + "viaduct", + "suspension", + "infrastructure", + "transportation", + "crossing", + "road", + "river", + "gate", + "golden", + "travel", + "landmark", + "route", + "maritime", + "clearance" + ] + }, + { "name": "briefcase", "tags": ["work", "bag", "baggage", "folder"] }, + { + "name": "briefcase-business", + "tags": ["work", "bag", "baggage", "folder", "portfolio"] + }, + { + "name": "briefcase-conveyor-belt", + "tags": ["baggage", "luggage", "travel", "suitcase", "conveyor", "carousel"] + }, + { "name": "briefcase-medical", "tags": ["doctor", "medicine", "first aid"] }, + { + "name": "briefcase-plus", + "tags": [ + "work", + "bag", + "baggage", + "folder", + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added", + "briefcase", + "portfolio", + "business", + "career", + "employment", + "professional" + ] + }, + { + "name": "bring-to-front", + "tags": [ + "bring", + "send", + "move", + "over", + "forward", + "front", + "overlap", + "layer", + "order" + ] + }, + { + "name": "broccoli", + "tags": [ + "leafy", + "crisp", + "fresh", + "culinary", + "vegetation", + "vegetable", + "food", + "healthy", + "vegan", + "vegetarian", + "nutrition", + "diet", + "plant", + "green", + "produce" + ] + }, + { + "name": "broom", + "tags": [ + "broomstick", + "brush", + "sweep", + "sweeping", + "floor", + "cleaning", + "housekeeping", + "chores", + "tidy", + "spotless", + "dust", + "debris", + "bristles", + "handle", + "janitor", + "maintenance", + "witch", + "halloween" + ] + }, + { + "name": "broom-sparkles", + "tags": [ + "broomstick", + "brush", + "sweep", + "sweeping", + "floor", + "cleaning", + "housekeeping", + "chores", + "tidy", + "spotless", + "dust", + "debris", + "bristles", + "handle", + "janitor", + "maintenance", + "witch", + "halloween", + "sparkle", + "magic", + "ai", + "stars", + "glitter", + "shimmer", + "twinkle", + "shine", + "shiny", + "enchantment", + "polish", + "sanitize", + "artificial intelligence", + "smart", + "assistant", + "automation", + "generate", + "enhancement", + "pristine" + ] + }, + { + "name": "brush", + "tags": [ + "clean", + "sweep", + "refactor", + "remove", + "draw", + "paint", + "color", + "artist" + ] + }, + { + "name": "brush-cleaning", + "tags": [ + "cleaning", + "utensil", + "housekeeping", + "tool", + "sweeping", + "scrubbing", + "hygiene", + "maintenance", + "household", + "cleaner", + "chores", + "equipment", + "sanitation", + "bristles", + "handle", + "home care", + "sanitize", + "purify", + "wash", + "disinfect", + "sterilize", + "scrub", + "polish", + "decontaminate", + "wipe", + "spotless", + "remove", + "empty", + "erase", + "purge", + "eliminate" + ] + }, + { + "name": "bubbles", + "tags": [ + "water", + "cleaning", + "soap", + "bath", + "hygiene", + "freshness", + "wash", + "foam", + "cleanliness", + "shampoo", + "purity", + "splash", + "lightness", + "airy", + "relaxation", + "spa", + "bubbly", + "fluid", + "floating", + "drop" + ] + }, + { + "name": "bug", + "tags": [ + "issue", + "error", + "defect", + "testing", + "troubleshoot", + "problem", + "report", + "debug", + "code", + "insect", + "beetle" + ] + }, + { + "name": "bug-off", + "tags": [ + "issue", + "error", + "defect", + "testing", + "troubleshoot", + "problem", + "report", + "debug", + "code", + "insect", + "beetle", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "fixed", + "resolved", + "kill", + "exterminate", + "pest control" + ] + }, + { + "name": "bug-play", + "tags": [ + "issue", + "error", + "defect", + "testing", + "troubleshoot", + "problem", + "report", + "debug", + "code", + "insect", + "beetle", + "start", + "run", + "running", + "execute", + "launch", + "resume", + "preview", + "begin", + "continue", + "proceed", + "activate", + "trigger", + "initiate", + "reproduce" + ] + }, + { "name": "building", "tags": ["organisation", "organization"] }, + { + "name": "building-complex", + "tags": [ + "organisation", + "organization", + "business", + "company", + "enterprise", + "skyscraper", + "city" + ] + }, + { + "name": "building-complex-plus", + "tags": [ + "organisation", + "organization", + "business", + "company", + "enterprise", + "skyscraper", + "city", + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added", + "office", + "headquarters", + "startup", + "registration", + "onboarding", + "real estate", + "property" + ] + }, + { + "name": "bus", + "tags": ["bus", "vehicle", "transport", "trip", "coach", "road"] + }, + { + "name": "bus-front", + "tags": ["bus", "vehicle", "transport", "trip", "coach", "road"] + }, + { + "name": "cable", + "tags": [ + "cord", + "wire", + "connector", + "connection", + "link", + "signal", + "console", + "computer", + "equipment", + "electricity", + "energy", + "electronics", + "recharging", + "charger", + "power", + "supply", + "disconnected", + "unplugged", + "plugs", + "interface", + "input", + "output", + "audio video", + "av", + "rca", + "scart", + "tv", + "television", + "optical" + ] + }, + { + "name": "cable-car", + "tags": ["ski lift", "winter holiday", "alpine", "resort", "mountains"] + }, + { + "name": "cake", + "tags": [ + "birthday", + "birthdate", + "celebration", + "party", + "surprise", + "gateaux", + "dessert", + "fondant", + "icing sugar", + "sweet", + "baking", + "candles", + "wish" + ] + }, + { + "name": "cake-slice", + "tags": [ + "birthday", + "birthdate", + "celebration", + "party", + "surprise", + "gateaux", + "dessert", + "fondant", + "icing sugar", + "sweet", + "baking", + "candles", + "wish" + ] + }, + { "name": "calculator", "tags": ["count", "calculating machine"] }, + { + "name": "calendar", + "tags": [ + "day", + "date", + "month", + "year", + "timestamp", + "event", + "birthday", + "birthdate" + ] + }, + { + "name": "calendar-1", + "tags": [ + "day", + "date", + "month", + "year", + "timestamp", + "event", + "birthday", + "birthdate", + "digit", + "number", + "numeral", + "numeric", + "numerical", + "single", + "singular", + "once", + "1", + "first" + ] + }, + { + "name": "calendar-arrow-down", + "tags": [ + "day", + "date", + "month", + "year", + "timestamp", + "event", + "birthday", + "birthdate", + "direction", + "movement", + "vertical", + "downward", + "downwards", + "south", + "descend", + "page down", + "sort", + "order", + "arrange", + "reorder", + "ascending", + "descending", + "increasing", + "decreasing", + "rising", + "falling", + "ordering", + "arrangement", + "sequence", + "ranking", + "filter" + ] + }, + { + "name": "calendar-arrow-left", + "tags": [ + "day", + "date", + "month", + "year", + "timestamp", + "event", + "birthday", + "birthdate", + "direction", + "movement", + "horizontal", + "leftward", + "leftwards", + "west", + "navigation", + "preceding", + "back", + "backward", + "backwards", + "prior", + "previous page", + "arrow", + "previous", + "past", + "earlier", + "reschedule", + "postpone", + "schedule", + "timeline", + "date picker" + ] + }, + { + "name": "calendar-arrow-right", + "tags": [ + "day", + "date", + "month", + "year", + "timestamp", + "event", + "birthday", + "birthdate", + "direction", + "movement", + "horizontal", + "rightward", + "rightwards", + "east", + "navigation", + "following", + "forward", + "forwards", + "subsequent", + "next page", + "arrow", + "next", + "future", + "upcoming", + "later", + "reschedule", + "postpone", + "defer", + "schedule", + "timeline", + "appointment" + ] + }, + { + "name": "calendar-arrow-up", + "tags": [ + "day", + "date", + "month", + "year", + "timestamp", + "event", + "birthday", + "birthdate", + "direction", + "movement", + "vertical", + "upward", + "upwards", + "north", + "ascend", + "page up", + "sort", + "order", + "arrange", + "reorder", + "ascending", + "descending", + "increasing", + "decreasing", + "rising", + "falling", + "ordering", + "arrangement", + "sequence", + "ranking", + "filter" + ] + }, + { + "name": "calendar-check", + "tags": [ + "day", + "date", + "month", + "year", + "timestamp", + "event", + "birthday", + "birthdate", + "checkmark", + "done", + "completed", + "finished", + "successful", + "confirmed", + "verified", + "validated", + "approved", + "accepted", + "correct", + "valid", + "ticked", + "task", + "todo", + "subscribe", + "schedule" + ] + }, + { + "name": "calendar-check-2", + "tags": [ + "day", + "date", + "month", + "year", + "timestamp", + "event", + "birthday", + "birthdate", + "checkmark", + "done", + "completed", + "finished", + "successful", + "confirmed", + "verified", + "validated", + "approved", + "accepted", + "correct", + "valid", + "ticked", + "task", + "todo", + "subscribe", + "schedule" + ] + }, + { + "name": "calendar-chevrons-left", + "tags": [ + "day", + "date", + "month", + "year", + "timestamp", + "event", + "birthday", + "birthdate", + "direction", + "movement", + "horizontal", + "leftward", + "leftwards", + "west", + "navigation", + "initial", + "beginning", + "home", + "first page", + "earliest", + "preceding", + "back", + "backward", + "backwards", + "prior", + "arrow", + "symbol", + "pointer", + "indicator", + "menu", + "events" + ] + }, + { + "name": "calendar-chevrons-right", + "tags": [ + "day", + "date", + "month", + "year", + "timestamp", + "event", + "birthday", + "birthdate", + "direction", + "movement", + "horizontal", + "rightward", + "rightwards", + "east", + "navigation", + "final", + "ending", + "end", + "last page", + "latest", + "following", + "forward", + "forwards", + "subsequent", + "arrow", + "symbol", + "pointer", + "indicator", + "menu", + "events" + ] + }, + { + "name": "calendar-clock", + "tags": [ + "day", + "date", + "month", + "year", + "timestamp", + "event", + "birthday", + "birthdate", + "clock", + "time", + "hour", + "minute", + "second", + "timer", + "duration", + "interval", + "frequency", + "schedule", + "deadline", + "pending", + "delayed", + "watch", + "history" + ] + }, + { + "name": "calendar-cog", + "tags": [ + "day", + "date", + "month", + "year", + "timestamp", + "event", + "birthday", + "birthdate", + "cog", + "cogwheel", + "gear", + "pinion", + "sprocket", + "settings", + "configuration", + "preferences", + "options", + "customization", + "controls", + "control panel", + "edit", + "tools", + "events" + ] + }, + { + "name": "calendar-days", + "tags": [ + "day", + "date", + "month", + "year", + "timestamp", + "event", + "birthday", + "birthdate" + ] + }, + { + "name": "calendar-fold", + "tags": [ + "day", + "date", + "month", + "year", + "timestamp", + "event", + "birthday", + "birthdate", + "ics" + ] + }, + { + "name": "calendar-heart", + "tags": [ + "day", + "date", + "month", + "year", + "timestamp", + "event", + "birthday", + "birthdate", + "favorite", + "favourite", + "like", + "love", + "save", + "wishlist", + "reaction", + "health", + "subscribe", + "valentines day" + ] + }, + { + "name": "calendar-minus", + "tags": [ + "day", + "date", + "month", + "year", + "timestamp", + "event", + "birthday", + "birthdate", + "minus", + "remove", + "delete", + "cancel", + "erase", + "subtract", + "reduce", + "clear", + "exclude", + "-" + ] + }, + { + "name": "calendar-minus-2", + "tags": [ + "day", + "date", + "month", + "year", + "timestamp", + "event", + "birthday", + "birthdate", + "minus", + "remove", + "delete", + "cancel", + "erase", + "subtract", + "reduce", + "clear", + "exclude", + "-" + ] + }, + { + "name": "calendar-off", + "tags": [ + "day", + "date", + "month", + "year", + "timestamp", + "event", + "birthday", + "birthdate", + "minus", + "remove", + "delete", + "cancel", + "erase", + "subtract", + "reduce", + "clear", + "exclude", + "-", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line" + ] + }, + { + "name": "calendar-plus", + "tags": [ + "day", + "date", + "month", + "year", + "timestamp", + "event", + "birthday", + "birthdate", + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added", + "subscribe" + ] + }, + { + "name": "calendar-plus-2", + "tags": [ + "day", + "date", + "month", + "year", + "timestamp", + "event", + "birthday", + "birthdate", + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added", + "subscribe" + ] + }, + { + "name": "calendar-range", + "tags": [ + "day", + "date", + "month", + "year", + "timestamp", + "event", + "birthday", + "birthdate", + "range", + "period" + ] + }, + { + "name": "calendar-search", + "tags": [ + "day", + "date", + "month", + "year", + "timestamp", + "event", + "birthday", + "birthdate", + "search", + "magnifier", + "scan", + "scanning", + "browsing", + "finding", + "find", + "lookup", + "query", + "locate", + "explore", + "discover", + "browse", + "inspect", + "examine", + "investigate", + "magnifying glass", + "lens", + "zoom", + "events" + ] + }, + { + "name": "calendar-sync", + "tags": [ + "day", + "date", + "month", + "year", + "timestamp", + "event", + "birthday", + "birthdate", + "synchronize", + "synchronise", + "refresh", + "reload", + "update", + "reconnect", + "retry", + "renew", + "rerun", + "repeat", + "cycle", + "transfer", + "backup", + "subscribe", + "recurring", + "schedule", + "reminder", + "automatic", + "auto" + ] + }, + { + "name": "calendar-x", + "tags": [ + "day", + "date", + "month", + "year", + "timestamp", + "event", + "birthday", + "birthdate", + "x", + "remove", + "delete", + "cancel", + "clear", + "close", + "discard", + "dismiss", + "erase", + "abort", + "reject", + "canceled", + "cancelled", + "cancellation", + "cross", + "times", + "ex", + "×", + "busy" + ] + }, + { + "name": "calendar-x-2", + "tags": [ + "day", + "date", + "month", + "year", + "timestamp", + "event", + "birthday", + "birthdate", + "x", + "remove", + "delete", + "cancel", + "clear", + "close", + "discard", + "dismiss", + "erase", + "abort", + "reject", + "canceled", + "cancelled", + "cancellation", + "cross", + "times", + "ex", + "×", + "busy" + ] + }, + { + "name": "calendars", + "tags": [ + "date", + "month", + "year", + "event", + "dates", + "months", + "years", + "events" + ] + }, + { + "name": "camera", + "tags": [ + "photography", + "lens", + "focus", + "capture", + "shot", + "visual", + "image", + "device", + "equipment", + "photo", + "webcam", + "video" + ] + }, + { + "name": "camera-off", + "tags": [ + "photography", + "lens", + "focus", + "capture", + "shot", + "visual", + "image", + "device", + "equipment", + "photo", + "webcam", + "video", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line" + ] + }, + { + "name": "can", + "tags": [ + "food", + "storage", + "groceries", + "tin", + "metal", + "recyclable", + "container", + "pantry", + "grocery", + "preserved" + ] + }, + { + "name": "can-soda", + "tags": [ + "beverage", + "drink", + "food", + "soda", + "tin", + "beer", + "alcohol", + "waste" + ] + }, + { "name": "candy", "tags": ["sugar", "food", "sweet"] }, + { + "name": "candy-cane", + "tags": ["sugar", "food", "sweet", "christmas", "xmas"] + }, + { + "name": "candy-off", + "tags": [ + "sugar", + "food", + "sweet", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "sugar free", + "allergy", + "intolerance", + "diet" + ] + }, + { "name": "cannabis", "tags": ["cannabis", "weed", "leaf"] }, + { + "name": "cannabis-off", + "tags": [ + "cannabis", + "weed", + "leaf", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line" + ] + }, + { + "name": "captions", + "tags": [ + "closed captions", + "subtitles", + "subhead", + "transcription", + "transcribe", + "dialogue", + "accessibility" + ] + }, + { + "name": "captions-off", + "tags": [ + "closed captions", + "subtitles", + "subhead", + "transcription", + "transcribe", + "dialogue", + "accessibility", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line" + ] + }, + { "name": "car", "tags": ["vehicle", "drive", "trip", "journey"] }, + { + "name": "car-battery", + "tags": [ + "battery", + "automobile", + "power cell", + "electric", + "power", + "electricity", + "energy", + "accumulator", + "charge", + "transport", + "vehicle", + "car" + ] + }, + { "name": "car-front", "tags": ["vehicle", "drive", "trip", "journey"] }, + { + "name": "car-taxi-front", + "tags": ["vehicle", "drive", "trip", "journey", "cab"] + }, + { + "name": "caravan", + "tags": [ + "trailer", + "tow", + "camping", + "campsite", + "mobile home", + "holiday", + "nomadic", + "wilderness", + "outdoors" + ] + }, + { + "name": "card-sim", + "tags": [ + "cellphone", + "smartphone", + "mobile", + "network", + "cellular", + "service", + "provider", + "signal", + "coverage", + "disk", + "data", + "format", + "storage", + "flash", + "digital", + "contacts", + "phone book", + "contractual", + "circuit board", + "chip" + ] + }, + { + "name": "carrot", + "tags": [ + "orange", + "healthy", + "nature", + "fresh", + "root", + "produce", + "organic", + "nutrition", + "vegetable", + "food", + "eat" + ] + }, + { + "name": "carton", + "tags": [ + "milk", + "dairy", + "beverage", + "drink", + "diet", + "lactose", + "liquid", + "liter", + "litre", + "pint", + "pints", + "pasteurized", + "skim", + "skimmed", + "container", + "packaging", + "grocery", + "juice", + "cream", + "cow" + ] + }, + { + "name": "carton-off", + "tags": [ + "milk", + "dairy", + "beverage", + "drink", + "diet", + "lactose", + "liquid", + "liter", + "litre", + "pint", + "pints", + "pasteurized", + "skim", + "skimmed", + "container", + "packaging", + "grocery", + "juice", + "cream", + "cow", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "lactose free", + "non dairy", + "allergy", + "intolerance", + "vegan" + ] + }, + { + "name": "case-lower", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "letters", + "characters" + ] + }, + { + "name": "case-sensitive", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "letters", + "characters" + ] + }, + { + "name": "case-upper", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "letters", + "characters" + ] + }, + { "name": "cassette-tape", "tags": ["audio", "music", "recording", "play"] }, + { + "name": "cast", + "tags": [ + "stream", + "streaming", + "screen", + "display", + "wireless", + "broadcast", + "transmit", + "media", + "receiver", + "remote display", + "screen sharing", + "media streaming" + ] + }, + { + "name": "castle", + "tags": ["fortress", "stronghold", "palace", "chateau", "building"] + }, + { "name": "cat", "tags": ["animal", "pet", "kitten", "feline"] }, + { + "name": "cctv", + "tags": [ + "camera", + "surveillance", + "recording", + "film", + "videotape", + "crime", + "watching" + ] + }, + { + "name": "cctv-off", + "tags": [ + "camera", + "surveillance", + "recording", + "film", + "videotape", + "crime", + "watching", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line" + ] + }, + { + "name": "certificate", + "tags": [ + "award", + "ribbon", + "medal", + "achievement", + "pinned", + "badge", + "recognition", + "laurel", + "commendation", + "diploma", + "official", + "proof", + "fact", + "verified", + "license", + "warrant", + "authorization", + "legal", + "ownership", + "credential", + "ssl", + "tls", + "security", + "trust", + "cybersecurity", + "authority", + "graduation", + "study" + ] + }, + { + "name": "chart-area", + "tags": [ + "diagram", + "graph", + "visualization", + "data", + "analytics", + "analysis", + "statistics", + "presentation", + "reporting", + "data visualisation", + "visualisation" + ] + }, + { + "name": "chart-bar", + "tags": [ + "diagram", + "graph", + "visualization", + "data", + "analytics", + "analysis", + "statistics", + "presentation", + "reporting", + "data visualisation", + "visualisation", + "categorical", + "comparison" + ] + }, + { + "name": "chart-bar-big", + "tags": [ + "diagram", + "graph", + "visualization", + "data", + "analytics", + "analysis", + "statistics", + "presentation", + "reporting", + "data visualisation", + "visualisation", + "categorical", + "comparison" + ] + }, + { + "name": "chart-bar-decreasing", + "tags": [ + "diagram", + "graph", + "visualization", + "data", + "analytics", + "analysis", + "statistics", + "presentation", + "reporting", + "data visualisation", + "visualisation", + "categorical", + "comparison", + "trending down" + ] + }, + { + "name": "chart-bar-increasing", + "tags": [ + "diagram", + "graph", + "visualization", + "data", + "analytics", + "analysis", + "statistics", + "presentation", + "reporting", + "data visualisation", + "visualisation", + "categorical", + "comparison", + "trending up" + ] + }, + { + "name": "chart-bar-stacked", + "tags": [ + "diagram", + "graph", + "visualization", + "data", + "analytics", + "analysis", + "statistics", + "presentation", + "reporting", + "data visualisation", + "visualisation", + "categorical", + "comparison", + "multivariate" + ] + }, + { + "name": "chart-bell-curve", + "tags": [ + "diagram", + "graph", + "visualization", + "data", + "analytics", + "analysis", + "statistics", + "presentation", + "reporting", + "data visualisation", + "visualisation", + "distribution", + "normal distribution", + "gaussian", + "probability", + "frequency", + "density", + "symmetric", + "standard deviation" + ] + }, + { + "name": "chart-candlestick", + "tags": [ + "diagram", + "graph", + "visualization", + "data", + "analytics", + "analysis", + "statistics", + "presentation", + "reporting", + "data visualisation", + "visualisation", + "trading", + "trader", + "financial", + "markets", + "portfolio", + "assets", + "prices", + "value", + "valuation", + "commodities", + "currencies", + "currency", + "stocks", + "exchange", + "hedge fund" + ] + }, + { + "name": "chart-column", + "tags": [ + "diagram", + "graph", + "visualization", + "data", + "analytics", + "analysis", + "statistics", + "presentation", + "reporting", + "data visualisation", + "visualisation", + "categorical", + "comparison" + ] + }, + { + "name": "chart-column-big", + "tags": [ + "diagram", + "graph", + "visualization", + "data", + "analytics", + "analysis", + "statistics", + "presentation", + "reporting", + "data visualisation", + "visualisation", + "categorical", + "comparison" + ] + }, + { + "name": "chart-column-decreasing", + "tags": [ + "diagram", + "graph", + "visualization", + "data", + "analytics", + "analysis", + "statistics", + "presentation", + "reporting", + "data visualisation", + "visualisation", + "categorical", + "comparison", + "trending down" + ] + }, + { + "name": "chart-column-increasing", + "tags": [ + "diagram", + "graph", + "visualization", + "data", + "analytics", + "analysis", + "statistics", + "presentation", + "reporting", + "data visualisation", + "visualisation", + "categorical", + "comparison", + "trending up" + ] + }, + { + "name": "chart-column-stacked", + "tags": [ + "diagram", + "graph", + "visualization", + "data", + "analytics", + "analysis", + "statistics", + "presentation", + "reporting", + "data visualisation", + "visualisation", + "categorical", + "comparison", + "multivariate" + ] + }, + { + "name": "chart-gantt", + "tags": [ + "diagram", + "graph", + "visualization", + "data", + "analytics", + "analysis", + "statistics", + "presentation", + "reporting", + "data visualisation", + "visualisation", + "timeline", + "planning", + "projects", + "manage", + "overview", + "roadmap", + "plan", + "deadline", + "date", + "event", + "range", + "period", + "productivity", + "work", + "agile" + ] + }, + { + "name": "chart-line", + "tags": [ + "diagram", + "graph", + "visualization", + "data", + "analytics", + "analysis", + "statistics", + "presentation", + "reporting", + "data visualisation", + "visualisation" + ] + }, + { + "name": "chart-network", + "tags": [ + "diagram", + "graph", + "visualization", + "data", + "analytics", + "analysis", + "statistics", + "presentation", + "reporting", + "data visualisation", + "visualisation", + "network", + "nodes", + "edges", + "links", + "connections", + "relationships", + "structure", + "topology", + "cluster", + "web" + ] + }, + { + "name": "chart-no-axes-column", + "tags": [ + "diagram", + "graph", + "visualization", + "data", + "analytics", + "analysis", + "statistics", + "presentation", + "reporting", + "data visualisation", + "visualisation", + "categorical", + "comparison" + ] + }, + { + "name": "chart-no-axes-column-decreasing", + "tags": [ + "diagram", + "graph", + "visualization", + "data", + "analytics", + "analysis", + "statistics", + "presentation", + "reporting", + "data visualisation", + "visualisation", + "categorical", + "comparison", + "trending down" + ] + }, + { + "name": "chart-no-axes-column-increasing", + "tags": [ + "diagram", + "graph", + "visualization", + "data", + "analytics", + "analysis", + "statistics", + "presentation", + "reporting", + "data visualisation", + "visualisation", + "categorical", + "comparison", + "trending up" + ] + }, + { + "name": "chart-no-axes-combined", + "tags": [ + "diagram", + "graph", + "visualization", + "data", + "analytics", + "analysis", + "statistics", + "presentation", + "reporting", + "data visualisation", + "visualisation", + "trending up" + ] + }, + { + "name": "chart-no-axes-gantt", + "tags": [ + "diagram", + "graph", + "visualization", + "data", + "analytics", + "analysis", + "statistics", + "presentation", + "reporting", + "data visualisation", + "visualisation", + "timeline", + "planning", + "projects", + "manage", + "overview", + "roadmap", + "plan", + "deadline", + "date", + "event", + "range", + "period", + "productivity", + "work", + "agile", + "intentions", + "code", + "coding" + ] + }, + { + "name": "chart-pie", + "tags": [ + "diagram", + "graph", + "visualization", + "data", + "analytics", + "analysis", + "statistics", + "presentation", + "reporting", + "data visualisation", + "visualisation" + ] + }, + { + "name": "chart-quadrant", + "tags": [ + "diagram", + "graph", + "visualization", + "data", + "analytics", + "analysis", + "statistics", + "presentation", + "reporting", + "data visualisation", + "visualisation", + "quadrant", + "chart", + "chart-scatter", + "scatter plot", + "2x2", + "matrix", + "segmentation", + "correlation", + "comparison", + "risk", + "swot", + "clustering" + ] + }, + { + "name": "chart-radar", + "tags": [ + "diagram", + "graph", + "visualization", + "data", + "analytics", + "analysis", + "statistics", + "presentation", + "reporting", + "data visualisation", + "visualisation", + "radar", + "chart", + "shape", + "gem", + "mineral", + "pentagon", + "multidimensional", + "metrics", + "performance", + "comparison", + "profile", + "attributes" + ] + }, + { + "name": "chart-scatter", + "tags": [ + "diagram", + "graph", + "visualization", + "data", + "analytics", + "analysis", + "statistics", + "presentation", + "reporting", + "data visualisation", + "visualisation" + ] + }, + { + "name": "chart-spline", + "tags": [ + "diagram", + "graph", + "visualization", + "data", + "analytics", + "analysis", + "statistics", + "presentation", + "reporting", + "data visualisation", + "visualisation", + "curve", + "continuous", + "smooth", + "polynomial", + "quadratic", + "function", + "interpolation" + ] + }, + { + "name": "check", + "tags": [ + "checkmark", + "done", + "completed", + "finished", + "successful", + "confirmed", + "verified", + "validated", + "approved", + "accepted", + "correct", + "valid", + "ticked", + "task", + "todo" + ] + }, + { + "name": "check-check", + "tags": [ + "checkmark", + "done", + "completed", + "finished", + "successful", + "confirmed", + "verified", + "validated", + "approved", + "accepted", + "correct", + "valid", + "ticked", + "task", + "todo", + "received", + "double" + ] + }, + { + "name": "check-line", + "tags": [ + "checkmark", + "done", + "completed", + "finished", + "successful", + "confirmed", + "verified", + "validated", + "approved", + "accepted", + "correct", + "valid", + "ticked", + "task", + "todo" + ] + }, + { "name": "chef-hat", "tags": ["cooking", "food", "kitchen", "restaurant"] }, + { "name": "cherry", "tags": ["fruit", "food"] }, + { + "name": "chess-bishop", + "tags": ["mitre", "miter", "piece", "board game", "religion"] + }, + { + "name": "chess-king", + "tags": ["ruler", "crown", "piece", "board game", "stalemate"] + }, + { "name": "chess-knight", "tags": ["piece", "horse", "board game"] }, + { "name": "chess-pawn", "tags": ["piece", "board game"] }, + { + "name": "chess-queen", + "tags": ["ruler", "crown", "piece", "board game", "stalemate"] + }, + { "name": "chess-rook", "tags": ["castle", "piece", "board game"] }, + { + "name": "chevron-down", + "tags": [ + "direction", + "movement", + "vertical", + "downward", + "downwards", + "south", + "descend", + "page down", + "navigation", + "following", + "forward", + "forwards", + "subsequent", + "next page", + "backwards", + "reverse", + "slow", + "dropdown" + ] + }, + { "name": "chevron-first", "tags": ["previous", "music"] }, + { "name": "chevron-last", "tags": ["skip", "next", "music"] }, + { + "name": "chevron-left", + "tags": [ + "direction", + "movement", + "horizontal", + "leftward", + "leftwards", + "west", + "navigation", + "preceding", + "back", + "backward", + "backwards", + "prior", + "previous page", + "previous", + "less than", + "fewer", + "menu", + "<" + ] + }, + { + "name": "chevron-right", + "tags": [ + "direction", + "movement", + "horizontal", + "rightward", + "rightwards", + "east", + "navigation", + "following", + "forward", + "forwards", + "subsequent", + "next page", + "next", + "more than", + "greater", + "menu", + "code", + "coding", + "command line", + "terminal", + "prompt", + "shell", + ">" + ] + }, + { + "name": "chevron-up", + "tags": [ + "direction", + "movement", + "vertical", + "upward", + "upwards", + "north", + "ascend", + "page up", + "navigation", + "preceding", + "back", + "backward", + "backwards", + "prior", + "previous page", + "caret", + "keyboard", + "mac", + "control", + "ctrl", + "superscript", + "exponential", + "power", + "ahead", + "fast", + "^", + "dropdown" + ] + }, + { + "name": "chevrons-down", + "tags": [ + "direction", + "movement", + "vertical", + "downward", + "downwards", + "south", + "descend", + "page down", + "navigation", + "final", + "ending", + "end", + "last page", + "latest", + "following", + "forward", + "forwards", + "subsequent", + "backwards", + "reverse", + "slower" + ] + }, + { + "name": "chevrons-down-up", + "tags": [ + "direction", + "movement", + "vertical", + "downward", + "downwards", + "south", + "descend", + "page down", + "upward", + "upwards", + "north", + "ascend", + "page up", + "collapse", + "fold" + ] + }, + { + "name": "chevrons-left", + "tags": [ + "direction", + "movement", + "horizontal", + "leftward", + "leftwards", + "west", + "navigation", + "initial", + "beginning", + "home", + "first page", + "earliest", + "preceding", + "back", + "backward", + "backwards", + "prior", + "turn", + "corner" + ] + }, + { + "name": "chevrons-left-right", + "tags": [ + "direction", + "movement", + "horizontal", + "leftward", + "leftwards", + "west", + "rightward", + "rightwards", + "east", + "expand", + "unfold" + ] + }, + { + "name": "chevrons-left-right-ellipsis", + "tags": [ + "direction", + "movement", + "horizontal", + "leftward", + "leftwards", + "west", + "rightward", + "rightwards", + "east", + "internet", + "network", + "connection", + "cable", + "lan", + "port", + "router", + "switch", + "hub", + "modem", + "web", + "online", + "networking", + "communication", + "socket", + "plug", + "slot", + "controller", + "connector", + "interface", + "console", + "signal", + "data", + "input", + "output" + ] + }, + { + "name": "chevrons-right", + "tags": [ + "direction", + "movement", + "horizontal", + "rightward", + "rightwards", + "east", + "navigation", + "final", + "ending", + "end", + "last page", + "latest", + "following", + "forward", + "forwards", + "subsequent", + "turn", + "corner" + ] + }, + { + "name": "chevrons-right-left", + "tags": [ + "direction", + "movement", + "horizontal", + "rightward", + "rightwards", + "east", + "leftward", + "leftwards", + "west", + "collapse", + "fold" + ] + }, + { + "name": "chevrons-up", + "tags": [ + "direction", + "movement", + "vertical", + "upward", + "upwards", + "north", + "ascend", + "page up", + "navigation", + "initial", + "beginning", + "home", + "first page", + "earliest", + "preceding", + "back", + "backward", + "backwards", + "prior", + "forward", + "ahead", + "faster", + "speed", + "boost" + ] + }, + { + "name": "chevrons-up-down", + "tags": [ + "direction", + "movement", + "vertical", + "upward", + "upwards", + "north", + "ascend", + "page up", + "downward", + "downwards", + "south", + "descend", + "page down", + "expand", + "unfold" + ] + }, + { "name": "church", "tags": ["temple", "building"] }, + { "name": "cigarette", "tags": ["smoking"] }, + { + "name": "cigarette-off", + "tags": [ + "smoking", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "no-smoking" + ] + }, + { "name": "circle", "tags": ["off", "zero", "record", "shape"] }, + { + "name": "circle-alert", + "tags": [ + "alert", + "warning", + "danger", + "caution", + "notice", + "error", + "risk", + "concern", + "hazard", + "exclamation mark", + "exclamation point", + "!" + ] + }, + { + "name": "circle-arrow-down", + "tags": [ + "direction", + "movement", + "vertical", + "downward", + "downwards", + "south", + "descend", + "page down", + "navigation", + "following", + "forward", + "forwards", + "subsequent", + "next page", + "backwards", + "reverse", + "sign", + "button" + ] + }, + { + "name": "circle-arrow-left", + "tags": [ + "direction", + "movement", + "horizontal", + "leftward", + "leftwards", + "west", + "navigation", + "preceding", + "back", + "backward", + "backwards", + "prior", + "previous page", + "previous", + "sign", + "turn", + "button", + "<-" + ] + }, + { + "name": "circle-arrow-out-down-left", + "tags": [ + "direction", + "movement", + "diagonal", + "southwest", + "south-west", + "south west", + "outwards" + ] + }, + { + "name": "circle-arrow-out-down-right", + "tags": [ + "direction", + "movement", + "diagonal", + "southeast", + "south-east", + "south east", + "outwards" + ] + }, + { + "name": "circle-arrow-out-up-left", + "tags": [ + "direction", + "movement", + "diagonal", + "northwest", + "north-west", + "north west", + "outwards", + "keyboard", + "button", + "escape" + ] + }, + { + "name": "circle-arrow-out-up-right", + "tags": [ + "direction", + "movement", + "diagonal", + "northeast", + "north-east", + "north east", + "outwards" + ] + }, + { + "name": "circle-arrow-right", + "tags": [ + "direction", + "movement", + "horizontal", + "rightward", + "rightwards", + "east", + "navigation", + "following", + "forward", + "forwards", + "subsequent", + "next page", + "next", + "sign", + "turn", + "button", + "->" + ] + }, + { + "name": "circle-arrow-up", + "tags": [ + "direction", + "movement", + "vertical", + "upward", + "upwards", + "north", + "ascend", + "page up", + "navigation", + "preceding", + "back", + "backward", + "backwards", + "prior", + "previous page", + "forward", + "sign", + "button" + ] + }, + { + "name": "circle-check", + "tags": [ + "checkmark", + "done", + "completed", + "finished", + "successful", + "confirmed", + "verified", + "validated", + "approved", + "accepted", + "correct", + "valid", + "ticked", + "task", + "todo" + ] + }, + { + "name": "circle-check-big", + "tags": [ + "checkmark", + "done", + "completed", + "finished", + "successful", + "confirmed", + "verified", + "validated", + "approved", + "accepted", + "correct", + "valid", + "ticked", + "task", + "todo" + ] + }, + { + "name": "circle-chevron-down", + "tags": [ + "direction", + "movement", + "vertical", + "downward", + "downwards", + "south", + "descend", + "page down", + "navigation", + "following", + "forward", + "forwards", + "subsequent", + "next page", + "back", + "menu" + ] + }, + { + "name": "circle-chevron-left", + "tags": [ + "direction", + "movement", + "horizontal", + "leftward", + "leftwards", + "west", + "navigation", + "preceding", + "back", + "backward", + "backwards", + "prior", + "previous page", + "previous", + "less than", + "fewer", + "menu", + "<" + ] + }, + { + "name": "circle-chevron-right", + "tags": [ + "direction", + "movement", + "horizontal", + "rightward", + "rightwards", + "east", + "navigation", + "following", + "forward", + "forwards", + "subsequent", + "next page", + "back", + "more than", + "greater", + "menu", + ">" + ] + }, + { + "name": "circle-chevron-up", + "tags": [ + "direction", + "movement", + "vertical", + "upward", + "upwards", + "north", + "ascend", + "page up", + "navigation", + "preceding", + "back", + "backward", + "backwards", + "prior", + "previous page", + "caret", + "ahead", + "menu", + "^" + ] + }, + { + "name": "circle-chevrons-down", + "tags": [ + "direction", + "movement", + "vertical", + "downward", + "downwards", + "south", + "descend", + "page down", + "navigation", + "final", + "ending", + "end", + "last page", + "latest", + "following", + "forward", + "forwards", + "subsequent", + "bottom", + "page", + "scroll", + "jump", + "caret", + "button", + "skip", + "feed", + "chat", + "pagination", + "fast", + "media" + ] + }, + { + "name": "circle-chevrons-left", + "tags": [ + "direction", + "movement", + "horizontal", + "leftward", + "leftwards", + "west", + "navigation", + "initial", + "beginning", + "home", + "first page", + "earliest", + "preceding", + "back", + "backward", + "backwards", + "prior", + "previous", + "rewind", + "first", + "start", + "music", + "caret", + "button", + "pagination", + "skip", + "skip-back", + "seek-back", + "media-controls", + "player", + "playlist", + "track", + "chapter", + "jump", + "timeline", + "controls" + ] + }, + { + "name": "circle-chevrons-right", + "tags": [ + "direction", + "movement", + "horizontal", + "rightward", + "rightwards", + "east", + "navigation", + "final", + "ending", + "end", + "last page", + "latest", + "following", + "forward", + "forwards", + "subsequent", + "next", + "skip", + "fast forward", + "last", + "music", + "caret", + "button", + "pagination", + "jump", + "seek", + "seek forward", + "player control", + "chapter", + "track", + "timeline", + "navigation control" + ] + }, + { + "name": "circle-chevrons-up", + "tags": [ + "direction", + "movement", + "vertical", + "upward", + "upwards", + "north", + "ascend", + "page up", + "navigation", + "initial", + "beginning", + "home", + "first page", + "earliest", + "preceding", + "back", + "backward", + "backwards", + "prior", + "top", + "page", + "back to top", + "scroll", + "jump", + "caret", + "button", + "skip", + "pagination", + "fast", + "fast scroll", + "rewind", + "jump to start", + "floating action button", + "anchor", + "timeline" + ] + }, + { + "name": "circle-dashed", + "tags": [ + "pending", + "dot", + "progress", + "issue", + "draft", + "code", + "coding", + "version control" + ] + }, + { + "name": "circle-dashed-check", + "tags": [ + "pending", + "dot", + "progress", + "issue", + "draft", + "code", + "coding", + "version control", + "checkmark", + "done", + "completed", + "finished", + "successful", + "confirmed", + "verified", + "validated", + "approved", + "accepted", + "correct", + "valid", + "ticked", + "task", + "todo", + "changes", + "revision", + "reapproval", + "published", + "schedule", + "assignment", + "request", + "review" + ] + }, + { "name": "circle-divide", "tags": ["calculate", "math", "÷", "/"] }, + { + "name": "circle-dollar-sign", + "tags": [ + "currency", + "money", + "cash", + "banknote", + "funds", + "finance", + "payment", + "balance", + "transaction", + "bill", + "invoice", + "receipt", + "fee", + "subscription", + "price", + "cost", + "amount", + "revenue", + "income", + "expense", + "banking", + "exchange", + "financial", + "economy", + "pricing", + "prices", + "monetization", + "marketing" + ] + }, + { + "name": "circle-dot", + "tags": [ + "pending", + "progress", + "issue", + "code", + "coding", + "version control", + "choices", + "multiple choice", + "choose", + "album", + "music", + "songs", + "format", + "cd", + "dvd", + "vinyl", + "sleeve", + "cover", + "platinum", + "compilation", + "ep", + "recording", + "playback", + "spin", + "rotate", + "rpm", + "dj" + ] + }, + { + "name": "circle-dot-dashed", + "tags": [ + "pending", + "progress", + "issue", + "draft", + "code", + "coding", + "version control" + ] + }, + { + "name": "circle-ellipsis", + "tags": [ + "ellipsis", + "et cetera", + "etc", + "loader", + "loading", + "progress", + "pending", + "throbber", + "menu", + "options", + "operator", + "code", + "spread", + "rest", + "more", + "further", + "extra", + "overflow", + "dots", + "…", + "..." + ] + }, + { "name": "circle-equal", "tags": ["calculate", "shape", "="] }, + { + "name": "circle-euro", + "tags": [ + "currency", + "money", + "cash", + "banknote", + "funds", + "finance", + "payment", + "balance", + "transaction", + "bill", + "invoice", + "receipt", + "fee", + "subscription", + "price", + "cost", + "amount", + "revenue", + "income", + "expense", + "banking", + "exchange", + "financial", + "economy", + "pricing", + "prices", + "monetization", + "symbol", + "europe", + "€", + "euro", + "coin" + ] + }, + { + "name": "circle-fading-arrow-up", + "tags": [ + "direction", + "movement", + "vertical", + "upward", + "upwards", + "north", + "ascend", + "page up", + "up", + "upgrade", + "improve", + "circle", + "button" + ] + }, + { + "name": "circle-fading-play", + "tags": [ + "start", + "run", + "running", + "execute", + "launch", + "resume", + "preview", + "begin", + "continue", + "proceed", + "activate", + "trigger", + "initiate", + "short clips", + "shorts", + "reels", + "stories", + "video", + "highlights", + "social media", + "content", + "teaser", + "clip", + "short form", + "vertical video" + ] + }, + { + "name": "circle-fading-plus", + "tags": [ + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added", + "stories", + "social media", + "sharing", + "content" + ] + }, + { + "name": "circle-gauge", + "tags": [ + "dashboard", + "dial", + "meter", + "speed", + "pressure", + "measure", + "level" + ] + }, + { + "name": "circle-letter-a", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "grade", + "rating", + "accessibility", + "blood type", + "audio", + "ampere", + "electricity", + "appearance" + ] + }, + { + "name": "circle-letter-b", + "tags": [ + "strong", + "emphasis", + "format", + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "bold", + "blood type", + "byte", + "computing", + "b-side", + "bus", + "transit" + ] + }, + { + "name": "circle-letter-c", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "licence", + "license", + "celsius", + "temperature", + "carbon", + "chemistry", + "grade", + "rating" + ] + }, + { + "name": "circle-letter-d", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "drive", + "gear", + "diameter", + "measurement", + "vitamin", + "grade", + "rating" + ] + }, + { + "name": "circle-letter-e", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "explicit", + "content rating", + "east", + "empty", + "energy", + "grade", + "rating" + ] + }, + { + "name": "circle-letter-f", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "fahrenheit", + "temperature", + "female", + "fail", + "grade", + "rating", + "force", + "aperture", + "f-stop", + "camera" + ] + }, + { + "name": "circle-letter-g", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "gravity", + "g-force", + "gram", + "measurement" + ] + }, + { + "name": "circle-letter-h", + "tags": [ + "h1", + "html", + "markup", + "markdown", + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "heading", + "hospital", + "hydrogen", + "chemistry", + "hour", + "time", + "height", + "measurement" + ] + }, + { + "name": "circle-letter-i", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "information", + "help", + "input", + "current", + "electricity" + ] + }, + { + "name": "circle-letter-j", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "joule", + "energy", + "java", + "javascript", + "code" + ] + }, + { + "name": "circle-letter-k", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "thousand", + "kilo", + "kelvin", + "temperature", + "potassium", + "chemistry" + ] + }, + { + "name": "circle-letter-l", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "learner", + "driver", + "litre", + "left", + "length", + "measurement" + ] + }, + { + "name": "circle-letter-m", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "million", + "mega", + "metre", + "measurement", + "male", + "medium", + "size" + ] + }, + { + "name": "circle-letter-n", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "north", + "neutral", + "gear", + "new", + "nitrogen", + "chemistry", + "newton", + "force", + "sample size", + "statistics" + ] + }, + { + "name": "circle-letter-o", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "oxygen", + "chemistry", + "blood type", + "off", + "zero", + "marker" + ] + }, + { + "name": "circle-letter-p", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "parking", + "phosphorus", + "chemistry", + "p-value", + "statistics", + "piano", + "soft", + "music", + "page", + "probability", + "math" + ] + }, + { + "name": "circle-letter-p-off", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "parking", + "phosphorus", + "chemistry", + "p-value", + "statistics", + "piano", + "soft", + "music", + "page", + "probability", + "math", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "no parking" + ] + }, + { + "name": "circle-letter-q", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "question", + "help", + "queue", + "charge", + "electricity", + "quality", + "rating" + ] + }, + { + "name": "circle-letter-r", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "registered trademark", + "trademark", + "right", + "reverse", + "gear", + "resistance", + "electricity", + "radius", + "geometry", + "rating", + "review" + ] + }, + { + "name": "circle-letter-s", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "south", + "small", + "size", + "second", + "time", + "sulfur", + "chemistry", + "save", + "siemens", + "electricity" + ] + }, + { + "name": "circle-letter-t", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "tesla", + "magnetism", + "temperature", + "tonne", + "measurement", + "time" + ] + }, + { + "name": "circle-letter-u", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "rack unit", + "server", + "equipment", + "uranium", + "chemistry" + ] + }, + { + "name": "circle-letter-v", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "voltage", + "volt", + "electricity", + "volume", + "victory", + "success", + "vegan", + "vegetarian", + "video" + ] + }, + { + "name": "circle-letter-w", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "watt", + "power", + "west", + "width", + "measurement", + "tungsten", + "chemistry", + "win" + ] + }, + { + "name": "circle-letter-x", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "close", + "dismiss", + "multiply", + "math", + "unknown", + "variable", + "x-axis", + "axis", + "intersection", + "cross", + "chromosome" + ] + }, + { + "name": "circle-letter-y", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "y-axis", + "axis", + "yes", + "confirm", + "year", + "time", + "chromosome" + ] + }, + { + "name": "circle-letter-z", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "z-axis", + "axis", + "sleep", + "rest", + "impedance", + "electricity", + "atomic number", + "chemistry" + ] + }, + { + "name": "circle-minus", + "tags": [ + "minus", + "remove", + "delete", + "cancel", + "erase", + "subtract", + "reduce", + "clear", + "exclude", + "-", + "decrease", + "calculate", + "line", + "operator", + "code", + "coding", + "minimum", + "downgrade" + ] + }, + { + "name": "circle-off", + "tags": [ + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "diameter", + "zero", + "Ø", + "nothing", + "null", + "void", + "no", + "stop", + "error", + "incorrect", + "mistake", + "wrong", + "failure" + ] + }, + { + "name": "circle-pause", + "tags": [ + "suspend", + "hold", + "halt", + "wait", + "freeze", + "stop", + "break", + "interruption", + "music", + "audio" + ] + }, + { + "name": "circle-percent", + "tags": [ + "discount", + "sale", + "offer", + "deal", + "markdown", + "savings", + "reduction", + "rate", + "interest", + "tax", + "ratio", + "fraction", + "proportion", + "percentage", + "%", + "marketing", + "reduced", + "price tag", + "verified", + "unverified", + "sticker" + ] + }, + { + "name": "circle-pile", + "tags": [ + "off", + "zero", + "record", + "shape", + "circle-pile", + "circle", + "pile", + "stack", + "layer", + "structure", + "form", + "group", + "collection", + "stock", + "inventory", + "materials", + "warehouse" + ] + }, + { + "name": "circle-play", + "tags": [ + "start", + "run", + "running", + "execute", + "launch", + "resume", + "preview", + "begin", + "continue", + "proceed", + "activate", + "trigger", + "initiate", + "music" + ] + }, + { + "name": "circle-plus", + "tags": [ + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added", + "positive", + "calculate", + "crosshair", + "aim", + "target", + "scope", + "sight", + "reticule", + "maximum", + "upgrade", + "operator", + "join", + "concatenate", + "code", + "coding" + ] + }, + { + "name": "circle-pound-sterling", + "tags": [ + "currency", + "money", + "cash", + "banknote", + "funds", + "finance", + "payment", + "balance", + "transaction", + "bill", + "invoice", + "receipt", + "fee", + "subscription", + "price", + "cost", + "amount", + "revenue", + "income", + "expense", + "banking", + "exchange", + "financial", + "economy", + "pricing", + "prices", + "monetization", + "coin", + "penny", + "marketing", + "british", + "gbp", + "£" + ] + }, + { + "name": "circle-power", + "tags": [ + "on", + "off", + "device", + "switch", + "toggle", + "binary", + "boolean", + "reboot", + "restart", + "button", + "keyboard", + "troubleshoot" + ] + }, + { + "name": "circle-question-mark", + "tags": [ + "help", + "guide", + "tutorial", + "manual", + "unknown", + "unidentified", + "unspecified", + "uncertain", + "undetermined", + "missing", + "to be determined", + "mystery", + "question", + "question mark", + "?" + ] + }, + { + "name": "circle-slash", + "tags": [ + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "diameter", + "zero", + "Ø", + "nothing", + "null", + "void", + "no", + "stop", + "error", + "incorrect", + "mistake", + "wrong", + "failure", + "divide", + "division", + "or" + ] + }, + { + "name": "circle-slash-2", + "tags": [ + "diameter", + "zero", + "ø", + "nothing", + "null", + "void", + "ban", + "math", + "divide", + "division", + "half", + "split", + "/", + "average", + "avg", + "mean", + "median", + "normal" + ] + }, + { + "name": "circle-small", + "tags": ["shape", "bullet", "gender", "genderless"] + }, + { + "name": "circle-star", + "tags": [ + "starred", + "featured", + "favorite", + "favourite", + "save", + "wishlist", + "bookmark", + "highlight", + "important", + "priority", + "rating", + "review", + "score", + "quality", + "award", + "achievement", + "excellence", + "like", + "badge", + "medal", + "honour", + "decoration", + "order", + "pin", + "laurel", + "trophy", + "medallion", + "insignia", + "bronze", + "silver", + "gold" + ] + }, + { + "name": "circle-stop", + "tags": [ + "halt", + "end", + "terminate", + "finish", + "cancel", + "abort", + "discontinue", + "interrupt", + "break", + "cease", + "media", + "music" + ] + }, + { + "name": "circle-user", + "tags": [ + "user", + "people", + "identity", + "individual", + "personal", + "person", + "account", + "contact", + "profile", + "member", + "client", + "participant", + "guest" + ] + }, + { + "name": "circle-user-round", + "tags": [ + "user", + "people", + "identity", + "individual", + "personal", + "person", + "account", + "contact", + "profile", + "member", + "client", + "participant", + "guest" + ] + }, + { + "name": "circle-x", + "tags": [ + "x", + "remove", + "delete", + "cancel", + "clear", + "close", + "discard", + "dismiss", + "erase", + "abort", + "reject", + "canceled", + "cancelled", + "cancellation", + "cross", + "times", + "ex", + "×", + "error", + "incorrect", + "wrong", + "mistake", + "failure", + "linter", + "multiply", + "multiplication" + ] + }, + { + "name": "circuit-board", + "tags": ["computing", "electricity", "electronics"] + }, + { "name": "citrus", "tags": ["lemon", "orange", "grapefruit", "fruit"] }, + { + "name": "clapperboard", + "tags": [ + "movie", + "film", + "video", + "camera", + "cinema", + "cut", + "action", + "television", + "tv", + "show", + "entertainment" + ] + }, + { + "name": "clef-alto", + "tags": [ + "do", + "c", + "music", + "note", + "key", + "soprano", + "mezzo", + "alto", + "staff", + "pitch", + "baritone", + "major", + "scale" + ] + }, + { + "name": "clef-bass", + "tags": [ + "fa", + "f", + "music", + "note", + "key", + "baritone", + "staff", + "pitch", + "bass", + "subbass", + "major", + "scale" + ] + }, + { + "name": "clef-treble", + "tags": [ + "sol", + "g", + "music", + "note", + "key", + "treble", + "staff", + "pitch", + "violin", + "solfege", + "major", + "scale" + ] + }, + { "name": "clipboard", "tags": ["copy", "paste"] }, + { + "name": "clipboard-check", + "tags": [ + "copy", + "paste", + "checkmark", + "done", + "completed", + "finished", + "successful", + "confirmed", + "verified", + "validated", + "approved", + "accepted", + "correct", + "valid", + "ticked", + "task", + "todo", + "copied", + "pasted" + ] + }, + { + "name": "clipboard-clock", + "tags": [ + "copy", + "paste", + "clock", + "time", + "hour", + "minute", + "second", + "timestamp", + "timer", + "duration", + "interval", + "frequency", + "schedule", + "deadline", + "pending", + "delayed", + "watch", + "history", + "log", + "alarm", + "reminder", + "scheduled", + "time tracking", + "timesheets", + "appointment", + "logbook" + ] + }, + { "name": "clipboard-copy", "tags": ["copy", "paste"] }, + { "name": "clipboard-list", "tags": ["copy", "paste", "tasks"] }, + { + "name": "clipboard-minus", + "tags": [ + "copy", + "paste", + "minus", + "remove", + "delete", + "cancel", + "erase", + "subtract", + "reduce", + "clear", + "exclude", + "-", + "document", + "medical", + "report", + "doctor" + ] + }, + { "name": "clipboard-paste", "tags": ["copy", "paste"] }, + { + "name": "clipboard-pen", + "tags": [ + "copy", + "paste", + "edit", + "modify", + "update", + "revise", + "amend", + "create", + "change", + "write", + "writer", + "writing", + "pencil", + "compose", + "draft", + "author", + "annotate", + "comment", + "note", + "draw", + "sketch", + "doodle", + "rename", + "customize", + "signature" + ] + }, + { + "name": "clipboard-pen-line", + "tags": [ + "copy", + "paste", + "edit", + "modify", + "update", + "revise", + "amend", + "create", + "change", + "write", + "writer", + "writing", + "pencil", + "compose", + "draft", + "author", + "annotate", + "comment", + "note", + "draw", + "sketch", + "doodle", + "rename", + "customize", + "signature" + ] + }, + { + "name": "clipboard-plus", + "tags": [ + "copy", + "paste", + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added", + "document", + "medical", + "report", + "doctor" + ] + }, + { + "name": "clipboard-type", + "tags": [ + "copy", + "paste", + "alphabet", + "character", + "text", + "font", + "typography", + "format" + ] + }, + { + "name": "clipboard-x", + "tags": [ + "copy", + "paste", + "x", + "remove", + "delete", + "cancel", + "clear", + "close", + "discard", + "dismiss", + "erase", + "abort", + "reject", + "canceled", + "cancelled", + "cancellation", + "cross", + "times", + "ex", + "×" + ] + }, + { + "name": "clock", + "tags": [ + "clock", + "time", + "hour", + "minute", + "second", + "timestamp", + "timer", + "duration", + "interval", + "frequency", + "schedule", + "deadline", + "pending", + "delayed", + "watch", + "history", + "alarm" + ] + }, + { + "name": "clock-1", + "tags": [ + "clock", + "time", + "hour", + "minute", + "second", + "timestamp", + "timer", + "duration", + "interval", + "frequency", + "schedule", + "deadline", + "pending", + "delayed", + "watch", + "history", + "alarm" + ] + }, + { + "name": "clock-10", + "tags": [ + "clock", + "time", + "hour", + "minute", + "second", + "timestamp", + "timer", + "duration", + "interval", + "frequency", + "schedule", + "deadline", + "pending", + "delayed", + "watch", + "history", + "alarm" + ] + }, + { + "name": "clock-11", + "tags": [ + "clock", + "time", + "hour", + "minute", + "second", + "timestamp", + "timer", + "duration", + "interval", + "frequency", + "schedule", + "deadline", + "pending", + "delayed", + "watch", + "history", + "alarm" + ] + }, + { + "name": "clock-12", + "tags": [ + "clock", + "time", + "hour", + "minute", + "second", + "timestamp", + "timer", + "duration", + "interval", + "frequency", + "schedule", + "deadline", + "pending", + "delayed", + "watch", + "history", + "alarm", + "noon", + "midnight" + ] + }, + { + "name": "clock-2", + "tags": [ + "clock", + "time", + "hour", + "minute", + "second", + "timestamp", + "timer", + "duration", + "interval", + "frequency", + "schedule", + "deadline", + "pending", + "delayed", + "watch", + "history", + "alarm" + ] + }, + { + "name": "clock-3", + "tags": [ + "clock", + "time", + "hour", + "minute", + "second", + "timestamp", + "timer", + "duration", + "interval", + "frequency", + "schedule", + "deadline", + "pending", + "delayed", + "watch", + "history", + "alarm" + ] + }, + { + "name": "clock-4", + "tags": [ + "clock", + "time", + "hour", + "minute", + "second", + "timestamp", + "timer", + "duration", + "interval", + "frequency", + "schedule", + "deadline", + "pending", + "delayed", + "watch", + "history", + "alarm" + ] + }, + { + "name": "clock-5", + "tags": [ + "clock", + "time", + "hour", + "minute", + "second", + "timestamp", + "timer", + "duration", + "interval", + "frequency", + "schedule", + "deadline", + "pending", + "delayed", + "watch", + "history", + "alarm" + ] + }, + { + "name": "clock-6", + "tags": [ + "clock", + "time", + "hour", + "minute", + "second", + "timestamp", + "timer", + "duration", + "interval", + "frequency", + "schedule", + "deadline", + "pending", + "delayed", + "watch", + "history", + "alarm" + ] + }, + { + "name": "clock-7", + "tags": [ + "clock", + "time", + "hour", + "minute", + "second", + "timestamp", + "timer", + "duration", + "interval", + "frequency", + "schedule", + "deadline", + "pending", + "delayed", + "watch", + "history", + "alarm" + ] + }, + { + "name": "clock-8", + "tags": [ + "clock", + "time", + "hour", + "minute", + "second", + "timestamp", + "timer", + "duration", + "interval", + "frequency", + "schedule", + "deadline", + "pending", + "delayed", + "watch", + "history", + "alarm" + ] + }, + { + "name": "clock-9", + "tags": [ + "clock", + "time", + "hour", + "minute", + "second", + "timestamp", + "timer", + "duration", + "interval", + "frequency", + "schedule", + "deadline", + "pending", + "delayed", + "watch", + "history", + "alarm" + ] + }, + { + "name": "clock-alert", + "tags": [ + "clock", + "time", + "hour", + "minute", + "second", + "timestamp", + "timer", + "duration", + "interval", + "frequency", + "schedule", + "deadline", + "pending", + "delayed", + "watch", + "history", + "alarm", + "alert", + "warning", + "danger", + "caution", + "notice", + "error", + "risk", + "concern", + "hazard", + "exclamation mark", + "exclamation point", + "!", + "wrong" + ] + }, + { + "name": "clock-arrow-down", + "tags": [ + "clock", + "time", + "hour", + "minute", + "second", + "timestamp", + "timer", + "duration", + "interval", + "frequency", + "schedule", + "deadline", + "pending", + "delayed", + "watch", + "history", + "alarm", + "direction", + "movement", + "vertical", + "downward", + "downwards", + "south", + "descend", + "page down", + "sort", + "order", + "arrange", + "reorder", + "ascending", + "descending", + "increasing", + "decreasing", + "rising", + "falling", + "ordering", + "arrangement", + "sequence", + "ranking", + "filter" + ] + }, + { + "name": "clock-arrow-left", + "tags": [ + "clock", + "time", + "hour", + "minute", + "second", + "timestamp", + "timer", + "duration", + "interval", + "frequency", + "schedule", + "deadline", + "pending", + "delayed", + "watch", + "history", + "alarm", + "direction", + "movement", + "horizontal", + "leftward", + "leftwards", + "west", + "assign", + "range" + ] + }, + { + "name": "clock-arrow-right", + "tags": [ + "clock", + "time", + "hour", + "minute", + "second", + "timestamp", + "timer", + "duration", + "interval", + "frequency", + "schedule", + "deadline", + "pending", + "delayed", + "watch", + "history", + "alarm", + "direction", + "movement", + "horizontal", + "rightward", + "rightwards", + "east", + "range", + "unassign" + ] + }, + { + "name": "clock-arrow-up", + "tags": [ + "clock", + "time", + "hour", + "minute", + "second", + "timestamp", + "timer", + "duration", + "interval", + "frequency", + "schedule", + "deadline", + "pending", + "delayed", + "watch", + "history", + "alarm", + "direction", + "movement", + "vertical", + "upward", + "upwards", + "north", + "ascend", + "page up", + "sort", + "order", + "arrange", + "reorder", + "ascending", + "descending", + "increasing", + "decreasing", + "rising", + "falling", + "ordering", + "arrangement", + "sequence", + "ranking", + "filter" + ] + }, + { + "name": "clock-check", + "tags": [ + "clock", + "time", + "hour", + "minute", + "second", + "timestamp", + "timer", + "duration", + "interval", + "frequency", + "schedule", + "deadline", + "pending", + "delayed", + "watch", + "history", + "alarm", + "checkmark", + "done", + "completed", + "finished", + "successful", + "confirmed", + "verified", + "validated", + "approved", + "accepted", + "correct", + "valid", + "ticked", + "task", + "todo" + ] + }, + { + "name": "clock-fading", + "tags": [ + "clock", + "time", + "hour", + "minute", + "second", + "timestamp", + "timer", + "duration", + "interval", + "frequency", + "schedule", + "deadline", + "pending", + "delayed", + "watch", + "history", + "alarm" + ] + }, + { + "name": "clock-plus", + "tags": [ + "clock", + "time", + "hour", + "minute", + "second", + "timestamp", + "timer", + "duration", + "interval", + "frequency", + "schedule", + "deadline", + "pending", + "delayed", + "watch", + "history", + "alarm", + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added" + ] + }, + { + "name": "closed-caption", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "tv", + "movie", + "video", + "closed captions", + "subtitles", + "subhead", + "transcription", + "transcribe", + "dialogue", + "accessibility" + ] + }, + { "name": "cloud", "tags": ["weather"] }, + { + "name": "cloud-alert", + "tags": [ + "weather", + "alert", + "warning", + "danger", + "caution", + "notice", + "error", + "risk", + "concern", + "hazard", + "exclamation mark", + "exclamation point", + "!", + "sync", + "network" + ] + }, + { + "name": "cloud-backup", + "tags": [ + "storage", + "memory", + "bytes", + "servers", + "backup", + "time machine", + "rotate", + "synchronize", + "synchronise", + "refresh", + "reconnect", + "transfer", + "data", + "security", + "upload", + "save", + "remote", + "safety" + ] + }, + { + "name": "cloud-check", + "tags": [ + "checkmark", + "done", + "completed", + "finished", + "successful", + "confirmed", + "verified", + "validated", + "approved", + "accepted", + "correct", + "valid", + "ticked", + "task", + "todo", + "sync", + "network", + "saved", + "persisted" + ] + }, + { + "name": "cloud-cog", + "tags": [ + "cog", + "cogwheel", + "gear", + "pinion", + "sprocket", + "settings", + "configuration", + "preferences", + "options", + "customization", + "controls", + "control panel", + "edit", + "tools", + "computing", + "ai", + "cluster", + "network" + ] + }, + { "name": "cloud-download", "tags": ["import"] }, + { "name": "cloud-drizzle", "tags": ["weather", "shower"] }, + { "name": "cloud-fog", "tags": ["weather", "mist"] }, + { "name": "cloud-hail", "tags": ["weather", "rainfall"] }, + { "name": "cloud-lightning", "tags": ["weather", "bolt"] }, + { "name": "cloud-moon", "tags": ["weather", "night"] }, + { + "name": "cloud-moon-rain", + "tags": ["weather", "night", "partly", "rainfall"] + }, + { + "name": "cloud-off", + "tags": [ + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "disconnect" + ] + }, + { "name": "cloud-rain", "tags": ["weather", "rainfall"] }, + { "name": "cloud-rain-wind", "tags": ["weather", "rainfall"] }, + { "name": "cloud-snow", "tags": ["weather", "blizzard"] }, + { "name": "cloud-sun", "tags": ["weather", "partly"] }, + { "name": "cloud-sun-rain", "tags": ["weather", "partly", "rainfall"] }, + { + "name": "cloud-sync", + "tags": [ + "synchronize", + "synchronise", + "refresh", + "reload", + "update", + "reconnect", + "retry", + "renew", + "rerun", + "repeat", + "cycle", + "transfer", + "backup", + "storage", + "upload", + "download", + "connection", + "network", + "data" + ] + }, + { "name": "cloud-upload", "tags": ["file"] }, + { "name": "cloudy", "tags": ["weather", "clouds"] }, + { "name": "clover", "tags": ["leaf", "luck", "plant"] }, + { "name": "club", "tags": ["shape", "suit", "playing", "cards"] }, + { + "name": "code", + "tags": ["coding", "programming", "development", "source", "html", "xml"] + }, + { + "name": "code-xml", + "tags": ["coding", "programming", "development", "source", "html", "xml"] + }, + { + "name": "coffee", + "tags": ["drink", "cup", "mug", "tea", "cafe", "hot", "beverage"] + }, + { + "name": "cog", + "tags": [ + "cog", + "cogwheel", + "gear", + "pinion", + "sprocket", + "settings", + "configuration", + "preferences", + "options", + "customization", + "controls", + "control panel", + "edit", + "tools", + "computing", + "fixed", + "build", + "construction", + "parts" + ] + }, + { + "name": "coins", + "tags": [ + "digit", + "number", + "numeral", + "numeric", + "numerical", + "money", + "cash", + "finance", + "gamble" + ] + }, + { + "name": "columns-2", + "tags": [ + "lines", + "list", + "queue", + "preview", + "panel", + "parallel", + "series", + "split", + "vertical", + "horizontal", + "half", + "center", + "middle", + "even", + "sidebar", + "drawer", + "gutter", + "fold", + "reflow", + "typography", + "pagination", + "pages" + ] + }, + { + "name": "columns-3", + "tags": [ + "lines", + "list", + "queue", + "preview", + "parallel", + "series", + "split", + "vertical", + "horizontal", + "thirds", + "triple", + "center", + "middle", + "alignment", + "even", + "sidebars", + "drawers", + "gutters", + "fold", + "reflow", + "typography", + "pagination", + "pages" + ] + }, + { + "name": "columns-3-cog", + "tags": [ + "lines", + "list", + "queue", + "preview", + "parallel", + "series", + "split", + "vertical", + "horizontal", + "thirds", + "triple", + "center", + "middle", + "alignment", + "even", + "sidebars", + "drawers", + "gutters", + "fold", + "reflow", + "typography", + "pagination", + "pages", + "cog", + "cogwheel", + "gear", + "pinion", + "sprocket", + "settings", + "configuration", + "preferences", + "options", + "customization", + "controls", + "control panel", + "edit", + "tools", + "columns", + "customize", + "table", + "grid", + "adjust", + "panel", + "layout" + ] + }, + { + "name": "columns-4", + "tags": [ + "lines", + "list", + "queue", + "preview", + "parallel", + "series", + "split", + "vertical", + "horizontal", + "thirds", + "triple", + "center", + "middle", + "alignment", + "even", + "sidebars", + "drawers", + "gutters", + "fold", + "reflow", + "typography", + "pagination", + "pages", + "prison", + "jail", + "bars", + "sentence", + "police", + "cops", + "cell", + "crime", + "criminal", + "justice", + "law", + "enforcement", + "grill" + ] + }, + { + "name": "combine", + "tags": [ + "cubes", + "packages", + "parts", + "units", + "collection", + "cluster", + "combine", + "gather", + "merge" + ] + }, + { "name": "command", "tags": ["keyboard", "key", "mac", "cmd", "button"] }, + { + "name": "compass", + "tags": ["direction", "north", "east", "south", "west", "browser"] + }, + { + "name": "component", + "tags": ["design", "element", "group", "module", "part", "symbol"] + }, + { "name": "computer", "tags": ["pc", "chassis", "codespaces"] }, + { "name": "concierge-bell", "tags": ["reception", "bell", "porter"] }, + { + "name": "cone", + "tags": [ + "conical", + "triangle", + "triangular", + "geometry", + "filter", + "funnel", + "hopper", + "spotlight", + "searchlight" + ] + }, + { + "name": "construction", + "tags": ["roadwork", "maintenance", "blockade", "barricade"] + }, + { + "name": "contact", + "tags": [ + "user", + "person", + "family", + "friend", + "acquaintance", + "listing", + "networking" + ] + }, + { + "name": "contact-round", + "tags": [ + "user", + "person", + "family", + "friend", + "acquaintance", + "listing", + "networking" + ] + }, + { + "name": "container", + "tags": [ + "storage", + "shipping", + "freight", + "supply chain", + "environment", + "devops", + "code", + "coding" + ] + }, + { "name": "contrast", "tags": ["display", "accessibility"] }, + { + "name": "cookie", + "tags": [ + "biscuit", + "snack", + "dessert", + "food", + "sweet", + "bakery", + "consent", + "privacy", + "legal", + "tracking", + "browser", + "website" + ] + }, + { + "name": "cooking-pot", + "tags": [ + "pod", + "cooking", + "recipe", + "food", + "kitchen", + "chef", + "restaurant", + "dinner", + "lunch", + "breakfast", + "meal", + "eat" + ] + }, + { "name": "copy", "tags": ["clone", "duplicate", "multiple"] }, + { + "name": "copy-check", + "tags": [ + "clone", + "duplicate", + "multiple", + "checkmark", + "done", + "completed", + "finished", + "successful", + "confirmed", + "verified", + "validated", + "approved", + "accepted", + "correct", + "valid", + "ticked", + "task", + "todo" + ] + }, + { + "name": "copy-minus", + "tags": [ + "clone", + "duplicate", + "multiple", + "minus", + "remove", + "delete", + "cancel", + "erase", + "subtract", + "reduce", + "clear", + "exclude", + "-", + "collapse" + ] + }, + { + "name": "copy-plus", + "tags": [ + "clone", + "duplicate", + "multiple", + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added", + "expand" + ] + }, + { + "name": "copy-slash", + "tags": [ + "clone", + "duplicate", + "multiple", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "no", + "stop", + "error", + "divide", + "division", + "split", + "or" + ] + }, + { + "name": "copy-x", + "tags": [ + "clone", + "duplicate", + "multiple", + "x", + "remove", + "delete", + "cancel", + "clear", + "close", + "discard", + "dismiss", + "erase", + "abort", + "reject", + "canceled", + "cancelled", + "cancellation", + "cross", + "times", + "ex", + "×", + "multiply", + "multiplication" + ] + }, + { + "name": "copyleft", + "tags": ["alphabet", "character", "text", "font", "typography", "licence"] + }, + { + "name": "corner-down-left", + "tags": [ + "direction", + "movement", + "vertical", + "downward", + "downwards", + "south", + "descend", + "page down", + "horizontal", + "leftward", + "leftwards", + "west", + "arrow", + "return" + ] + }, + { + "name": "corner-down-right", + "tags": [ + "direction", + "movement", + "vertical", + "downward", + "downwards", + "south", + "descend", + "page down", + "horizontal", + "rightward", + "rightwards", + "east", + "arrow", + "indent", + "tab" + ] + }, + { + "name": "corner-left-down", + "tags": [ + "direction", + "movement", + "horizontal", + "leftward", + "leftwards", + "west", + "vertical", + "downward", + "downwards", + "south", + "descend", + "page down", + "arrow" + ] + }, + { + "name": "corner-left-up", + "tags": [ + "direction", + "movement", + "horizontal", + "leftward", + "leftwards", + "west", + "vertical", + "upward", + "upwards", + "north", + "ascend", + "page up", + "arrow" + ] + }, + { + "name": "corner-right-down", + "tags": [ + "direction", + "movement", + "horizontal", + "rightward", + "rightwards", + "east", + "vertical", + "downward", + "downwards", + "south", + "descend", + "page down", + "arrow" + ] + }, + { + "name": "corner-right-up", + "tags": [ + "direction", + "movement", + "horizontal", + "rightward", + "rightwards", + "east", + "vertical", + "upward", + "upwards", + "north", + "ascend", + "page up", + "arrow" + ] + }, + { + "name": "corner-up-left", + "tags": [ + "direction", + "movement", + "vertical", + "upward", + "upwards", + "north", + "ascend", + "page up", + "horizontal", + "leftward", + "leftwards", + "west", + "arrow" + ] + }, + { + "name": "corner-up-right", + "tags": [ + "direction", + "movement", + "vertical", + "upward", + "upwards", + "north", + "ascend", + "page up", + "horizontal", + "rightward", + "rightwards", + "east", + "arrow" + ] + }, + { + "name": "cpu", + "tags": [ + "processor", + "cores", + "technology", + "computer", + "chip", + "circuit", + "memory", + "ram", + "specs", + "gigahertz", + "ghz" + ] + }, + { + "name": "cpu-ai", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "ai", + "artificial intelligence", + "machine learning", + "neural network", + "automation", + "intelligence", + "generative", + "assistant", + "chatbot", + "llm", + "deep learning", + "inference", + "training", + "mlops", + "model", + "predictive", + "on-device", + "edge", + "api", + "service", + "cognitive", + "processor", + "chip" + ] + }, + { + "name": "creative-commons", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "licence", + "license" + ] + }, + { "name": "credit-card", "tags": ["bank", "purchase", "payment", "cc"] }, + { + "name": "credit-card-check", + "tags": [ + "bank", + "purchase", + "payment", + "cc", + "checkmark", + "done", + "completed", + "finished", + "successful", + "confirmed", + "verified", + "validated", + "approved", + "accepted", + "correct", + "valid", + "ticked", + "task", + "todo", + "debit", + "banking", + "finance", + "transaction", + "wallet", + "checkout", + "billing", + "account", + "cardholder", + "authorized" + ] + }, + { + "name": "credit-card-minus", + "tags": [ + "bank", + "purchase", + "payment", + "cc", + "minus", + "remove", + "delete", + "cancel", + "erase", + "subtract", + "reduce", + "clear", + "exclude", + "-", + "debit", + "unlink", + "revoke", + "decline", + "canceled", + "banking", + "finance", + "wallet", + "transaction", + "billing", + "account", + "checkout" + ] + }, + { + "name": "credit-card-plus", + "tags": [ + "bank", + "purchase", + "payment", + "cc", + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added", + "debit", + "banking", + "finance", + "transaction", + "wallet", + "checkout", + "billing", + "account", + "cardholder", + "link", + "save", + "method", + "plastic" + ] + }, + { + "name": "credit-card-reader", + "tags": [ + "bank", + "purchase", + "payment", + "cc", + "atm", + "terminal", + "checkout", + "kiosk", + "pos", + "point of sale", + "transaction", + "contactless", + "chip", + "swipe", + "tap", + "banking", + "finance", + "retail" + ] + }, + { + "name": "credit-card-x", + "tags": [ + "bank", + "purchase", + "payment", + "cc", + "x", + "remove", + "delete", + "cancel", + "clear", + "close", + "discard", + "dismiss", + "erase", + "abort", + "reject", + "canceled", + "cancelled", + "cancellation", + "cross", + "times", + "ex", + "×", + "debit", + "banking", + "finance", + "transaction", + "wallet", + "checkout", + "billing", + "account", + "cardholder", + "declined", + "rejected", + "failed", + "invalid", + "error" + ] + }, + { "name": "croissant", "tags": ["bakery", "cooking", "food", "pastry"] }, + { "name": "crop", "tags": ["photo", "image"] }, + { "name": "cross", "tags": ["healthcare", "first aid"] }, + { "name": "crosshair", "tags": ["aim", "target"] }, + { + "name": "crown", + "tags": [ + "diadem", + "tiara", + "circlet", + "corona", + "king", + "ruler", + "winner", + "favorite", + "favourite" + ] + }, + { + "name": "cuboid", + "tags": [ + "brick", + "block", + "box", + "3d", + "solid", + "volume", + "container", + "storage", + "shipping", + "carton", + "geometry", + "rectangular", + "hexahedron", + "butter", + "tofu", + "soap", + "cheese", + "package", + "parcel", + "crate" + ] + }, + { + "name": "cup-soda", + "tags": ["beverage", "cup", "drink", "soda", "straw", "water"] + }, + { + "name": "cupcake", + "tags": [ + "cake", + "dessert", + "food", + "celebration", + "sweet", + "baking", + "cooking" + ] + }, + { "name": "currency", "tags": ["finance", "money"] }, + { + "name": "cylinder", + "tags": [ + "shape", + "elliptical", + "geometry", + "container", + "storage", + "tin", + "pot" + ] + }, + { "name": "dam", "tags": ["electricity", "energy", "water"] }, + { + "name": "database", + "tags": [ + "storage", + "memory", + "container", + "tin", + "pot", + "bytes", + "servers", + "sql", + "db", + "query", + "sqlite", + "mysql", + "backup", + "export", + "import", + "dump", + "restore", + "migration", + "schema", + "records", + "tables", + "snapshot", + "archive", + "server", + "attachment", + "artifact", + "log", + "relational", + "dataset", + "dbms", + "structured data", + "data source", + "data" + ] + }, + { + "name": "database-arrow-down", + "tags": [ + "storage", + "memory", + "container", + "tin", + "pot", + "bytes", + "servers", + "sql", + "db", + "query", + "sqlite", + "mysql", + "backup", + "export", + "import", + "dump", + "restore", + "migration", + "schema", + "records", + "tables", + "snapshot", + "archive", + "server", + "attachment", + "artifact", + "log", + "relational", + "dataset", + "dbms", + "structured data", + "data source", + "data", + "direction", + "movement", + "vertical", + "downward", + "downwards", + "south", + "descend", + "page down", + "download", + "pull", + "downsize" + ] + }, + { + "name": "database-arrow-up", + "tags": [ + "storage", + "memory", + "container", + "tin", + "pot", + "bytes", + "servers", + "sql", + "db", + "query", + "sqlite", + "mysql", + "backup", + "export", + "import", + "dump", + "restore", + "migration", + "schema", + "records", + "tables", + "snapshot", + "archive", + "server", + "attachment", + "artifact", + "log", + "relational", + "dataset", + "dbms", + "structured data", + "data source", + "data", + "direction", + "movement", + "vertical", + "upward", + "upwards", + "north", + "ascend", + "page up", + "upload", + "push", + "upscale" + ] + }, + { + "name": "database-backup", + "tags": [ + "storage", + "memory", + "container", + "tin", + "pot", + "bytes", + "servers", + "sql", + "db", + "query", + "sqlite", + "mysql", + "backup", + "export", + "import", + "dump", + "restore", + "migration", + "schema", + "records", + "tables", + "snapshot", + "archive", + "server", + "attachment", + "artifact", + "log", + "relational", + "dataset", + "dbms", + "structured data", + "data source", + "data", + "time machine", + "rotate", + "arrow", + "left" + ] + }, + { + "name": "database-check", + "tags": [ + "storage", + "memory", + "container", + "tin", + "pot", + "bytes", + "servers", + "sql", + "db", + "query", + "sqlite", + "mysql", + "backup", + "export", + "import", + "dump", + "restore", + "migration", + "schema", + "records", + "tables", + "snapshot", + "archive", + "server", + "attachment", + "artifact", + "log", + "relational", + "dataset", + "dbms", + "structured data", + "data source", + "data", + "checkmark", + "done", + "completed", + "finished", + "successful", + "confirmed", + "verified", + "validated", + "approved", + "accepted", + "correct", + "valid", + "ticked", + "task", + "todo" + ] + }, + { + "name": "database-cog", + "tags": [ + "db", + "settings", + "configuration", + "preferences", + "gear", + "admin", + "sql", + "storage", + "server", + "maintenance", + "schema", + "query", + "relational" + ] + }, + { + "name": "database-minus", + "tags": [ + "storage", + "memory", + "container", + "tin", + "pot", + "bytes", + "servers", + "sql", + "db", + "query", + "sqlite", + "mysql", + "backup", + "export", + "import", + "dump", + "restore", + "migration", + "schema", + "records", + "tables", + "snapshot", + "archive", + "server", + "attachment", + "artifact", + "log", + "relational", + "dataset", + "dbms", + "structured data", + "data source", + "data", + "minus", + "remove", + "delete", + "cancel", + "erase", + "subtract", + "reduce", + "clear", + "exclude", + "-" + ] + }, + { + "name": "database-plus", + "tags": [ + "storage", + "memory", + "container", + "tin", + "pot", + "bytes", + "servers", + "sql", + "db", + "query", + "sqlite", + "mysql", + "backup", + "export", + "import", + "dump", + "restore", + "migration", + "schema", + "records", + "tables", + "snapshot", + "archive", + "server", + "attachment", + "artifact", + "log", + "relational", + "dataset", + "dbms", + "structured data", + "data source", + "data", + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added", + "expand" + ] + }, + { + "name": "database-search", + "tags": [ + "storage", + "memory", + "container", + "tin", + "pot", + "bytes", + "servers", + "sql", + "db", + "query", + "sqlite", + "mysql", + "backup", + "export", + "import", + "dump", + "restore", + "migration", + "schema", + "records", + "tables", + "snapshot", + "archive", + "server", + "attachment", + "artifact", + "log", + "relational", + "dataset", + "dbms", + "structured data", + "data source", + "data", + "search", + "magnifier", + "scan", + "scanning", + "browsing", + "finding", + "find", + "lookup", + "locate", + "explore", + "discover", + "browse", + "inspect", + "examine", + "investigate", + "magnifying glass", + "lens", + "zoom" + ] + }, + { + "name": "database-x", + "tags": [ + "storage", + "memory", + "container", + "tin", + "pot", + "bytes", + "servers", + "sql", + "db", + "query", + "sqlite", + "mysql", + "backup", + "export", + "import", + "dump", + "restore", + "migration", + "schema", + "records", + "tables", + "snapshot", + "archive", + "server", + "attachment", + "artifact", + "log", + "relational", + "dataset", + "dbms", + "structured data", + "data source", + "data", + "x", + "remove", + "delete", + "cancel", + "clear", + "close", + "discard", + "dismiss", + "erase", + "abort", + "reject", + "canceled", + "cancelled", + "cancellation", + "cross", + "times", + "ex", + "×", + "error", + "failed", + "invalid", + "rejected", + "denied", + "disconnect" + ] + }, + { + "name": "database-zap", + "tags": [ + "storage", + "memory", + "container", + "tin", + "pot", + "bytes", + "servers", + "sql", + "db", + "query", + "sqlite", + "mysql", + "backup", + "export", + "import", + "dump", + "restore", + "migration", + "schema", + "records", + "tables", + "snapshot", + "archive", + "server", + "attachment", + "artifact", + "log", + "relational", + "dataset", + "dbms", + "structured data", + "data source", + "data", + "flash", + "camera", + "lightning", + "electricity", + "energy", + "power", + "quick", + "cache busting", + "crash" + ] + }, + { + "name": "decimals-arrow-left", + "tags": [ + "digit", + "number", + "numeral", + "numeric", + "numerical", + "direction", + "movement", + "horizontal", + "leftward", + "leftwards", + "west", + "decimal", + "decrease", + "less", + "fewer", + "precision", + "rounding", + "digits", + "fraction", + "float" + ] + }, + { + "name": "decimals-arrow-right", + "tags": [ + "digit", + "number", + "numeral", + "numeric", + "numerical", + "direction", + "movement", + "horizontal", + "rightward", + "rightwards", + "east", + "decimal", + "increase", + "more", + "precision", + "rounding", + "digits", + "fraction", + "float" + ] + }, + { "name": "delete", "tags": ["backspace", "remove"] }, + { + "name": "dessert", + "tags": [ + "pudding", + "christmas", + "xmas", + "custard", + "iced bun", + "icing", + "fondant", + "cake", + "ice cream", + "gelato", + "sundae", + "scoop", + "dollop", + "sugar", + "food", + "sweet" + ] + }, + { + "name": "diameter", + "tags": [ + "shape", + "circle", + "geometry", + "trigonometry", + "width", + "height", + "size", + "calculate", + "measure" + ] + }, + { + "name": "diamond", + "tags": [ + "square", + "rectangle", + "oblique", + "rhombus", + "shape", + "suit", + "playing", + "cards" + ] + }, + { + "name": "diamond-minus", + "tags": [ + "minus", + "remove", + "delete", + "cancel", + "erase", + "subtract", + "reduce", + "clear", + "exclude", + "-", + "keyframe", + "decrease", + "calculator", + "button", + "keyboard", + "line", + "divider", + "separator", + "horizontal rule", + "hr", + "html", + "markup", + "markdown", + "---", + "toolbar", + "operator", + "code", + "coding", + "minimum", + "downgrade" + ] + }, + { + "name": "diamond-percent", + "tags": [ + "discount", + "sale", + "offer", + "deal", + "markdown", + "savings", + "reduction", + "rate", + "interest", + "tax", + "ratio", + "fraction", + "proportion", + "percentage", + "%", + "marketing", + "reduced", + "price tag", + "verified", + "unverified", + "sticker" + ] + }, + { + "name": "diamond-plus", + "tags": [ + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added", + "keyframe", + "positive", + "calculate", + "toolbar", + "crosshair", + "aim", + "target", + "scope", + "sight", + "reticule", + "maximum", + "upgrade" + ] + }, + { + "name": "dice-1", + "tags": ["dice", "random", "tabletop", "1", "board", "game"] + }, + { + "name": "dice-2", + "tags": ["dice", "random", "tabletop", "2", "board", "game"] + }, + { + "name": "dice-3", + "tags": ["dice", "random", "tabletop", "3", "board", "game"] + }, + { + "name": "dice-4", + "tags": ["dice", "random", "tabletop", "4", "board", "game"] + }, + { + "name": "dice-5", + "tags": ["dice", "random", "tabletop", "5", "board", "game"] + }, + { + "name": "dice-6", + "tags": ["dice", "random", "tabletop", "6", "board", "game"] + }, + { "name": "dices", "tags": ["dice", "random", "tabletop", "board", "game"] }, + { + "name": "diff", + "tags": [ + "patch", + "difference", + "compare", + "plus", + "minus", + "plus-minus", + "math" + ] + }, + { + "name": "disc", + "tags": [ + "album", + "music", + "songs", + "format", + "cd", + "dvd", + "vinyl", + "sleeve", + "cover", + "platinum", + "compilation", + "ep", + "recording", + "playback", + "spin", + "rotate", + "rpm", + "dj" + ] + }, + { + "name": "disc-2", + "tags": [ + "album", + "music", + "songs", + "format", + "cd", + "dvd", + "vinyl", + "sleeve", + "cover", + "platinum", + "compilation", + "ep", + "recording", + "playback", + "spin", + "rotate", + "rpm", + "dj", + "record" + ] + }, + { + "name": "disc-3", + "tags": [ + "album", + "music", + "songs", + "format", + "cd", + "dvd", + "vinyl", + "sleeve", + "cover", + "platinum", + "compilation", + "ep", + "recording", + "playback", + "spin", + "rotate", + "rpm", + "dj", + "record" + ] + }, + { + "name": "disc-album", + "tags": [ + "album", + "music", + "songs", + "format", + "cd", + "dvd", + "vinyl", + "sleeve", + "cover", + "platinum", + "compilation", + "ep", + "recording", + "playback", + "spin", + "rotate", + "rpm", + "dj" + ] + }, + { + "name": "divide", + "tags": ["calculate", "math", "division", "operator", "code", "÷", "/"] + }, + { + "name": "dna", + "tags": ["gene", "gmo", "helix", "heredity", "chromosome", "nucleic acid"] + }, + { + "name": "dna-off", + "tags": [ + "gene", + "gmo", + "helix", + "heredity", + "chromosome", + "nucleic acid", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "gmo free" + ] + }, + { + "name": "dock", + "tags": [ + "position", + "placement", + "bottom", + "bottommost", + "bottom edge", + "lower edge", + "lower", + "below", + "vertical", + "block", + "y", + "y-axis", + "desktop", + "applications", + "launch", + "home", + "menu bar", + "line", + "macos", + "osx" + ] + }, + { "name": "dog", "tags": ["animal", "pet", "puppy", "hound", "canine"] }, + { + "name": "dollar-sign", + "tags": [ + "currency", + "money", + "cash", + "banknote", + "funds", + "finance", + "payment", + "balance", + "transaction", + "bill", + "invoice", + "receipt", + "fee", + "subscription", + "price", + "cost", + "amount", + "revenue", + "income", + "expense", + "banking", + "exchange", + "financial", + "economy", + "pricing", + "prices", + "monetization" + ] + }, + { + "name": "dome", + "tags": [ + "roof", + "cupola", + "rotunda", + "shelter", + "building", + "architecture", + "structure", + "church", + "christian", + "orthodox", + "byzantine", + "cathedral", + "basilica", + "chapel", + "monument", + "landmark", + "museum", + "observatory", + "heritage" + ] + }, + { + "name": "donut", + "tags": [ + "doughnut", + "sprinkles", + "topping", + "fast food", + "junk food", + "snack", + "treat", + "sweet", + "sugar", + "dessert", + "hollow", + "ring" + ] + }, + { + "name": "door-closed", + "tags": [ + "entrance", + "entry", + "exit", + "ingress", + "egress", + "gate", + "gateway", + "emergency exit" + ] + }, + { + "name": "door-closed-cog", + "tags": [ + "entrance", + "entry", + "exit", + "ingress", + "egress", + "gate", + "gateway", + "emergency exit", + "cog", + "cogwheel", + "gear", + "pinion", + "sprocket", + "settings", + "configuration", + "preferences", + "options", + "customization", + "controls", + "control panel", + "edit", + "tools", + "room", + "access", + "automation" + ] + }, + { + "name": "door-closed-locked", + "tags": [ + "entrance", + "entry", + "exit", + "ingress", + "egress", + "gate", + "gateway", + "emergency exit", + "lock", + "padlock", + "private", + "privacy", + "protection", + "password", + "secure", + "security", + "safety", + "protected", + "restricted", + "encrypted", + "authorization", + "read-only", + "blocked", + "locked" + ] + }, + { + "name": "door-closed-package", + "tags": [ + "delivery", + "parcel", + "doorstep", + "shipping", + "drop-off", + "courier" + ] + }, + { + "name": "door-open", + "tags": [ + "entrance", + "entry", + "exit", + "ingress", + "egress", + "gate", + "gateway", + "emergency exit" + ] + }, + { + "name": "door-stairwell", + "tags": [ + "staircase", + "stairway", + "stairs", + "steps", + "ladder", + "transition", + "access", + "structure", + "spiral", + "building", + "vertical", + "movement", + "floor", + "level", + "entrance", + "entry", + "exit", + "egress", + "route", + "indoor", + "emergency exit" + ] + }, + { + "name": "dot", + "tags": [ + "interpunct", + "interpoint", + "middot", + "step", + "punctuation", + "period", + "full stop", + "end", + "finish", + "final", + "characters", + "font", + "typography", + "type", + "center", + "." + ] + }, + { "name": "download", "tags": ["import", "export", "save", "pull"] }, + { + "name": "drafting-compass", + "tags": [ + "geometry", + "trigonometry", + "radius", + "diameter", + "circumference", + "calculate", + "measure", + "arc", + "curve", + "draw", + "sketch" + ] + }, + { + "name": "drama", + "tags": ["drama", "masks", "theater", "theatre", "entertainment", "show"] + }, + { + "name": "drill", + "tags": [ + "power", + "bit", + "head", + "hole", + "diy", + "toolbox", + "build", + "construction" + ] + }, + { + "name": "drone", + "tags": [ + "quadcopter", + "uav", + "aerial", + "flight", + "flying", + "technology", + "airborne", + "robotics" + ] + }, + { + "name": "droplet", + "tags": [ + "water", + "weather", + "liquid", + "fluid", + "wet", + "moisture", + "damp", + "bead", + "globule" + ] + }, + { + "name": "droplet-off", + "tags": [ + "water", + "weather", + "liquid", + "fluid", + "wet", + "moisture", + "damp", + "bead", + "globule", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line" + ] + }, + { + "name": "droplets", + "tags": [ + "water", + "weather", + "liquid", + "fluid", + "wet", + "moisture", + "damp", + "bead", + "globule" + ] + }, + { + "name": "drum", + "tags": [ + "drummer", + "kit", + "sticks", + "instrument", + "beat", + "bang", + "bass", + "backing track", + "band", + "play", + "performance", + "concert", + "march", + "music", + "audio", + "sound", + "noise", + "loud" + ] + }, + { "name": "drumstick", "tags": ["food", "chicken", "meat"] }, + { "name": "dumbbell", "tags": ["barbell", "weight", "workout", "gym"] }, + { "name": "ear", "tags": ["hearing", "noise", "audio", "accessibility"] }, + { + "name": "ear-off", + "tags": [ + "hearing", + "noise", + "audio", + "accessibility", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "hard of hearing", + "hearing loss", + "deafness", + "silence" + ] + }, + { + "name": "earbuds", + "tags": [ + "earphones", + "audio", + "sound", + "bluetooth", + "wireless", + "music", + "noise cancelling", + "acoustics", + "stereo", + "media", + "listen", + "pairing", + "hands-free", + "speaker", + "volume" + ] + }, + { + "name": "earbuds-off", + "tags": [ + "earphones", + "audio", + "sound", + "bluetooth", + "wireless", + "music", + "noise cancelling", + "acoustics", + "stereo", + "media", + "listen", + "pairing", + "hands-free", + "speaker", + "volume", + "disconnected", + "disabled", + "inactive" + ] + }, + { + "name": "earth", + "tags": ["world", "browser", "language", "translate", "globe"] + }, + { + "name": "earth-lock", + "tags": [ + "world", + "browser", + "language", + "translate", + "globe", + "lock", + "padlock", + "private", + "privacy", + "protection", + "password", + "secure", + "security", + "safety", + "protected", + "restricted", + "encrypted", + "authorization", + "read-only", + "blocked", + "locked", + "vpn", + "network", + "encryption", + "connection" + ] + }, + { + "name": "eclipse", + "tags": [ + "lunar", + "solar", + "crescent moon", + "sun", + "earth", + "day", + "night", + "planet", + "space", + "mode", + "dark", + "light", + "toggle", + "switch", + "color", + "css", + "styles", + "display", + "accessibility", + "contrast", + "brightness", + "blend", + "shade" + ] + }, + { + "name": "egg", + "tags": [ + "bird", + "chicken", + "nest", + "hatch", + "shell", + "incubate", + "soft boiled", + "hard", + "breakfast", + "brunch", + "morning", + "easter" + ] + }, + { "name": "egg-fried", "tags": ["food", "breakfast"] }, + { + "name": "egg-off", + "tags": [ + "bird", + "chicken", + "nest", + "hatch", + "shell", + "incubate", + "soft boiled", + "hard", + "breakfast", + "brunch", + "morning", + "easter", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "egg free", + "vegan", + "hatched", + "bad egg" + ] + }, + { + "name": "eighth-note", + "tags": ["audio", "music", "sound", "note", "quaver"] + }, + { + "name": "eighth-notes", + "tags": ["audio", "music", "sound", "notes", "quavers"] + }, + { + "name": "eject", + "tags": [ + "disc", + "drive", + "dvd", + "blu-ray", + "cd", + "media", + "optical", + "optical drive", + "removable media", + "storage", + "tray", + "unmount", + "usb" + ] + }, + { + "name": "ellipse", + "tags": [ + "shape", + "geometry", + "rounded", + "smooth", + "outline", + "form", + "boundary", + "curve", + "shapes", + "ellipse", + "oval" + ] + }, + { + "name": "ellipsis", + "tags": [ + "et cetera", + "etc", + "loader", + "loading", + "progress", + "pending", + "throbber", + "menu", + "options", + "operator", + "code", + "coding", + "spread", + "rest", + "more", + "further", + "extra", + "overflow", + "dots", + "…", + "..." + ] + }, + { + "name": "ellipsis-vertical", + "tags": [ + "menu", + "options", + "spread", + "more", + "further", + "extra", + "overflow", + "dots", + "…", + "..." + ] + }, + { + "name": "emirati-dirham", + "tags": [ + "currency", + "money", + "cash", + "banknote", + "funds", + "finance", + "payment", + "balance", + "transaction", + "bill", + "invoice", + "receipt", + "fee", + "subscription", + "price", + "cost", + "amount", + "revenue", + "income", + "expense", + "banking", + "exchange", + "financial", + "economy", + "pricing", + "prices", + "monetization", + "aed", + "arab emirates dirham", + "uae", + "United Arab Emirates", + "middle east", + "gulf", + "exchange rate" + ] + }, + { + "name": "engine", + "tags": [ + "vehicle", + "power", + "energy", + "drive", + "repair", + "car", + "motor", + "mechanical", + "diagnostics", + "maintenance", + "warning", + "dashboard", + "parts" + ] + }, + { + "name": "equal", + "tags": ["calculate", "math", "operator", "assignment", "code", "="] + }, + { + "name": "equal-approximately", + "tags": [ + "calculate", + "math", + "operator", + "assignment", + "code", + "=", + "about" + ] + }, + { + "name": "equal-approximately-not", + "tags": [ + "calculate", + "math", + "operator", + "assignment", + "code", + "=", + "about", + "not", + "approximately", + "unequal", + "≇", + "tolerance", + "threshold", + "mismatch", + "comparison", + "assertion", + "variance" + ] + }, + { + "name": "equal-not", + "tags": [ + "calculate", + "math", + "operator", + "assignment", + "code", + "=", + "off", + "≠" + ] + }, + { + "name": "eraser", + "tags": [ + "minus", + "remove", + "delete", + "cancel", + "erase", + "subtract", + "reduce", + "clear", + "exclude", + "-", + "pencil", + "drawing", + "undo", + "trash" + ] + }, + { + "name": "ethernet-port", + "tags": [ + "internet", + "network", + "connection", + "cable", + "lan", + "port", + "router", + "switch", + "hub", + "modem", + "web", + "online", + "networking", + "communication", + "socket", + "plug", + "slot", + "controller", + "connector", + "interface", + "console", + "signal", + "data", + "input", + "output" + ] + }, + { + "name": "euro", + "tags": [ + "currency", + "money", + "cash", + "banknote", + "funds", + "finance", + "payment", + "balance", + "transaction", + "bill", + "invoice", + "receipt", + "fee", + "subscription", + "price", + "cost", + "amount", + "revenue", + "income", + "expense", + "banking", + "exchange", + "financial", + "economy", + "pricing", + "prices", + "monetization" + ] + }, + { + "name": "ev-charger", + "tags": [ + "electric", + "charger", + "station", + "vehicle", + "fast", + "plug", + "ev", + "power", + "electricity", + "energy", + "accumulator", + "charge" + ] + }, + { + "name": "expand", + "tags": ["scale", "fullscreen", "maximize", "minimize", "contract"] + }, + { "name": "external-link", "tags": ["outbound", "open", "share"] }, + { + "name": "eye", + "tags": [ + "view", + "watch", + "see", + "show", + "expose", + "reveal", + "display", + "visible", + "visibility", + "vision", + "preview", + "read" + ] + }, + { + "name": "eye-closed", + "tags": [ + "view", + "watch", + "see", + "show", + "expose", + "reveal", + "display", + "visible", + "visibility", + "vision", + "preview", + "read", + "hide", + "conceal", + "mask", + "hidden" + ] + }, + { + "name": "eye-dashed", + "tags": [ + "view", + "watch", + "see", + "show", + "expose", + "reveal", + "display", + "visible", + "visibility", + "vision", + "preview", + "read", + "hide", + "conceal", + "mask", + "hidden", + "invisible" + ] + }, + { + "name": "eye-off", + "tags": [ + "view", + "watch", + "see", + "show", + "expose", + "reveal", + "display", + "visible", + "visibility", + "vision", + "preview", + "read", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "conceal", + "mask" + ] + }, + { + "name": "face-angry", + "tags": [ + "anger", + "rage", + "fury", + "resentment", + "irritation", + "disgust", + "emoji", + "emotion" + ] + }, + { + "name": "face-expressionless", + "tags": [ + "nuisance", + "annoyed", + "annoyance", + "frustration", + "emoji", + "emotion" + ] + }, + { + "name": "face-grinning", + "tags": [ + "happy", + "happiness", + "good", + "laugh", + "broad smile", + "pleasure", + "good cheer", + "humour", + "funny", + "emoji", + "emotion" + ] + }, + { + "name": "face-neutral", + "tags": [ + "emoji", + "neutral", + "emotion", + "meh", + "blank stare", + "social masking", + "irritation", + "concern", + "deadpan" + ] + }, + { + "name": "face-slightly-frowning", + "tags": ["emoji", "bad", "sadness", "emotion", "concern", "disappointment"] + }, + { + "name": "face-slightly-smiling", + "tags": [ + "smile", + "happy", + "happiness", + "good", + "positive", + "friendly", + "patronizing", + "passive aggressive", + "ironic", + "emoji", + "emotion" + ] + }, + { + "name": "face-slightly-smiling-plus", + "tags": [ + "smile", + "happy", + "happiness", + "good", + "positive", + "friendly", + "patronizing", + "passive aggressive", + "ironic", + "emoji", + "emotion", + "cubes", + "packages", + "parts", + "units", + "collection", + "cluster", + "gather", + "dashed", + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added", + "react", + "reaction" + ] + }, + { + "name": "factory", + "tags": [ + "building", + "business", + "energy", + "industry", + "manufacture", + "sector" + ] + }, + { + "name": "fan", + "tags": ["air", "cooler", "ventilation", "ventilator", "blower"] + }, + { "name": "fast-forward", "tags": ["music"] }, + { + "name": "faucet", + "tags": [ + "tap", + "spigot", + "water", + "drinking", + "fresh", + "source", + "pipes", + "plumbing", + "plumber", + "sink", + "basin", + "kitchen", + "bathroom", + "washroom", + "fixture", + "valve", + "flow", + "drinkable", + "potable", + "amenities", + "utilities", + "hydration" + ] + }, + { + "name": "feather", + "tags": [ + "quill", + "plume", + "writing", + "author", + "literature", + "poetry", + "manuscript", + "bird", + "plumage", + "lightweight", + "soft" + ] + }, + { + "name": "fence", + "tags": [ + "picket", + "panels", + "woodwork", + "diy", + "materials", + "suburban", + "garden", + "property", + "territory" + ] + }, + { + "name": "ferris-wheel", + "tags": [ + "big wheel", + "daisy wheel", + "observation", + "attraction", + "entertainment", + "amusement park", + "theme park", + "funfair" + ] + }, + { "name": "file", "tags": ["document"] }, + { "name": "file-archive", "tags": ["document", "zip", "package", "archive"] }, + { + "name": "file-axis-3d", + "tags": ["document", "gizmo", "coordinates", "model", "3d", "axis"] + }, + { + "name": "file-badge", + "tags": [ + "document", + "award", + "achievement", + "badge", + "rosette", + "prize", + "winner" + ] + }, + { + "name": "file-box", + "tags": [ + "document", + "page", + "sheet", + "cube", + "box", + "3d", + "model", + "asset", + "object", + "geometry", + "mesh", + "ar", + "augmented reality", + "cad", + "design", + "blueprint", + "draft", + "package", + "scene" + ] + }, + { + "name": "file-braces", + "tags": [ + "document", + "json", + "code", + "token", + "curly brackets", + "curly braces", + "data", + "{", + "}" + ] + }, + { + "name": "file-braces-corner", + "tags": [ + "document", + "json", + "code", + "token", + "curly brackets", + "curly braces", + "data", + "{", + "}" + ] + }, + { + "name": "file-chart-column", + "tags": [ + "document", + "diagram", + "graph", + "visualization", + "data", + "analytics", + "analysis", + "statistics", + "presentation", + "reporting", + "data visualisation", + "visualisation", + "categorical", + "comparison" + ] + }, + { + "name": "file-chart-column-increasing", + "tags": [ + "document", + "diagram", + "graph", + "visualization", + "data", + "analytics", + "analysis", + "statistics", + "presentation", + "reporting", + "data visualisation", + "visualisation", + "categorical", + "comparison", + "trending up" + ] + }, + { + "name": "file-chart-line", + "tags": [ + "document", + "diagram", + "graph", + "visualization", + "data", + "analytics", + "analysis", + "statistics", + "presentation", + "reporting", + "data visualisation", + "visualisation" + ] + }, + { + "name": "file-chart-pie", + "tags": [ + "document", + "diagram", + "graph", + "visualization", + "data", + "analytics", + "analysis", + "statistics", + "presentation", + "reporting", + "data visualisation", + "visualisation" + ] + }, + { + "name": "file-check", + "tags": [ + "document", + "checkmark", + "done", + "completed", + "finished", + "successful", + "confirmed", + "verified", + "validated", + "approved", + "accepted", + "correct", + "valid", + "ticked", + "task", + "todo" + ] + }, + { + "name": "file-check-corner", + "tags": [ + "document", + "checkmark", + "done", + "completed", + "finished", + "successful", + "confirmed", + "verified", + "validated", + "approved", + "accepted", + "correct", + "valid", + "ticked", + "task", + "todo" + ] + }, + { + "name": "file-clock", + "tags": [ + "document", + "clock", + "time", + "hour", + "minute", + "second", + "timestamp", + "timer", + "duration", + "interval", + "frequency", + "schedule", + "deadline", + "pending", + "delayed", + "watch", + "history", + "log" + ] + }, + { + "name": "file-code", + "tags": [ + "document", + "coding", + "programming", + "development", + "script", + "gist", + "html", + "xml", + "property list", + "plist" + ] + }, + { + "name": "file-code-corner", + "tags": [ + "document", + "coding", + "programming", + "development", + "script", + "gist", + "html", + "xml", + "property list", + "plist", + "source" + ] + }, + { + "name": "file-cog", + "tags": [ + "document", + "cog", + "cogwheel", + "gear", + "pinion", + "sprocket", + "settings", + "configuration", + "preferences", + "options", + "customization", + "controls", + "control panel", + "edit", + "tools", + "executable" + ] + }, + { + "name": "file-database", + "tags": [ + "document", + "storage", + "memory", + "container", + "tin", + "pot", + "bytes", + "servers", + "sql", + "db", + "query", + "sqlite", + "mysql", + "backup", + "export", + "import", + "dump", + "restore", + "migration", + "schema", + "records", + "tables", + "snapshot", + "archive", + "server", + "attachment", + "artifact", + "log", + "relational", + "dataset", + "dbms", + "structured data", + "data source", + "data" + ] + }, + { "name": "file-diff", "tags": ["document", "diff", "patch"] }, + { + "name": "file-digit", + "tags": ["document", "digit", "number", "numeral", "numeric", "numerical"] + }, + { + "name": "file-down", + "tags": [ + "document", + "import", + "export", + "save", + "pull", + "direction", + "movement", + "vertical", + "downward", + "downwards", + "south", + "descend", + "page down", + "download" + ] + }, + { + "name": "file-exclamation-point", + "tags": [ + "document", + "alert", + "warning", + "danger", + "caution", + "notice", + "error", + "risk", + "concern", + "hazard", + "exclamation mark", + "exclamation point", + "!", + "hidden", + "protected" + ] + }, + { + "name": "file-headphone", + "tags": ["document", "music", "audio", "sound", "headphones"] + }, + { + "name": "file-heart", + "tags": [ + "document", + "favorite", + "favourite", + "like", + "love", + "save", + "wishlist", + "reaction", + "health", + "bookmark", + "quick link" + ] + }, + { + "name": "file-image", + "tags": ["document", "image", "graphics", "photo", "picture"] + }, + { "name": "file-input", "tags": ["document"] }, + { + "name": "file-key", + "tags": [ + "document", + "key", + "password", + "security", + "secure", + "keychain", + "key ring", + "access", + "credentials", + "unlocked", + "permission", + "authentication", + "authorization", + "passkey", + "secret", + "token", + "API key", + "encryption", + "protection", + "protected", + "privacy", + "private", + "public", + "license", + "ownership" + ] + }, + { + "name": "file-lock", + "tags": [ + "document", + "lock", + "padlock", + "private", + "privacy", + "protection", + "password", + "secure", + "security", + "safety", + "protected", + "restricted", + "encrypted", + "authorization", + "read-only", + "blocked", + "locked" + ] + }, + { + "name": "file-minus", + "tags": [ + "document", + "minus", + "remove", + "delete", + "cancel", + "erase", + "subtract", + "reduce", + "clear", + "exclude", + "-", + "discard" + ] + }, + { + "name": "file-minus-corner", + "tags": [ + "document", + "minus", + "remove", + "delete", + "cancel", + "erase", + "subtract", + "reduce", + "clear", + "exclude", + "-", + "discard" + ] + }, + { + "name": "file-music", + "tags": [ + "document", + "audio", + "sound", + "noise", + "track", + "digital", + "recording", + "playback", + "piano", + "keyboard", + "keys", + "notes", + "chord", + "midi", + "octave" + ] + }, + { "name": "file-output", "tags": ["document"] }, + { + "name": "file-pen", + "tags": [ + "document", + "edit", + "modify", + "update", + "revise", + "amend", + "create", + "change", + "write", + "writer", + "writing", + "pencil", + "compose", + "draft", + "author", + "annotate", + "comment", + "note", + "draw", + "sketch", + "doodle", + "rename", + "customize", + "signature" + ] + }, + { + "name": "file-pen-line", + "tags": [ + "document", + "edit", + "modify", + "update", + "revise", + "amend", + "create", + "change", + "write", + "writer", + "writing", + "pencil", + "compose", + "draft", + "author", + "annotate", + "comment", + "note", + "draw", + "sketch", + "doodle", + "rename", + "customize", + "signature" + ] + }, + { + "name": "file-play", + "tags": [ + "document", + "start", + "run", + "running", + "execute", + "launch", + "resume", + "preview", + "begin", + "continue", + "proceed", + "activate", + "trigger", + "initiate", + "movie", + "video", + "film" + ] + }, + { + "name": "file-plus", + "tags": [ + "document", + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added" + ] + }, + { + "name": "file-plus-corner", + "tags": [ + "document", + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added" + ] + }, + { + "name": "file-question-mark", + "tags": [ + "document", + "help", + "guide", + "tutorial", + "manual", + "unknown", + "unidentified", + "unspecified", + "uncertain", + "undetermined", + "missing", + "to be determined", + "mystery", + "question", + "question mark", + "?", + "readme" + ] + }, + { + "name": "file-scan", + "tags": [ + "document", + "qr-code", + "barcode", + "checkout", + "augmented reality", + "ar", + "target", + "surveillance", + "camera", + "lens", + "focus", + "frame", + "select", + "box", + "boundary", + "bounds", + "area", + "square", + "dashed", + "scan", + "code" + ] + }, + { + "name": "file-search", + "tags": [ + "document", + "search", + "magnifier", + "scan", + "scanning", + "browsing", + "finding", + "find", + "lookup", + "query", + "locate", + "explore", + "discover", + "browse", + "inspect", + "examine", + "investigate", + "magnifying glass", + "lens", + "zoom", + "lost", + "browser" + ] + }, + { + "name": "file-search-corner", + "tags": [ + "document", + "search", + "magnifier", + "scan", + "scanning", + "browsing", + "finding", + "find", + "lookup", + "query", + "locate", + "explore", + "discover", + "browse", + "inspect", + "examine", + "investigate", + "magnifying glass", + "lens", + "zoom", + "lost", + "browser" + ] + }, + { "name": "file-signal", "tags": ["document", "audio", "music", "volume"] }, + { + "name": "file-sliders", + "tags": [ + "document", + "settings", + "filters", + "controls", + "cogged", + "gear", + "mechanical", + "machinery", + "configuration", + "preferences", + "system", + "admin", + "edit", + "executable" + ] + }, + { + "name": "file-spreadsheet", + "tags": ["document", "spreadsheet", "sheet", "table"] + }, + { + "name": "file-stack", + "tags": [ + "document", + "multiple", + "copy", + "documents", + "versions", + "revisions", + "version control", + "history" + ] + }, + { + "name": "file-symlink", + "tags": ["document", "symlink", "symbolic", "link"] + }, + { + "name": "file-terminal", + "tags": ["document", "terminal", "bash", "script", "executable"] + }, + { "name": "file-text", "tags": ["document", "data", "txt", "pdf"] }, + { + "name": "file-type", + "tags": [ + "document", + "alphabet", + "character", + "text", + "font", + "typography", + "type" + ] + }, + { + "name": "file-type-corner", + "tags": [ + "document", + "alphabet", + "character", + "text", + "font", + "typography", + "type" + ] + }, + { + "name": "file-up", + "tags": [ + "document", + "direction", + "movement", + "vertical", + "upward", + "upwards", + "north", + "ascend", + "page up", + "upload", + "import", + "export" + ] + }, + { + "name": "file-user", + "tags": [ + "document", + "user", + "people", + "identity", + "individual", + "personal", + "person", + "account", + "contact", + "profile", + "member", + "client", + "participant", + "guest", + "personal information", + "listing", + "networking", + "cover letter", + "resume", + "cv", + "curriculum vitae", + "application form" + ] + }, + { + "name": "file-video-camera", + "tags": [ + "document", + "camera", + "movie", + "film", + "recording", + "motion picture", + "camcorder", + "reel", + "video" + ] + }, + { + "name": "file-volume", + "tags": ["document", "music", "sound", "mute", "speaker", "audio", "volume"] + }, + { + "name": "file-x", + "tags": [ + "document", + "x", + "remove", + "delete", + "cancel", + "clear", + "close", + "discard", + "dismiss", + "erase", + "abort", + "reject", + "canceled", + "cancelled", + "cancellation", + "cross", + "times", + "ex", + "×", + "lost" + ] + }, + { + "name": "file-x-corner", + "tags": [ + "document", + "x", + "remove", + "delete", + "cancel", + "clear", + "close", + "discard", + "dismiss", + "erase", + "abort", + "reject", + "canceled", + "cancelled", + "cancellation", + "cross", + "times", + "ex", + "×", + "lost" + ] + }, + { "name": "files", "tags": ["multiple", "copy", "documents"] }, + { + "name": "film", + "tags": ["movie", "video", "reel", "camera", "cinema", "entertainment"] + }, + { + "name": "fingerprint-pattern", + "tags": ["2fa", "authentication", "biometric", "identity", "security"] + }, + { + "name": "fire-extinguisher", + "tags": [ + "flames", + "smoke", + "foam", + "water", + "spray", + "hose", + "firefighter", + "fireman", + "department", + "brigade", + "station", + "emergency", + "suppress", + "compressed", + "tank", + "cylinder", + "safety", + "equipment", + "amenities" + ] + }, + { + "name": "fish", + "tags": [ + "dish", + "restaurant", + "course", + "meal", + "seafood", + "pet", + "sea", + "marine" + ] + }, + { + "name": "fish-off", + "tags": [ + "dish", + "restaurant", + "course", + "meal", + "seafood", + "pet", + "sea", + "marine", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "food", + "animal", + "allergy", + "intolerance", + "diet" + ] + }, + { + "name": "fish-symbol", + "tags": [ + "dish", + "restaurant", + "course", + "meal", + "seafood", + "pet", + "sea", + "marine" + ] + }, + { + "name": "fishing-hook", + "tags": [ + "sea", + "boating", + "angler", + "bait", + "reel", + "tackle", + "marine", + "outdoors", + "fish", + "fishing", + "hook", + "sports", + "travel" + ] + }, + { + "name": "fishing-rod", + "tags": ["fishing", "rod", "hobby", "equipment", "reel"] + }, + { + "name": "flag", + "tags": [ + "report", + "marker", + "notification", + "warning", + "milestone", + "goal", + "notice", + "signal", + "attention", + "banner" + ] + }, + { + "name": "flag-off", + "tags": [ + "report", + "marker", + "notification", + "warning", + "milestone", + "goal", + "notice", + "signal", + "attention", + "banner", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "unflag", + "unmark" + ] + }, + { + "name": "flag-triangle-left", + "tags": [ + "direction", + "movement", + "horizontal", + "leftward", + "leftwards", + "west", + "report", + "timeline", + "marker", + "pin" + ] + }, + { + "name": "flag-triangle-right", + "tags": [ + "direction", + "movement", + "horizontal", + "rightward", + "rightwards", + "east", + "report", + "timeline", + "marker", + "pin" + ] + }, + { + "name": "flame", + "tags": [ + "heat", + "burn", + "light", + "glow", + "ignite", + "passion", + "ember", + "fire", + "lit", + "burning", + "spark", + "embers", + "smoke", + "firefighter", + "fireman", + "department", + "brigade", + "station", + "emergency" + ] + }, + { + "name": "flame-kindling", + "tags": [ + "campfire", + "camping", + "wilderness", + "outdoors", + "lit", + "warmth", + "wood", + "twigs", + "sticks" + ] + }, + { + "name": "flashlight", + "tags": ["torch", "light", "beam", "emergency", "safety", "tool", "bright"] + }, + { + "name": "flashlight-off", + "tags": [ + "torch", + "light", + "beam", + "emergency", + "safety", + "tool", + "bright", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line" + ] + }, + { + "name": "flask-conical", + "tags": ["beaker", "erlenmeyer", "lab", "chemistry", "experiment", "test"] + }, + { + "name": "flask-conical-off", + "tags": [ + "beaker", + "erlenmeyer", + "lab", + "chemistry", + "experiment", + "test", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "non toxic" + ] + }, + { + "name": "flask-round", + "tags": ["beaker", "lab", "chemistry", "experiment", "test"] + }, + { "name": "flower", "tags": ["sustainability", "nature", "plant", "spring"] }, + { + "name": "flower-2", + "tags": ["sustainability", "nature", "plant", "spring"] + }, + { "name": "focus", "tags": ["camera", "lens", "photo", "dashed"] }, + { + "name": "fold-horizontal", + "tags": ["arrow", "collapse", "fold", "vertical", "dashed"] + }, + { + "name": "fold-vertical", + "tags": ["arrow", "collapse", "fold", "vertical", "dashed"] + }, + { "name": "folder", "tags": ["directory"] }, + { + "name": "folder-archive", + "tags": ["directory", "archive", "zip", "package"] + }, + { + "name": "folder-bookmark", + "tags": [ + "directory", + "folder", + "bookmark", + "file", + "mark", + "storage", + "archive", + "project", + "favorite", + "favourite", + "save", + "read later" + ] + }, + { + "name": "folder-check", + "tags": [ + "directory", + "checkmark", + "done", + "completed", + "finished", + "successful", + "confirmed", + "verified", + "validated", + "approved", + "accepted", + "correct", + "valid", + "ticked", + "task", + "todo" + ] + }, + { + "name": "folder-clock", + "tags": [ + "directory", + "clock", + "time", + "hour", + "minute", + "second", + "timestamp", + "timer", + "duration", + "interval", + "frequency", + "schedule", + "deadline", + "pending", + "delayed", + "watch", + "history" + ] + }, + { "name": "folder-closed", "tags": ["directory", "closed"] }, + { + "name": "folder-code", + "tags": [ + "directory", + "coding", + "programming", + "development", + "develop", + "software" + ] + }, + { + "name": "folder-cog", + "tags": [ + "directory", + "cog", + "cogwheel", + "gear", + "pinion", + "sprocket", + "settings", + "configuration", + "preferences", + "options", + "customization", + "controls", + "control panel", + "edit", + "tools", + "control" + ] + }, + { + "name": "folder-dot", + "tags": [ + "directory", + "notification", + "indicator", + "badge", + "pill", + "bullet", + "spot", + "marker", + "new", + "status", + "online", + "active", + "unread", + "current", + "root", + "project", + "pinned", + "cogged", + "gear", + "mechanical", + "machinery", + "configuration", + "controls", + "preferences", + "settings", + "system", + "admin", + "edit" + ] + }, + { + "name": "folder-down", + "tags": [ + "directory", + "direction", + "movement", + "vertical", + "downward", + "downwards", + "south", + "descend", + "page down", + "download", + "import", + "export" + ] + }, + { + "name": "folder-git", + "tags": ["directory", "root", "project", "git", "repo"] + }, + { + "name": "folder-git-2", + "tags": ["directory", "root", "project", "git", "repo"] + }, + { + "name": "folder-heart", + "tags": [ + "directory", + "favorite", + "favourite", + "like", + "love", + "save", + "wishlist", + "reaction", + "health", + "bookmark", + "quick link" + ] + }, + { "name": "folder-input", "tags": ["directory", "import", "export"] }, + { + "name": "folder-kanban", + "tags": [ + "directory", + "projects", + "manage", + "overview", + "board", + "tickets", + "issues", + "roadmap", + "plan", + "intentions", + "productivity", + "work", + "agile", + "code", + "coding", + "project", + "root" + ] + }, + { + "name": "folder-key", + "tags": [ + "directory", + "key", + "password", + "security", + "secure", + "keychain", + "key ring", + "access", + "credentials", + "unlocked", + "permission", + "authentication", + "authorization", + "passkey", + "secret", + "token", + "API key", + "encryption", + "protection", + "protected", + "privacy", + "private", + "public", + "license", + "ownership" + ] + }, + { + "name": "folder-lock", + "tags": [ + "directory", + "lock", + "padlock", + "private", + "privacy", + "protection", + "password", + "secure", + "security", + "safety", + "protected", + "restricted", + "encrypted", + "authorization", + "read-only", + "blocked", + "locked" + ] + }, + { + "name": "folder-minus", + "tags": [ + "directory", + "minus", + "remove", + "delete", + "cancel", + "erase", + "subtract", + "reduce", + "clear", + "exclude", + "-" + ] + }, + { "name": "folder-open", "tags": ["directory"] }, + { + "name": "folder-open-dot", + "tags": [ + "directory", + "notification", + "indicator", + "badge", + "pill", + "bullet", + "spot", + "marker", + "new", + "status", + "online", + "active", + "unread", + "current", + "root", + "project", + "pinned" + ] + }, + { "name": "folder-output", "tags": ["directory", "import", "export"] }, + { + "name": "folder-pen", + "tags": [ + "directory", + "edit", + "modify", + "update", + "revise", + "amend", + "create", + "change", + "write", + "writer", + "writing", + "pencil", + "compose", + "draft", + "author", + "annotate", + "comment", + "note", + "draw", + "sketch", + "doodle", + "rename", + "customize" + ] + }, + { + "name": "folder-plus", + "tags": [ + "directory", + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added" + ] + }, + { + "name": "folder-root", + "tags": ["directory", "root", "project", "git", "repo"] + }, + { + "name": "folder-search", + "tags": [ + "directory", + "search", + "magnifier", + "scan", + "scanning", + "browsing", + "finding", + "find", + "lookup", + "query", + "locate", + "explore", + "discover", + "browse", + "inspect", + "examine", + "investigate", + "magnifying glass", + "lens", + "zoom", + "lost", + "browser" + ] + }, + { + "name": "folder-search-2", + "tags": [ + "directory", + "search", + "magnifier", + "scan", + "scanning", + "browsing", + "finding", + "find", + "lookup", + "query", + "locate", + "explore", + "discover", + "browse", + "inspect", + "examine", + "investigate", + "magnifying glass", + "lens", + "zoom", + "lost", + "browser" + ] + }, + { + "name": "folder-symlink", + "tags": ["directory", "symlink", "symbolic", "link"] + }, + { + "name": "folder-sync", + "tags": [ + "directory", + "synchronize", + "synchronise", + "refresh", + "reload", + "update", + "reconnect", + "retry", + "renew", + "rerun", + "repeat", + "cycle", + "transfer", + "backup" + ] + }, + { "name": "folder-tree", "tags": ["directory", "tree", "browser"] }, + { + "name": "folder-up", + "tags": [ + "directory", + "direction", + "movement", + "vertical", + "upward", + "upwards", + "north", + "ascend", + "page up", + "upload", + "import", + "export" + ] + }, + { + "name": "folder-user", + "tags": [ + "directory", + "user", + "people", + "identity", + "individual", + "personal", + "person", + "account", + "contact", + "profile", + "member", + "client", + "participant", + "guest", + "document", + "home folder", + "shared", + "access", + "owner" + ] + }, + { + "name": "folder-users", + "tags": [ + "directory", + "user", + "people", + "identity", + "individual", + "personal", + "person", + "account", + "contact", + "profile", + "member", + "client", + "participant", + "guest", + "shared", + "document", + "group", + "team", + "permission", + "access", + "collaboration", + "organization" + ] + }, + { + "name": "folder-x", + "tags": [ + "directory", + "x", + "remove", + "delete", + "cancel", + "clear", + "close", + "discard", + "dismiss", + "erase", + "abort", + "reject", + "canceled", + "cancelled", + "cancellation", + "cross", + "times", + "ex", + "×" + ] + }, + { "name": "folders", "tags": ["multiple", "copy", "directories"] }, + { + "name": "footprints", + "tags": ["steps", "walking", "foot", "feet", "trail", "shoe"] + }, + { + "name": "forklift", + "tags": [ + "machinery", + "industrial", + "warehouse", + "lifting", + "storage", + "equipment", + "heavy-duty", + "moving", + "vehicle", + "transport", + "logistics" + ] + }, + { + "name": "form", + "tags": [ + "document", + "page", + "file", + "layout", + "paper", + "stub", + "formality", + "structure", + "template", + "inputs", + "design", + "components" + ] + }, + { "name": "forward", "tags": ["send", "share", "email"] }, + { "name": "frame", "tags": ["logo", "design", "tool"] }, + { "name": "fuel", "tags": ["filling-station", "gas", "petrol", "tank"] }, + { + "name": "fullscreen", + "tags": ["expand", "zoom", "preview", "focus", "camera", "lens", "image"] + }, + { "name": "funnel", "tags": ["filter", "hopper"] }, + { + "name": "funnel-plus", + "tags": [ + "filter", + "hopper", + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added" + ] + }, + { + "name": "funnel-x", + "tags": [ + "filter", + "hopper", + "x", + "remove", + "delete", + "cancel", + "clear", + "close", + "discard", + "dismiss", + "erase", + "abort", + "reject", + "canceled", + "cancelled", + "cancellation", + "cross", + "times", + "ex", + "×" + ] + }, + { + "name": "galaxy", + "tags": [ + "astronomy", + "space", + "stars", + "cosmos", + "universe", + "spiral", + "milky way", + "nebula", + "cosmology", + "interstellar", + "celestial", + "constellation", + "stargazing", + "spaceflight" + ] + }, + { + "name": "gallery-horizontal", + "tags": [ + "carousel", + "pictures", + "images", + "scroll", + "swipe", + "album", + "portfolio" + ] + }, + { + "name": "gallery-horizontal-end", + "tags": [ + "carousel", + "pictures", + "images", + "scroll", + "swipe", + "album", + "portfolio", + "position", + "placement", + "right", + "right edge", + "rightmost", + "right side", + "horizontal", + "inline", + "x", + "x-axis", + "history", + "versions", + "backup", + "time machine" + ] + }, + { + "name": "gallery-thumbnails", + "tags": ["carousel", "pictures", "images", "album", "portfolio", "preview"] + }, + { + "name": "gallery-vertical", + "tags": [ + "carousel", + "pictures", + "images", + "scroll", + "swipe", + "album", + "portfolio" + ] + }, + { + "name": "gallery-vertical-end", + "tags": [ + "carousel", + "pictures", + "images", + "scroll", + "swipe", + "album", + "portfolio", + "position", + "placement", + "bottom", + "bottommost", + "bottom edge", + "lower edge", + "lower", + "below", + "vertical", + "block", + "y", + "y-axis", + "history", + "versions", + "backup", + "time machine" + ] + }, + { "name": "gamepad", "tags": ["console"] }, + { "name": "gamepad-2", "tags": ["console"] }, + { + "name": "gamepad-directional", + "tags": [ + "console", + "direction", + "arrow", + "controller", + "navigation", + "button", + "move", + "pointer", + "arrowhead", + "game", + "gaming" + ] + }, + { + "name": "gap-horizontal", + "tags": [ + "gap", + "spacing", + "space", + "between", + "padding", + "margin", + "horizontal", + "auto layout", + "layout", + "distance", + "frame", + "distribute" + ] + }, + { + "name": "gap-vertical", + "tags": [ + "gap", + "spacing", + "space", + "between", + "padding", + "margin", + "vertical", + "auto layout", + "layout", + "distance", + "frame", + "distribute" + ] + }, + { + "name": "gauge", + "tags": [ + "dashboard", + "dial", + "meter", + "speed", + "pressure", + "measure", + "level" + ] + }, + { + "name": "gavel", + "tags": [ + "justice", + "law", + "court", + "judgment", + "legal", + "hands", + "penalty", + "decision", + "authority", + "hammer", + "mallet" + ] + }, + { + "name": "gem", + "tags": [ + "diamond", + "crystal", + "ruby", + "jewellery", + "price", + "special", + "present", + "gift", + "ring", + "wedding", + "proposal", + "marriage", + "rubygems" + ] + }, + { + "name": "georgian-lari", + "tags": [ + "currency", + "money", + "cash", + "banknote", + "funds", + "finance", + "payment", + "balance", + "transaction", + "bill", + "invoice", + "receipt", + "fee", + "subscription", + "price", + "cost", + "amount", + "revenue", + "income", + "expense", + "banking", + "exchange", + "financial", + "economy", + "pricing", + "prices", + "monetization" + ] + }, + { + "name": "germ", + "tags": [ + "virus", + "microbe", + "bacterium", + "bacteria", + "germ", + "organism", + "cilia", + "pathogen", + "infection", + "disease", + "contagion", + "contamination", + "microbiology", + "health", + "medicine", + "biology", + "science", + "microorganism", + "pandemic", + "epidemic", + "outbreak", + "amoeba", + "flu", + "security", + "single cell", + "unicellular", + "vaccine", + "immunity", + "quarantine" + ] + }, + { + "name": "germ-off", + "tags": [ + "virus", + "microbe", + "bacterium", + "bacteria", + "germ", + "organism", + "cilia", + "pathogen", + "infection", + "disease", + "contagion", + "contamination", + "microbiology", + "health", + "medicine", + "biology", + "science", + "microorganism", + "pandemic", + "epidemic", + "outbreak", + "amoeba", + "flu", + "security", + "single cell", + "unicellular", + "vaccine", + "immunity", + "quarantine", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line" + ] + }, + { + "name": "ghost", + "tags": [ + "spirit", + "haunt", + "specter", + "apparition", + "wraith", + "shade", + "phantom", + "entity", + "shadow", + "silhouette", + "pac-man", + "spooky", + "halloween", + "haunted", + "invisible", + "hidden", + "empty", + "dead", + "obsolete", + "outdated" + ] + }, + { "name": "gift", "tags": ["present", "box", "birthday", "party"] }, + { + "name": "git-branch", + "tags": ["code", "version control", "vcs", "repository"] + }, + { + "name": "git-branch-minus", + "tags": [ + "code", + "version control", + "vcs", + "repository", + "minus", + "remove", + "delete", + "cancel", + "erase", + "subtract", + "reduce", + "clear", + "exclude", + "-" + ] + }, + { + "name": "git-branch-plus", + "tags": [ + "code", + "version control", + "vcs", + "repository", + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added" + ] + }, + { + "name": "git-commit-horizontal", + "tags": ["code", "version control", "waypoint", "stop", "station"] + }, + { + "name": "git-commit-vertical", + "tags": ["code", "version control", "waypoint", "stop", "station"] + }, + { "name": "git-compare", "tags": ["code", "version control", "diff"] }, + { "name": "git-compare-arrows", "tags": ["code", "version control", "diff"] }, + { "name": "git-fork", "tags": ["code", "version control"] }, + { + "name": "git-graph", + "tags": [ + "network", + "nodes", + "edges", + "links", + "connections", + "relationships", + "structure", + "topology", + "code", + "version control", + "commit graph", + "commits", + "gitlens" + ] + }, + { "name": "git-merge", "tags": ["code", "version control"] }, + { + "name": "git-merge-conflict", + "tags": ["code", "version control", "commits", "diff", "error", "conflict"] + }, + { "name": "git-pull-request", "tags": ["code", "version control", "open"] }, + { + "name": "git-pull-request-arrow", + "tags": ["code", "version control", "open"] + }, + { + "name": "git-pull-request-closed", + "tags": [ + "code", + "version control", + "open", + "rejected", + "closed", + "cancelled", + "x" + ] + }, + { + "name": "git-pull-request-create", + "tags": [ + "code", + "version control", + "open", + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added" + ] + }, + { + "name": "git-pull-request-create-arrow", + "tags": [ + "code", + "version control", + "open", + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added" + ] + }, + { + "name": "git-pull-request-draft", + "tags": ["code", "version control", "open", "draft", "dashed"] + }, + { "name": "glass-water", "tags": ["beverage", "drink", "glass", "water"] }, + { "name": "glasses", "tags": ["glasses", "spectacles"] }, + { "name": "globe", "tags": ["world", "browser", "language", "translate"] }, + { + "name": "globe-check", + "tags": [ + "world", + "browser", + "language", + "translate", + "checkmark", + "done", + "completed", + "finished", + "successful", + "confirmed", + "verified", + "validated", + "approved", + "accepted", + "correct", + "valid", + "ticked", + "task", + "todo", + "internet", + "web", + "available", + "online", + "status" + ] + }, + { + "name": "globe-code", + "tags": [ + "world", + "browser", + "language", + "translate", + "coding", + "programming", + "development", + "website", + "internet", + "globe", + "connection", + "network", + "digital", + "access", + "global", + "link" + ] + }, + { + "name": "globe-lock", + "tags": [ + "world", + "browser", + "language", + "translate", + "lock", + "padlock", + "private", + "privacy", + "protection", + "password", + "secure", + "security", + "safety", + "protected", + "restricted", + "encrypted", + "authorization", + "read-only", + "blocked", + "locked", + "vpn", + "network", + "encryption", + "connection" + ] + }, + { + "name": "globe-off", + "tags": [ + "world", + "browser", + "language", + "translate", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "globe", + "earth", + "planet", + "mute", + "avoid", + "internet", + "offline", + "disconnected", + "network", + "connection", + "no connection", + "network failure", + "signal off" + ] + }, + { + "name": "globe-x", + "tags": [ + "world", + "browser", + "language", + "translate", + "x", + "remove", + "delete", + "cancel", + "clear", + "close", + "discard", + "dismiss", + "erase", + "abort", + "reject", + "canceled", + "cancelled", + "cancellation", + "cross", + "times", + "ex", + "×", + "globe", + "internet", + "offline", + "disconnected", + "network", + "connection", + "no connection", + "network failure", + "signal off" + ] + }, + { "name": "goal", "tags": ["flag", "bullseye"] }, + { + "name": "gpu", + "tags": [ + "processor", + "cores", + "technology", + "computer", + "chip", + "circuit", + "specs", + "graphics processing unit", + "video card", + "display adapter", + "gddr", + "rendering", + "digital image processing", + "crypto mining" + ] + }, + { + "name": "graduation-cap", + "tags": [ + "school", + "university", + "learn", + "study", + "mortarboard", + "education", + "ceremony", + "academic", + "hat", + "diploma", + "bachelor's", + "master's", + "doctorate" + ] + }, + { "name": "grape", "tags": ["fruit", "wine", "food"] }, + { + "name": "graph-hub", + "tags": [ + "network", + "nodes", + "edges", + "links", + "connections", + "relationships", + "structure", + "topology", + "load balancer", + "distribute", + "traffic", + "parallel", + "branch", + "hierarchy", + "routing", + "dispatcher", + "cluster", + "backend", + "fan-out", + "orchestration" + ] + }, + { + "name": "graph-star", + "tags": [ + "network", + "nodes", + "edges", + "links", + "connections", + "relationships", + "structure", + "topology", + "mind map", + "hub", + "dependencies", + "bonds", + "cluster", + "thoughts", + "ideas", + "concepts", + "molecule" + ] + }, + { + "name": "grid-2x2", + "tags": [ + "table", + "rows", + "columns", + "blocks", + "plot", + "land", + "geometry", + "measure", + "size", + "width", + "height", + "distance", + "surface area", + "square meter", + "acre", + "window", + "skylight" + ] + }, + { + "name": "grid-2x2-check", + "tags": [ + "table", + "rows", + "columns", + "blocks", + "plot", + "land", + "geometry", + "measure", + "size", + "width", + "height", + "distance", + "surface area", + "square meter", + "acre", + "window", + "skylight", + "checkmark", + "done", + "completed", + "finished", + "successful", + "confirmed", + "verified", + "validated", + "approved", + "accepted", + "correct", + "valid", + "ticked", + "task", + "todo", + "data" + ] + }, + { + "name": "grid-2x2-plus", + "tags": [ + "table", + "rows", + "columns", + "blocks", + "plot", + "land", + "geometry", + "measure", + "size", + "width", + "height", + "distance", + "surface area", + "square meter", + "acre", + "window", + "skylight", + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added", + "data" + ] + }, + { + "name": "grid-2x2-x", + "tags": [ + "table", + "rows", + "columns", + "blocks", + "plot", + "land", + "geometry", + "measure", + "size", + "width", + "height", + "distance", + "surface area", + "square meter", + "acre", + "window", + "skylight", + "x", + "remove", + "delete", + "cancel", + "clear", + "close", + "discard", + "dismiss", + "erase", + "abort", + "reject", + "canceled", + "cancelled", + "cancellation", + "cross", + "times", + "ex", + "×", + "data" + ] + }, + { + "name": "grid-3x2", + "tags": [ + "table", + "rows", + "columns", + "blocks", + "plot", + "land", + "geometry", + "measure", + "size", + "width", + "height", + "distance", + "surface area", + "square meter", + "acre", + "window" + ] + }, + { "name": "grid-3x3", "tags": ["table", "rows", "columns"] }, + { "name": "grip", "tags": ["grab", "dots", "handle", "move", "drag"] }, + { + "name": "grip-horizontal", + "tags": ["grab", "dots", "handle", "move", "drag"] + }, + { + "name": "grip-vertical", + "tags": ["grab", "dots", "handle", "move", "drag"] + }, + { + "name": "groceries", + "tags": [ + "food", + "vegetables", + "health", + "grocery", + "market", + "farmer", + "produce", + "pantry", + "paper bag", + "shop", + "supermarket", + "retail", + "delivery", + "larder", + "provisions", + "takeout" + ] + }, + { + "name": "group", + "tags": [ + "cubes", + "packages", + "parts", + "units", + "collection", + "cluster", + "gather", + "dashed" + ] + }, + { + "name": "guitar", + "tags": [ + "acoustic", + "instrument", + "strings", + "riff", + "rock", + "band", + "country", + "concert", + "performance", + "play", + "lead", + "loud", + "music", + "audio", + "sound", + "noise" + ] + }, + { + "name": "guitar-electric", + "tags": [ + "acoustic", + "instrument", + "strings", + "riff", + "rock", + "band", + "country", + "concert", + "performance", + "play", + "lead", + "loud", + "music", + "audio", + "sound", + "noise" + ] + }, + { + "name": "half-note", + "tags": [ + "audio", + "music", + "sound", + "note", + "crotchet", + "minim", + "quarter note" + ] + }, + { + "name": "ham", + "tags": [ + "food", + "pork", + "pig", + "meat", + "bone", + "hock", + "knuckle", + "gammon", + "cured" + ] + }, + { + "name": "hamburger", + "tags": [ + "burger", + "cheeseburger", + "meat", + "beef", + "patty", + "bun", + "fast food", + "junk food", + "takeaway", + "takeout", + "snack", + "dish", + "restaurant", + "lunch", + "meal", + "savory", + "savoury", + "cookery", + "cooking", + "grilled", + "barbecue", + "barbeque", + "bbq", + "lettuce", + "tomato", + "relish", + "pickles", + "onions", + "ketchup", + "mustard", + "mayonnaise" + ] + }, + { + "name": "hammer", + "tags": ["mallet", "nails", "diy", "toolbox", "build", "construction"] + }, + { "name": "hand", "tags": ["wave", "move", "mouse", "grab"] }, + { + "name": "hand-coins", + "tags": [ + "savings", + "banking", + "money", + "finance", + "offers", + "mortgage", + "payment", + "received", + "wage", + "payroll", + "allowance", + "pocket money", + "handout", + "pennies" + ] + }, + { + "name": "hand-fist", + "tags": [ + "clench", + "strength", + "power", + "unity", + "solidarity", + "rebellion", + "victory", + "triumph", + "support", + "fight", + "combat", + "brawl" + ] + }, + { "name": "hand-grab", "tags": ["hand"] }, + { + "name": "hand-heart", + "tags": [ + "favorite", + "favourite", + "like", + "love", + "save", + "wishlist", + "reaction", + "health", + "emotion" + ] + }, + { + "name": "hand-helping", + "tags": ["agreement", "help", "proposal", "charity", "begging", "terms"] + }, + { "name": "hand-metal", "tags": ["rock"] }, + { + "name": "hand-platter", + "tags": [ + "waiter", + "waitress", + "restaurant", + "table service", + "served", + "dinner", + "dining", + "meal", + "course", + "luxury" + ] + }, + { + "name": "handbag", + "tags": [ + "bag", + "baggage", + "carry", + "clutch", + "fashion", + "luggage", + "purse", + "tote", + "travel" + ] + }, + { + "name": "handle-bottom-right", + "tags": [ + "position", + "placement", + "bottom", + "bottommost", + "bottom edge", + "lower edge", + "lower", + "below", + "vertical", + "block", + "y", + "y-axis", + "right", + "right edge", + "rightmost", + "right side", + "horizontal", + "inline", + "x", + "x-axis", + "mouse", + "grab", + "handle", + "move", + "drag", + "resize", + "corner" + ] + }, + { + "name": "handshake", + "tags": [ + "agreement", + "partnership", + "deal", + "business", + "assistance", + "cooperation", + "friendship", + "union", + "terms" + ] + }, + { + "name": "hard-drive", + "tags": [ + "computer", + "server", + "memory", + "data", + "ssd", + "disk", + "hard disk", + "storage", + "hardware", + "backup", + "media" + ] + }, + { + "name": "hard-drive-download", + "tags": [ + "computer", + "server", + "memory", + "data", + "ssd", + "disk", + "hard disk", + "storage", + "hardware", + "backup", + "media", + "import", + "export", + "save", + "pull" + ] + }, + { + "name": "hard-drive-upload", + "tags": [ + "computer", + "server", + "memory", + "data", + "ssd", + "disk", + "hard disk", + "storage", + "hardware", + "backup", + "media", + "file", + "save" + ] + }, + { "name": "hard-hat", "tags": ["helmet", "construction", "safety"] }, + { "name": "hash", "tags": ["hashtag", "number", "pound"] }, + { + "name": "hat-glasses", + "tags": [ + "incognito", + "disguise", + "costume", + "masked", + "anonymous", + "anonymity", + "privacy", + "private browsing", + "stealth", + "hidden", + "undercover", + "cloak", + "invisible", + "ghost", + "spy", + "agent", + "detective", + "identity", + "cap", + "fedora", + "spectacles", + "shades", + "sunglasses", + "eyewear" + ] + }, + { "name": "haze", "tags": ["mist", "fog"] }, + { + "name": "hd", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "tv", + "resolution", + "video", + "high definition", + "720p", + "1080p" + ] + }, + { + "name": "hdmi-port", + "tags": [ + "socket", + "plug", + "slot", + "controller", + "connector", + "interface", + "console", + "signal", + "audio", + "video", + "visual", + "av", + "data", + "input", + "output" + ] + }, + { + "name": "heading-1", + "tags": [ + "html", + "markup", + "markdown", + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "heading", + "hospital", + "hydrogen", + "chemistry", + "hour", + "time", + "height", + "measurement", + "digit", + "number", + "numeral", + "numeric", + "numerical", + "h1" + ] + }, + { + "name": "heading-2", + "tags": [ + "html", + "markup", + "markdown", + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "heading", + "hospital", + "hydrogen", + "chemistry", + "hour", + "time", + "height", + "measurement", + "digit", + "number", + "numeral", + "numeric", + "numerical", + "h2" + ] + }, + { + "name": "heading-3", + "tags": [ + "html", + "markup", + "markdown", + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "heading", + "hospital", + "hydrogen", + "chemistry", + "hour", + "time", + "height", + "measurement", + "digit", + "number", + "numeral", + "numeric", + "numerical", + "h3" + ] + }, + { + "name": "heading-4", + "tags": [ + "html", + "markup", + "markdown", + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "heading", + "hospital", + "hydrogen", + "chemistry", + "hour", + "time", + "height", + "measurement", + "digit", + "number", + "numeral", + "numeric", + "numerical", + "h4" + ] + }, + { + "name": "heading-5", + "tags": [ + "html", + "markup", + "markdown", + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "heading", + "hospital", + "hydrogen", + "chemistry", + "hour", + "time", + "height", + "measurement", + "digit", + "number", + "numeral", + "numeric", + "numerical", + "h5" + ] + }, + { + "name": "heading-6", + "tags": [ + "html", + "markup", + "markdown", + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "heading", + "hospital", + "hydrogen", + "chemistry", + "hour", + "time", + "height", + "measurement", + "digit", + "number", + "numeral", + "numeric", + "numerical", + "h6" + ] + }, + { + "name": "headphone-off", + "tags": [ + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "music", + "audio", + "sound", + "mute" + ] + }, + { "name": "headphones", "tags": ["music", "audio", "sound"] }, + { + "name": "headset", + "tags": [ + "music", + "audio", + "sound", + "gaming", + "headphones", + "headset", + "call", + "center", + "phone", + "telephone", + "voip", + "video" + ] + }, + { + "name": "heart", + "tags": [ + "favorite", + "favourite", + "like", + "love", + "save", + "wishlist", + "reaction", + "health", + "emotion", + "suit", + "playing", + "cards" + ] + }, + { "name": "heart-crack", "tags": ["heartbreak", "sadness", "emotion"] }, + { + "name": "heart-handshake", + "tags": [ + "agreement", + "charity", + "help", + "deal", + "terms", + "emotion", + "together", + "handshake" + ] + }, + { + "name": "heart-minus", + "tags": [ + "minus", + "remove", + "delete", + "cancel", + "erase", + "subtract", + "reduce", + "clear", + "exclude", + "-", + "unlike", + "unfavorite", + "damage" + ] + }, + { + "name": "heart-off", + "tags": [ + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "unlike", + "dislike", + "hate", + "emotion" + ] + }, + { + "name": "heart-plus", + "tags": [ + "favorite", + "favourite", + "like", + "love", + "save", + "wishlist", + "reaction", + "health", + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added", + "support" + ] + }, + { + "name": "heart-pulse", + "tags": [ + "heartbeat", + "pulse", + "health", + "medical", + "blood pressure", + "cardiac", + "systole", + "diastole" + ] + }, + { + "name": "heart-x", + "tags": [ + "x", + "remove", + "delete", + "cancel", + "clear", + "close", + "discard", + "dismiss", + "erase", + "abort", + "reject", + "canceled", + "cancelled", + "cancellation", + "cross", + "times", + "ex", + "×", + "unlike", + "unfavorite" + ] + }, + { + "name": "heater", + "tags": [ + "heating", + "warmth", + "comfort", + "fire", + "stove", + "electric", + "electronics", + "amenities" + ] + }, + { + "name": "helicopter", + "tags": [ + "transport", + "flying", + "rotor", + "aviation", + "helipad", + "gear", + "flyer", + "technology", + "helicopter", + "aircraft", + "vehicle" + ] + }, + { "name": "hexagon", "tags": ["shape", "node.js", "logo"] }, + { "name": "highlighter", "tags": ["mark", "text"] }, + { + "name": "hiking-stick", + "tags": [ + "hiking", + "walking", + "stick", + "trekking", + "trail", + "pole", + "backpacking", + "outdoors", + "mountains" + ] + }, + { + "name": "hockey-stick", + "tags": [ + "sport", + "campus", + "puck", + "athlete", + "ice", + "player", + "goal", + "cricket", + "bat", + "sports", + "game", + "equipment", + "stick", + "ball", + "match", + "play" + ] + }, + { "name": "hop", "tags": ["beer", "brewery", "drink"] }, + { + "name": "hop-off", + "tags": [ + "beer", + "brewery", + "drink", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "hop free", + "allergy", + "intolerance", + "diet" + ] + }, + { + "name": "hospital", + "tags": [ + "infirmary", + "sanatorium", + "healthcare", + "doctor", + "hospice", + "clinic", + "emergency room", + "ward", + "building", + "medical", + "vet" + ] + }, + { + "name": "hot-air-balloon", + "tags": [ + "aircraft", + "flight", + "adventure", + "travel", + "sky", + "celebration", + "festive" + ] + }, + { "name": "hotel", "tags": ["building", "hostel", "motel", "inn"] }, + { + "name": "hourglass", + "tags": [ + "clock", + "time", + "hour", + "minute", + "second", + "timestamp", + "timer", + "duration", + "interval", + "frequency", + "schedule", + "deadline", + "pending", + "delayed", + "watch", + "history", + "sandglass" + ] + }, + { + "name": "hourglass-cog", + "tags": [ + "clock", + "time", + "hour", + "minute", + "second", + "timestamp", + "timer", + "duration", + "interval", + "frequency", + "schedule", + "deadline", + "pending", + "delayed", + "watch", + "history", + "sandglass", + "cog", + "cogwheel", + "gear", + "pinion", + "sprocket", + "settings", + "configuration", + "preferences", + "options", + "customization", + "controls", + "control panel", + "edit", + "tools", + "countdown", + "timeout", + "expiration" + ] + }, + { + "name": "house", + "tags": ["home", "living", "building", "residence", "architecture"] + }, + { + "name": "house-cog", + "tags": [ + "home", + "living", + "building", + "residence", + "architecture", + "cog", + "cogwheel", + "gear", + "pinion", + "sprocket", + "settings", + "configuration", + "preferences", + "options", + "customization", + "controls", + "control panel", + "edit", + "tools", + "property", + "automation" + ] + }, + { + "name": "house-heart", + "tags": [ + "home", + "living", + "building", + "residence", + "architecture", + "favorite", + "favourite", + "like", + "love", + "save", + "wishlist", + "reaction", + "health", + "home sweet home", + "abode", + "healthy living", + "lifestyle" + ] + }, + { + "name": "house-plug", + "tags": [ + "home", + "living", + "building", + "residence", + "architecture", + "autarky", + "energy" + ] + }, + { + "name": "house-plus", + "tags": [ + "home", + "living", + "building", + "residence", + "architecture", + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added", + "medical" + ] + }, + { + "name": "house-wifi", + "tags": [ + "home", + "living", + "building", + "residence", + "architecture", + "connection", + "signal", + "wireless", + "network", + "connectivity" + ] + }, + { + "name": "houses", + "tags": [ + "homes", + "housing", + "estate", + "living", + "buildings", + "development", + "residences", + "residential", + "village", + "neighbourhood", + "accommodation", + "community", + "dwellings", + "architecture" + ] + }, + { + "name": "ice-cream-bowl", + "tags": [ + "gelato", + "food", + "dessert", + "dish", + "restaurant", + "course", + "meal" + ] + }, + { "name": "ice-cream-cone", "tags": ["gelato", "food"] }, + { + "name": "id-card", + "tags": ["card", "badge", "identity", "authentication", "secure"] + }, + { + "name": "id-card-lanyard", + "tags": [ + "card", + "badge", + "identity", + "authentication", + "secure", + "id-card", + "id-card-lanyard", + "employee", + "gate-pass" + ] + }, + { "name": "image", "tags": ["picture", "photo"] }, + { + "name": "image-down", + "tags": [ + "picture", + "photo", + "direction", + "movement", + "vertical", + "downward", + "downwards", + "south", + "descend", + "page down", + "download", + "save", + "export" + ] + }, + { + "name": "image-minus", + "tags": [ + "picture", + "photo", + "minus", + "remove", + "delete", + "cancel", + "erase", + "subtract", + "reduce", + "clear", + "exclude", + "-" + ] + }, + { + "name": "image-off", + "tags": [ + "picture", + "photo", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line" + ] + }, + { + "name": "image-play", + "tags": [ + "picture", + "photo", + "start", + "run", + "running", + "execute", + "launch", + "resume", + "preview", + "begin", + "continue", + "proceed", + "activate", + "trigger", + "initiate", + "gif" + ] + }, + { + "name": "image-plus", + "tags": [ + "picture", + "photo", + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added" + ] + }, + { + "name": "image-up", + "tags": [ + "picture", + "photo", + "direction", + "movement", + "vertical", + "upward", + "upwards", + "north", + "ascend", + "page up", + "upload", + "import" + ] + }, + { + "name": "image-upscale", + "tags": ["picture", "photo", "resize", "sharpen", "increase"] + }, + { + "name": "images", + "tags": [ + "picture", + "photo", + "multiple", + "copy", + "gallery", + "album", + "collection", + "slideshow", + "showcase" + ] + }, + { "name": "import", "tags": ["save"] }, + { "name": "inbox", "tags": ["email"] }, + { + "name": "indian-rupee", + "tags": [ + "currency", + "money", + "cash", + "banknote", + "funds", + "finance", + "payment", + "balance", + "transaction", + "bill", + "invoice", + "receipt", + "fee", + "subscription", + "price", + "cost", + "amount", + "revenue", + "income", + "expense", + "banking", + "exchange", + "financial", + "economy", + "pricing", + "prices", + "monetization" + ] + }, + { "name": "infinity", "tags": ["unlimited", "forever", "loop", "math"] }, + { + "name": "info", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "about", + "advice", + "clue", + "details", + "help", + "hint", + "indicator", + "information", + "knowledge", + "notice", + "status", + "support", + "tooltip" + ] + }, + { + "name": "inspection-panel", + "tags": ["access", "cover", "tile", "metal", "materials", "screws"] + }, + { + "name": "italic", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "oblique", + "format" + ] + }, + { "name": "iteration-ccw", "tags": ["arrow", "right"] }, + { "name": "iteration-cw", "tags": ["arrow", "left"] }, + { + "name": "iv-bag", + "tags": [ + "intravenous", + "therapy", + "infusion", + "medicine", + "medication", + "treatment", + "healthcare", + "hydration", + "vitamin", + "supplement", + "blood", + "donation", + "chemotherapy", + "clinic", + "feeding tube", + "administration", + "health", + "regeneration" + ] + }, + { + "name": "japanese-yen", + "tags": [ + "currency", + "money", + "cash", + "banknote", + "funds", + "finance", + "payment", + "balance", + "transaction", + "bill", + "invoice", + "receipt", + "fee", + "subscription", + "price", + "cost", + "amount", + "revenue", + "income", + "expense", + "banking", + "exchange", + "financial", + "economy", + "pricing", + "prices", + "monetization" + ] + }, + { "name": "joystick", "tags": ["game", "console", "control stick"] }, + { + "name": "kanban", + "tags": [ + "projects", + "manage", + "overview", + "board", + "tickets", + "issues", + "roadmap", + "plan", + "intentions", + "productivity", + "work", + "agile", + "code", + "coding" + ] + }, + { + "name": "kayak", + "tags": [ + "kayak", + "boat", + "paddle", + "water", + "sport", + "recreation", + "adventure", + "outdoors", + "equipment", + "lake", + "ocean" + ] + }, + { + "name": "kazakh-tenge", + "tags": [ + "currency", + "money", + "cash", + "banknote", + "funds", + "finance", + "payment", + "balance", + "transaction", + "bill", + "invoice", + "receipt", + "fee", + "subscription", + "price", + "cost", + "amount", + "revenue", + "income", + "expense", + "banking", + "exchange", + "financial", + "economy", + "pricing", + "prices", + "monetization", + "kazakhstan" + ] + }, + { + "name": "key", + "tags": [ + "key", + "password", + "security", + "secure", + "keychain", + "key ring", + "access", + "credentials", + "unlocked", + "permission", + "authentication", + "authorization", + "passkey", + "secret", + "token", + "API key", + "encryption", + "protection", + "protected", + "privacy", + "private", + "public", + "license", + "ownership", + "login", + "fob" + ] + }, + { + "name": "key-round", + "tags": [ + "key", + "password", + "security", + "secure", + "keychain", + "key ring", + "access", + "credentials", + "unlocked", + "permission", + "authentication", + "authorization", + "passkey", + "secret", + "token", + "API key", + "encryption", + "protection", + "protected", + "privacy", + "private", + "public", + "license", + "ownership", + "login", + "fob" + ] + }, + { + "name": "key-square", + "tags": [ + "key", + "password", + "security", + "secure", + "keychain", + "key ring", + "access", + "credentials", + "unlocked", + "permission", + "authentication", + "authorization", + "passkey", + "secret", + "token", + "API key", + "encryption", + "protection", + "protected", + "privacy", + "private", + "public", + "license", + "ownership", + "login", + "fob", + "car key" + ] + }, + { "name": "keyboard", "tags": ["layout", "spell", "settings", "mouse"] }, + { + "name": "keyboard-music", + "tags": [ + "music", + "audio", + "sound", + "noise", + "notes", + "keys", + "chord", + "octave", + "midi", + "controller", + "instrument", + "electric", + "signal", + "digital", + "studio", + "production", + "producer", + "pianist", + "piano", + "play", + "performance", + "concert" + ] + }, + { + "name": "keyboard-off", + "tags": [ + "layout", + "spell", + "settings", + "mouse", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "unkeys" + ] + }, + { + "name": "lambda", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "greek", + "symbol", + "math", + "function", + "programming", + "serverless", + "anonymous", + "functional", + "cloud", + "wavelength", + "calculus", + "linear algebra" + ] + }, + { "name": "lamp", "tags": ["lighting", "household", "home", "furniture"] }, + { + "name": "lamp-ceiling", + "tags": ["lighting", "household", "home", "furniture"] + }, + { + "name": "lamp-desk", + "tags": ["lighting", "household", "home", "furniture", "office", "desk"] + }, + { + "name": "lamp-floor", + "tags": ["lighting", "household", "home", "furniture", "floor"] + }, + { + "name": "lamp-wall-down", + "tags": [ + "lighting", + "household", + "home", + "furniture", + "direction", + "movement", + "vertical", + "downward", + "downwards", + "south", + "descend", + "page down", + "wall" + ] + }, + { + "name": "lamp-wall-up", + "tags": [ + "lighting", + "household", + "home", + "furniture", + "direction", + "movement", + "vertical", + "upward", + "upwards", + "north", + "ascend", + "page up", + "wall" + ] + }, + { + "name": "land-plot", + "tags": [ + "area", + "surface", + "square metres", + "allotment", + "parcel", + "property", + "plane", + "acres", + "measure", + "distance", + "isometric", + "flag", + "golf course", + "hole" + ] + }, + { + "name": "landmark", + "tags": [ + "bank", + "building", + "capitol", + "finance", + "money", + "museum", + "art gallery", + "hall", + "institute", + "pediment", + "portico", + "doric", + "columns", + "pillars", + "classical", + "architecture", + "government", + "institution", + "monument", + "site", + "history", + "historic", + "library", + "temple", + "ancient", + "structure" + ] + }, + { + "name": "languages", + "tags": ["alphabet", "character", "text", "font", "typography", "translate"] + }, + { "name": "laptop", "tags": ["computer", "screen", "remote"] }, + { "name": "laptop-minimal", "tags": ["computer", "screen", "remote"] }, + { + "name": "laptop-minimal-check", + "tags": [ + "computer", + "screen", + "remote", + "checkmark", + "done", + "completed", + "finished", + "successful", + "confirmed", + "verified", + "validated", + "approved", + "accepted", + "correct", + "valid", + "ticked", + "task", + "todo" + ] + }, + { + "name": "laser", + "tags": [ + "annotation", + "beam", + "draw", + "guide", + "highlight", + "pointer", + "presentation", + "screen", + "spotlight", + "pointer device", + "projection" + ] + }, + { "name": "lasso", "tags": ["select", "cursor"] }, + { "name": "lasso-select", "tags": ["select", "cursor"] }, + { + "name": "layer-arrow-down", + "tags": [ + "direction", + "movement", + "vertical", + "downward", + "downwards", + "south", + "descend", + "page down", + "move back", + "backward", + "lower", + "demote", + "step back", + "behind", + "reorder", + "arrange", + "layer", + "layers", + "stack", + "stacking", + "z-index", + "depth", + "graphics", + "design" + ] + }, + { + "name": "layer-arrow-up", + "tags": [ + "direction", + "movement", + "vertical", + "upward", + "upwards", + "north", + "ascend", + "page up", + "move forward", + "forward", + "raise", + "lift", + "promote", + "advance", + "step forward", + "reorder", + "arrange", + "stack", + "stacking", + "z-index", + "depth", + "graphics", + "design" + ] + }, + { + "name": "layers", + "tags": ["stack", "pile", "pages", "sheets", "paperwork", "copies", "copy"] + }, + { + "name": "layers-2", + "tags": [ + "stack", + "pile", + "pages", + "sheets", + "paperwork", + "copies", + "copy", + "duplicate", + "double", + "shortcuts" + ] + }, + { + "name": "layers-arrow-down", + "tags": [ + "stack", + "pile", + "pages", + "sheets", + "paperwork", + "copies", + "copy", + "direction", + "movement", + "vertical", + "downward", + "downwards", + "south", + "descend", + "page down", + "send to back", + "send backward", + "back", + "background", + "bottom", + "bottommost", + "lower", + "demote", + "behind", + "reorder", + "arrange", + "stacking", + "z-index", + "depth", + "graphics", + "design" + ] + }, + { + "name": "layers-arrow-up", + "tags": [ + "stack", + "pile", + "pages", + "sheets", + "paperwork", + "copies", + "copy", + "direction", + "movement", + "vertical", + "upward", + "upwards", + "north", + "ascend", + "page up", + "bring to front", + "bring forward", + "front", + "foreground", + "top", + "topmost", + "raise", + "lift", + "promote", + "reorder", + "arrange", + "stacking", + "z-index", + "depth", + "graphics", + "design" + ] + }, + { + "name": "layers-minus", + "tags": [ + "stack", + "pile", + "pages", + "sheets", + "paperwork", + "copies", + "copy", + "minus", + "remove", + "delete", + "cancel", + "erase", + "subtract", + "reduce", + "clear", + "exclude", + "-", + "layers" + ] + }, + { + "name": "layers-plus", + "tags": [ + "stack", + "pile", + "pages", + "sheets", + "paperwork", + "copies", + "copy", + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added", + "layers", + "positive", + "upgrade" + ] + }, + { + "name": "layout-arrow-down", + "tags": [ + "direction", + "movement", + "vertical", + "downward", + "downwards", + "south", + "descend", + "page down", + "layout", + "flex", + "flexbox", + "flex-direction", + "column", + "auto layout", + "arrange", + "order", + "flow", + "stack" + ] + }, + { + "name": "layout-arrow-right", + "tags": [ + "direction", + "movement", + "horizontal", + "rightward", + "rightwards", + "east", + "layout", + "flex", + "flexbox", + "flex-direction", + "row", + "auto layout", + "arrange", + "order", + "flow", + "stack" + ] + }, + { "name": "layout-dashboard", "tags": ["masonry", "brick"] }, + { + "name": "layout-freeform", + "tags": [ + "layout", + "freeform", + "free", + "absolute", + "position", + "auto layout", + "unaligned", + "scattered", + "arrange", + "blocks", + "canvas", + "frame" + ] + }, + { "name": "layout-grid", "tags": ["app", "home", "start"] }, + { + "name": "layout-grid-circles", + "tags": [ + "app", + "home", + "start", + "dot matrix", + "dots", + "menu", + "dashboard", + "collection", + "overview", + "tiles", + "grid", + "matrix", + "launcher", + "apps", + "widgets", + "ui", + "circles", + "shortcuts" + ] + }, + { + "name": "layout-list", + "tags": ["todo", "tasks", "items", "pending", "image", "photo"] + }, + { + "name": "layout-panel-left", + "tags": [ + "position", + "placement", + "left", + "left edge", + "leftmost", + "left side", + "horizontal", + "inline", + "x", + "x-axis", + "app", + "home", + "start", + "grid" + ] + }, + { + "name": "layout-panel-top", + "tags": [ + "position", + "placement", + "top", + "topmost", + "top edge", + "upper edge", + "upper", + "above", + "vertical", + "block", + "y", + "y-axis", + "window", + "webpage", + "section", + "grid", + "template", + "structure" + ] + }, + { + "name": "layout-template", + "tags": ["window", "webpage", "block", "section"] + }, + { + "name": "leaf", + "tags": ["sustainability", "nature", "energy", "plant", "autumn"] + }, + { + "name": "leafy-green", + "tags": ["salad", "lettuce", "vegetable", "chard", "cabbage", "bok choy"] + }, + { "name": "lectern", "tags": ["pulpit", "podium", "stand"] }, + { + "name": "lens", + "tags": [ + "optics", + "reflection", + "camera", + "photography", + "focus", + "effect", + "shader", + "post-process", + "visual", + "contact lens", + "glass", + "magnify", + "translucent", + "transparent", + "orb", + "bubble", + "zoom" + ] + }, + { + "name": "lens-concave", + "tags": [ + "concave", + "lens", + "optics", + "light", + "magnification", + "curved", + "focus", + "refraction", + "science", + "physics", + "eyeglass", + "telescope", + "microscope" + ] + }, + { + "name": "lens-convex", + "tags": [ + "convex", + "lens", + "optics", + "magnification", + "focus", + "light", + "refraction", + "physics", + "eyeglass", + "telescope", + "microscope", + "curved", + "science" + ] + }, + { + "name": "letter-a", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "grade", + "rating", + "accessibility", + "blood type", + "audio", + "ampere", + "electricity", + "appearance" + ] + }, + { + "name": "letter-b", + "tags": [ + "strong", + "emphasis", + "format", + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "bold", + "blood type", + "byte", + "computing", + "b-side", + "bus", + "transit" + ] + }, + { + "name": "letter-c", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "celsius", + "temperature", + "carbon", + "chemistry", + "grade", + "rating" + ] + }, + { + "name": "letter-d", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "drive", + "gear", + "diameter", + "measurement", + "vitamin", + "grade", + "rating" + ] + }, + { + "name": "letter-e", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "explicit", + "content rating", + "east", + "empty", + "energy", + "grade", + "rating" + ] + }, + { + "name": "letter-f", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "fahrenheit", + "temperature", + "female", + "fail", + "grade", + "rating", + "force", + "aperture", + "f-stop", + "camera" + ] + }, + { + "name": "letter-g", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "gravity", + "g-force", + "gram", + "measurement" + ] + }, + { + "name": "letter-h", + "tags": [ + "html", + "markup", + "markdown", + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "heading", + "hospital", + "hydrogen", + "chemistry", + "hour", + "time", + "height", + "measurement" + ] + }, + { + "name": "letter-i", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "information", + "help", + "input", + "current", + "electricity" + ] + }, + { + "name": "letter-j", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "joule", + "energy", + "java", + "javascript", + "code" + ] + }, + { + "name": "letter-k", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "thousand", + "kilo", + "kelvin", + "temperature", + "potassium", + "chemistry" + ] + }, + { + "name": "letter-l", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "learner", + "driver", + "litre", + "left", + "length", + "measurement" + ] + }, + { + "name": "letter-m", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "million", + "mega", + "metre", + "measurement", + "male", + "medium", + "size" + ] + }, + { + "name": "letter-n", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "north", + "neutral", + "gear", + "new", + "nitrogen", + "chemistry", + "newton", + "force", + "sample size", + "statistics" + ] + }, + { + "name": "letter-o", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "oxygen", + "chemistry", + "blood type", + "off", + "zero", + "marker" + ] + }, + { + "name": "letter-p", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "parking", + "phosphorus", + "chemistry", + "p-value", + "statistics", + "piano", + "soft", + "music", + "page", + "probability", + "math" + ] + }, + { + "name": "letter-q", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "question", + "help", + "queue", + "charge", + "electricity", + "quality", + "rating" + ] + }, + { + "name": "letter-r", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "registered trademark", + "trademark", + "right", + "reverse", + "gear", + "resistance", + "electricity", + "radius", + "geometry", + "rating", + "review" + ] + }, + { + "name": "letter-s", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "south", + "small", + "size", + "second", + "time", + "sulfur", + "chemistry", + "save", + "siemens", + "electricity" + ] + }, + { + "name": "letter-spacing", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "tracking", + "kerning", + "design", + "lettering", + "letters", + "characters", + "formatting" + ] + }, + { + "name": "letter-t", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "tesla", + "magnetism", + "temperature", + "tonne", + "measurement", + "time" + ] + }, + { + "name": "letter-u", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "rack unit", + "server", + "equipment", + "uranium", + "chemistry" + ] + }, + { + "name": "letter-v", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "voltage", + "volt", + "electricity", + "volume", + "victory", + "success", + "vegan", + "vegetarian", + "video" + ] + }, + { + "name": "letter-w", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "watt", + "power", + "west", + "width", + "measurement", + "tungsten", + "chemistry", + "win" + ] + }, + { + "name": "letter-x", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "close", + "dismiss", + "multiply", + "math", + "unknown", + "variable", + "x-axis", + "axis", + "intersection", + "cross", + "chromosome" + ] + }, + { + "name": "letter-y", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "y-axis", + "axis", + "yes", + "confirm", + "year", + "time", + "chromosome" + ] + }, + { + "name": "letter-z", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "z-axis", + "axis", + "sleep", + "rest", + "impedance", + "electricity", + "atomic number", + "chemistry" + ] + }, + { + "name": "letters", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "abc", + "alphabetical", + "characters", + "language", + "literacy", + "spelling" + ] + }, + { + "name": "library", + "tags": [ + "books", + "reading", + "written", + "authors", + "stories", + "fiction", + "novels", + "information", + "knowledge", + "education", + "high school", + "university", + "college", + "academy", + "learning", + "study", + "research", + "collection", + "vinyl", + "records", + "albums", + "music", + "package" + ] + }, + { + "name": "library-big", + "tags": [ + "books", + "reading", + "written", + "authors", + "stories", + "fiction", + "novels", + "information", + "knowledge", + "education", + "high school", + "university", + "college", + "academy", + "learning", + "study", + "research", + "collection", + "vinyl", + "records", + "albums", + "music", + "package" + ] + }, + { + "name": "life-buoy", + "tags": [ + "preserver", + "life belt", + "lifesaver", + "help", + "rescue", + "ship", + "ring", + "raft", + "inflatable", + "wheel", + "donut" + ] + }, + { + "name": "ligature", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "alternates", + "alternatives" + ] + }, + { "name": "lightbulb", "tags": ["idea", "bright", "lights"] }, + { + "name": "lightbulb-off", + "tags": [ + "idea", + "bright", + "lights", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line" + ] + }, + { + "name": "lighthouse", + "tags": [ + "lighthouse", + "beacon", + "coast", + "navigation", + "tower", + "sea", + "ocean", + "maritime", + "guide", + "safety", + "light", + "shine", + "port", + "marine", + "faro", + "signal", + "nautical", + "harbor", + "shore", + "light beam", + "wayfinding", + "guidance", + "onboarding", + "help", + "landmark" + ] + }, + { + "name": "line-dot-bottom-vertical", + "tags": [ + "code", + "version", + "control", + "station", + "waypoint", + "start", + "first" + ] + }, + { + "name": "line-dot-left-horizontal", + "tags": [ + "direction", + "movement", + "horizontal", + "leftward", + "leftwards", + "west", + "line", + "left", + "shape", + "symbol", + "navigation", + "arrow", + "pointer", + "code", + "version control", + "waypoint", + "stop", + "start", + "first", + "station" + ] + }, + { + "name": "line-dot-right-horizontal", + "tags": [ + "direction", + "movement", + "horizontal", + "rightward", + "rightwards", + "east", + "code", + "version control", + "waypoint", + "stop", + "station", + "last", + "end" + ] + }, + { + "name": "line-dot-top-vertical", + "tags": [ + "arrow", + "pointer", + "direction", + "indicator", + "code", + "version", + "control", + "waypoint", + "stop", + "station", + "last", + "end" + ] + }, + { + "name": "line-height", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "leading", + "letters", + "characters", + "spacing", + "paragraph", + "formatting", + "editor", + "readability", + "typesetting" + ] + }, + { + "name": "line-squiggle", + "tags": [ + "line", + "snakes", + "annotate", + "curve", + "doodle", + "stroke", + "pen", + "tool", + "gesture", + "draw", + "wave", + "art", + "road" + ] + }, + { + "name": "line-style", + "tags": ["line", "stroke", "style", "dashed", "border"] + }, + { "name": "link", "tags": ["chain", "url"] }, + { "name": "link-2", "tags": ["chain", "url"] }, + { + "name": "link-2-off", + "tags": [ + "chain", + "url", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "unchain" + ] + }, + { "name": "list", "tags": ["options"] }, + { + "name": "list-check", + "tags": [ + "checkmark", + "done", + "completed", + "finished", + "successful", + "confirmed", + "verified", + "validated", + "approved", + "accepted", + "correct", + "valid", + "ticked", + "task", + "todo", + "list", + "bom" + ] + }, + { + "name": "list-checks", + "tags": [ + "checkmark", + "done", + "completed", + "finished", + "successful", + "confirmed", + "verified", + "validated", + "approved", + "accepted", + "correct", + "valid", + "ticked", + "task", + "todo", + "items", + "pending" + ] + }, + { + "name": "list-chevrons-down-up", + "tags": [ + "options", + "direction", + "movement", + "vertical", + "downward", + "downwards", + "south", + "descend", + "page down", + "upward", + "upwards", + "north", + "ascend", + "page up", + "items", + "collapse", + "expand", + "details", + "disclosure", + "show", + "hide", + "toggle", + "accordion", + "more", + "less", + "fold", + "unfold" + ] + }, + { + "name": "list-chevrons-up-down", + "tags": [ + "options", + "direction", + "movement", + "vertical", + "upward", + "upwards", + "north", + "ascend", + "page up", + "downward", + "downwards", + "south", + "descend", + "page down", + "items", + "collapse", + "expand", + "details", + "disclosure", + "show", + "hide", + "toggle", + "accordion", + "more", + "less", + "fold", + "unfold" + ] + }, + { + "name": "list-clock", + "tags": [ + "clock", + "time", + "hour", + "minute", + "second", + "timestamp", + "timer", + "duration", + "interval", + "frequency", + "schedule", + "deadline", + "pending", + "delayed", + "watch", + "history", + "log", + "recent", + "updated", + "revision", + "activity", + "audit", + "list" + ] + }, + { + "name": "list-collapse", + "tags": [ + "items", + "collapse", + "expand", + "details", + "disclosure", + "show", + "hide", + "toggle", + "accordion", + "more", + "less", + "fold", + "unfold" + ] + }, + { "name": "list-end", "tags": ["queue", "bottom", "end", "playlist"] }, + { "name": "list-filter", "tags": ["options"] }, + { + "name": "list-filter-plus", + "tags": [ + "options", + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added", + "filter" + ] + }, + { "name": "list-indent-decrease", "tags": ["text", "tab"] }, + { "name": "list-indent-increase", "tags": ["text", "tab"] }, + { + "name": "list-minus", + "tags": [ + "minus", + "remove", + "delete", + "cancel", + "erase", + "subtract", + "reduce", + "clear", + "exclude", + "-", + "playlist", + "song", + "unqueue" + ] + }, + { + "name": "list-music", + "tags": ["playlist", "queue", "music", "audio", "playback"] + }, + { + "name": "list-ordered", + "tags": [ + "digit", + "number", + "numeral", + "numeric", + "numerical", + "order", + "queue" + ] + }, + { + "name": "list-plus", + "tags": [ + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added", + "playlist", + "song", + "track" + ] + }, + { + "name": "list-restart", + "tags": ["reset", "refresh", "reload", "playlist", "replay"] + }, + { + "name": "list-sort-ascending", + "tags": [ + "sort", + "order", + "arrange", + "reorder", + "ascending", + "descending", + "increasing", + "decreasing", + "rising", + "falling", + "ordering", + "arrangement", + "sequence", + "ranking", + "filter", + "list", + "organization", + "categories", + "presentation" + ] + }, + { + "name": "list-sort-descending", + "tags": [ + "sort", + "order", + "arrange", + "reorder", + "ascending", + "descending", + "increasing", + "decreasing", + "rising", + "falling", + "ordering", + "arrangement", + "sequence", + "ranking", + "filter", + "list", + "organization", + "categories", + "presentation" + ] + }, + { + "name": "list-start", + "tags": ["queue", "top", "start", "next", "playlist"] + }, + { + "name": "list-todo", + "tags": [ + "todo", + "done", + "check", + "tick", + "complete", + "tasks", + "items", + "pending" + ] + }, + { "name": "list-tree", "tags": ["tree", "browser"] }, + { "name": "list-video", "tags": ["playlist", "video", "playback"] }, + { + "name": "list-x", + "tags": [ + "x", + "remove", + "delete", + "cancel", + "clear", + "close", + "discard", + "dismiss", + "erase", + "abort", + "reject", + "canceled", + "cancelled", + "cancellation", + "cross", + "times", + "ex", + "×", + "playlist", + "subtract", + "unqueue" + ] + }, + { + "name": "loader", + "tags": [ + "loading", + "wait", + "busy", + "progress", + "spinner", + "spinning", + "throbber" + ] + }, + { + "name": "loader-circle", + "tags": [ + "loading", + "wait", + "busy", + "progress", + "spinner", + "spinning", + "throbber", + "circle" + ] + }, + { + "name": "loader-pinwheel", + "tags": [ + "loading", + "wait", + "busy", + "progress", + "spinner", + "spinning", + "throbber", + "beach ball", + "frozen", + "freeze" + ] + }, + { "name": "locate", "tags": ["map", "gps", "location", "cross"] }, + { "name": "locate-fixed", "tags": ["map", "gps", "location", "cross"] }, + { + "name": "locate-off", + "tags": [ + "map", + "gps", + "location", + "cross", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line" + ] + }, + { + "name": "lock", + "tags": [ + "lock", + "padlock", + "private", + "privacy", + "protection", + "password", + "secure", + "security", + "safety", + "protected", + "restricted", + "encrypted", + "authorization", + "read-only", + "blocked", + "locked", + "admin" + ] + }, + { + "name": "lock-keyhole", + "tags": [ + "lock", + "padlock", + "private", + "privacy", + "protection", + "password", + "secure", + "security", + "safety", + "protected", + "restricted", + "encrypted", + "authorization", + "read-only", + "blocked", + "locked", + "admin" + ] + }, + { + "name": "lock-keyhole-open", + "tags": [ + "lock", + "padlock", + "private", + "privacy", + "protection", + "password", + "secure", + "security", + "safety", + "protected", + "restricted", + "encrypted", + "authorization", + "read-only", + "blocked", + "locked", + "admin" + ] + }, + { + "name": "lock-open", + "tags": [ + "lock", + "padlock", + "private", + "privacy", + "protection", + "password", + "secure", + "security", + "safety", + "protected", + "restricted", + "encrypted", + "authorization", + "read-only", + "blocked", + "locked", + "admin" + ] + }, + { "name": "log-in", "tags": ["sign in", "arrow", "enter", "auth"] }, + { "name": "log-out", "tags": ["sign out", "arrow", "exit", "auth"] }, + { + "name": "logs", + "tags": ["options", "list", "menu", "order", "queue", "tasks", "logs"] + }, + { + "name": "lollipop", + "tags": ["lolly", "candy", "sugar", "food", "sweet", "dessert", "spiral"] + }, + { "name": "luggage", "tags": ["baggage", "luggage", "travel", "suitcase"] }, + { "name": "magnet", "tags": ["horseshoe", "lock", "science", "snap"] }, + { "name": "mail", "tags": ["email", "message", "letter", "unread"] }, + { + "name": "mail-badge", + "tags": [ + "email", + "message", + "letter", + "unread", + "certified", + "registered", + "seal", + "stamp", + "verified", + "envelope", + "rosette", + "signed", + "official", + "delivery" + ] + }, + { + "name": "mail-check", + "tags": [ + "email", + "message", + "letter", + "unread", + "checkmark", + "done", + "completed", + "finished", + "successful", + "confirmed", + "verified", + "validated", + "approved", + "accepted", + "correct", + "valid", + "ticked", + "task", + "todo", + "subscribe", + "delivered", + "read" + ] + }, + { + "name": "mail-clock", + "tags": [ + "email", + "message", + "letter", + "unread", + "clock", + "time", + "hour", + "minute", + "second", + "timestamp", + "timer", + "duration", + "interval", + "frequency", + "schedule", + "deadline", + "pending", + "delayed", + "watch", + "history", + "scheduled", + "send later", + "delivery", + "reminder", + "outgoing" + ] + }, + { + "name": "mail-dot", + "tags": [ + "email", + "message", + "letter", + "unread", + "notification", + "indicator", + "badge", + "pill", + "bullet", + "spot", + "marker", + "new", + "status", + "online", + "active", + "current", + "mail", + "envelope", + "communication", + "post", + "send", + "address" + ] + }, + { + "name": "mail-minus", + "tags": [ + "email", + "message", + "letter", + "unread", + "minus", + "remove", + "delete", + "cancel", + "erase", + "subtract", + "reduce", + "clear", + "exclude", + "-" + ] + }, + { + "name": "mail-open", + "tags": ["email", "message", "letter", "unread", "read"] + }, + { + "name": "mail-pen", + "tags": [ + "email", + "message", + "letter", + "unread", + "edit", + "modify", + "update", + "revise", + "amend", + "create", + "change", + "write", + "writer", + "writing", + "pencil", + "compose", + "draft", + "author", + "annotate", + "comment", + "note", + "draw", + "sketch", + "doodle", + "rename", + "customize", + "reply" + ] + }, + { + "name": "mail-plus", + "tags": [ + "email", + "message", + "letter", + "unread", + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added", + "compose" + ] + }, + { + "name": "mail-question-mark", + "tags": [ + "email", + "message", + "letter", + "unread", + "help", + "guide", + "tutorial", + "manual", + "unknown", + "unidentified", + "unspecified", + "uncertain", + "undetermined", + "missing", + "to be determined", + "mystery", + "question", + "question mark", + "?", + "delivery", + "undelivered" + ] + }, + { + "name": "mail-search", + "tags": [ + "email", + "message", + "letter", + "unread", + "search", + "magnifier", + "scan", + "scanning", + "browsing", + "finding", + "find", + "lookup", + "query", + "locate", + "explore", + "discover", + "browse", + "inspect", + "examine", + "investigate", + "magnifying glass", + "lens", + "zoom" + ] + }, + { + "name": "mail-warning", + "tags": [ + "email", + "message", + "letter", + "unread", + "alert", + "warning", + "danger", + "caution", + "notice", + "error", + "risk", + "concern", + "hazard", + "exclamation mark", + "exclamation point", + "!", + "delivery error" + ] + }, + { + "name": "mail-x", + "tags": [ + "email", + "message", + "letter", + "unread", + "x", + "remove", + "delete", + "cancel", + "clear", + "close", + "discard", + "dismiss", + "erase", + "abort", + "reject", + "canceled", + "cancelled", + "cancellation", + "cross", + "times", + "ex", + "×" + ] + }, + { + "name": "mailbox", + "tags": ["emails", "messages", "letters", "mailing list", "newsletter"] + }, + { + "name": "mails", + "tags": [ + "emails", + "messages", + "letters", + "multiple", + "mailing list", + "newsletter", + "copy" + ] + }, + { "name": "map", "tags": ["location", "navigation", "travel"] }, + { + "name": "map-minus", + "tags": [ + "location", + "navigation", + "travel", + "minus", + "remove", + "delete", + "cancel", + "erase", + "subtract", + "reduce", + "clear", + "exclude", + "-", + "drop" + ] + }, + { "name": "map-pin", "tags": ["location", "waypoint", "marker", "drop"] }, + { + "name": "map-pin-check", + "tags": [ + "location", + "waypoint", + "marker", + "drop", + "checkmark", + "done", + "completed", + "finished", + "successful", + "confirmed", + "verified", + "validated", + "approved", + "accepted", + "correct", + "valid", + "ticked", + "task", + "todo", + "added" + ] + }, + { + "name": "map-pin-check-inside", + "tags": [ + "location", + "waypoint", + "marker", + "drop", + "checkmark", + "done", + "completed", + "finished", + "successful", + "confirmed", + "verified", + "validated", + "approved", + "accepted", + "correct", + "valid", + "ticked", + "task", + "todo", + "added" + ] + }, + { + "name": "map-pin-house", + "tags": [ + "location", + "waypoint", + "marker", + "drop", + "home", + "living", + "building", + "residence", + "architecture", + "address", + "poi", + "real estate", + "property", + "navigation", + "destination", + "geolocation", + "place", + "landmark" + ] + }, + { + "name": "map-pin-minus", + "tags": [ + "location", + "waypoint", + "marker", + "drop", + "minus", + "remove", + "delete", + "cancel", + "erase", + "subtract", + "reduce", + "clear", + "exclude", + "-" + ] + }, + { + "name": "map-pin-minus-inside", + "tags": [ + "location", + "waypoint", + "marker", + "drop", + "minus", + "remove", + "delete", + "cancel", + "erase", + "subtract", + "reduce", + "clear", + "exclude", + "-" + ] + }, + { + "name": "map-pin-off", + "tags": [ + "location", + "waypoint", + "marker", + "drop", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "remove" + ] + }, + { + "name": "map-pin-pen", + "tags": [ + "location", + "waypoint", + "marker", + "drop", + "edit", + "modify", + "update", + "revise", + "amend", + "create", + "change", + "write", + "writer", + "writing", + "pencil", + "compose", + "draft", + "author", + "annotate", + "comment", + "note", + "draw", + "sketch", + "doodle", + "rename", + "customize" + ] + }, + { + "name": "map-pin-plus", + "tags": [ + "location", + "waypoint", + "marker", + "drop", + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added" + ] + }, + { + "name": "map-pin-plus-inside", + "tags": [ + "location", + "waypoint", + "marker", + "drop", + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added" + ] + }, + { + "name": "map-pin-search", + "tags": [ + "location", + "waypoint", + "marker", + "drop", + "search", + "magnifier", + "scan", + "scanning", + "browsing", + "finding", + "find", + "lookup", + "query", + "locate", + "explore", + "discover", + "browse", + "inspect", + "examine", + "investigate", + "magnifying glass", + "lens", + "zoom", + "navigation", + "travel" + ] + }, + { + "name": "map-pin-x", + "tags": [ + "location", + "waypoint", + "marker", + "drop", + "x", + "remove", + "delete", + "cancel", + "clear", + "close", + "discard", + "dismiss", + "erase", + "abort", + "reject", + "canceled", + "cancelled", + "cancellation", + "cross", + "times", + "ex", + "×" + ] + }, + { + "name": "map-pin-x-inside", + "tags": [ + "location", + "waypoint", + "marker", + "drop", + "x", + "remove", + "delete", + "cancel", + "clear", + "close", + "discard", + "dismiss", + "erase", + "abort", + "reject", + "canceled", + "cancelled", + "cancellation", + "cross", + "times", + "ex", + "×" + ] + }, + { "name": "map-pinned", "tags": ["location", "waypoint", "marker", "drop"] }, + { + "name": "map-plus", + "tags": [ + "location", + "navigation", + "travel", + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added" + ] + }, + { + "name": "margin", + "tags": [ + "margin", + "design", + "style", + "padding", + "spacing", + "gap", + "outer spacing", + "box model", + "whitespace", + "space", + "offset", + "alignment", + "position", + "layout", + "css", + "ui" + ] + }, + { + "name": "margin-bottom", + "tags": [ + "margin", + "design", + "style", + "padding", + "spacing", + "gap", + "outer spacing", + "box model", + "whitespace", + "space", + "offset", + "alignment", + "position", + "layout", + "css", + "ui", + "placement", + "bottom", + "bottommost", + "bottom edge", + "lower edge", + "lower", + "below", + "vertical", + "block", + "y", + "y-axis" + ] + }, + { + "name": "margin-horizontal", + "tags": [ + "margin", + "design", + "style", + "padding", + "spacing", + "gap", + "outer spacing", + "box model", + "whitespace", + "space", + "offset", + "alignment", + "position", + "layout", + "css", + "ui", + "placement", + "left", + "left edge", + "leftmost", + "left side", + "horizontal", + "inline", + "x", + "x-axis", + "right", + "right edge", + "rightmost", + "right side" + ] + }, + { + "name": "margin-left", + "tags": [ + "margin", + "design", + "style", + "padding", + "spacing", + "gap", + "outer spacing", + "box model", + "whitespace", + "space", + "offset", + "alignment", + "position", + "layout", + "css", + "ui", + "placement", + "left", + "left edge", + "leftmost", + "left side", + "horizontal", + "inline", + "x", + "x-axis", + "indent" + ] + }, + { + "name": "margin-right", + "tags": [ + "margin", + "design", + "style", + "padding", + "spacing", + "gap", + "outer spacing", + "box model", + "whitespace", + "space", + "offset", + "alignment", + "position", + "layout", + "css", + "ui", + "placement", + "right", + "right edge", + "rightmost", + "right side", + "horizontal", + "inline", + "x", + "x-axis" + ] + }, + { + "name": "margin-top", + "tags": [ + "margin", + "design", + "style", + "padding", + "spacing", + "gap", + "outer spacing", + "box model", + "whitespace", + "space", + "offset", + "alignment", + "position", + "layout", + "css", + "ui", + "placement", + "top", + "topmost", + "top edge", + "upper edge", + "upper", + "above", + "vertical", + "block", + "y", + "y-axis" + ] + }, + { + "name": "margin-vertical", + "tags": [ + "margin", + "design", + "style", + "padding", + "spacing", + "gap", + "outer spacing", + "box model", + "whitespace", + "space", + "offset", + "alignment", + "position", + "layout", + "css", + "ui", + "placement", + "top", + "topmost", + "top edge", + "upper edge", + "upper", + "above", + "vertical", + "block", + "y", + "y-axis", + "bottom", + "bottommost", + "bottom edge", + "lower edge", + "lower", + "below" + ] + }, + { + "name": "mars", + "tags": ["gender", "sex", "male", "masculine", "man", "boy"] + }, + { "name": "mars-stroke", "tags": ["gender", "androgyne", "transgender"] }, + { + "name": "martini", + "tags": [ + "cocktail", + "alcohol", + "beverage", + "bar", + "drink", + "glass", + "spirit", + "party", + "celebration", + "mixer" + ] + }, + { "name": "maximize", "tags": ["fullscreen", "expand", "dashed"] }, + { + "name": "maximize-2", + "tags": ["fullscreen", "expand", "dashed", "arrows"] + }, + { + "name": "medal", + "tags": ["prize", "sports", "winner", "trophy", "award", "achievement"] + }, + { + "name": "megaphone", + "tags": [ + "advertisement", + "announcement", + "attention", + "alert", + "loudspeaker", + "megaphone", + "notification" + ] + }, + { + "name": "megaphone-off", + "tags": [ + "advertisement", + "announcement", + "attention", + "alert", + "loudspeaker", + "megaphone", + "notification", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "silent" + ] + }, + { + "name": "memory-stick", + "tags": [ + "ram", + "random access", + "technology", + "computer", + "chip", + "circuit", + "specs", + "capacity", + "gigabytes", + "gb" + ] + }, + { "name": "menu", "tags": ["bars", "navigation", "hamburger", "options"] }, + { "name": "merge", "tags": ["combine", "join", "unite"] }, + { + "name": "message-circle", + "tags": [ + "comment", + "chat", + "conversation", + "dialog", + "feedback", + "speech bubble" + ] + }, + { + "name": "message-circle-check", + "tags": [ + "comment", + "chat", + "conversation", + "dialog", + "feedback", + "speech bubble", + "checkmark", + "done", + "completed", + "finished", + "successful", + "confirmed", + "verified", + "validated", + "approved", + "accepted", + "correct", + "valid", + "ticked", + "task", + "todo", + "moderate" + ] + }, + { + "name": "message-circle-code", + "tags": [ + "comment", + "chat", + "conversation", + "dialog", + "feedback", + "speech bubble", + "coding", + "programming", + "development", + "code review" + ] + }, + { + "name": "message-circle-dashed", + "tags": [ + "comment", + "chat", + "conversation", + "dialog", + "feedback", + "speech bubble", + "draft" + ] + }, + { + "name": "message-circle-dashed-check", + "tags": [ + "comment", + "chat", + "conversation", + "dialog", + "feedback", + "speech bubble", + "draft", + "checkmark", + "done", + "completed", + "finished", + "successful", + "confirmed", + "verified", + "validated", + "approved", + "accepted", + "correct", + "valid", + "ticked", + "task", + "todo", + "pending", + "provisional", + "verification", + "confirmation", + "status", + "approval", + "moderate", + "resolved" + ] + }, + { + "name": "message-circle-heart", + "tags": [ + "comment", + "chat", + "conversation", + "dialog", + "feedback", + "speech bubble", + "favorite", + "favourite", + "like", + "love", + "save", + "wishlist", + "reaction", + "health", + "positive", + "interest", + "valentine", + "dating", + "date" + ] + }, + { + "name": "message-circle-more", + "tags": [ + "comment", + "chat", + "conversation", + "dialog", + "feedback", + "speech bubble", + "typing", + "writing", + "responding", + "ellipsis", + "etc", + "et cetera", + "...", + "…" + ] + }, + { + "name": "message-circle-off", + "tags": [ + "comment", + "chat", + "conversation", + "dialog", + "feedback", + "speech bubble", + "x", + "remove", + "delete", + "cancel", + "clear", + "close", + "discard", + "dismiss", + "erase", + "abort", + "reject", + "canceled", + "cancelled", + "cancellation", + "cross", + "times", + "ex", + "×", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "silence", + "mute", + "moderate" + ] + }, + { + "name": "message-circle-plus", + "tags": [ + "comment", + "chat", + "conversation", + "dialog", + "feedback", + "speech bubble", + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added" + ] + }, + { + "name": "message-circle-question-mark", + "tags": [ + "comment", + "chat", + "conversation", + "dialog", + "feedback", + "speech bubble", + "help", + "guide", + "tutorial", + "manual", + "unknown", + "unidentified", + "unspecified", + "uncertain", + "undetermined", + "missing", + "to be determined", + "mystery", + "question", + "question mark", + "?" + ] + }, + { + "name": "message-circle-reply", + "tags": [ + "comment", + "chat", + "conversation", + "dialog", + "feedback", + "speech bubble", + "reply", + "response" + ] + }, + { + "name": "message-circle-text", + "tags": [ + "comment", + "chat", + "conversation", + "dialog", + "feedback", + "speech bubble", + "speech", + "bubble", + "sms", + "texting", + "messaging", + "dm", + "discussion", + "thread", + "transcript", + "written", + "writing", + "lines", + "support", + "chatbot" + ] + }, + { + "name": "message-circle-warning", + "tags": [ + "comment", + "chat", + "conversation", + "dialog", + "feedback", + "speech bubble", + "alert", + "warning", + "danger", + "caution", + "notice", + "error", + "risk", + "concern", + "hazard", + "exclamation mark", + "exclamation point", + "!", + "report", + "abuse", + "offense", + "protected" + ] + }, + { + "name": "message-circle-x", + "tags": [ + "comment", + "chat", + "conversation", + "dialog", + "feedback", + "speech bubble", + "x", + "remove", + "delete", + "cancel", + "clear", + "close", + "discard", + "dismiss", + "erase", + "abort", + "reject", + "canceled", + "cancelled", + "cancellation", + "cross", + "times", + "ex", + "×", + "silence", + "mute", + "moderate" + ] + }, + { + "name": "message-square", + "tags": [ + "comment", + "chat", + "conversation", + "dialog", + "feedback", + "speech bubble" + ] + }, + { + "name": "message-square-check", + "tags": [ + "comment", + "chat", + "conversation", + "dialog", + "feedback", + "speech bubble", + "checkmark", + "done", + "completed", + "finished", + "successful", + "confirmed", + "verified", + "validated", + "approved", + "accepted", + "correct", + "valid", + "ticked", + "task", + "todo", + "moderate" + ] + }, + { + "name": "message-square-code", + "tags": [ + "comment", + "chat", + "conversation", + "dialog", + "feedback", + "speech bubble", + "coding", + "programming", + "development", + "code review" + ] + }, + { + "name": "message-square-dashed", + "tags": [ + "comment", + "chat", + "conversation", + "dialog", + "feedback", + "speech bubble", + "draft" + ] + }, + { + "name": "message-square-diff", + "tags": [ + "comment", + "chat", + "conversation", + "dialog", + "feedback", + "speech bubble", + "add", + "patch", + "difference", + "plus", + "minus", + "plus-minus", + "math", + "code review", + "coding", + "version control", + "git" + ] + }, + { + "name": "message-square-dot", + "tags": [ + "comment", + "chat", + "conversation", + "dialog", + "feedback", + "speech bubble", + "notification", + "indicator", + "badge", + "pill", + "bullet", + "spot", + "marker", + "new", + "status", + "online", + "active", + "unread", + "current", + "unresolved" + ] + }, + { + "name": "message-square-heart", + "tags": [ + "comment", + "chat", + "conversation", + "dialog", + "feedback", + "speech bubble", + "favorite", + "favourite", + "like", + "love", + "save", + "wishlist", + "reaction", + "health", + "positive", + "interest", + "valentine", + "dating", + "date" + ] + }, + { + "name": "message-square-lock", + "tags": [ + "comment", + "chat", + "conversation", + "dialog", + "feedback", + "speech bubble", + "lock", + "padlock", + "private", + "privacy", + "protection", + "password", + "secure", + "security", + "safety", + "protected", + "restricted", + "encrypted", + "authorization", + "read-only", + "blocked", + "locked" + ] + }, + { + "name": "message-square-more", + "tags": [ + "comment", + "chat", + "conversation", + "dialog", + "feedback", + "speech bubble", + "typing", + "writing", + "responding", + "ellipsis", + "etc", + "et cetera", + "...", + "…" + ] + }, + { + "name": "message-square-off", + "tags": [ + "comment", + "chat", + "conversation", + "dialog", + "feedback", + "speech bubble", + "x", + "remove", + "delete", + "cancel", + "clear", + "close", + "discard", + "dismiss", + "erase", + "abort", + "reject", + "canceled", + "cancelled", + "cancellation", + "cross", + "times", + "ex", + "×", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "silence", + "mute", + "moderate" + ] + }, + { + "name": "message-square-plus", + "tags": [ + "comment", + "chat", + "conversation", + "dialog", + "feedback", + "speech bubble", + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added" + ] + }, + { + "name": "message-square-quote", + "tags": [ + "comment", + "chat", + "conversation", + "dialog", + "feedback", + "speech bubble", + "blockquote", + "quotation", + "indent", + "reply", + "response" + ] + }, + { + "name": "message-square-reply", + "tags": [ + "comment", + "chat", + "conversation", + "dialog", + "feedback", + "speech bubble", + "reply", + "response" + ] + }, + { + "name": "message-square-share", + "tags": [ + "comment", + "chat", + "conversation", + "dialog", + "feedback", + "speech bubble", + "network", + "forward" + ] + }, + { + "name": "message-square-text", + "tags": [ + "comment", + "chat", + "conversation", + "dialog", + "feedback", + "speech bubble" + ] + }, + { + "name": "message-square-warning", + "tags": [ + "comment", + "chat", + "conversation", + "dialog", + "feedback", + "speech bubble", + "alert", + "warning", + "danger", + "caution", + "notice", + "error", + "risk", + "concern", + "hazard", + "exclamation mark", + "exclamation point", + "!", + "report", + "abuse", + "offense", + "protected" + ] + }, + { + "name": "message-square-x", + "tags": [ + "comment", + "chat", + "conversation", + "dialog", + "feedback", + "speech bubble", + "x", + "remove", + "delete", + "cancel", + "clear", + "close", + "discard", + "dismiss", + "erase", + "abort", + "reject", + "canceled", + "cancelled", + "cancellation", + "cross", + "times", + "ex", + "×", + "silence", + "mute", + "moderate" + ] + }, + { + "name": "messages-circle", + "tags": [ + "comment", + "chat", + "conversation", + "dialog", + "feedback", + "speech bubbles", + "copy", + "multiple", + "discussion", + "interview", + "debate", + "group", + "group chat", + "threads", + "unread", + "bubble", + "messaging" + ] + }, + { + "name": "messages-square", + "tags": [ + "comment", + "chat", + "conversation", + "dialog", + "feedback", + "speech bubbles", + "copy", + "multiple", + "discussion", + "interview", + "debate" + ] + }, + { + "name": "metronome", + "tags": [ + "metronome", + "tempo", + "rhythm", + "beat", + "bpm", + "music", + "audio", + "sound", + "practice", + "timing", + "timer", + "time", + "pulse", + "sync", + "cadence", + "control", + "playback", + "studio", + "tool" + ] + }, + { + "name": "mic", + "tags": ["record", "sound", "listen", "radio", "podcast", "microphone"] + }, + { + "name": "mic-audio-lines", + "tags": [ + "record", + "sound", + "listen", + "radio", + "podcast", + "microphone", + "audio", + "waveform", + "sound waves", + "talk", + "voice", + "speech", + "stream", + "recording", + "transcription", + "dictation", + "voice assistant", + "noise cancellation", + "sound processing" + ] + }, + { + "name": "mic-off", + "tags": [ + "record", + "sound", + "listen", + "radio", + "podcast", + "microphone", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "mute" + ] + }, + { + "name": "mic-signal", + "tags": [ + "record", + "sound", + "listen", + "radio", + "podcast", + "microphone", + "audio", + "broadcast", + "signal", + "wireless", + "airwaves", + "talk", + "voice", + "speech", + "stream", + "live", + "voice chat", + "push to talk", + "transmission" + ] + }, + { + "name": "mic-vocal", + "tags": [ + "record", + "sound", + "listen", + "radio", + "podcast", + "microphone", + "lyrics", + "voice", + "music", + "karaoke", + "singing" + ] + }, + { + "name": "microchip", + "tags": [ + "processor", + "cores", + "technology", + "computer", + "chip", + "integrated circuit", + "memory", + "ram", + "specs", + "gpu", + "gigahertz", + "ghz" + ] + }, + { + "name": "microscope", + "tags": ["medical", "education", "science", "imaging", "research"] + }, + { "name": "microwave", "tags": ["oven", "cooker", "toaster oven", "bake"] }, + { + "name": "midi-port", + "tags": [ + "musical instrument digital interface", + "port", + "connector", + "socket", + "jack", + "din", + "5-pin", + "audio", + "music", + "synthesizer", + "keyboard", + "controller", + "interface", + "input", + "output", + "io" + ] + }, + { + "name": "milestone", + "tags": [ + "signpost", + "direction", + "right", + "east", + "forward", + "version control", + "waypoint" + ] + }, + { + "name": "milk", + "tags": ["lactose", "bottle", "beverage", "drink", "water", "diet"] + }, + { + "name": "milk-off", + "tags": [ + "lactose", + "bottle", + "beverage", + "drink", + "water", + "diet", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "lactose free", + "allergy", + "intolerance" + ] + }, + { "name": "minimize", "tags": ["exit fullscreen", "close", "shrink"] }, + { + "name": "minimize-2", + "tags": ["exit fullscreen", "close", "shrink", "arrows"] + }, + { + "name": "minus", + "tags": [ + "minus", + "remove", + "delete", + "cancel", + "erase", + "subtract", + "reduce", + "clear", + "exclude", + "-", + "decrease", + "decrement", + "negative", + "calculate", + "line", + "divider", + "separator", + "horizontal rule", + "hr", + "html", + "markup", + "markdown", + "---", + "toolbar", + "operator", + "code", + "coding", + "minimum", + "downgrade" + ] + }, + { + "name": "mirror-rectangular", + "tags": [ + "reflection", + "optics", + "glass", + "surface", + "image", + "physics", + "science", + "bathroom", + "decor", + "cosmetic", + "shiny", + "periscope", + "vanity" + ] + }, + { + "name": "mirror-round", + "tags": [ + "reflection", + "optics", + "glass", + "surface", + "image", + "physics", + "science", + "bathroom", + "vanity", + "makeup", + "decor", + "cosmetic", + "shiny", + "periscope" + ] + }, + { + "name": "monitor", + "tags": [ + "tv", + "computer", + "desktop", + "screen", + "display", + "external display", + "screen sharing", + "virtual machine", + "vm" + ] + }, + { + "name": "monitor-activity", + "tags": [ + "tv", + "computer", + "desktop", + "screen", + "display", + "external display", + "screen sharing", + "virtual machine", + "vm", + "pulse", + "action", + "motion", + "movement", + "exercise", + "fitness", + "healthcare", + "heart rate monitor", + "vital signs", + "vitals", + "emergency room", + "er", + "intensive care", + "hospital", + "defibrillator", + "earthquake", + "seismic", + "magnitude", + "richter scale", + "aftershock", + "tremor", + "shockwave", + "audio", + "waveform", + "synthesizer", + "synthesiser", + "music", + "heartbeat", + "health", + "performance", + "diagnostics", + "metrics", + "telemetry", + "network", + "observability", + "uptime", + "server", + "infrastructure", + "resource usage", + "system status", + "real-time", + "monitoring", + "dashboard" + ] + }, + { + "name": "monitor-check", + "tags": [ + "tv", + "computer", + "desktop", + "screen", + "display", + "external display", + "screen sharing", + "virtual machine", + "vm", + "checkmark", + "done", + "completed", + "finished", + "successful", + "confirmed", + "verified", + "validated", + "approved", + "accepted", + "correct", + "valid", + "ticked", + "task", + "todo", + "connected", + "running", + "active" + ] + }, + { + "name": "monitor-cloud", + "tags": [ + "tv", + "computer", + "desktop", + "screen", + "display", + "external display", + "screen sharing", + "virtual machine", + "vm", + "virtual desktop", + "vdi", + "computing", + "remote work", + "monitoring", + "infrastructure", + "software as a service", + "saas", + "workstation", + "environment" + ] + }, + { + "name": "monitor-cog", + "tags": [ + "tv", + "computer", + "desktop", + "screen", + "display", + "external display", + "screen sharing", + "virtual machine", + "vm", + "cog", + "cogwheel", + "gear", + "pinion", + "sprocket", + "settings", + "configuration", + "preferences", + "options", + "customization", + "controls", + "control panel", + "edit", + "tools", + "executable", + "system", + "network", + "computing" + ] + }, + { + "name": "monitor-dot", + "tags": [ + "tv", + "computer", + "desktop", + "screen", + "display", + "external display", + "screen sharing", + "virtual machine", + "vm", + "notification", + "indicator", + "badge", + "pill", + "bullet", + "spot", + "marker", + "new", + "status", + "online", + "active", + "unread", + "current", + "running" + ] + }, + { + "name": "monitor-down", + "tags": [ + "tv", + "computer", + "desktop", + "screen", + "display", + "external display", + "screen sharing", + "virtual machine", + "vm", + "direction", + "movement", + "vertical", + "downward", + "downwards", + "south", + "descend", + "page down", + "download", + "remote", + "cast" + ] + }, + { + "name": "monitor-off", + "tags": [ + "tv", + "computer", + "desktop", + "screen", + "display", + "external display", + "screen sharing", + "virtual machine", + "vm", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "offline", + "disconnected", + "power" + ] + }, + { + "name": "monitor-pause", + "tags": [ + "tv", + "computer", + "desktop", + "screen", + "display", + "external display", + "screen sharing", + "virtual machine", + "vm", + "suspend", + "hold", + "halt", + "wait", + "freeze", + "stop", + "break", + "interruption", + "video", + "movie", + "film", + "hibernate", + "boot" + ] + }, + { + "name": "monitor-pc", + "tags": [ + "tv", + "computer", + "desktop", + "screen", + "display", + "external display", + "screen sharing", + "virtual machine", + "vm", + "personal computer", + "chassis", + "workstation", + "tower", + "hardware", + "setup", + "gaming" + ] + }, + { + "name": "monitor-play", + "tags": [ + "tv", + "computer", + "desktop", + "screen", + "display", + "external display", + "screen sharing", + "virtual machine", + "vm", + "start", + "run", + "running", + "execute", + "launch", + "resume", + "preview", + "begin", + "continue", + "proceed", + "activate", + "trigger", + "initiate", + "video", + "movie", + "film", + "boot" + ] + }, + { + "name": "monitor-smartphone", + "tags": [ + "tv", + "computer", + "desktop", + "screen", + "display", + "external display", + "screen sharing", + "virtual machine", + "vm", + "phone", + "cellphone", + "device", + "mobile", + "touchscreen", + "portable", + "responsive", + "screens", + "sync", + "cast" + ] + }, + { + "name": "monitor-speaker", + "tags": [ + "tv", + "computer", + "desktop", + "screen", + "display", + "external display", + "screen sharing", + "virtual machine", + "vm", + "connect", + "cast", + "audio", + "sound", + "volume", + "presentation" + ] + }, + { + "name": "monitor-stop", + "tags": [ + "tv", + "computer", + "desktop", + "screen", + "display", + "external display", + "screen sharing", + "virtual machine", + "vm", + "halt", + "end", + "terminate", + "finish", + "cancel", + "abort", + "discontinue", + "interrupt", + "break", + "cease", + "video", + "movie", + "film", + "shutdown" + ] + }, + { + "name": "monitor-up", + "tags": [ + "tv", + "computer", + "desktop", + "screen", + "display", + "external display", + "screen sharing", + "virtual machine", + "vm", + "direction", + "movement", + "vertical", + "upward", + "upwards", + "north", + "ascend", + "page up", + "upload", + "connect", + "remote", + "cast" + ] + }, + { + "name": "monitor-x", + "tags": [ + "tv", + "computer", + "desktop", + "screen", + "display", + "external display", + "screen sharing", + "virtual machine", + "vm", + "x", + "remove", + "delete", + "cancel", + "clear", + "close", + "discard", + "dismiss", + "erase", + "abort", + "reject", + "canceled", + "cancelled", + "cancellation", + "cross", + "times", + "ex", + "×", + "error", + "failed", + "disconnected", + "stop", + "suspend" + ] + }, + { "name": "moon", "tags": ["dark", "night"] }, + { "name": "moon-star", "tags": ["dark", "night", "star"] }, + { + "name": "mop", + "tags": [ + "cleaning", + "sweeping", + "scrubbing", + "housekeeping", + "hygiene", + "sanitation", + "chores", + "swab", + "tidy", + "floor", + "janitor", + "maintenance", + "wash", + "wipe", + "spotless", + "pristine", + "disinfect" + ] + }, + { + "name": "mop-sparkles", + "tags": [ + "cleaning", + "sweeping", + "scrubbing", + "housekeeping", + "hygiene", + "sanitation", + "chores", + "swab", + "tidy", + "floor", + "janitor", + "maintenance", + "wash", + "wipe", + "spotless", + "pristine", + "disinfect", + "sparkle", + "magic", + "ai", + "stars", + "glitter", + "shimmer", + "twinkle", + "shine", + "shiny", + "enchantment", + "polish", + "sanitize", + "artificial intelligence", + "smart", + "assistant", + "automation", + "generate", + "enhancement" + ] + }, + { + "name": "mosque", + "tags": [ + "mosque", + "masjid", + "islam", + "muslim", + "ramadan", + "eid", + "prayer", + "worship", + "building", + "minaret", + "dome", + "architecture", + "faith", + "religion", + "holy", + "sacred", + "landmark", + "community", + "spiritual", + "tourism", + "map", + "heritage" + ] + }, + { + "name": "motorbike", + "tags": [ + "moto", + "motorcycle", + "transport", + "vehicle", + "drive", + "ride", + "trip", + "race", + "racing", + "journey", + "delivery" + ] + }, + { "name": "mountain", "tags": ["climb", "hike", "rock"] }, + { "name": "mountain-snow", "tags": ["alpine", "climb", "snow"] }, + { "name": "mouse", "tags": ["device", "scroll", "click"] }, + { + "name": "mouse-left", + "tags": [ + "device", + "scroll", + "click", + "position", + "placement", + "left", + "left edge", + "leftmost", + "left side", + "horizontal", + "inline", + "x", + "x-axis" + ] + }, + { + "name": "mouse-off", + "tags": [ + "device", + "scroll", + "click", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line" + ] + }, + { "name": "mouse-pointer", "tags": ["click", "select"] }, + { "name": "mouse-pointer-2", "tags": ["click", "select"] }, + { + "name": "mouse-pointer-2-off", + "tags": [ + "click", + "select", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "pointer", + "mouse", + "cursor", + "arrow", + "navigation", + "selection", + "no-click", + "interaction" + ] + }, + { + "name": "mouse-pointer-ban", + "tags": ["wait", "busy", "loading", "blocked", "frozen", "freeze"] + }, + { "name": "mouse-pointer-click", "tags": ["click", "select"] }, + { + "name": "mouse-right", + "tags": [ + "device", + "scroll", + "click", + "position", + "placement", + "right", + "right edge", + "rightmost", + "right side", + "horizontal", + "inline", + "x", + "x-axis" + ] + }, + { + "name": "mouth", + "tags": [ + "speech", + "voice", + "talk", + "speaking", + "taste", + "tasting", + "flavor", + "palate", + "tongue", + "gustatory", + "oral", + "dental", + "expression", + "communication", + "accessibility" + ] + }, + { + "name": "mouth-off", + "tags": [ + "speech", + "voice", + "talk", + "speaking", + "taste", + "tasting", + "flavor", + "palate", + "tongue", + "gustatory", + "oral", + "dental", + "expression", + "communication", + "accessibility", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "mute", + "silence", + "speechless", + "taste loss", + "flavor loss", + "ageusia", + "tasteless" + ] + }, + { "name": "move", "tags": ["arrows"] }, + { + "name": "move-3d", + "tags": ["arrows", "axis", "gizmo", "coordinates", "transform", "translate"] + }, + { "name": "move-diagonal", "tags": ["double", "arrow"] }, + { "name": "move-diagonal-2", "tags": ["double", "arrow"] }, + { + "name": "move-down", + "tags": [ + "arrows", + "direction", + "movement", + "vertical", + "downward", + "downwards", + "south", + "descend", + "page down" + ] + }, + { + "name": "move-down-left", + "tags": [ + "arrows", + "direction", + "movement", + "diagonal", + "southwest", + "south-west", + "south west" + ] + }, + { + "name": "move-down-right", + "tags": [ + "arrows", + "direction", + "movement", + "diagonal", + "southeast", + "south-east", + "south east" + ] + }, + { "name": "move-horizontal", "tags": ["double", "arrow"] }, + { + "name": "move-left", + "tags": [ + "arrows", + "direction", + "movement", + "horizontal", + "leftward", + "leftwards", + "west", + "back" + ] + }, + { + "name": "move-right", + "tags": [ + "arrows", + "direction", + "movement", + "horizontal", + "rightward", + "rightwards", + "east", + "trend flat" + ] + }, + { + "name": "move-up", + "tags": [ + "arrows", + "direction", + "movement", + "vertical", + "upward", + "upwards", + "north", + "ascend", + "page up" + ] + }, + { + "name": "move-up-left", + "tags": [ + "arrows", + "direction", + "movement", + "diagonal", + "northwest", + "north-west", + "north west" + ] + }, + { + "name": "move-up-right", + "tags": [ + "arrows", + "direction", + "movement", + "diagonal", + "northeast", + "north-east", + "north east" + ] + }, + { "name": "move-vertical", "tags": ["double", "arrow"] }, + { "name": "navigation", "tags": ["location", "travel"] }, + { "name": "navigation-2", "tags": ["location", "travel"] }, + { + "name": "navigation-2-off", + "tags": [ + "location", + "travel", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line" + ] + }, + { + "name": "navigation-off", + "tags": [ + "location", + "travel", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line" + ] + }, + { + "name": "nepali-rupee", + "tags": [ + "currency", + "money", + "cash", + "banknote", + "funds", + "finance", + "payment", + "balance", + "transaction", + "bill", + "invoice", + "receipt", + "fee", + "subscription", + "price", + "cost", + "amount", + "revenue", + "income", + "expense", + "banking", + "exchange", + "financial", + "economy", + "pricing", + "prices", + "monetization", + "nepal", + "rupee", + "npr" + ] + }, + { + "name": "network", + "tags": [ + "network", + "nodes", + "edges", + "links", + "connections", + "relationships", + "structure", + "topology", + "tree" + ] + }, + { + "name": "newspaper", + "tags": ["news", "feed", "home", "magazine", "article", "headline"] + }, + { + "name": "nfc", + "tags": ["contactless", "payment", "near-field communication"] + }, + { "name": "non-binary", "tags": ["gender", "nonbinary", "enby"] }, + { + "name": "notebook", + "tags": [ + "notepad", + "notes", + "stationery", + "sketchbook", + "moleskine", + "closure", + "strap", + "band", + "elastic", + "organizer", + "organiser", + "planner", + "diary", + "journal", + "writing", + "written", + "writer", + "reading", + "high school", + "university", + "college", + "academy", + "student", + "study", + "homework", + "research" + ] + }, + { + "name": "notebook-dot", + "tags": [ + "notepad", + "notes", + "stationery", + "sketchbook", + "moleskine", + "closure", + "strap", + "band", + "elastic", + "organizer", + "organiser", + "planner", + "diary", + "journal", + "writing", + "written", + "writer", + "reading", + "high school", + "university", + "college", + "academy", + "student", + "study", + "homework", + "research", + "notification", + "indicator", + "badge", + "pill", + "bullet", + "spot", + "marker", + "new", + "status", + "online", + "active", + "unread", + "current", + "document", + "file", + "page", + "paper", + "record", + "entry", + "notebook", + "note" + ] + }, + { + "name": "notebook-pen", + "tags": [ + "notepad", + "notes", + "stationery", + "sketchbook", + "moleskine", + "closure", + "strap", + "band", + "elastic", + "organizer", + "organiser", + "planner", + "diary", + "journal", + "writing", + "written", + "writer", + "reading", + "high school", + "university", + "college", + "academy", + "student", + "study", + "homework", + "research", + "edit", + "modify", + "update", + "revise", + "amend", + "create", + "change", + "write", + "pencil", + "compose", + "draft", + "author", + "annotate", + "comment", + "note", + "draw", + "sketch", + "doodle", + "rename", + "customize", + "noted", + "eraser", + "rubber" + ] + }, + { + "name": "notebook-tabs", + "tags": [ + "notepad", + "notes", + "stationery", + "sketchbook", + "moleskine", + "closure", + "strap", + "band", + "elastic", + "organizer", + "organiser", + "planner", + "diary", + "journal", + "writing", + "written", + "writer", + "reading", + "high school", + "university", + "college", + "academy", + "student", + "study", + "homework", + "research", + "people", + "family", + "friends", + "acquaintances", + "contacts", + "details", + "addresses", + "phone numbers", + "directory", + "listing", + "networking", + "alphabetical", + "a-z" + ] + }, + { + "name": "notebook-text", + "tags": [ + "notepad", + "notes", + "stationery", + "sketchbook", + "moleskine", + "closure", + "strap", + "band", + "elastic", + "organizer", + "organiser", + "planner", + "diary", + "journal", + "writing", + "written", + "writer", + "reading", + "high school", + "university", + "college", + "academy", + "student", + "study", + "homework", + "research", + "pages", + "paper", + "write", + "lines", + "opened" + ] + }, + { + "name": "notepad-text", + "tags": [ + "notebook", + "notes", + "pages", + "paper", + "stationery", + "sketchbook", + "organizer", + "organiser", + "planner", + "diary", + "journal", + "writing", + "write", + "written", + "reading", + "high school", + "university", + "college", + "academy", + "student", + "study", + "homework", + "research", + "lines", + "opened" + ] + }, + { + "name": "notepad-text-dashed", + "tags": [ + "notebook", + "notes", + "pages", + "paper", + "stationery", + "sketchbook", + "organizer", + "organiser", + "planner", + "diary", + "journal", + "writing", + "write", + "written", + "reading", + "high school", + "university", + "college", + "academy", + "student", + "study", + "homework", + "research", + "lines", + "opened", + "draft", + "template" + ] + }, + { + "name": "numbers", + "tags": [ + "digit", + "number", + "numeral", + "numeric", + "numerical", + "123", + "digits", + "counting", + "quantity", + "math", + "sequence", + "integer" + ] + }, + { "name": "nut", "tags": ["hazelnut", "acorn", "food", "diet"] }, + { + "name": "nut-off", + "tags": [ + "hazelnut", + "acorn", + "food", + "diet", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "allergy", + "intolerance" + ] + }, + { "name": "octagon", "tags": ["stop", "shape"] }, + { + "name": "octagon-alert", + "tags": [ + "alert", + "warning", + "danger", + "caution", + "notice", + "error", + "risk", + "concern", + "hazard", + "exclamation mark", + "exclamation point", + "!" + ] + }, + { + "name": "octagon-minus", + "tags": [ + "minus", + "remove", + "delete", + "cancel", + "erase", + "subtract", + "reduce", + "clear", + "exclude", + "-", + "stop", + "forbidden", + "decrease", + "traffic", + "halt", + "restricted" + ] + }, + { + "name": "octagon-pause", + "tags": [ + "suspend", + "hold", + "halt", + "wait", + "freeze", + "stop", + "break", + "interruption", + "music", + "audio" + ] + }, + { + "name": "octagon-x", + "tags": [ + "x", + "remove", + "delete", + "cancel", + "clear", + "close", + "discard", + "dismiss", + "erase", + "abort", + "reject", + "canceled", + "cancelled", + "cancellation", + "cross", + "times", + "ex", + "×", + "stop", + "alert", + "warning", + "math" + ] + }, + { + "name": "omega", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "greek", + "symbol", + "mathematics", + "education", + "physics", + "engineering", + "ohms", + "electrical resistance", + "angular frequency", + "dynamical systems", + "astronomy", + "constellations", + "philosophy" + ] + }, + { "name": "option", "tags": ["keyboard", "key", "mac", "alt", "button"] }, + { + "name": "orbit", + "tags": ["planet", "space", "physics", "satellites", "moons"] + }, + { "name": "origami", "tags": ["paper", "bird"] }, + { + "name": "package", + "tags": [ + "box", + "container", + "storage", + "sealed", + "delivery", + "undelivered", + "unopened", + "packed", + "archive", + "zip", + "module" + ] + }, + { + "name": "package-2", + "tags": [ + "box", + "container", + "storage", + "sealed", + "delivery", + "undelivered", + "unopened", + "packed", + "archive", + "zip", + "module" + ] + }, + { + "name": "package-check", + "tags": [ + "box", + "container", + "storage", + "sealed", + "delivery", + "undelivered", + "unopened", + "packed", + "archive", + "zip", + "module", + "checkmark", + "done", + "completed", + "finished", + "successful", + "confirmed", + "verified", + "validated", + "approved", + "accepted", + "correct", + "valid", + "ticked", + "task", + "todo", + "delivered" + ] + }, + { + "name": "package-minus", + "tags": [ + "box", + "container", + "storage", + "sealed", + "delivery", + "undelivered", + "unopened", + "packed", + "archive", + "zip", + "module", + "minus", + "remove", + "delete", + "cancel", + "erase", + "subtract", + "reduce", + "clear", + "exclude", + "-" + ] + }, + { + "name": "package-open", + "tags": [ + "box", + "container", + "storage", + "unpack", + "unarchive", + "unzip", + "opened", + "delivered" + ] + }, + { + "name": "package-plus", + "tags": [ + "box", + "container", + "storage", + "sealed", + "delivery", + "undelivered", + "unopened", + "packed", + "archive", + "zip", + "module", + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added" + ] + }, + { + "name": "package-search", + "tags": [ + "box", + "container", + "storage", + "sealed", + "delivery", + "undelivered", + "unopened", + "packed", + "archive", + "zip", + "module", + "search", + "magnifier", + "scan", + "scanning", + "browsing", + "finding", + "find", + "lookup", + "query", + "locate", + "explore", + "discover", + "browse", + "inspect", + "examine", + "investigate", + "magnifying glass", + "lens", + "zoom", + "product process" + ] + }, + { + "name": "package-x", + "tags": [ + "box", + "container", + "storage", + "sealed", + "delivery", + "undelivered", + "unopened", + "packed", + "archive", + "zip", + "module", + "x", + "remove", + "delete", + "cancel", + "clear", + "close", + "discard", + "dismiss", + "erase", + "abort", + "reject", + "canceled", + "cancelled", + "cancellation", + "cross", + "times", + "ex", + "×" + ] + }, + { + "name": "paint-bucket", + "tags": ["fill", "paint", "bucket", "color", "colour"] + }, + { + "name": "paint-roller", + "tags": ["brush", "color", "colour", "decoration", "diy"] + }, + { + "name": "paintbrush", + "tags": [ + "brush", + "paintbrush", + "design", + "color", + "colour", + "decoration", + "diy" + ] + }, + { + "name": "paintbrush-vertical", + "tags": [ + "brush", + "paintbrush", + "design", + "color", + "colour", + "decoration", + "diy" + ] + }, + { + "name": "palette", + "tags": [ + "colors", + "colours", + "theme", + "scheme", + "paint", + "watercolor", + "watercolour", + "artist" + ] + }, + { "name": "panda", "tags": ["animal", "wildlife", "bear", "zoo", "bamboo"] }, + { + "name": "panel-bottom", + "tags": [ + "position", + "placement", + "bottom", + "bottommost", + "bottom edge", + "lower edge", + "lower", + "below", + "vertical", + "block", + "y", + "y-axis", + "drawer", + "dock" + ] + }, + { + "name": "panel-bottom-close", + "tags": [ + "position", + "placement", + "bottom", + "bottommost", + "bottom edge", + "lower edge", + "lower", + "below", + "vertical", + "block", + "y", + "y-axis", + "drawer", + "dock", + "direction", + "movement", + "downward", + "downwards", + "south", + "descend", + "page down", + "hide", + "chevron", + "down" + ] + }, + { + "name": "panel-bottom-dashed", + "tags": [ + "position", + "placement", + "bottom", + "bottommost", + "bottom edge", + "lower edge", + "lower", + "below", + "vertical", + "block", + "y", + "y-axis", + "drawer", + "dock", + "show", + "reveal", + "padding", + "margin", + "guide", + "layout", + "bleed" + ] + }, + { + "name": "panel-bottom-open", + "tags": [ + "position", + "placement", + "bottom", + "bottommost", + "bottom edge", + "lower edge", + "lower", + "below", + "vertical", + "block", + "y", + "y-axis", + "drawer", + "dock", + "direction", + "movement", + "upward", + "upwards", + "north", + "ascend", + "page up", + "show", + "reveal", + "chevron", + "up" + ] + }, + { + "name": "panel-left", + "tags": [ + "position", + "placement", + "left", + "left edge", + "leftmost", + "left side", + "horizontal", + "inline", + "x", + "x-axis", + "primary", + "drawer" + ] + }, + { + "name": "panel-left-close", + "tags": [ + "position", + "placement", + "left", + "left edge", + "leftmost", + "left side", + "horizontal", + "inline", + "x", + "x-axis", + "primary", + "drawer", + "direction", + "movement", + "leftward", + "leftwards", + "west", + "hide", + "chevron", + "<" + ] + }, + { + "name": "panel-left-dashed", + "tags": [ + "position", + "placement", + "left", + "left edge", + "leftmost", + "left side", + "horizontal", + "inline", + "x", + "x-axis", + "primary", + "drawer", + "sidebar", + "show", + "reveal", + "padding", + "margin", + "guide", + "layout", + "bleed" + ] + }, + { + "name": "panel-left-open", + "tags": [ + "position", + "placement", + "left", + "left edge", + "leftmost", + "left side", + "horizontal", + "inline", + "x", + "x-axis", + "primary", + "drawer", + "direction", + "movement", + "rightward", + "rightwards", + "east", + "show", + "reveal", + "chevron", + "right", + ">" + ] + }, + { + "name": "panel-left-right-dashed", + "tags": [ + "position", + "placement", + "left", + "left edge", + "leftmost", + "left side", + "horizontal", + "inline", + "x", + "x-axis", + "primary", + "drawer", + "right", + "right edge", + "rightmost", + "right side", + "sidebar", + "show", + "reveal", + "padding", + "margin", + "guide", + "layout", + "vertical", + "bleed" + ] + }, + { + "name": "panel-right", + "tags": [ + "position", + "placement", + "right", + "right edge", + "rightmost", + "right side", + "horizontal", + "inline", + "x", + "x-axis", + "sidebar", + "secondary", + "drawer" + ] + }, + { + "name": "panel-right-close", + "tags": [ + "position", + "placement", + "right", + "right edge", + "rightmost", + "right side", + "horizontal", + "inline", + "x", + "x-axis", + "sidebar", + "secondary", + "drawer", + "direction", + "movement", + "rightward", + "rightwards", + "east", + "hide", + "chevron", + ">" + ] + }, + { + "name": "panel-right-dashed", + "tags": [ + "position", + "placement", + "right", + "right edge", + "rightmost", + "right side", + "horizontal", + "inline", + "x", + "x-axis", + "sidebar", + "secondary", + "drawer", + "show", + "reveal", + "padding", + "margin", + "guide", + "layout", + "bleed" + ] + }, + { + "name": "panel-right-open", + "tags": [ + "position", + "placement", + "right", + "right edge", + "rightmost", + "right side", + "horizontal", + "inline", + "x", + "x-axis", + "sidebar", + "secondary", + "drawer", + "direction", + "movement", + "leftward", + "leftwards", + "west", + "show", + "reveal", + "chevron", + "left", + "<" + ] + }, + { + "name": "panel-top", + "tags": [ + "position", + "placement", + "top", + "topmost", + "top edge", + "upper edge", + "upper", + "above", + "vertical", + "block", + "y", + "y-axis", + "drawer", + "browser", + "webpage" + ] + }, + { + "name": "panel-top-bottom-dashed", + "tags": [ + "position", + "placement", + "top", + "topmost", + "top edge", + "upper edge", + "upper", + "above", + "vertical", + "block", + "y", + "y-axis", + "drawer", + "browser", + "webpage", + "bottom", + "bottommost", + "bottom edge", + "lower edge", + "lower", + "below", + "sidebar", + "primary", + "show", + "reveal", + "padding", + "margin", + "guide", + "layout", + "horizontal", + "bleed" + ] + }, + { + "name": "panel-top-close", + "tags": [ + "position", + "placement", + "top", + "topmost", + "top edge", + "upper edge", + "upper", + "above", + "vertical", + "block", + "y", + "y-axis", + "drawer", + "browser", + "webpage", + "direction", + "movement", + "upward", + "upwards", + "north", + "ascend", + "page up", + "menu bar", + "hide", + "chevron", + "up" + ] + }, + { + "name": "panel-top-dashed", + "tags": [ + "position", + "placement", + "top", + "topmost", + "top edge", + "upper edge", + "upper", + "above", + "vertical", + "block", + "y", + "y-axis", + "drawer", + "browser", + "webpage", + "menu bar", + "show", + "reveal", + "padding", + "margin", + "guide", + "layout", + "bleed" + ] + }, + { + "name": "panel-top-open", + "tags": [ + "position", + "placement", + "top", + "topmost", + "top edge", + "upper edge", + "upper", + "above", + "vertical", + "block", + "y", + "y-axis", + "drawer", + "browser", + "webpage", + "direction", + "movement", + "downward", + "downwards", + "south", + "descend", + "page down", + "menu bar", + "show", + "reveal", + "chevron", + "down" + ] + }, + { + "name": "panels-left-bottom", + "tags": [ + "position", + "placement", + "bottom", + "bottommost", + "bottom edge", + "lower edge", + "lower", + "below", + "vertical", + "block", + "y", + "y-axis", + "left", + "left edge", + "leftmost", + "left side", + "horizontal", + "inline", + "x", + "x-axis", + "drawers", + "sidebar", + "primary" + ] + }, + { + "name": "panels-right-bottom", + "tags": [ + "position", + "placement", + "bottom", + "bottommost", + "bottom edge", + "lower edge", + "lower", + "below", + "vertical", + "block", + "y", + "y-axis", + "right", + "right edge", + "rightmost", + "right side", + "horizontal", + "inline", + "x", + "x-axis", + "drawers", + "sidebar", + "secondary" + ] + }, + { + "name": "panels-top-left", + "tags": [ + "position", + "placement", + "top", + "topmost", + "top edge", + "upper edge", + "upper", + "above", + "vertical", + "block", + "y", + "y-axis", + "left", + "left edge", + "leftmost", + "left side", + "horizontal", + "inline", + "x", + "x-axis", + "menu bar", + "sidebar", + "primary", + "drawers", + "window", + "webpage", + "projects", + "overview" + ] + }, + { + "name": "paper-bag", + "tags": [ + "storage", + "package", + "lunch", + "takeout", + "eco-friendly", + "kraft", + "retail", + "doggy bag" + ] + }, + { "name": "paperclip", "tags": ["attachment", "file"] }, + { + "name": "parasol", + "tags": [ + "umbrella", + "sunshade", + "beach", + "shade", + "sun", + "protection", + "cover", + "canopy", + "garden", + "outdoors", + "resort", + "travel", + "vacation", + "holiday", + "summer", + "apparel", + "accessory", + "sunbathing", + "relax", + "tropical" + ] + }, + { + "name": "parentheses", + "tags": [ + "code", + "token", + "parenthesis", + "parens", + "brackets", + "parameters", + "arguments", + "args", + "input", + "call", + "math", + "formula", + "function", + "(", + ")" + ] + }, + { + "name": "park", + "tags": [ + "nature", + "green", + "trees", + "landscape", + "rest", + "walk", + "leisure", + "environment", + "tree", + "bench", + "outdoors", + "recreation" + ] + }, + { + "name": "parking-meter", + "tags": ["driving", "car park", "pay", "sidewalk", "pavement"] + }, + { + "name": "party-popper", + "tags": [ + "emoji", + "congratulations", + "celebration", + "party", + "tada", + "🎉", + "🎊", + "excitement", + "exciting", + "excites", + "confetti" + ] + }, + { + "name": "pause", + "tags": [ + "suspend", + "hold", + "halt", + "wait", + "freeze", + "stop", + "break", + "interruption", + "music" + ] + }, + { + "name": "paw-print", + "tags": [ + "pets", + "vets", + "veterinarian", + "domesticated", + "cat", + "dog", + "bear" + ] + }, + { + "name": "pc-case", + "tags": [ + "personal computer", + "computer", + "chassis", + "workstation", + "tower", + "hardware", + "setup", + "gaming" + ] + }, + { + "name": "pen", + "tags": [ + "edit", + "modify", + "update", + "revise", + "amend", + "create", + "change", + "write", + "writer", + "writing", + "pencil", + "compose", + "draft", + "author", + "annotate", + "comment", + "note", + "draw", + "sketch", + "doodle", + "rename", + "customize", + "biro", + "ink", + "marker", + "felt tip", + "stationery", + "artist" + ] + }, + { + "name": "pen-line", + "tags": [ + "edit", + "modify", + "update", + "revise", + "amend", + "create", + "change", + "write", + "writer", + "writing", + "pencil", + "compose", + "draft", + "author", + "annotate", + "comment", + "note", + "draw", + "sketch", + "doodle", + "rename", + "customize", + "biro", + "ink", + "marker", + "felt tip", + "stationery", + "artist" + ] + }, + { + "name": "pen-off", + "tags": [ + "edit", + "modify", + "update", + "revise", + "amend", + "create", + "change", + "write", + "writer", + "writing", + "pencil", + "compose", + "draft", + "author", + "annotate", + "comment", + "note", + "draw", + "sketch", + "doodle", + "rename", + "customize", + "biro", + "ink", + "marker", + "felt tip", + "stationery", + "artist", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "non-editable", + "locked", + "read-only", + "unmodifiable", + "frozen" + ] + }, + { "name": "pen-tool", "tags": ["vector", "drawing", "path"] }, + { + "name": "pencil", + "tags": [ + "edit", + "modify", + "update", + "revise", + "amend", + "create", + "change", + "write", + "writer", + "writing", + "pencil", + "compose", + "draft", + "author", + "annotate", + "comment", + "note", + "draw", + "sketch", + "doodle", + "rename", + "customize", + "rubber", + "stationery", + "artist" + ] + }, + { + "name": "pencil-line", + "tags": [ + "edit", + "modify", + "update", + "revise", + "amend", + "create", + "change", + "write", + "writer", + "writing", + "pencil", + "compose", + "draft", + "author", + "annotate", + "comment", + "note", + "draw", + "sketch", + "doodle", + "rename", + "customize", + "rubber", + "stationery", + "artist", + "biro", + "ink", + "marker", + "felt tip" + ] + }, + { + "name": "pencil-off", + "tags": [ + "edit", + "modify", + "update", + "revise", + "amend", + "create", + "change", + "write", + "writer", + "writing", + "pencil", + "compose", + "draft", + "author", + "annotate", + "comment", + "note", + "draw", + "sketch", + "doodle", + "rename", + "customize", + "rubber", + "stationery", + "artist", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "non-editable", + "locked", + "read-only", + "unmodifiable", + "frozen" + ] + }, + { + "name": "pencil-ruler", + "tags": [ + "edit", + "modify", + "update", + "revise", + "amend", + "create", + "change", + "write", + "writer", + "writing", + "pencil", + "compose", + "draft", + "author", + "annotate", + "comment", + "note", + "draw", + "sketch", + "doodle", + "rename", + "customize", + "rubber", + "stationery", + "artist", + "measurements", + "centimeters", + "cm", + "millimeters", + "mm", + "metre", + "foot", + "feet", + "inches", + "units", + "size", + "length", + "width", + "height", + "dimensions", + "depth", + "breadth", + "extent" + ] + }, + { + "name": "pencil-sparkles", + "tags": [ + "edit", + "modify", + "update", + "revise", + "amend", + "create", + "change", + "write", + "writer", + "writing", + "pencil", + "compose", + "draft", + "author", + "annotate", + "comment", + "note", + "draw", + "sketch", + "doodle", + "rename", + "customize", + "rubber", + "stationery", + "artist", + "sparkle", + "magic", + "ai", + "stars", + "glitter", + "shimmer", + "twinkle", + "shine", + "shiny", + "enchantment", + "polish", + "sanitize", + "artificial intelligence", + "smart", + "assistant", + "automation", + "generate", + "enhancement", + "tools", + "wizard", + "magician" + ] + }, + { "name": "pentagon", "tags": ["shape"] }, + { + "name": "percent", + "tags": [ + "discount", + "sale", + "offer", + "deal", + "markdown", + "savings", + "reduction", + "rate", + "interest", + "tax", + "ratio", + "fraction", + "proportion", + "percentage", + "%", + "marketing", + "reduced", + "price tag", + "modulo", + "modulus", + "remainder" + ] + }, + { + "name": "perfume-bottle", + "tags": [ + "eau de parfum", + "eau de toilette", + "essence", + "aftershave", + "cologne", + "aroma", + "fragrance", + "smell", + "scent", + "bouquet", + "gift", + "duty free", + "spray", + "puff", + "atomizer", + "mist", + "beauty", + "skincare", + "cosmetics" + ] + }, + { + "name": "person-standing", + "tags": ["people", "human", "accessibility", "stick figure"] + }, + { + "name": "phi", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "math", + "golden-ratio", + "symbol", + "greek", + "letter", + "constant", + "flux", + "magnetic-flux" + ] + }, + { + "name": "philippine-peso", + "tags": [ + "currency", + "money", + "cash", + "banknote", + "funds", + "finance", + "payment", + "balance", + "transaction", + "bill", + "invoice", + "receipt", + "fee", + "subscription", + "price", + "cost", + "amount", + "revenue", + "income", + "expense", + "banking", + "exchange", + "financial", + "economy", + "pricing", + "prices", + "monetization", + "peso", + "php" + ] + }, + { "name": "phone", "tags": ["call"] }, + { "name": "phone-call", "tags": ["ring"] }, + { "name": "phone-forwarded", "tags": ["call"] }, + { "name": "phone-incoming", "tags": ["call"] }, + { + "name": "phone-log", + "tags": [ + "call", + "telephone", + "communication", + "mobile", + "device", + "contact", + "history", + "data", + "information" + ] + }, + { "name": "phone-missed", "tags": ["call"] }, + { + "name": "phone-off", + "tags": [ + "call", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "mute" + ] + }, + { "name": "phone-outgoing", "tags": ["call"] }, + { + "name": "pi", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "constant", + "code", + "coding", + "programming", + "symbol", + "trigonometry", + "geometry", + "formula" + ] + }, + { + "name": "piano", + "tags": [ + "music", + "audio", + "sound", + "noise", + "notes", + "chord", + "keys", + "octave", + "acoustic", + "instrument", + "play", + "pianist", + "performance", + "concert" + ] + }, + { + "name": "pickaxe", + "tags": [ + "mining", + "mine", + "land worker", + "extraction", + "labor", + "construction", + "progress", + "advancement", + "crafting", + "building", + "creation" + ] + }, + { + "name": "picture-in-picture", + "tags": [ + "display", + "play", + "video", + "pop out", + "always on top", + "window", + "inset", + "multitask" + ] + }, + { + "name": "picture-in-picture-2", + "tags": [ + "display", + "play", + "video", + "pop out", + "always on top", + "window", + "inset", + "multitask" + ] + }, + { "name": "piggy-bank", "tags": ["money", "savings"] }, + { + "name": "pilcrow", + "tags": [ + "paragraph", + "mark", + "paraph", + "blind", + "typography", + "type", + "text", + "prose", + "symbol" + ] + }, + { + "name": "pilcrow-left", + "tags": [ + "paragraph", + "mark", + "paraph", + "blind", + "typography", + "type", + "text", + "prose", + "symbol", + "direction", + "movement", + "horizontal", + "leftward", + "leftwards", + "west" + ] + }, + { + "name": "pilcrow-right", + "tags": [ + "paragraph", + "mark", + "paraph", + "blind", + "typography", + "type", + "text", + "prose", + "symbol", + "direction", + "movement", + "horizontal", + "rightward", + "rightwards", + "east" + ] + }, + { + "name": "pill", + "tags": [ + "medicine", + "medication", + "drug", + "prescription", + "tablet", + "pharmacy" + ] + }, + { + "name": "pill-bottle", + "tags": [ + "medicine", + "medication", + "drug", + "prescription", + "tablet", + "pharmacy", + "supplement", + "vitamin", + "capsule", + "jar", + "container", + "healthcare", + "pharmaceutical" + ] + }, + { "name": "pin", "tags": ["save", "map", "lock", "fix"] }, + { + "name": "pin-off", + "tags": [ + "save", + "map", + "lock", + "fix", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "unpin", + "unlock", + "unfix", + "unsave", + "remove" + ] + }, + { + "name": "pipette", + "tags": ["eye dropper", "color picker", "lab", "chemistry"] + }, + { "name": "pizza", "tags": ["pie", "quiche", "food"] }, + { "name": "plane", "tags": ["plane", "trip", "airplane"] }, + { + "name": "plane-landing", + "tags": ["plane", "trip", "airplane", "arrival", "landing"] + }, + { + "name": "plane-takeoff", + "tags": ["plane", "trip", "airplane", "departure", "takeoff"] + }, + { + "name": "plant-pot", + "tags": [ + "plant", + "leaf", + "nature", + "pot", + "houseplant", + "gardening", + "planter", + "decor", + "indoor" + ] + }, + { + "name": "play", + "tags": [ + "start", + "run", + "running", + "execute", + "launch", + "resume", + "preview", + "begin", + "continue", + "proceed", + "activate", + "trigger", + "initiate", + "music", + "audio", + "video" + ] + }, + { + "name": "play-off", + "tags": [ + "start", + "run", + "running", + "execute", + "launch", + "resume", + "preview", + "begin", + "continue", + "proceed", + "activate", + "trigger", + "initiate", + "music", + "audio", + "video", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line" + ] + }, + { + "name": "playing-card", + "tags": [ + "deck", + "draw", + "deal", + "shuffle", + "chance", + "random", + "selection", + "tabletop", + "flashcard", + "study", + "learning", + "prompt", + "icebreaker", + "conversation", + "collectible", + "trading", + "poker", + "casino", + "game", + "gambling", + "suit" + ] + }, + { + "name": "playing-cards", + "tags": [ + "deck", + "stack", + "shuffle", + "deal", + "draw", + "hand", + "tabletop", + "planning poker", + "scrum", + "agile", + "estimation", + "estimate", + "flashcards", + "study", + "learning", + "collectible", + "collection", + "trading", + "poker", + "casino", + "game", + "gambling", + "suit" + ] + }, + { + "name": "playing-cards-fan", + "tags": [ + "deck", + "stack", + "shuffle", + "deal", + "draw", + "hand", + "tabletop", + "planning poker", + "scrum", + "agile", + "estimation", + "estimate", + "flashcards", + "study", + "learning", + "collectible", + "collection", + "trading", + "poker", + "casino", + "game", + "gambling", + "suit", + "fan", + "spread", + "dealt", + "prompt", + "icebreaker", + "conversation" + ] + }, + { + "name": "plug", + "tags": [ + "electricity", + "energy", + "electronics", + "socket", + "outlet", + "power", + "voltage", + "current", + "charger" + ] + }, + { + "name": "plug-2", + "tags": [ + "electricity", + "energy", + "electronics", + "socket", + "outlet", + "power", + "voltage", + "current", + "charger" + ] + }, + { + "name": "plug-zap", + "tags": [ + "electricity", + "energy", + "electronics", + "socket", + "outlet", + "power", + "voltage", + "current", + "charger", + "flash", + "camera", + "lightning", + "quick", + "charge", + "charging", + "battery", + "connect" + ] + }, + { + "name": "plus", + "tags": [ + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added", + "positive", + "calculate", + "toolbar", + "crosshair", + "aim", + "target", + "scope", + "sight", + "reticule", + "maximum", + "upgrade" + ] + }, + { + "name": "pocket-knife", + "tags": [ + "swiss army knife", + "penknife", + "multi-tool", + "multitask", + "blade", + "cutter", + "gadget", + "corkscrew" + ] + }, + { + "name": "podium", + "tags": [ + "digit", + "number", + "numeral", + "numeric", + "numerical", + "award", + "stage", + "winner", + "celebration", + "performance", + "medal", + "success", + "achievement", + "highlight", + "ranking", + "winning", + "place", + "placing", + "leaderboard", + "first", + "second", + "third", + "gold", + "silver", + "bronze" + ] + }, + { "name": "pointer", "tags": ["mouse"] }, + { + "name": "pointer-off", + "tags": [ + "mouse", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line" + ] + }, + { + "name": "popcorn", + "tags": [ + "cinema", + "movies", + "films", + "salted", + "sweet", + "sugar", + "candy", + "snack" + ] + }, + { "name": "popsicle", "tags": ["ice lolly", "ice cream", "sweet", "food"] }, + { + "name": "pound-sterling", + "tags": [ + "currency", + "money", + "cash", + "banknote", + "funds", + "finance", + "payment", + "balance", + "transaction", + "bill", + "invoice", + "receipt", + "fee", + "subscription", + "price", + "cost", + "amount", + "revenue", + "income", + "expense", + "banking", + "exchange", + "financial", + "economy", + "pricing", + "prices", + "monetization" + ] + }, + { + "name": "power", + "tags": [ + "on", + "off", + "device", + "switch", + "toggle", + "binary", + "boolean", + "reboot", + "restart", + "button", + "keyboard", + "troubleshoot" + ] + }, + { + "name": "power-off", + "tags": [ + "on", + "off", + "device", + "switch", + "toggle", + "binary", + "boolean", + "reboot", + "restart", + "button", + "keyboard", + "troubleshoot", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line" + ] + }, + { + "name": "presentation", + "tags": [ + "screen", + "whiteboard", + "marker pens", + "markers", + "blackboard", + "chalk", + "easel", + "school", + "learning", + "lesson", + "office", + "meeting", + "project", + "planning" + ] + }, + { "name": "printer", "tags": ["fax", "office", "device"] }, + { + "name": "printer-3d", + "tags": [ + "model", + "hardware", + "technology", + "device", + "factory", + "manufacturing", + "art", + "extruder", + "stl", + "obj", + "step", + "additive", + "fabrication", + "rapid prototype", + "layer", + "filament", + "nozzle", + "maker", + "machine" + ] + }, + { + "name": "printer-check", + "tags": [ + "fax", + "office", + "device", + "checkmark", + "done", + "completed", + "finished", + "successful", + "confirmed", + "verified", + "validated", + "approved", + "accepted", + "correct", + "valid", + "ticked", + "task", + "todo", + "printed" + ] + }, + { + "name": "printer-x", + "tags": [ + "fax", + "office", + "device", + "x", + "remove", + "delete", + "cancel", + "clear", + "close", + "discard", + "dismiss", + "erase", + "abort", + "reject", + "canceled", + "cancelled", + "cancellation", + "cross", + "times", + "ex", + "×", + "error" + ] + }, + { + "name": "projector", + "tags": [ + "cinema", + "film", + "movie", + "home video", + "presentation", + "slideshow", + "office", + "meeting", + "project", + "planning" + ] + }, + { + "name": "proportions", + "tags": [ + "screens", + "sizes", + "rotate", + "rotation", + "adjust", + "aspect ratio", + "16:9", + "widescreen", + "4:3", + "resolution", + "responsive", + "mobile", + "desktop", + "dimensions", + "monitor", + "orientation", + "portrait", + "landscape" + ] + }, + { "name": "puzzle", "tags": ["component", "module", "part", "piece"] }, + { + "name": "pyramid", + "tags": [ + "prism", + "triangle", + "triangular", + "hierarchy", + "structure", + "geometry", + "ancient", + "egyptian", + "landmark", + "tourism" + ] + }, + { + "name": "qr-code", + "tags": ["barcode", "scan", "link", "url", "information", "digital"] + }, + { "name": "quote", "tags": ["quotation"] }, + { + "name": "rabbit", + "tags": [ + "animal", + "rodent", + "pet", + "pest", + "bunny", + "hare", + "fast", + "speed", + "hop" + ] + }, + { "name": "radar", "tags": ["scan", "sonar", "detect", "find", "locate"] }, + { + "name": "radiation", + "tags": [ + "radioactive", + "nuclear", + "fallout", + "waste", + "atomic", + "physics", + "particle", + "element", + "molecule" + ] + }, + { + "name": "radical", + "tags": [ + "calculate", + "formula", + "math", + "operator", + "root", + "square", + "symbol" + ] + }, + { + "name": "radio", + "tags": ["signal", "broadcast", "connectivity", "live", "frequency"] + }, + { + "name": "radio-off", + "tags": [ + "signal", + "broadcast", + "connectivity", + "live", + "frequency", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line" + ] + }, + { "name": "radio-receiver", "tags": ["device", "music", "connect"] }, + { + "name": "radio-tower", + "tags": ["signal", "broadcast", "connectivity", "live", "frequency"] + }, + { + "name": "radius", + "tags": [ + "shape", + "circle", + "geometry", + "trigonometry", + "radii", + "calculate", + "measure", + "size" + ] + }, + { + "name": "rainbow", + "tags": [ + "colors", + "colours", + "spectrum", + "light", + "prism", + "arc", + "clear", + "sunshine" + ] + }, + { + "name": "rat", + "tags": [ + "mouse", + "mice", + "gerbil", + "rodent", + "pet", + "pest", + "plague", + "disease" + ] + }, + { + "name": "ratio", + "tags": [ + "screens", + "sizes", + "rotate", + "rotation", + "adjust", + "aspect ratio", + "proportions", + "16:9", + "widescreen", + "4:3", + "resolution", + "responsive", + "mobile", + "desktop", + "dimensions", + "monitor", + "orientation", + "portrait", + "landscape" + ] + }, + { + "name": "receipt", + "tags": [ + "bill", + "voucher", + "slip", + "check", + "counterfoil", + "currency", + "dollar", + "usd", + "$" + ] + }, + { + "name": "receipt-cent", + "tags": [ + "bill", + "voucher", + "slip", + "check", + "counterfoil", + "currency", + "dollar", + "usd", + "$", + "cents", + "¢" + ] + }, + { + "name": "receipt-euro", + "tags": [ + "bill", + "voucher", + "slip", + "check", + "counterfoil", + "currency", + "dollar", + "usd", + "$", + "€" + ] + }, + { + "name": "receipt-indian-rupee", + "tags": [ + "bill", + "voucher", + "slip", + "check", + "counterfoil", + "currency", + "dollar", + "usd", + "$", + "inr", + "₹" + ] + }, + { + "name": "receipt-japanese-yen", + "tags": [ + "bill", + "voucher", + "slip", + "check", + "counterfoil", + "currency", + "dollar", + "usd", + "$", + "jpy", + "¥" + ] + }, + { + "name": "receipt-pound-sterling", + "tags": [ + "bill", + "voucher", + "slip", + "check", + "counterfoil", + "currency", + "dollar", + "usd", + "$", + "money", + "cash", + "banknote", + "funds", + "finance", + "payment", + "balance", + "transaction", + "invoice", + "receipt", + "fee", + "subscription", + "price", + "cost", + "amount", + "revenue", + "income", + "expense", + "banking", + "exchange", + "financial", + "economy", + "pricing", + "prices", + "monetization", + "british", + "gbp", + "£" + ] + }, + { + "name": "receipt-russian-ruble", + "tags": [ + "bill", + "voucher", + "slip", + "check", + "counterfoil", + "currency", + "dollar", + "usd", + "$", + "rub", + "₽" + ] + }, + { + "name": "receipt-swiss-franc", + "tags": [ + "bill", + "voucher", + "slip", + "check", + "counterfoil", + "currency", + "dollar", + "usd", + "$", + "chf", + "₣" + ] + }, + { + "name": "receipt-text", + "tags": [ + "bill", + "voucher", + "slip", + "check", + "counterfoil", + "currency", + "dollar", + "usd", + "$", + "details", + "small print", + "terms", + "conditions", + "contract" + ] + }, + { + "name": "receipt-turkish-lira", + "tags": [ + "bill", + "voucher", + "slip", + "check", + "counterfoil", + "currency", + "dollar", + "usd", + "$", + "try", + "₺" + ] + }, + { + "name": "rectangle-circle", + "tags": ["compose", "keyboard", "key", "button"] + }, + { + "name": "rectangle-ellipsis", + "tags": [ + "login", + "password", + "authenticate", + "2fa", + "field", + "fill", + "ellipsis", + "et cetera", + "etc", + "loader", + "loading", + "progress", + "pending", + "throbber", + "menu", + "options", + "operator", + "code", + "spread", + "rest", + "more", + "further", + "extra", + "overflow", + "dots", + "…", + "..." + ] + }, + { + "name": "rectangle-goggles", + "tags": ["vr", "virtual", "augmented", "reality", "headset", "goggles"] + }, + { + "name": "rectangle-horizontal", + "tags": ["rectangle", "aspect ratio", "16:9", "horizontal", "shape"] + }, + { + "name": "rectangle-vertical", + "tags": ["rectangle", "aspect ratio", "9:16", "vertical", "shape"] + }, + { "name": "recycle", "tags": ["sustainability", "salvage", "arrows"] }, + { "name": "redo", "tags": ["undo", "rerun", "history"] }, + { "name": "redo-2", "tags": ["undo", "rerun", "history"] }, + { + "name": "redo-dot", + "tags": ["undo", "rerun", "history", "redo", "step", "over", "forward"] + }, + { + "name": "refresh-ccw", + "tags": [ + "synchronize", + "synchronise", + "refresh", + "reload", + "update", + "reconnect", + "retry", + "renew", + "rerun", + "repeat", + "cycle", + "arrows", + "rotate", + "circular" + ] + }, + { + "name": "refresh-ccw-dot", + "tags": [ + "synchronize", + "synchronise", + "refresh", + "reload", + "update", + "reconnect", + "retry", + "renew", + "rerun", + "repeat", + "cycle", + "arrows", + "rotate", + "circular", + "issue", + "code", + "coding", + "version control" + ] + }, + { + "name": "refresh-cw", + "tags": [ + "synchronize", + "synchronise", + "refresh", + "reload", + "update", + "reconnect", + "retry", + "renew", + "rerun", + "repeat", + "cycle", + "rotate", + "arrows", + "circular" + ] + }, + { + "name": "refresh-cw-off", + "tags": [ + "synchronize", + "synchronise", + "refresh", + "reload", + "update", + "reconnect", + "retry", + "renew", + "rerun", + "repeat", + "cycle", + "rotate", + "arrows", + "circular", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "no", + "stop", + "error", + "disconnect", + "ignore" + ] + }, + { + "name": "refrigerator", + "tags": ["fridge", "freezer", "cooler", "icebox", "chiller", "cold storage"] + }, + { "name": "regex", "tags": ["search", "text", "code"] }, + { + "name": "remove-formatting", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "minus", + "remove", + "delete", + "cancel", + "erase", + "subtract", + "reduce", + "clear", + "exclude", + "-", + "format", + "x", + "times" + ] + }, + { "name": "repeat", "tags": ["loop", "arrows"] }, + { + "name": "repeat-1", + "tags": ["digit", "number", "numeral", "numeric", "numerical", "replay"] + }, + { + "name": "repeat-2", + "tags": ["loop", "arrows", "retweet", "repost", "share", "repeat"] + }, + { + "name": "repeat-off", + "tags": [ + "loop", + "arrows", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "recurring", + "again" + ] + }, + { "name": "replace", "tags": ["search", "substitute", "swap", "change"] }, + { "name": "replace-all", "tags": ["search", "substitute", "swap", "change"] }, + { "name": "reply", "tags": ["email"] }, + { "name": "reply-all", "tags": ["email"] }, + { "name": "rewind", "tags": ["music"] }, + { + "name": "ribbon", + "tags": ["awareness", "strip", "band", "tape", "strap", "cordon"] + }, + { + "name": "road", + "tags": [ + "road", + "street", + "highway", + "route", + "path", + "transport", + "traffic", + "drive", + "map" + ] + }, + { + "name": "robot-arm", + "tags": [ + "mechanical", + "automation", + "factory", + "manufacture", + "technology", + "cyborg", + "industrial", + "hardware", + "machinery" + ] + }, + { + "name": "robot-vacuum", + "tags": [ + "appliance", + "cleaning", + "household", + "housekeeping", + "tool", + "maintenance", + "sweeping", + "hygiene", + "chores", + "automation", + "smart home", + "device", + "floor", + "dust", + "debris", + "navigation", + "sensor" + ] + }, + { + "name": "rocket", + "tags": ["release", "boost", "launch", "space", "version"] + }, + { + "name": "rocking-chair", + "tags": ["chair", "furniture", "seat", "comfort", "relax"] + }, + { + "name": "roller-coaster", + "tags": [ + "attraction", + "entertainment", + "amusement park", + "theme park", + "funfair" + ] + }, + { + "name": "rose", + "tags": [ + "roses", + "thorns", + "petals", + "plant", + "stem", + "leaves", + "spring", + "bloom", + "blossom", + "gardening", + "botanical", + "flora", + "florist", + "bouquet", + "bunch", + "gift", + "date", + "romance", + "romantic", + "valentines day", + "special occasion" + ] + }, + { + "name": "rotate-3d", + "tags": ["gizmo", "transform", "orientation", "orbit", "axis"] + }, + { + "name": "rotate-ccw", + "tags": [ + "arrow", + "left", + "counter-clockwise", + "restart", + "reload", + "rerun", + "refresh", + "backup", + "undo", + "replay", + "redo", + "retry", + "rewind", + "reverse" + ] + }, + { + "name": "rotate-ccw-clock", + "tags": [ + "arrow", + "left", + "counter-clockwise", + "restart", + "reload", + "rerun", + "refresh", + "backup", + "undo", + "replay", + "redo", + "retry", + "rewind", + "reverse", + "clock", + "time", + "hour", + "minute", + "second", + "timestamp", + "timer", + "duration", + "interval", + "frequency", + "schedule", + "deadline", + "pending", + "delayed", + "watch", + "history", + "timeline", + "version", + "time machine", + "ccw" + ] + }, + { + "name": "rotate-ccw-key", + "tags": [ + "arrow", + "left", + "counter-clockwise", + "restart", + "reload", + "rerun", + "refresh", + "backup", + "undo", + "replay", + "redo", + "retry", + "rewind", + "reverse", + "key", + "password", + "security", + "secure", + "keychain", + "key ring", + "access", + "credentials", + "unlocked", + "permission", + "authentication", + "authorization", + "passkey", + "secret", + "token", + "API key", + "encryption", + "protection", + "protected", + "privacy", + "private", + "public", + "license", + "ownership", + "change" + ] + }, + { + "name": "rotate-ccw-square", + "tags": [ + "arrow", + "left", + "counter-clockwise", + "restart", + "reload", + "rerun", + "refresh", + "backup", + "undo", + "replay", + "redo", + "retry", + "rewind", + "reverse", + "rotate", + "image", + "90", + "45", + "degrees", + "°" + ] + }, + { + "name": "rotate-cw", + "tags": [ + "arrow", + "right", + "clockwise", + "refresh", + "reload", + "rerun", + "redo" + ] + }, + { + "name": "rotate-cw-clock", + "tags": [ + "arrow", + "right", + "clockwise", + "refresh", + "reload", + "rerun", + "redo", + "clock", + "time", + "hour", + "minute", + "second", + "timestamp", + "timer", + "duration", + "interval", + "frequency", + "schedule", + "deadline", + "pending", + "delayed", + "watch", + "history", + "modify", + "edit", + "sync", + "renew", + "revision", + "settings", + "adjust", + "upgrade", + "timeline", + "version", + "time machine", + "backup", + "synchronize", + "circular", + "cycle", + "update" + ] + }, + { + "name": "rotate-cw-fading-clock", + "tags": [ + "arrow", + "right", + "clockwise", + "refresh", + "reload", + "rerun", + "redo", + "clock", + "time", + "hour", + "minute", + "second", + "timestamp", + "timer", + "duration", + "interval", + "frequency", + "schedule", + "deadline", + "pending", + "delayed", + "watch", + "history", + "waiting", + "hourglass", + "loading", + "pause" + ] + }, + { + "name": "rotate-cw-square", + "tags": [ + "arrow", + "right", + "clockwise", + "refresh", + "reload", + "rerun", + "redo", + "rotate", + "image", + "90", + "45", + "degrees", + "°" + ] + }, + { + "name": "route", + "tags": ["path", "journey", "planner", "points", "stops", "stations"] + }, + { + "name": "route-off", + "tags": [ + "path", + "journey", + "planner", + "points", + "stops", + "stations", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "reset", + "clear", + "closed" + ] + }, + { "name": "router", "tags": ["computer", "server", "cloud"] }, + { + "name": "rows-2", + "tags": [ + "lines", + "list", + "queue", + "preview", + "panel", + "paragraphs", + "parallel", + "series", + "split", + "vertical", + "horizontal", + "half", + "center", + "middle", + "even", + "drawer" + ] + }, + { + "name": "rows-3", + "tags": [ + "lines", + "list", + "queue", + "preview", + "paragraphs", + "parallel", + "series", + "split", + "vertical", + "horizontal", + "half", + "center", + "middle", + "even", + "drawers" + ] + }, + { + "name": "rows-4", + "tags": [ + "lines", + "list", + "queue", + "preview", + "paragraphs", + "parallel", + "series", + "split", + "vertical", + "horizontal", + "half", + "center", + "middle", + "even", + "drawers", + "grill" + ] + }, + { + "name": "rss", + "tags": [ + "feed", + "subscribe", + "news", + "updates", + "notifications", + "content", + "blog", + "articles", + "broadcast", + "syndication", + "reader", + "channels", + "posts", + "publishing", + "digest", + "alert", + "following", + "inbox", + "newsletter", + "weblog", + "podcast" + ] + }, + { + "name": "rugby-ball", + "tags": ["rugby", "football", "ball", "goal", "sport"] + }, + { + "name": "ruler", + "tags": [ + "measurements", + "centimeters", + "cm", + "millimeters", + "mm", + "metre", + "foot", + "feet", + "inches", + "units", + "size", + "length", + "width", + "height", + "dimensions", + "depth", + "breadth", + "extent", + "stationery" + ] + }, + { + "name": "ruler-dimension-line", + "tags": [ + "measurements", + "centimeters", + "cm", + "millimeters", + "mm", + "metre", + "foot", + "feet", + "inches", + "units", + "size", + "length", + "width", + "height", + "dimensions", + "depth", + "breadth", + "extent", + "stationery" + ] + }, + { + "name": "russian-ruble", + "tags": [ + "currency", + "money", + "cash", + "banknote", + "funds", + "finance", + "payment", + "balance", + "transaction", + "bill", + "invoice", + "receipt", + "fee", + "subscription", + "price", + "cost", + "amount", + "revenue", + "income", + "expense", + "banking", + "exchange", + "financial", + "economy", + "pricing", + "prices", + "monetization" + ] + }, + { "name": "sailboat", "tags": ["ship", "boat", "harbor", "harbour", "dock"] }, + { + "name": "salad", + "tags": [ + "food", + "vegetarian", + "dish", + "restaurant", + "course", + "meal", + "side", + "vegetables", + "health" + ] + }, + { + "name": "sandwich", + "tags": ["food", "snack", "dish", "restaurant", "lunch", "meal"] + }, + { "name": "satellite", "tags": ["space station", "orbit", "transmitter"] }, + { + "name": "satellite-dish", + "tags": [ + "antenna", + "receiver", + "dish aerial", + "saucer", + "communication", + "broadcast", + "signal" + ] + }, + { + "name": "saudi-riyal", + "tags": [ + "currency", + "money", + "cash", + "banknote", + "funds", + "finance", + "payment", + "balance", + "transaction", + "bill", + "invoice", + "receipt", + "fee", + "subscription", + "price", + "cost", + "amount", + "revenue", + "income", + "expense", + "banking", + "exchange", + "financial", + "economy", + "pricing", + "prices", + "monetization" + ] + }, + { "name": "save", "tags": ["floppy disk"] }, + { "name": "save-all", "tags": ["floppy disk", "floppy disks", "copy"] }, + { + "name": "save-check", + "tags": [ + "floppy disk", + "checkmark", + "done", + "completed", + "finished", + "successful", + "confirmed", + "verified", + "validated", + "approved", + "accepted", + "correct", + "valid", + "ticked", + "task", + "todo", + "save", + "save-check", + "floppy-disk", + "saved", + "save-success" + ] + }, + { + "name": "save-off", + "tags": [ + "floppy disk", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "unsalvageable" + ] + }, + { + "name": "save-pen", + "tags": [ + "floppy disk", + "edit", + "modify", + "update", + "revise", + "amend", + "create", + "change", + "write", + "writer", + "writing", + "pencil", + "compose", + "draft", + "author", + "annotate", + "comment", + "note", + "draw", + "sketch", + "doodle", + "rename", + "customize", + "directory" + ] + }, + { + "name": "save-plus", + "tags": [ + "floppy disk", + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added", + "save", + "update" + ] + }, + { + "name": "scale", + "tags": [ + "balance", + "legal", + "license", + "right", + "rule", + "law", + "justice", + "weight", + "measure", + "compare", + "judge", + "fair", + "ethics", + "decision" + ] + }, + { "name": "scale-3d", "tags": ["gizmo", "transform", "size", "axis"] }, + { "name": "scaling", "tags": ["scale", "resize", "design"] }, + { + "name": "scan", + "tags": [ + "qr-code", + "barcode", + "checkout", + "augmented reality", + "ar", + "target", + "surveillance", + "camera", + "lens", + "focus", + "frame", + "select", + "box", + "boundary", + "bounds", + "area", + "square", + "dashed" + ] + }, + { + "name": "scan-barcode", + "tags": [ + "qr-code", + "barcode", + "checkout", + "augmented reality", + "ar", + "target", + "surveillance", + "camera", + "lens", + "focus", + "frame", + "select", + "box", + "boundary", + "bounds", + "area", + "square", + "dashed", + "till", + "cart", + "transaction", + "purchase", + "buy", + "product", + "packaging", + "retail", + "consumer" + ] + }, + { + "name": "scan-box", + "tags": [ + "qr-code", + "barcode", + "checkout", + "augmented reality", + "ar", + "target", + "surveillance", + "camera", + "lens", + "focus", + "frame", + "select", + "box", + "boundary", + "bounds", + "area", + "square", + "dashed", + "3d", + "object detection", + "object recognition", + "tracking", + "spatial computing", + "capture", + "cube", + "bounding box", + "shape", + "lidar", + "depth", + "scanning", + "mapping", + "placement" + ] + }, + { + "name": "scan-eye", + "tags": [ + "qr-code", + "barcode", + "checkout", + "augmented reality", + "ar", + "target", + "surveillance", + "camera", + "lens", + "focus", + "frame", + "select", + "box", + "boundary", + "bounds", + "area", + "square", + "dashed", + "preview", + "zoom", + "expand", + "fullscreen", + "gallery", + "image", + "watch", + "retina", + "biometric", + "identification", + "authentication", + "access", + "login" + ] + }, + { + "name": "scan-face", + "tags": [ + "qr-code", + "barcode", + "checkout", + "augmented reality", + "ar", + "target", + "surveillance", + "camera", + "lens", + "focus", + "frame", + "select", + "box", + "boundary", + "bounds", + "area", + "square", + "dashed", + "face", + "biometric", + "identification", + "authentication", + "2fa", + "access", + "login" + ] + }, + { + "name": "scan-heart", + "tags": [ + "qr-code", + "barcode", + "checkout", + "augmented reality", + "ar", + "target", + "surveillance", + "camera", + "lens", + "focus", + "frame", + "select", + "box", + "boundary", + "bounds", + "area", + "square", + "dashed", + "favorite", + "favourite", + "like", + "love", + "save", + "wishlist", + "reaction", + "health", + "heart rate", + "pulse", + "monitoring", + "healthiness", + "screening" + ] + }, + { + "name": "scan-line", + "tags": [ + "qr-code", + "barcode", + "checkout", + "augmented reality", + "ar", + "target", + "surveillance", + "camera", + "lens", + "focus", + "frame", + "select", + "box", + "boundary", + "bounds", + "area", + "square", + "dashed", + "till", + "cart", + "transaction", + "purchase", + "buy", + "product", + "packaging", + "retail", + "consumer" + ] + }, + { + "name": "scan-qr-code", + "tags": [ + "qr-code", + "barcode", + "checkout", + "augmented reality", + "ar", + "target", + "surveillance", + "camera", + "lens", + "focus", + "frame", + "select", + "box", + "boundary", + "bounds", + "area", + "square", + "dashed", + "scan", + "qr code", + "url", + "information", + "digital", + "scanner" + ] + }, + { + "name": "scan-search", + "tags": [ + "qr-code", + "barcode", + "checkout", + "augmented reality", + "ar", + "target", + "surveillance", + "camera", + "lens", + "focus", + "frame", + "select", + "box", + "boundary", + "bounds", + "area", + "square", + "dashed", + "search", + "magnifier", + "scan", + "scanning", + "browsing", + "finding", + "find", + "lookup", + "query", + "locate", + "explore", + "discover", + "browse", + "inspect", + "examine", + "investigate", + "magnifying glass", + "zoom", + "preview", + "expand", + "fullscreen", + "gallery", + "image" + ] + }, + { + "name": "scan-square", + "tags": [ + "qr-code", + "barcode", + "checkout", + "augmented reality", + "ar", + "target", + "surveillance", + "camera", + "lens", + "focus", + "frame", + "select", + "box", + "boundary", + "bounds", + "area", + "square", + "dashed", + "scan", + "detect", + "recognition", + "object", + "viewfinder", + "capture", + "shape", + "scanner", + "overlay", + "crop", + "marker" + ] + }, + { + "name": "scan-text", + "tags": [ + "qr-code", + "barcode", + "checkout", + "augmented reality", + "ar", + "target", + "surveillance", + "camera", + "lens", + "focus", + "frame", + "select", + "box", + "boundary", + "bounds", + "area", + "square", + "dashed", + "recognition", + "read", + "translate", + "copy", + "lines" + ] + }, + { + "name": "school", + "tags": [ + "building", + "education", + "childhood", + "university", + "learning", + "campus", + "scholar", + "student", + "lecture", + "degree", + "course", + "academia", + "study", + "knowledge", + "classroom", + "research", + "diploma", + "graduation", + "professor", + "tutorial", + "homework", + "assignment", + "exam" + ] + }, + { + "name": "scissors", + "tags": ["cut", "snip", "chop", "stationery", "crafts"] + }, + { + "name": "scissors-line-dashed", + "tags": [ + "cut", + "snip", + "chop", + "stationery", + "crafts", + "cut here", + "along", + "instructions", + "diagram" + ] + }, + { + "name": "scooter", + "tags": [ + "vehicle", + "drive", + "trip", + "journey", + "transport", + "electric", + "ride", + "urban", + "commute", + "speed" + ] + }, + { + "name": "scratch-blocks", + "tags": [ + "code", + "blocks", + "scratch", + "turbowarp", + "mistwarp", + "visual programming", + "block-based", + "drag-and-drop", + "editor", + "education", + "learning", + "programming", + "kids", + "integration" + ] + }, + { "name": "screen-share", "tags": ["host", "desktop", "monitor"] }, + { + "name": "screen-share-off", + "tags": [ + "host", + "desktop", + "monitor", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "disconnect" + ] + }, + { + "name": "screw", + "tags": [ + "fastener", + "hardware", + "bolt", + "screwdriver", + "repair", + "assembly", + "diy", + "flathead" + ] + }, + { + "name": "scroll", + "tags": [ + "paper", + "log", + "scripture", + "document", + "notes", + "parchment", + "list", + "long", + "script", + "story", + "code", + "coding" + ] + }, + { + "name": "scroll-text", + "tags": [ + "paper", + "log", + "scripture", + "document", + "notes", + "parchment", + "list", + "long", + "script", + "story", + "code", + "coding" + ] + }, + { + "name": "search", + "tags": [ + "search", + "magnifier", + "scan", + "scanning", + "browsing", + "finding", + "find", + "lookup", + "query", + "locate", + "explore", + "discover", + "browse", + "inspect", + "examine", + "investigate", + "magnifying glass", + "lens", + "zoom", + "enlarge" + ] + }, + { + "name": "search-alert", + "tags": [ + "search", + "magnifier", + "scan", + "scanning", + "browsing", + "finding", + "find", + "lookup", + "query", + "locate", + "explore", + "discover", + "browse", + "inspect", + "examine", + "investigate", + "magnifying glass", + "lens", + "zoom", + "enlarge", + "alert", + "warning", + "danger", + "caution", + "notice", + "error", + "risk", + "concern", + "hazard", + "exclamation mark", + "exclamation point", + "!", + "stop", + "anomaly" + ] + }, + { + "name": "search-check", + "tags": [ + "search", + "magnifier", + "scan", + "scanning", + "browsing", + "finding", + "find", + "lookup", + "query", + "locate", + "explore", + "discover", + "browse", + "inspect", + "examine", + "investigate", + "magnifying glass", + "lens", + "zoom", + "enlarge", + "checkmark", + "done", + "completed", + "finished", + "successful", + "confirmed", + "verified", + "validated", + "approved", + "accepted", + "correct", + "valid", + "ticked", + "task", + "todo", + "found" + ] + }, + { + "name": "search-code", + "tags": [ + "search", + "magnifier", + "scan", + "scanning", + "browsing", + "finding", + "find", + "lookup", + "query", + "locate", + "explore", + "discover", + "browse", + "inspect", + "examine", + "investigate", + "magnifying glass", + "lens", + "zoom", + "enlarge", + "coding", + "programming", + "development", + "grep", + "chevrons", + "<>" + ] + }, + { + "name": "search-slash", + "tags": [ + "search", + "magnifier", + "scan", + "scanning", + "browsing", + "finding", + "find", + "lookup", + "query", + "locate", + "explore", + "discover", + "browse", + "inspect", + "examine", + "investigate", + "magnifying glass", + "lens", + "zoom", + "enlarge", + "stop", + "clear", + "cancel", + "abort", + "/" + ] + }, + { + "name": "search-x", + "tags": [ + "search", + "magnifier", + "scan", + "scanning", + "browsing", + "finding", + "find", + "lookup", + "query", + "locate", + "explore", + "discover", + "browse", + "inspect", + "examine", + "investigate", + "magnifying glass", + "lens", + "zoom", + "enlarge", + "x", + "remove", + "delete", + "cancel", + "clear", + "close", + "discard", + "dismiss", + "erase", + "abort", + "reject", + "canceled", + "cancelled", + "cancellation", + "cross", + "times", + "ex", + "×", + "stop" + ] + }, + { + "name": "section", + "tags": [ + "mark", + "typography", + "punctuation", + "legal", + "type", + "text", + "prose", + "symbol" + ] + }, + { + "name": "send", + "tags": [ + "email", + "message", + "mail", + "paper airplane", + "paper aeroplane", + "submit" + ] + }, + { + "name": "send-horizontal", + "tags": [ + "email", + "message", + "mail", + "paper airplane", + "paper aeroplane", + "submit" + ] + }, + { + "name": "send-to-back", + "tags": [ + "bring", + "send", + "move", + "under", + "back", + "backwards", + "overlap", + "layer", + "order" + ] + }, + { "name": "separator-horizontal", "tags": ["move", "split"] }, + { "name": "separator-vertical", "tags": ["move", "split"] }, + { "name": "server", "tags": ["cloud", "storage"] }, + { + "name": "server-cog", + "tags": [ + "cloud", + "storage", + "cog", + "cogwheel", + "gear", + "pinion", + "sprocket", + "settings", + "configuration", + "preferences", + "options", + "customization", + "controls", + "control panel", + "edit", + "tools", + "computing" + ] + }, + { "name": "server-crash", "tags": ["cloud", "storage", "problem", "error"] }, + { + "name": "server-nas", + "tags": [ + "cloud", + "storage", + "network", + "server", + "backup", + "raid", + "files", + "sharing", + "disk", + "hardware", + "lan" + ] + }, + { + "name": "server-off", + "tags": [ + "cloud", + "storage", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line" + ] + }, + { + "name": "server-plus", + "tags": [ + "cloud", + "storage", + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added", + "computing" + ] + }, + { + "name": "settings", + "tags": [ + "cog", + "cogwheel", + "gear", + "pinion", + "sprocket", + "settings", + "configuration", + "preferences", + "options", + "customization", + "controls", + "control panel", + "edit", + "tools" + ] + }, + { + "name": "settings-2", + "tags": [ + "cog", + "cogwheel", + "gear", + "pinion", + "sprocket", + "settings", + "configuration", + "preferences", + "options", + "customization", + "controls", + "control panel", + "edit", + "tools", + "slider" + ] + }, + { + "name": "shapes", + "tags": [ + "triangle", + "equilateral", + "square", + "circle", + "classification", + "different", + "collection", + "toy", + "blocks", + "learning" + ] + }, + { "name": "share", "tags": ["network", "connections"] }, + { "name": "share-2", "tags": ["network", "connections"] }, + { "name": "sheet", "tags": ["spreadsheets", "table", "excel"] }, + { + "name": "shell", + "tags": [ + "beach", + "sand", + "holiday", + "sea life", + "fossil", + "ammonite", + "biology", + "ocean", + "terminal", + "command line", + "session", + "bash", + "zsh", + "roll", + "wrap", + "chewing gum", + "bubble gum", + "sweet", + "sugar", + "hosepipe", + "carpet", + "string", + "spiral", + "spinner", + "hypnotise", + "hypnosis" + ] + }, + { + "name": "shelving-unit", + "tags": [ + "ledge", + "rack", + "storage", + "inventory", + "furniture", + "sill", + "shelves", + "shelf", + "organize", + "display", + "store", + "arrange", + "unit", + "cabinet", + "fixture", + "retail", + "warehouse" + ] + }, + { + "name": "shield", + "tags": [ + "shield", + "privacy", + "safeguard", + "security", + "cybersecurity", + "secure", + "safety", + "protection", + "protected", + "guard", + "guardian", + "defense", + "defence", + "defender", + "prevention", + "armored", + "armoured", + "block", + "threat", + "antivirus", + "vigilance", + "vigilant", + "detection", + "scan", + "find", + "strength", + "strong", + "tough", + "invincible", + "invincibility", + "invulnerable", + "undamaged", + "audit", + "admin", + "verification", + "crest", + "bravery", + "knight", + "foot soldier", + "infantry", + "trooper", + "pawn", + "battle", + "war", + "military", + "army", + "cadet", + "scout" + ] + }, + { + "name": "shield-alert", + "tags": [ + "shield", + "privacy", + "safeguard", + "security", + "cybersecurity", + "secure", + "safety", + "protection", + "protected", + "guard", + "guardian", + "defense", + "defence", + "defender", + "prevention", + "armored", + "armoured", + "block", + "threat", + "antivirus", + "vigilance", + "vigilant", + "detection", + "scan", + "find", + "strength", + "strong", + "tough", + "invincible", + "invincibility", + "invulnerable", + "undamaged", + "audit", + "admin", + "verification", + "crest", + "bravery", + "knight", + "foot soldier", + "infantry", + "trooper", + "pawn", + "battle", + "war", + "military", + "army", + "cadet", + "scout", + "alert", + "warning", + "danger", + "caution", + "notice", + "error", + "risk", + "concern", + "hazard", + "exclamation mark", + "exclamation point", + "!", + "unshielded", + "insecure", + "unsecured", + "unsafe", + "unprotected", + "unguarded", + "unarmored", + "unarmoured", + "defenseless", + "defenceless", + "undefended", + "blocked", + "stopped", + "intercepted", + "interception", + "saved", + "thwarted", + "unprevented", + "detected", + "scanned", + "found", + "exploit", + "vulnerability", + "vulnerable", + "weakness", + "infection", + "infected", + "compromised", + "data leak", + "audited", + "unverified", + "uncertified", + "emergency", + "attention", + "urgent", + "alarm", + "attacked", + "damaged", + "injured", + "hit", + "expired", + "disabled", + "inactive" + ] + }, + { + "name": "shield-ban", + "tags": [ + "shield", + "privacy", + "safeguard", + "security", + "cybersecurity", + "secure", + "safety", + "protection", + "protected", + "guard", + "guardian", + "defense", + "defence", + "defender", + "prevention", + "armored", + "armoured", + "block", + "threat", + "antivirus", + "vigilance", + "vigilant", + "detection", + "scan", + "find", + "strength", + "strong", + "tough", + "invincible", + "invincibility", + "invulnerable", + "undamaged", + "audit", + "admin", + "verification", + "crest", + "bravery", + "knight", + "foot soldier", + "infantry", + "trooper", + "pawn", + "battle", + "war", + "military", + "army", + "cadet", + "scout", + "off", + "disable", + "hide", + "restricted", + "turn off", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "unshielded", + "insecure", + "unsecured", + "unsafe", + "unprotected", + "unguarded", + "unarmored", + "unarmoured", + "defenseless", + "defenceless", + "undefended", + "stopped", + "intercepted", + "interception", + "saved", + "thwarted", + "unprevented", + "detected", + "scanned", + "found", + "exploit", + "vulnerability", + "vulnerable", + "weakness", + "infection", + "infected", + "compromised", + "data leak", + "audited", + "unverified", + "uncertified", + "error", + "attacked", + "damaged", + "injured", + "hit", + "expired", + "eliminated" + ] + }, + { + "name": "shield-check", + "tags": [ + "shield", + "privacy", + "safeguard", + "security", + "cybersecurity", + "secure", + "safety", + "protection", + "protected", + "guard", + "guardian", + "defense", + "defence", + "defender", + "prevention", + "armored", + "armoured", + "block", + "threat", + "antivirus", + "vigilance", + "vigilant", + "detection", + "scan", + "find", + "strength", + "strong", + "tough", + "invincible", + "invincibility", + "invulnerable", + "undamaged", + "audit", + "admin", + "verification", + "crest", + "bravery", + "knight", + "foot soldier", + "infantry", + "trooper", + "pawn", + "battle", + "war", + "military", + "army", + "cadet", + "scout", + "checkmark", + "done", + "completed", + "finished", + "successful", + "confirmed", + "verified", + "validated", + "approved", + "accepted", + "correct", + "valid", + "ticked", + "task", + "todo", + "secured", + "guarded", + "defended", + "blocked", + "prevented", + "active", + "activated", + "enabled", + "scanned", + "found", + "audited", + "certification", + "certified", + "tested", + "passed", + "qualified", + "cleared", + "cleaned", + "disinfected", + "uninfected", + "checked" + ] + }, + { + "name": "shield-cog", + "tags": [ + "shield", + "privacy", + "safeguard", + "security", + "cybersecurity", + "secure", + "safety", + "protection", + "protected", + "guard", + "guardian", + "defense", + "defence", + "defender", + "prevention", + "armored", + "armoured", + "block", + "threat", + "antivirus", + "vigilance", + "vigilant", + "detection", + "scan", + "find", + "strength", + "strong", + "tough", + "invincible", + "invincibility", + "invulnerable", + "undamaged", + "audit", + "admin", + "verification", + "crest", + "bravery", + "knight", + "foot soldier", + "infantry", + "trooper", + "pawn", + "battle", + "war", + "military", + "army", + "cadet", + "scout", + "cog", + "cogwheel", + "gear", + "pinion", + "sprocket", + "settings", + "configuration", + "preferences", + "options", + "customization", + "controls", + "control panel", + "edit", + "tools" + ] + }, + { + "name": "shield-cog-corner", + "tags": [ + "shield", + "privacy", + "safeguard", + "security", + "cybersecurity", + "secure", + "safety", + "protection", + "protected", + "guard", + "guardian", + "defense", + "defence", + "defender", + "prevention", + "armored", + "armoured", + "block", + "threat", + "antivirus", + "vigilance", + "vigilant", + "detection", + "scan", + "find", + "strength", + "strong", + "tough", + "invincible", + "invincibility", + "invulnerable", + "undamaged", + "audit", + "admin", + "verification", + "crest", + "bravery", + "knight", + "foot soldier", + "infantry", + "trooper", + "pawn", + "battle", + "war", + "military", + "army", + "cadet", + "scout", + "cog", + "cogwheel", + "gear", + "pinion", + "sprocket", + "settings", + "configuration", + "preferences", + "options", + "customization", + "controls", + "control panel", + "edit", + "tools", + "shield cog" + ] + }, + { + "name": "shield-ellipsis", + "tags": [ + "shield", + "privacy", + "safeguard", + "security", + "cybersecurity", + "secure", + "safety", + "protection", + "protected", + "guard", + "guardian", + "defense", + "defence", + "defender", + "prevention", + "armored", + "armoured", + "block", + "threat", + "antivirus", + "vigilance", + "vigilant", + "detection", + "scan", + "find", + "strength", + "strong", + "tough", + "invincible", + "invincibility", + "invulnerable", + "undamaged", + "audit", + "admin", + "verification", + "crest", + "bravery", + "knight", + "foot soldier", + "infantry", + "trooper", + "pawn", + "battle", + "war", + "military", + "army", + "cadet", + "scout", + "securing", + "protecting", + "guarding", + "armoring", + "armouring", + "defending", + "blocking", + "preventing", + "detecting", + "scanning", + "finding", + "auditing", + "verifying", + "upgrading", + "loader", + "loading", + "throbber", + "progress", + "dots", + "more", + "etc", + "...", + "…" + ] + }, + { + "name": "shield-half", + "tags": [ + "shield", + "privacy", + "safeguard", + "security", + "cybersecurity", + "secure", + "safety", + "protection", + "protected", + "guard", + "guardian", + "defense", + "defence", + "defender", + "prevention", + "armored", + "armoured", + "block", + "threat", + "antivirus", + "vigilance", + "vigilant", + "detection", + "scan", + "find", + "strength", + "strong", + "tough", + "invincible", + "invincibility", + "invulnerable", + "undamaged", + "audit", + "admin", + "verification", + "crest", + "bravery", + "knight", + "foot soldier", + "infantry", + "trooper", + "pawn", + "battle", + "war", + "military", + "army", + "cadet", + "scout", + "logo", + "sigil", + "flag", + "team", + "faction", + "fraternity", + "university", + "college", + "academy", + "school", + "education", + "uniform", + "ranking" + ] + }, + { + "name": "shield-house", + "tags": [ + "shield", + "privacy", + "safeguard", + "security", + "cybersecurity", + "secure", + "safety", + "protection", + "protected", + "guard", + "guardian", + "defense", + "defence", + "defender", + "prevention", + "armored", + "armoured", + "block", + "threat", + "antivirus", + "vigilance", + "vigilant", + "detection", + "scan", + "find", + "strength", + "strong", + "tough", + "invincible", + "invincibility", + "invulnerable", + "undamaged", + "audit", + "admin", + "verification", + "crest", + "bravery", + "knight", + "foot soldier", + "infantry", + "trooper", + "pawn", + "battle", + "war", + "military", + "army", + "cadet", + "scout", + "property", + "household", + "connectivity", + "building", + "residence" + ] + }, + { + "name": "shield-keyhole", + "tags": [ + "shield", + "privacy", + "safeguard", + "security", + "cybersecurity", + "secure", + "safety", + "protection", + "protected", + "guard", + "guardian", + "defense", + "defence", + "defender", + "prevention", + "armored", + "armoured", + "block", + "threat", + "antivirus", + "vigilance", + "vigilant", + "detection", + "scan", + "find", + "strength", + "strong", + "tough", + "invincible", + "invincibility", + "invulnerable", + "undamaged", + "audit", + "admin", + "verification", + "crest", + "bravery", + "knight", + "foot soldier", + "infantry", + "trooper", + "pawn", + "battle", + "war", + "military", + "army", + "cadet", + "scout" + ] + }, + { + "name": "shield-lock", + "tags": [ + "shield", + "privacy", + "safeguard", + "security", + "cybersecurity", + "secure", + "safety", + "protection", + "protected", + "guard", + "guardian", + "defense", + "defence", + "defender", + "prevention", + "armored", + "armoured", + "block", + "threat", + "antivirus", + "vigilance", + "vigilant", + "detection", + "scan", + "find", + "strength", + "strong", + "tough", + "invincible", + "invincibility", + "invulnerable", + "undamaged", + "audit", + "admin", + "verification", + "crest", + "bravery", + "knight", + "foot soldier", + "infantry", + "trooper", + "pawn", + "battle", + "war", + "military", + "army", + "cadet", + "scout", + "lock", + "padlock", + "private", + "password", + "restricted", + "encrypted", + "authorization", + "read-only", + "blocked", + "locked", + "authentication", + "credentials", + "data protection", + "encryption", + "login", + "ssl", + "tls", + "two-factor authentication", + "vpn" + ] + }, + { + "name": "shield-minus", + "tags": [ + "shield", + "privacy", + "safeguard", + "security", + "cybersecurity", + "secure", + "safety", + "protection", + "protected", + "guard", + "guardian", + "defense", + "defence", + "defender", + "prevention", + "armored", + "armoured", + "block", + "threat", + "antivirus", + "vigilance", + "vigilant", + "detection", + "scan", + "find", + "strength", + "strong", + "tough", + "invincible", + "invincibility", + "invulnerable", + "undamaged", + "audit", + "admin", + "verification", + "crest", + "bravery", + "knight", + "foot soldier", + "infantry", + "trooper", + "pawn", + "battle", + "war", + "military", + "army", + "cadet", + "scout", + "minus", + "remove", + "delete", + "cancel", + "erase", + "subtract", + "reduce", + "clear", + "exclude", + "-", + "unshield", + "unsecure", + "unguard", + "unblock", + "clean", + "disinfect", + "patch", + "fix", + "stop", + "relax", + "weakened", + "damaged", + "hit", + "unarm", + "disable", + "deactivate", + "decommission", + "downgraded", + "minimum" + ] + }, + { + "name": "shield-off", + "tags": [ + "shield", + "privacy", + "safeguard", + "security", + "cybersecurity", + "secure", + "safety", + "protection", + "protected", + "guard", + "guardian", + "defense", + "defence", + "defender", + "prevention", + "armored", + "armoured", + "block", + "threat", + "antivirus", + "vigilance", + "vigilant", + "detection", + "scan", + "find", + "strength", + "strong", + "tough", + "invincible", + "invincibility", + "invulnerable", + "undamaged", + "audit", + "admin", + "verification", + "crest", + "bravery", + "knight", + "foot soldier", + "infantry", + "trooper", + "pawn", + "battle", + "war", + "military", + "army", + "cadet", + "scout", + "off", + "disable", + "hide", + "restricted", + "turn off", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "unshielded", + "insecure", + "unsecured", + "unsafe", + "unprotected", + "unguarded", + "unarmored", + "unarmoured", + "defenseless", + "defenceless", + "undefended", + "interception", + "unprevented", + "undetected", + "exploit", + "vulnerability", + "vulnerable", + "weakness", + "infected", + "infection", + "compromised", + "data leak", + "unaudited", + "unverified", + "error", + "damaged", + "injured", + "hit", + "expired", + "eliminated" + ] + }, + { + "name": "shield-plus", + "tags": [ + "shield", + "privacy", + "safeguard", + "security", + "cybersecurity", + "secure", + "safety", + "protection", + "protected", + "guard", + "guardian", + "defense", + "defence", + "defender", + "prevention", + "armored", + "armoured", + "block", + "threat", + "antivirus", + "vigilance", + "vigilant", + "detection", + "scan", + "find", + "strength", + "strong", + "tough", + "invincible", + "invincibility", + "invulnerable", + "undamaged", + "audit", + "admin", + "verification", + "crest", + "bravery", + "knight", + "foot soldier", + "infantry", + "trooper", + "pawn", + "battle", + "war", + "military", + "army", + "cadet", + "scout", + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added", + "professional", + "enterprise", + "full", + "maximum", + "upgraded", + "ultra", + "activate", + "enable", + "medic" + ] + }, + { + "name": "shield-question-mark", + "tags": [ + "shield", + "privacy", + "safeguard", + "security", + "cybersecurity", + "secure", + "safety", + "protection", + "protected", + "guard", + "guardian", + "defense", + "defence", + "defender", + "prevention", + "armored", + "armoured", + "block", + "threat", + "antivirus", + "vigilance", + "vigilant", + "detection", + "scan", + "find", + "strength", + "strong", + "tough", + "invincible", + "invincibility", + "invulnerable", + "undamaged", + "audit", + "admin", + "verification", + "crest", + "bravery", + "knight", + "foot soldier", + "infantry", + "trooper", + "pawn", + "battle", + "war", + "military", + "army", + "cadet", + "scout", + "help", + "guide", + "tutorial", + "manual", + "unknown", + "unidentified", + "unspecified", + "uncertain", + "undetermined", + "missing", + "to be determined", + "mystery", + "question", + "question mark", + "?", + "unshielded", + "insecure", + "unsecured", + "unsafe", + "unprotected", + "unguarded", + "unarmored", + "unarmoured", + "defenseless", + "defenceless", + "undefended", + "unprevented", + "undetected", + "exploit", + "vulnerability", + "vulnerable", + "weakness", + "infection", + "compromised", + "data leak", + "unverified", + "uncertified", + "inactive" + ] + }, + { + "name": "shield-user", + "tags": [ + "shield", + "privacy", + "safeguard", + "security", + "cybersecurity", + "secure", + "safety", + "protection", + "protected", + "guard", + "guardian", + "defense", + "defence", + "defender", + "prevention", + "armored", + "armoured", + "block", + "threat", + "antivirus", + "vigilance", + "vigilant", + "detection", + "scan", + "find", + "strength", + "strong", + "tough", + "invincible", + "invincibility", + "invulnerable", + "undamaged", + "audit", + "admin", + "verification", + "crest", + "bravery", + "knight", + "foot soldier", + "infantry", + "trooper", + "pawn", + "battle", + "war", + "military", + "army", + "cadet", + "scout", + "user", + "people", + "identity", + "individual", + "personal", + "person", + "account", + "contact", + "profile", + "member", + "client", + "participant", + "guest" + ] + }, + { + "name": "shield-x", + "tags": [ + "shield", + "privacy", + "safeguard", + "security", + "cybersecurity", + "secure", + "safety", + "protection", + "protected", + "guard", + "guardian", + "defense", + "defence", + "defender", + "prevention", + "armored", + "armoured", + "block", + "threat", + "antivirus", + "vigilance", + "vigilant", + "detection", + "scan", + "find", + "strength", + "strong", + "tough", + "invincible", + "invincibility", + "invulnerable", + "undamaged", + "audit", + "admin", + "verification", + "crest", + "bravery", + "knight", + "foot soldier", + "infantry", + "trooper", + "pawn", + "battle", + "war", + "military", + "army", + "cadet", + "scout", + "x", + "remove", + "delete", + "cancel", + "clear", + "close", + "discard", + "dismiss", + "erase", + "abort", + "reject", + "canceled", + "cancelled", + "cancellation", + "cross", + "times", + "ex", + "×", + "unshielded", + "insecure", + "unsecured", + "unsafe", + "unprotected", + "unguarded", + "unarmored", + "unarmoured", + "defenseless", + "defenceless", + "undefended", + "blocked", + "stopped", + "intercepted", + "interception", + "saved", + "thwarted", + "prevented", + "detected", + "scanned", + "found", + "exploit", + "vulnerability", + "vulnerable", + "weakness", + "infection", + "infected", + "compromised", + "data leak", + "audited", + "unverified", + "inactive", + "error", + "wrong", + "false", + "attacked", + "damaged", + "injured", + "hit", + "dead", + "deceased", + "expired", + "eliminated", + "exterminated" + ] + }, + { + "name": "ship", + "tags": [ + "boat", + "knots", + "nautical mile", + "maritime", + "sailing", + "yacht", + "cruise", + "ocean liner", + "tanker", + "vessel", + "navy", + "trip", + "releases" + ] + }, + { + "name": "ship-cargo", + "tags": [ + "boat", + "knots", + "nautical mile", + "maritime", + "sailing", + "yacht", + "cruise", + "ocean liner", + "tanker", + "vessel", + "navy", + "trip", + "releases", + "cargo", + "container", + "freighter", + "freight", + "shipping", + "port", + "harbor", + "dock", + "logistics", + "import", + "export" + ] + }, + { + "name": "ship-wheel", + "tags": [ + "boat", + "knots", + "nautical mile", + "maritime", + "sailing", + "yacht", + "cruise", + "ocean liner", + "tanker", + "vessel", + "navy", + "trip", + "releases", + "steering", + "rudder" + ] + }, + { + "name": "shirt", + "tags": ["t-shirt", "shopping", "store", "clothing", "clothes"] + }, + { + "name": "shopping-bag", + "tags": ["ecommerce", "cart", "purchase", "store"] + }, + { + "name": "shopping-basket", + "tags": [ + "cart", + "e-commerce", + "store", + "purchase", + "products", + "items", + "ingredients" + ] + }, + { + "name": "shopping-cart", + "tags": [ + "trolley", + "cart", + "basket", + "e-commerce", + "store", + "purchase", + "products", + "items", + "ingredients" + ] + }, + { + "name": "shopping-cart-minus", + "tags": [ + "trolley", + "cart", + "basket", + "e-commerce", + "store", + "purchase", + "products", + "items", + "ingredients", + "minus", + "remove", + "delete", + "cancel", + "erase", + "subtract", + "reduce", + "clear", + "exclude", + "-", + "ecommerce", + "checkout", + "order", + "retail", + "decrease", + "quantity" + ] + }, + { + "name": "shopping-cart-plus", + "tags": [ + "trolley", + "cart", + "basket", + "e-commerce", + "store", + "purchase", + "products", + "items", + "ingredients", + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added", + "ecommerce", + "checkout", + "order", + "retail", + "quantity", + "buy" + ] + }, + { "name": "shovel", "tags": ["dig", "spade", "treasure"] }, + { + "name": "shower-head", + "tags": ["shower", "bath", "bathroom", "amenities", "services"] + }, + { + "name": "shredder", + "tags": [ + "minus", + "remove", + "delete", + "cancel", + "erase", + "subtract", + "reduce", + "clear", + "exclude", + "-", + "file", + "paper", + "tear", + "cut", + "destroy", + "document", + "destruction", + "secure", + "security", + "confidential", + "data", + "trash", + "dispose", + "disposal", + "information", + "waste", + "permanent" + ] + }, + { + "name": "shrimp", + "tags": [ + "seafood", + "shellfish", + "crustacean", + "prawn", + "scallop", + "whelk", + "arthropod", + "littleneck", + "quahog", + "marine", + "creature", + "fisherman", + "ocean", + "fresh", + "cuisine", + "marine-life" + ] + }, + { + "name": "shrimp-off", + "tags": [ + "seafood", + "shellfish", + "crustacean", + "prawn", + "scallop", + "whelk", + "arthropod", + "littleneck", + "quahog", + "marine", + "creature", + "fisherman", + "ocean", + "fresh", + "cuisine", + "marine-life", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "allergy", + "intolerance", + "diet" + ] + }, + { "name": "shrink", "tags": ["scale", "fullscreen"] }, + { "name": "shrub", "tags": ["forest", "undergrowth", "park", "nature"] }, + { "name": "shuffle", "tags": ["music", "random", "reorder"] }, + { + "name": "sigma", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "sum", + "calculate", + "formula", + "math", + "enumeration", + "enumerate" + ] + }, + { + "name": "signal", + "tags": ["connection", "wireless", "gsm", "phone", "2g", "3g", "4g", "5g"] + }, + { + "name": "signal-high", + "tags": ["connection", "wireless", "gsm", "phone", "2g", "3g", "4g", "5g"] + }, + { + "name": "signal-low", + "tags": ["connection", "wireless", "gsm", "phone", "2g", "3g", "4g", "5g"] + }, + { + "name": "signal-medium", + "tags": ["connection", "wireless", "gsm", "phone", "2g", "3g", "4g", "5g"] + }, + { + "name": "signal-zero", + "tags": [ + "connection", + "wireless", + "gsm", + "phone", + "2g", + "3g", + "4g", + "5g", + "lost" + ] + }, + { + "name": "signature", + "tags": [ + "text", + "format", + "input", + "contract", + "autograph", + "handwriting", + "sign", + "cursive", + "ink", + "scribble", + "authorize", + "personal", + "agreement", + "legal", + "document", + "identity", + "authentic", + "approval", + "verification", + "unique" + ] + }, + { + "name": "signpost", + "tags": [ + "navigation", + "direction", + "arrow", + "wayfinding", + "guide", + "location", + "pointer", + "route", + "indicator", + "marker", + "bidirectional", + "left", + "right", + "east", + "west", + "milestone", + "checkpoint" + ] + }, + { + "name": "signpost-big", + "tags": [ + "navigation", + "direction", + "arrow", + "wayfinding", + "guide", + "location", + "pointer", + "route", + "indicator", + "marker", + "bidirectional", + "left", + "right", + "east", + "west", + "milestone", + "checkpoint" + ] + }, + { + "name": "siren", + "tags": [ + "police", + "ambulance", + "emergency", + "security", + "alert", + "alarm", + "light" + ] + }, + { + "name": "siren-off", + "tags": [ + "police", + "ambulance", + "emergency", + "security", + "alert", + "alarm", + "light", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "mute", + "silent", + "silence" + ] + }, + { + "name": "sixteenth-notes", + "tags": ["audio", "music", "sound", "notes", "semiquavers"] + }, + { "name": "skip-back", "tags": ["arrow", "previous", "music"] }, + { "name": "skip-forward", "tags": ["arrow", "skip", "next", "music"] }, + { "name": "skull", "tags": ["death", "danger", "bone"] }, + { "name": "slash", "tags": ["divide", "division", "or", "/"] }, + { "name": "slice", "tags": ["cutter", "scalpel", "knife"] }, + { "name": "sliders-horizontal", "tags": ["settings", "filters", "controls"] }, + { "name": "sliders-vertical", "tags": ["settings", "controls"] }, + { + "name": "smartphone", + "tags": [ + "phone", + "cellphone", + "device", + "mobile", + "screen", + "display", + "touchscreen", + "portable", + "responsive" + ] + }, + { + "name": "smartphone-charging", + "tags": [ + "phone", + "cellphone", + "device", + "mobile", + "screen", + "display", + "touchscreen", + "portable", + "responsive", + "power" + ] + }, + { + "name": "smartphone-nfc", + "tags": [ + "phone", + "cellphone", + "device", + "mobile", + "screen", + "display", + "touchscreen", + "portable", + "responsive", + "contactless", + "payment", + "near-field communication" + ] + }, + { + "name": "smartphone-user-round", + "tags": [ + "phone", + "cellphone", + "device", + "mobile", + "screen", + "display", + "touchscreen", + "portable", + "responsive", + "user", + "people", + "identity", + "individual", + "personal", + "person", + "account", + "contact", + "profile", + "member", + "client", + "participant", + "guest", + "avatar", + "owner", + "authentication" + ] + }, + { + "name": "snail", + "tags": ["animal", "insect", "slow", "speed", "delicacy", "spiral"] + }, + { + "name": "snowflake", + "tags": ["cold", "weather", "freeze", "snow", "winter"] + }, + { + "name": "soap-dispenser-droplet", + "tags": [ + "wash", + "bath", + "water", + "liquid", + "fluid", + "wet", + "moisture", + "damp", + "bead", + "globule" + ] + }, + { + "name": "sofa", + "tags": ["armchair", "furniture", "leisure", "lounge", "loveseat", "couch"] + }, + { + "name": "solar-panel", + "tags": [ + "solar panel", + "solar", + "panel", + "sun", + "energy", + "electricity", + "light" + ] + }, + { + "name": "soup", + "tags": ["food", "dish", "restaurant", "course", "meal", "bowl", "starter"] + }, + { + "name": "space", + "tags": ["text", "selection", "letters", "characters", "font", "typography"] + }, + { "name": "spade", "tags": ["shape", "suit", "playing", "cards"] }, + { + "name": "sparkle", + "tags": [ + "sparkle", + "magic", + "ai", + "stars", + "glitter", + "shimmer", + "twinkle", + "shine", + "shiny", + "enchantment", + "polish", + "sanitize", + "artificial intelligence", + "smart", + "assistant", + "automation", + "generate", + "enhancement", + "effect", + "filter", + "night", + "celebration" + ] + }, + { + "name": "sparkles", + "tags": [ + "sparkle", + "magic", + "ai", + "stars", + "glitter", + "shimmer", + "twinkle", + "shine", + "shiny", + "enchantment", + "polish", + "sanitize", + "artificial intelligence", + "smart", + "assistant", + "automation", + "generate", + "enhancement", + "effect", + "filter", + "night" + ] + }, + { + "name": "speaker", + "tags": [ + "sound", + "audio", + "music", + "tweeter", + "subwoofer", + "bass", + "production", + "producer", + "dj" + ] + }, + { + "name": "speech", + "tags": [ + "disability", + "disabled", + "dda", + "human", + "accessibility", + "people", + "sound" + ] + }, + { + "name": "spell-check", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "checkmark", + "done", + "completed", + "finished", + "successful", + "confirmed", + "verified", + "validated", + "approved", + "accepted", + "correct", + "valid", + "ticked", + "task", + "todo", + "spelling", + "error", + "mistake", + "oversight", + "typo", + "correction", + "code", + "linter", + "a" + ] + }, + { + "name": "spell-check-2", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "checkmark", + "done", + "completed", + "finished", + "successful", + "confirmed", + "verified", + "validated", + "approved", + "accepted", + "correct", + "valid", + "ticked", + "task", + "todo", + "spelling", + "error", + "mistake", + "oversight", + "typo", + "correction", + "code", + "linter", + "a" + ] + }, + { + "name": "spline", + "tags": ["path", "pen", "tool", "shape", "curve", "draw"] + }, + { + "name": "spline-pointer", + "tags": [ + "path", + "pen", + "tool", + "shape", + "curve", + "draw", + "node", + "click", + "pointer", + "target", + "vector" + ] + }, + { + "name": "split", + "tags": ["break", "disband", "divide", "separate", "branch", "disunite"] + }, + { + "name": "spool", + "tags": [ + "bobbin", + "spindle", + "yarn", + "thread", + "string", + "sewing", + "needlework" + ] + }, + { + "name": "sport-shoe", + "tags": [ + "footwear", + "sports", + "running", + "athletic", + "shoe", + "sneaker", + "training", + "exercise", + "fitness" + ] + }, + { + "name": "spotlight", + "tags": [ + "winner", + "soapbox", + "stage", + "entertainment", + "drama", + "podium", + "actor", + "actress", + "singer", + "light", + "beam", + "play", + "theatre", + "show", + "focus", + "concert", + "performance", + "lens", + "leaderboard", + "follow spot", + "best", + "highlight" + ] + }, + { + "name": "spray-can", + "tags": [ + "paint", + "color", + "graffiti", + "decoration", + "aerosol", + "deodorant", + "shaving foam", + "air freshener" + ] + }, + { + "name": "sprout", + "tags": [ + "eco", + "green", + "growth", + "leaf", + "nature", + "plant", + "seed", + "spring", + "sustainability" + ] + }, + { + "name": "square", + "tags": [ + "stop", + "playback", + "music", + "audio", + "video", + "rectangle", + "aspect ratio", + "1:1", + "shape" + ] + }, + { + "name": "square-activity", + "tags": [ + "pulse", + "action", + "motion", + "movement", + "exercise", + "fitness", + "healthcare", + "heart rate monitor", + "vital signs", + "vitals", + "emergency room", + "er", + "intensive care", + "hospital", + "defibrillator", + "earthquake", + "seismic", + "magnitude", + "richter scale", + "aftershock", + "tremor", + "shockwave", + "audio", + "waveform", + "synthesizer", + "synthesiser", + "music" + ] + }, + { + "name": "square-arrow-down", + "tags": [ + "direction", + "movement", + "vertical", + "downward", + "downwards", + "south", + "descend", + "page down", + "navigation", + "following", + "forward", + "forwards", + "subsequent", + "next page", + "backwards", + "reverse", + "sign", + "keyboard", + "button" + ] + }, + { + "name": "square-arrow-down-left", + "tags": [ + "direction", + "movement", + "diagonal", + "southwest", + "south-west", + "south west", + "sign", + "keyboard", + "button", + "turn" + ] + }, + { + "name": "square-arrow-down-right", + "tags": [ + "direction", + "movement", + "diagonal", + "southeast", + "south-east", + "south east", + "sign", + "keyboard", + "button", + "turn" + ] + }, + { + "name": "square-arrow-left", + "tags": [ + "direction", + "movement", + "horizontal", + "leftward", + "leftwards", + "west", + "navigation", + "preceding", + "back", + "backward", + "backwards", + "prior", + "previous page", + "previous", + "sign", + "keyboard", + "button", + "<-" + ] + }, + { + "name": "square-arrow-out-down-left", + "tags": [ + "direction", + "movement", + "diagonal", + "southwest", + "south-west", + "south west", + "outwards" + ] + }, + { + "name": "square-arrow-out-down-right", + "tags": [ + "direction", + "movement", + "diagonal", + "southeast", + "south-east", + "south east", + "outwards" + ] + }, + { + "name": "square-arrow-out-up-left", + "tags": [ + "direction", + "movement", + "diagonal", + "northwest", + "north-west", + "north west", + "outwards" + ] + }, + { + "name": "square-arrow-out-up-right", + "tags": [ + "direction", + "movement", + "diagonal", + "northeast", + "north-east", + "north east", + "outwards", + "share", + "open", + "external", + "link" + ] + }, + { + "name": "square-arrow-right", + "tags": [ + "direction", + "movement", + "horizontal", + "rightward", + "rightwards", + "east", + "navigation", + "following", + "forward", + "forwards", + "subsequent", + "next page", + "next", + "west", + "sign", + "keyboard", + "button", + "->" + ] + }, + { + "name": "square-arrow-right-enter", + "tags": [ + "direction", + "movement", + "horizontal", + "rightward", + "rightwards", + "east", + "left", + "in", + "inside", + "input", + "insert", + "source", + "import", + "place", + "->" + ] + }, + { + "name": "square-arrow-right-exit", + "tags": [ + "direction", + "movement", + "horizontal", + "rightward", + "rightwards", + "east", + "out", + "outside", + "output", + "export", + "->" + ] + }, + { + "name": "square-arrow-up", + "tags": [ + "direction", + "movement", + "vertical", + "upward", + "upwards", + "north", + "ascend", + "page up", + "navigation", + "preceding", + "back", + "backward", + "backwards", + "prior", + "previous page", + "forward", + "sign", + "keyboard", + "button" + ] + }, + { + "name": "square-arrow-up-left", + "tags": [ + "direction", + "movement", + "diagonal", + "northwest", + "north-west", + "north west", + "sign", + "keyboard", + "button" + ] + }, + { + "name": "square-arrow-up-right", + "tags": [ + "direction", + "movement", + "diagonal", + "northeast", + "north-east", + "north east", + "sign", + "keyboard", + "button", + "share" + ] + }, + { + "name": "square-asterisk", + "tags": [ + "password", + "secret", + "access", + "key", + "multiply", + "multiplication", + "glob pattern", + "wildcard", + "*" + ] + }, + { "name": "square-bookmark", "tags": ["photo", "book"] }, + { + "name": "square-bottom-dashed-scissors", + "tags": ["cut", "snippet", "chop", "stationery", "crafts"] + }, + { + "name": "square-centerline-dashed-horizontal", + "tags": ["reflect", "mirror", "alignment", "dashed"] + }, + { + "name": "square-centerline-dashed-vertical", + "tags": ["reflect", "mirror", "alignment", "dashed"] + }, + { + "name": "square-chart-gantt", + "tags": [ + "diagram", + "graph", + "visualization", + "data", + "analytics", + "analysis", + "statistics", + "presentation", + "reporting", + "data visualisation", + "visualisation", + "timeline", + "planning", + "projects", + "manage", + "overview", + "roadmap", + "plan", + "deadline", + "date", + "event", + "range", + "period", + "productivity", + "work", + "agile", + "intentions", + "code", + "coding", + "toolbar", + "button" + ] + }, + { + "name": "square-check", + "tags": [ + "checkmark", + "done", + "completed", + "finished", + "successful", + "confirmed", + "verified", + "validated", + "approved", + "accepted", + "correct", + "valid", + "ticked", + "task", + "todo" + ] + }, + { + "name": "square-check-big", + "tags": [ + "checkmark", + "done", + "completed", + "finished", + "successful", + "confirmed", + "verified", + "validated", + "approved", + "accepted", + "correct", + "valid", + "ticked", + "task", + "todo" + ] + }, + { + "name": "square-chevron-down", + "tags": [ + "direction", + "movement", + "vertical", + "downward", + "downwards", + "south", + "descend", + "page down", + "navigation", + "following", + "forward", + "forwards", + "subsequent", + "next page", + "back", + "menu", + "panel" + ] + }, + { + "name": "square-chevron-left", + "tags": [ + "direction", + "movement", + "horizontal", + "leftward", + "leftwards", + "west", + "navigation", + "preceding", + "back", + "backward", + "backwards", + "prior", + "previous page", + "previous", + "less than", + "fewer", + "menu", + "panel", + "button", + "keyboard", + "<" + ] + }, + { + "name": "square-chevron-right", + "tags": [ + "direction", + "movement", + "horizontal", + "rightward", + "rightwards", + "east", + "navigation", + "following", + "forward", + "forwards", + "subsequent", + "next page", + "next", + "more than", + "greater", + "menu", + "panel", + "code", + "coding", + "command line", + "terminal", + "prompt", + "shell", + "console", + ">" + ] + }, + { + "name": "square-chevron-up", + "tags": [ + "direction", + "movement", + "vertical", + "upward", + "upwards", + "north", + "ascend", + "page up", + "navigation", + "preceding", + "back", + "backward", + "backwards", + "prior", + "previous page", + "caret", + "keyboard", + "button", + "mac", + "control", + "ctrl", + "superscript", + "exponential", + "power", + "ahead", + "menu", + "panel", + "^" + ] + }, + { + "name": "square-chevrons-down", + "tags": [ + "bottom", + "descend", + "page", + "page down", + "scroll", + "jump", + "south", + "caret", + "button", + "keyboard", + "skip", + "end", + "last page", + "latest", + "feed", + "chat", + "pagination", + "fast", + "media", + "menu", + "panel", + "double-arrow", + "outlined", + "border", + "seek", + "rewind", + "controls", + "fast-forward" + ] + }, + { + "name": "square-chevrons-left", + "tags": [ + "previous", + "back", + "rewind", + "backward", + "first", + "beginning", + "start", + "west", + "music", + "caret", + "button", + "keyboard", + "menu", + "panel", + "pagination", + "skip", + "skip-back", + "seek-back", + "media-controls", + "player", + "playlist", + "track", + "chapter", + "jump", + "timeline", + "controls", + "seek", + "media" + ] + }, + { + "name": "square-chevrons-right", + "tags": [ + "next", + "forward", + "skip", + "fast forward", + "last", + "end", + "east", + "music", + "caret", + "button", + "keyboard", + "menu", + "panel", + "pagination", + "jump", + "seek", + "seek forward", + "player control", + "chapter", + "track", + "timeline", + "navigation control", + "double arrow", + "media controls", + "toolbar", + "keyboard shortcut", + "skip-to-end", + "end-of-list" + ] + }, + { + "name": "square-chevrons-up", + "tags": [ + "top", + "ascend", + "page", + "page up", + "back to top", + "scroll", + "jump", + "north", + "caret", + "button", + "keyboard", + "skip", + "pagination", + "first page", + "fast", + "fast scroll", + "rewind", + "jump to start", + "floating action button", + "anchor", + "mac", + "control", + "ctrl", + "menu", + "panel", + "timeline", + "start", + "first", + "return", + "double arrow", + "seek", + "playlist", + "floating action" + ] + }, + { + "name": "square-code", + "tags": [ + "coding", + "programming", + "development", + "gist", + "source", + "html", + "xml" + ] + }, + { + "name": "square-dashed", + "tags": [ + "selection", + "square", + "rectangular", + "marquee", + "tool", + "dashed", + "box" + ] + }, + { + "name": "square-dashed-bottom", + "tags": [ + "rectangle", + "aspect ratio", + "1:1", + "shape", + "snippet", + "code", + "coding" + ] + }, + { + "name": "square-dashed-bottom-code", + "tags": [ + "rectangle", + "aspect ratio", + "1:1", + "shape", + "snippet", + "code", + "coding", + "programming", + "development" + ] + }, + { + "name": "square-dashed-kanban", + "tags": [ + "projects", + "manage", + "overview", + "board", + "tickets", + "issues", + "roadmap", + "plan", + "intentions", + "productivity", + "work", + "agile", + "draft", + "template", + "boilerplate", + "code", + "coding" + ] + }, + { + "name": "square-dashed-mouse-pointer", + "tags": [ + "inspector", + "element", + "mouse", + "click", + "pointer", + "box", + "browser", + "selector", + "target", + "dom", + "node" + ] + }, + { + "name": "square-dashed-plus", + "tags": [ + "selection", + "square", + "rectangular", + "marquee", + "tool", + "dashed", + "box", + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added", + "select", + "placeholder", + "frame", + "empty" + ] + }, + { + "name": "square-dashed-text", + "tags": ["find", "search", "selection", "dashed"] + }, + { + "name": "square-dashed-top-solid", + "tags": [ + "selection", + "square", + "rectangular", + "marquee", + "tool", + "dashed", + "box", + "border", + "width", + "layout", + "style", + "design", + "rectangle", + "aspect ratio", + "1:1" + ] + }, + { + "name": "square-dashed-x", + "tags": [ + "selection", + "square", + "rectangular", + "marquee", + "tool", + "dashed", + "box", + "x", + "remove", + "delete", + "cancel", + "clear", + "close", + "discard", + "dismiss", + "erase", + "abort", + "reject", + "canceled", + "cancelled", + "cancellation", + "cross", + "times", + "ex", + "×", + "deselect", + "unselect", + "select", + "border", + "width", + "layout", + "style", + "design", + "rectangle", + "aspect ratio", + "1:1" + ] + }, + { + "name": "square-dashed-x-corner", + "tags": [ + "selection", + "square", + "rectangular", + "marquee", + "tool", + "dashed", + "box", + "x", + "remove", + "delete", + "cancel", + "clear", + "close", + "discard", + "dismiss", + "erase", + "abort", + "reject", + "canceled", + "cancelled", + "cancellation", + "cross", + "times", + "ex", + "×", + "deselect", + "unselect", + "select", + "border", + "width", + "layout", + "style", + "design", + "rectangle", + "aspect ratio", + "1:1" + ] + }, + { + "name": "square-dimensions", + "tags": [ + "ratio", + "size", + "width", + "height", + "resize", + "scale", + "frame", + "proportions", + "aspect", + "bounds", + "measurements", + "canvas" + ] + }, + { "name": "square-divide", "tags": ["calculate", "math", "÷", "/"] }, + { "name": "square-dot", "tags": ["git", "diff", "modified", "."] }, + { "name": "square-equal", "tags": ["calculate", "="] }, + { + "name": "square-exclamation-point", + "tags": [ + "alert", + "warning", + "danger", + "caution", + "notice", + "error", + "risk", + "concern", + "hazard", + "exclamation mark", + "exclamation point", + "!", + "rectangle", + "square", + "notification", + "attention", + "important" + ] + }, + { + "name": "square-function", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "programming", + "code", + "automation", + "math" + ] + }, + { + "name": "square-kanban", + "tags": [ + "projects", + "manage", + "overview", + "board", + "tickets", + "issues", + "roadmap", + "plan", + "intentions", + "productivity", + "work", + "agile", + "code", + "coding", + "toolbar", + "button" + ] + }, + { + "name": "square-kanban-plus", + "tags": [ + "board", + "project", + "add", + "create", + "plus", + "agile", + "tickets", + "issues", + "productivity", + "columns", + "workflow", + "planning", + "dashboard", + "workspace", + "collaboration", + "cards" + ] + }, + { + "name": "square-letter-a", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "grade", + "rating", + "accessibility", + "blood type", + "audio", + "ampere", + "electricity", + "appearance" + ] + }, + { + "name": "square-letter-b", + "tags": [ + "strong", + "emphasis", + "format", + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "bold", + "blood type", + "byte", + "computing", + "b-side", + "bus", + "transit" + ] + }, + { + "name": "square-letter-c", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "celsius", + "temperature", + "carbon", + "chemistry", + "grade", + "rating" + ] + }, + { + "name": "square-letter-d", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "drive", + "gear", + "diameter", + "measurement", + "vitamin", + "grade", + "rating" + ] + }, + { + "name": "square-letter-e", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "explicit", + "content rating", + "east", + "empty", + "energy", + "grade", + "rating" + ] + }, + { + "name": "square-letter-f", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "fahrenheit", + "temperature", + "female", + "fail", + "grade", + "rating", + "force", + "aperture", + "f-stop", + "camera" + ] + }, + { + "name": "square-letter-g", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "gravity", + "g-force", + "gram", + "measurement" + ] + }, + { + "name": "square-letter-h", + "tags": [ + "h1", + "html", + "markup", + "markdown", + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "heading", + "hospital", + "hydrogen", + "chemistry", + "hour", + "time", + "height", + "measurement" + ] + }, + { + "name": "square-letter-i", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "information", + "help", + "input", + "current", + "electricity" + ] + }, + { + "name": "square-letter-j", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "joule", + "energy", + "java", + "javascript", + "code" + ] + }, + { + "name": "square-letter-k", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "thousand", + "kilo", + "kelvin", + "temperature", + "potassium", + "chemistry" + ] + }, + { + "name": "square-letter-l", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "learner", + "driver", + "litre", + "left", + "length", + "measurement" + ] + }, + { + "name": "square-letter-m", + "tags": [ + "metro", + "subway", + "underground", + "track", + "line", + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "million", + "mega", + "metre", + "measurement", + "male", + "medium", + "size" + ] + }, + { + "name": "square-letter-n", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "north", + "neutral", + "gear", + "new", + "nitrogen", + "chemistry", + "newton", + "force", + "sample size", + "statistics" + ] + }, + { + "name": "square-letter-o", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "oxygen", + "chemistry", + "blood type", + "off", + "zero", + "marker" + ] + }, + { + "name": "square-letter-p", + "tags": [ + "parking lot", + "car park", + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "parking", + "phosphorus", + "chemistry", + "p-value", + "statistics", + "piano", + "soft", + "music", + "page", + "probability", + "math" + ] + }, + { + "name": "square-letter-p-off", + "tags": [ + "parking lot", + "car park", + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "parking", + "phosphorus", + "chemistry", + "p-value", + "statistics", + "piano", + "soft", + "music", + "page", + "probability", + "math", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "no parking" + ] + }, + { + "name": "square-letter-q", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "question", + "help", + "queue", + "charge", + "electricity", + "quality", + "rating" + ] + }, + { + "name": "square-letter-r", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "registered trademark", + "trademark", + "right", + "reverse", + "gear", + "resistance", + "electricity", + "radius", + "geometry", + "rating", + "review" + ] + }, + { + "name": "square-letter-s", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "south", + "small", + "size", + "second", + "time", + "sulfur", + "chemistry", + "save", + "siemens", + "electricity" + ] + }, + { + "name": "square-letter-t", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "tesla", + "magnetism", + "temperature", + "tonne", + "measurement", + "time" + ] + }, + { + "name": "square-letter-u", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "rack unit", + "server", + "equipment", + "uranium", + "chemistry" + ] + }, + { + "name": "square-letter-v", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "voltage", + "volt", + "electricity", + "volume", + "victory", + "success", + "vegan", + "vegetarian", + "video" + ] + }, + { + "name": "square-letter-w", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "watt", + "power", + "west", + "width", + "measurement", + "tungsten", + "chemistry", + "win" + ] + }, + { + "name": "square-letter-x", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "close", + "dismiss", + "multiply", + "math", + "unknown", + "variable", + "x-axis", + "axis", + "intersection", + "cross", + "chromosome" + ] + }, + { + "name": "square-letter-y", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "y-axis", + "axis", + "yes", + "confirm", + "year", + "time", + "chromosome" + ] + }, + { + "name": "square-letter-z", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "uppercase", + "z-axis", + "axis", + "sleep", + "rest", + "impedance", + "electricity", + "atomic number", + "chemistry" + ] + }, + { + "name": "square-library", + "tags": [ + "books", + "reading", + "written", + "authors", + "stories", + "fiction", + "novels", + "information", + "knowledge", + "education", + "high school", + "university", + "college", + "academy", + "learning", + "study", + "research", + "collection", + "vinyl", + "records", + "albums", + "music", + "package" + ] + }, + { + "name": "square-menu", + "tags": ["bars", "navigation", "hamburger", "options", "menu bar", "panel"] + }, + { + "name": "square-minus", + "tags": [ + "minus", + "remove", + "delete", + "cancel", + "erase", + "subtract", + "reduce", + "clear", + "exclude", + "-", + "decrease", + "calculator", + "button", + "keyboard", + "line", + "divider", + "separator", + "horizontal rule", + "hr", + "html", + "markup", + "markdown", + "---", + "toolbar", + "operator", + "code", + "coding", + "minimum", + "downgrade" + ] + }, + { + "name": "square-mouse-pointer", + "tags": [ + "inspector", + "element", + "mouse", + "click", + "pointer", + "box", + "browser", + "selector", + "target", + "dom", + "node" + ] + }, + { + "name": "square-off", + "tags": [ + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "not", + "none", + "stopped", + "checkbox", + "unchecked", + "toggle", + "negation", + "form", + "ui" + ] + }, + { + "name": "square-padding", + "tags": [ + "padding", + "design", + "style", + "margin", + "spacing", + "gap", + "inner spacing", + "box model", + "whitespace", + "space", + "offset", + "alignment", + "position", + "layout", + "css", + "ui" + ] + }, + { + "name": "square-padding-bottom", + "tags": [ + "padding", + "design", + "style", + "margin", + "spacing", + "gap", + "inner spacing", + "box model", + "whitespace", + "space", + "offset", + "alignment", + "position", + "layout", + "css", + "ui", + "placement", + "bottom", + "bottommost", + "bottom edge", + "lower edge", + "lower", + "below", + "vertical", + "block", + "y", + "y-axis" + ] + }, + { + "name": "square-padding-horizontal", + "tags": [ + "padding", + "design", + "style", + "margin", + "spacing", + "gap", + "inner spacing", + "box model", + "whitespace", + "space", + "offset", + "alignment", + "position", + "layout", + "css", + "ui", + "placement", + "left", + "left edge", + "leftmost", + "left side", + "horizontal", + "inline", + "x", + "x-axis", + "right", + "right edge", + "rightmost", + "right side" + ] + }, + { + "name": "square-padding-left", + "tags": [ + "padding", + "design", + "style", + "margin", + "spacing", + "gap", + "inner spacing", + "box model", + "whitespace", + "space", + "offset", + "alignment", + "position", + "layout", + "css", + "ui", + "placement", + "left", + "left edge", + "leftmost", + "left side", + "horizontal", + "inline", + "x", + "x-axis", + "indent" + ] + }, + { + "name": "square-padding-right", + "tags": [ + "padding", + "design", + "style", + "margin", + "spacing", + "gap", + "inner spacing", + "box model", + "whitespace", + "space", + "offset", + "alignment", + "position", + "layout", + "css", + "ui", + "placement", + "right", + "right edge", + "rightmost", + "right side", + "horizontal", + "inline", + "x", + "x-axis" + ] + }, + { + "name": "square-padding-top", + "tags": [ + "padding", + "design", + "style", + "margin", + "spacing", + "gap", + "inner spacing", + "box model", + "whitespace", + "space", + "offset", + "alignment", + "position", + "layout", + "css", + "ui", + "placement", + "top", + "topmost", + "top edge", + "upper edge", + "upper", + "above", + "vertical", + "block", + "y", + "y-axis" + ] + }, + { + "name": "square-padding-vertical", + "tags": [ + "padding", + "design", + "style", + "margin", + "spacing", + "gap", + "inner spacing", + "box model", + "whitespace", + "space", + "offset", + "alignment", + "position", + "layout", + "css", + "ui", + "placement", + "top", + "topmost", + "top edge", + "upper edge", + "upper", + "above", + "vertical", + "block", + "y", + "y-axis", + "bottom", + "bottommost", + "bottom edge", + "lower edge", + "lower", + "below" + ] + }, + { + "name": "square-pause", + "tags": [ + "suspend", + "hold", + "halt", + "wait", + "freeze", + "stop", + "break", + "interruption", + "music", + "audio" + ] + }, + { + "name": "square-pen", + "tags": [ + "edit", + "modify", + "update", + "revise", + "amend", + "create", + "change", + "write", + "writer", + "writing", + "pencil", + "compose", + "draft", + "author", + "annotate", + "comment", + "note", + "draw", + "sketch", + "doodle", + "rename", + "customize", + "biro", + "ink", + "marker", + "felt tip", + "stationery", + "artist" + ] + }, + { + "name": "square-percent", + "tags": [ + "discount", + "sale", + "offer", + "deal", + "markdown", + "savings", + "reduction", + "rate", + "interest", + "tax", + "ratio", + "fraction", + "proportion", + "percentage", + "%", + "marketing", + "reduced", + "price tag", + "verified", + "unverified", + "sticker" + ] + }, + { + "name": "square-pi", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "constant", + "code", + "coding", + "programming", + "symbol", + "trigonometry", + "geometry", + "formula" + ] + }, + { + "name": "square-pilcrow", + "tags": [ + "paragraph", + "mark", + "paraph", + "blind", + "typography", + "type", + "text", + "prose", + "symbol" + ] + }, + { + "name": "square-play", + "tags": [ + "start", + "run", + "running", + "execute", + "launch", + "resume", + "preview", + "begin", + "continue", + "proceed", + "activate", + "trigger", + "initiate", + "music", + "audio", + "video" + ] + }, + { + "name": "square-plus", + "tags": [ + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added", + "positive", + "calculate", + "calculator", + "button", + "keyboard", + "toolbar", + "maximum", + "upgrade", + "operator", + "join", + "concatenate", + "code", + "coding" + ] + }, + { + "name": "square-power", + "tags": [ + "on", + "off", + "device", + "switch", + "toggle", + "binary", + "boolean", + "reboot", + "restart", + "button", + "keyboard", + "troubleshoot" + ] + }, + { + "name": "square-radical", + "tags": [ + "calculate", + "formula", + "math", + "operator", + "root", + "square", + "symbol" + ] + }, + { + "name": "square-round-corner", + "tags": [ + "border", + "radius", + "style", + "design", + "corner", + "layout", + "round", + "rounded" + ] + }, + { + "name": "square-scissors", + "tags": [ + "cut", + "snippet", + "chop", + "stationery", + "crafts", + "toolbar", + "button" + ] + }, + { + "name": "square-sigma", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "sum", + "calculate", + "formula", + "math", + "enumeration", + "enumerate" + ] + }, + { + "name": "square-slash", + "tags": [ + "git", + "diff", + "ignored", + "divide", + "division", + "shortcut", + "or", + "/" + ] + }, + { + "name": "square-sparkles", + "tags": [ + "sparkle", + "magic", + "ai", + "stars", + "glitter", + "shimmer", + "twinkle", + "shine", + "shiny", + "enchantment", + "polish", + "sanitize", + "artificial intelligence", + "smart", + "assistant", + "automation", + "generate", + "enhancement", + "picture", + "photo" + ] + }, + { "name": "square-split-horizontal", "tags": ["split", "divide"] }, + { "name": "square-split-vertical", "tags": ["split", "divide"] }, + { "name": "square-square", "tags": ["float", "center", "rectangle"] }, + { + "name": "square-stack", + "tags": [ + "versions", + "clone", + "copy", + "duplicate", + "multiple", + "revisions", + "version control", + "backup", + "history" + ] + }, + { + "name": "square-star", + "tags": [ + "starred", + "featured", + "favorite", + "favourite", + "save", + "wishlist", + "bookmark", + "highlight", + "important", + "priority", + "rating", + "review", + "score", + "quality", + "award", + "achievement", + "excellence", + "like", + "badge", + "medal", + "honour", + "decoration", + "order", + "pin", + "laurel", + "trophy", + "medallion", + "insignia", + "bronze", + "silver", + "gold" + ] + }, + { + "name": "square-stop", + "tags": [ + "halt", + "end", + "terminate", + "finish", + "cancel", + "abort", + "discontinue", + "interrupt", + "break", + "cease", + "media", + "music" + ] + }, + { + "name": "square-terminal", + "tags": ["code", "command line", "prompt", "shell"] + }, + { + "name": "square-text", + "tags": [ + "text", + "paragraph", + "content", + "note", + "document", + "body", + "copy", + "article", + "square", + "container", + "block", + "card", + "placeholder", + "log", + "page", + "paper", + "sheet", + "list", + "script", + "code", + "editor" + ] + }, + { + "name": "square-user", + "tags": [ + "user", + "people", + "identity", + "individual", + "personal", + "person", + "account", + "contact", + "profile", + "member", + "client", + "participant", + "guest" + ] + }, + { + "name": "square-user-round", + "tags": [ + "user", + "people", + "identity", + "individual", + "personal", + "person", + "account", + "contact", + "profile", + "member", + "client", + "participant", + "guest" + ] + }, + { + "name": "square-x", + "tags": [ + "x", + "remove", + "delete", + "cancel", + "clear", + "close", + "discard", + "dismiss", + "erase", + "abort", + "reject", + "canceled", + "cancelled", + "cancellation", + "cross", + "times", + "ex", + "×", + "math", + "multiply", + "multiplication" + ] + }, + { + "name": "squares-exclude", + "tags": [ + "square", + "pathfinder", + "path", + "exclude", + "invert", + "xor", + "shape", + "vector" + ] + }, + { + "name": "squares-intersect", + "tags": [ + "square", + "pathfinder", + "path", + "intersect", + "shape", + "include", + "vector" + ] + }, + { + "name": "squares-subtract", + "tags": [ + "square", + "pathfinder", + "path", + "minus", + "subtract", + "subtraction", + "shape", + "front", + "vector" + ] + }, + { + "name": "squares-unite", + "tags": [ + "square", + "pathfinder", + "path", + "unite", + "union", + "shape", + "merge", + "vector" + ] + }, + { "name": "squircle", "tags": ["shape"] }, + { + "name": "squircle-dashed", + "tags": [ + "shape", + "pending", + "progress", + "issue", + "draft", + "code", + "coding", + "version control" + ] + }, + { + "name": "squirrel", + "tags": [ + "animal", + "rodent", + "pet", + "pest", + "nuts", + "retrieve", + "updates", + "storage", + "stash" + ] + }, + { "name": "stamp", "tags": ["mark", "print", "clone", "loyalty", "library"] }, + { + "name": "star", + "tags": [ + "starred", + "featured", + "favorite", + "favourite", + "save", + "wishlist", + "bookmark", + "highlight", + "important", + "priority", + "rating", + "review", + "score", + "quality", + "award", + "achievement", + "excellence", + "like" + ] + }, + { + "name": "star-check", + "tags": [ + "starred", + "featured", + "favorite", + "favourite", + "save", + "wishlist", + "bookmark", + "highlight", + "important", + "priority", + "rating", + "review", + "score", + "quality", + "award", + "achievement", + "excellence", + "like", + "checkmark", + "done", + "completed", + "finished", + "successful", + "confirmed", + "verified", + "validated", + "approved", + "accepted", + "correct", + "valid", + "ticked", + "task", + "todo" + ] + }, + { + "name": "star-half", + "tags": [ + "starred", + "featured", + "favorite", + "favourite", + "save", + "wishlist", + "bookmark", + "highlight", + "important", + "priority", + "rating", + "review", + "score", + "quality", + "award", + "achievement", + "excellence", + "like" + ] + }, + { + "name": "star-minus", + "tags": [ + "starred", + "featured", + "favorite", + "favourite", + "save", + "wishlist", + "bookmark", + "highlight", + "important", + "priority", + "rating", + "review", + "score", + "quality", + "award", + "achievement", + "excellence", + "like", + "minus", + "remove", + "delete", + "cancel", + "erase", + "subtract", + "reduce", + "clear", + "exclude", + "-", + "deselect" + ] + }, + { + "name": "star-off", + "tags": [ + "starred", + "featured", + "favorite", + "favourite", + "save", + "wishlist", + "bookmark", + "highlight", + "important", + "priority", + "rating", + "review", + "score", + "quality", + "award", + "achievement", + "excellence", + "like", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "dislike", + "unlike", + "remove", + "unrate" + ] + }, + { + "name": "star-plus", + "tags": [ + "starred", + "featured", + "favorite", + "favourite", + "save", + "wishlist", + "bookmark", + "highlight", + "important", + "priority", + "rating", + "review", + "score", + "quality", + "award", + "achievement", + "excellence", + "like", + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added", + "join" + ] + }, + { + "name": "star-x", + "tags": [ + "starred", + "featured", + "favorite", + "favourite", + "save", + "wishlist", + "bookmark", + "highlight", + "important", + "priority", + "rating", + "review", + "score", + "quality", + "award", + "achievement", + "excellence", + "like", + "x", + "remove", + "delete", + "cancel", + "clear", + "close", + "discard", + "dismiss", + "erase", + "abort", + "reject", + "canceled", + "cancelled", + "cancellation", + "cross", + "times", + "ex", + "×", + "mark", + "symbol", + "shape", + "vector", + "design", + "graphic" + ] + }, + { + "name": "step-back", + "tags": ["arrow", "previous", "music", "left", "reverse"] + }, + { + "name": "step-forward", + "tags": ["arrow", "next", "music", "right", "continue"] + }, + { + "name": "stethoscope", + "tags": ["phonendoscope", "medical", "heart", "lungs", "sound"] + }, + { + "name": "sticker", + "tags": ["reaction", "emotion", "smile", "happy", "feedback"] + }, + { + "name": "sticky-note", + "tags": [ + "post-it", + "comment", + "annotation", + "reaction", + "memo", + "reminder", + "todo", + "task", + "idea", + "brainstorm", + "document", + "page", + "paper", + "sheet", + "stationary", + "office" + ] + }, + { + "name": "sticky-note-check", + "tags": [ + "post-it", + "comment", + "annotation", + "reaction", + "memo", + "reminder", + "todo", + "task", + "idea", + "brainstorm", + "document", + "page", + "paper", + "sheet", + "stationary", + "office", + "checkmark", + "done", + "completed", + "finished", + "successful", + "confirmed", + "verified", + "validated", + "approved", + "accepted", + "correct", + "valid", + "ticked" + ] + }, + { + "name": "sticky-note-minus", + "tags": [ + "post-it", + "comment", + "annotation", + "reaction", + "memo", + "reminder", + "todo", + "task", + "idea", + "brainstorm", + "document", + "page", + "paper", + "sheet", + "stationary", + "office", + "minus", + "remove", + "delete", + "cancel", + "erase", + "subtract", + "reduce", + "clear", + "exclude", + "-" + ] + }, + { + "name": "sticky-note-off", + "tags": [ + "post-it", + "comment", + "annotation", + "reaction", + "memo", + "reminder", + "todo", + "task", + "idea", + "brainstorm", + "document", + "page", + "paper", + "sheet", + "stationary", + "office", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "mute" + ] + }, + { + "name": "sticky-note-plus", + "tags": [ + "post-it", + "comment", + "annotation", + "reaction", + "memo", + "reminder", + "todo", + "task", + "idea", + "brainstorm", + "document", + "page", + "paper", + "sheet", + "stationary", + "office", + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added" + ] + }, + { + "name": "sticky-note-x", + "tags": [ + "post-it", + "comment", + "annotation", + "reaction", + "memo", + "reminder", + "todo", + "task", + "idea", + "brainstorm", + "document", + "page", + "paper", + "sheet", + "stationary", + "office", + "x", + "remove", + "delete", + "cancel", + "clear", + "close", + "discard", + "dismiss", + "erase", + "abort", + "reject", + "canceled", + "cancelled", + "cancellation", + "cross", + "times", + "ex", + "×" + ] + }, + { + "name": "sticky-notes", + "tags": [ + "post-it", + "annotation", + "memo", + "reminder", + "todo", + "tasks", + "ideas", + "brainstorm", + "documents", + "notes", + "multiple", + "collection", + "group", + "stack", + "clone", + "duplicate", + "copy" + ] + }, + { + "name": "stone", + "tags": [ + "mineral", + "geology", + "nature", + "solid", + "pebble", + "crystal", + "ore", + "hard", + "coal", + "stone", + "rock", + "boulder" + ] + }, + { + "name": "store", + "tags": ["shop", "supermarket", "stand", "boutique", "building"] + }, + { + "name": "stretch-horizontal", + "tags": ["items", "flex", "justify", "distribute"] + }, + { + "name": "stretch-vertical", + "tags": ["items", "flex", "justify", "distribute"] + }, + { + "name": "strikethrough", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "minus", + "remove", + "delete", + "cancel", + "erase", + "subtract", + "reduce", + "clear", + "exclude", + "-", + "cross out", + "format" + ] + }, + { + "name": "subscript", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "digit", + "number", + "numeral", + "numeric", + "numerical" + ] + }, + { + "name": "summary", + "tags": [ + "brief", + "abstract", + "synopsis", + "report", + "digest", + "outline", + "recap", + "condensation", + "summary", + "ai", + "text", + "overview" + ] + }, + { "name": "sun", "tags": ["brightness", "weather", "light", "summer"] }, + { "name": "sun-dim", "tags": ["brightness", "dim", "low", "brightness low"] }, + { "name": "sun-medium", "tags": ["brightness", "medium"] }, + { + "name": "sun-moon", + "tags": [ + "brightness", + "weather", + "light", + "summer", + "dark", + "moon", + "sun", + "theme", + "auto theme", + "system theme", + "appearance" + ] + }, + { + "name": "sun-snow", + "tags": [ + "weather", + "air conditioning", + "temperature", + "hot", + "cold", + "seasons" + ] + }, + { "name": "sunrise", "tags": ["weather", "time", "morning", "day"] }, + { "name": "sunset", "tags": ["weather", "time", "evening", "night"] }, + { + "name": "superscript", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "digit", + "number", + "numeral", + "numeric", + "numerical", + "exponent" + ] + }, + { + "name": "swatch-book", + "tags": [ + "colors", + "colours", + "swatches", + "pantone", + "shades", + "tint", + "hue", + "saturation", + "brightness", + "theme", + "scheme", + "palette", + "samples", + "textile", + "carpet" + ] + }, + { + "name": "swiss-franc", + "tags": [ + "currency", + "money", + "cash", + "banknote", + "funds", + "finance", + "payment", + "balance", + "transaction", + "bill", + "invoice", + "receipt", + "fee", + "subscription", + "price", + "cost", + "amount", + "revenue", + "income", + "expense", + "banking", + "exchange", + "financial", + "economy", + "pricing", + "prices", + "monetization" + ] + }, + { "name": "switch-camera", "tags": ["photo", "selfie", "front", "back"] }, + { + "name": "sword", + "tags": [ + "battle", + "challenge", + "combat", + "duel", + "fantasy", + "game", + "knight", + "melee", + "medieval", + "offense", + "rpg", + "sharp", + "weapon", + "war", + "warrior" + ] + }, + { + "name": "swords", + "tags": [ + "battle", + "challenge", + "combat", + "conflict", + "crossed", + "duel", + "faction", + "fantasy", + "game", + "melee", + "medieval", + "opponent", + "rivalry", + "rpg", + "versus", + "weapon", + "war", + "warrior" + ] + }, + { + "name": "syringe", + "tags": [ + "medicine", + "medical", + "needle", + "pump", + "plunger", + "nozzle", + "blood" + ] + }, + { "name": "table", "tags": ["spreadsheet", "grid"] }, + { "name": "table-2", "tags": ["spreadsheet", "grid"] }, + { "name": "table-cells-merge", "tags": ["spreadsheet", "grid", "row"] }, + { "name": "table-cells-split", "tags": ["spreadsheet", "grid", "row"] }, + { + "name": "table-columns-split", + "tags": [ + "spreadsheet", + "grid", + "cut", + "break", + "divide", + "separate", + "segment" + ] + }, + { + "name": "table-of-contents", + "tags": [ + "toc", + "outline", + "navigation", + "document structure", + "index", + "overview", + "sections", + "chapters", + "content", + "documentation", + "manual", + "knowledge base", + "faq" + ] + }, + { + "name": "table-properties", + "tags": [ + "spreadsheet", + "grid", + "property list", + "plist", + "dictionary", + "object", + "hash" + ] + }, + { + "name": "table-rows-split", + "tags": [ + "spreadsheet", + "grid", + "cut", + "break", + "divide", + "separate", + "segment" + ] + }, + { + "name": "tablet", + "tags": [ + "device", + "mobile", + "screen", + "display", + "touchscreen", + "portable", + "responsive" + ] + }, + { + "name": "tablet-smartphone", + "tags": [ + "device", + "mobile", + "screen", + "display", + "touchscreen", + "portable", + "responsive", + "phone", + "cellphone", + "screens", + "browser", + "testing" + ] + }, + { + "name": "tablets", + "tags": [ + "medicine", + "medication", + "drug", + "prescription", + "pills", + "pharmacy" + ] + }, + { "name": "tag", "tags": ["label", "badge", "ticket", "mark"] }, + { + "name": "tag-plus", + "tags": [ + "label", + "badge", + "ticket", + "mark", + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added" + ] + }, + { + "name": "tag-x", + "tags": [ + "label", + "badge", + "ticket", + "mark", + "x", + "remove", + "delete", + "cancel", + "clear", + "close", + "discard", + "dismiss", + "erase", + "abort", + "reject", + "canceled", + "cancelled", + "cancellation", + "cross", + "times", + "ex", + "×" + ] + }, + { + "name": "tags", + "tags": ["labels", "badges", "tickets", "marks", "copy", "multiple"] + }, + { + "name": "tally-1", + "tags": [ + "count", + "score", + "enumerate", + "days", + "one", + "1", + "first", + "bar", + "prison", + "cell", + "sentence" + ] + }, + { + "name": "tally-2", + "tags": [ + "count", + "score", + "enumerate", + "days", + "two", + "2", + "second", + "double", + "bars", + "prison", + "cell", + "sentence" + ] + }, + { + "name": "tally-3", + "tags": [ + "count", + "score", + "enumerate", + "days", + "three", + "3", + "third", + "triple", + "bars", + "prison", + "cell", + "sentence" + ] + }, + { + "name": "tally-4", + "tags": [ + "count", + "score", + "enumerate", + "days", + "4", + "fourth", + "quadruple", + "bars", + "prison", + "cell", + "sentence" + ] + }, + { + "name": "tally-5", + "tags": [ + "count", + "score", + "enumerate", + "days", + "five", + "5", + "fifth", + "bars", + "prison", + "cell", + "sentence", + "slash", + "/" + ] + }, + { + "name": "tangent", + "tags": [ + "tangential", + "shape", + "circle", + "geometry", + "trigonometry", + "bezier curve" + ] + }, + { + "name": "target", + "tags": [ + "logo", + "bullseye", + "deadline", + "projects", + "overview", + "work", + "productivity" + ] + }, + { + "name": "telescope", + "tags": [ + "astronomy", + "space", + "discovery", + "exploration", + "explore", + "vision", + "perspective", + "focus", + "stargazing", + "observe", + "view" + ] + }, + { + "name": "tent", + "tags": [ + "tipi", + "teepee", + "wigwam", + "lodge", + "camping", + "campsite", + "holiday", + "retreat", + "nomadic", + "native american", + "indian", + "wilderness", + "outdoors" + ] + }, + { + "name": "tent-tree", + "tags": [ + "tipi", + "teepee", + "wigwam", + "lodge", + "camping", + "campsite", + "holiday", + "retreat", + "nomadic", + "native american", + "indian", + "wilderness", + "outdoors" + ] + }, + { "name": "terminal", "tags": ["code", "command line", "prompt", "shell"] }, + { + "name": "test-tube", + "tags": [ + "tube", + "vial", + "phial", + "flask", + "ampoule", + "ampule", + "lab", + "chemistry", + "experiment", + "test" + ] + }, + { + "name": "test-tube-diagonal", + "tags": [ + "tube", + "vial", + "phial", + "flask", + "ampoule", + "ampule", + "lab", + "chemistry", + "experiment", + "test" + ] + }, + { + "name": "test-tubes", + "tags": [ + "tubes", + "vials", + "phials", + "flasks", + "ampoules", + "ampules", + "lab", + "chemistry", + "experiment", + "test" + ] + }, + { "name": "text-align-center", "tags": ["text", "alignment", "center"] }, + { + "name": "text-align-end", + "tags": [ + "position", + "placement", + "right", + "right edge", + "rightmost", + "right side", + "horizontal", + "inline", + "x", + "x-axis", + "text", + "alignment" + ] + }, + { + "name": "text-align-justify", + "tags": ["text", "alignment", "justified", "menu", "list"] + }, + { + "name": "text-align-justify-center", + "tags": [ + "paragraph", + "alignment", + "justified", + "center", + "middle", + "typography", + "editor", + "document" + ] + }, + { + "name": "text-align-justify-end", + "tags": [ + "position", + "placement", + "right", + "right edge", + "rightmost", + "right side", + "horizontal", + "inline", + "x", + "x-axis", + "paragraph", + "alignment", + "justified", + "end", + "typography", + "editor", + "document" + ] + }, + { + "name": "text-align-justify-start", + "tags": [ + "position", + "placement", + "left", + "left edge", + "leftmost", + "left side", + "horizontal", + "inline", + "x", + "x-axis", + "paragraph", + "alignment", + "justified", + "start", + "typography", + "editor", + "document" + ] + }, + { + "name": "text-align-start", + "tags": [ + "position", + "placement", + "left", + "left edge", + "leftmost", + "left side", + "horizontal", + "inline", + "x", + "x-axis", + "text", + "alignment", + "list" + ] + }, + { + "name": "text-cursor", + "tags": [ + "select", + "caret", + "type", + "typing", + "write", + "writing", + "edit", + "insert", + "input", + "textarea" + ] + }, + { "name": "text-cursor-input", "tags": ["select"] }, + { + "name": "text-initial", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "drop cap", + "format", + "letter", + "font size" + ] + }, + { + "name": "text-quote", + "tags": ["blockquote", "quotation", "indent", "reply", "response"] + }, + { + "name": "text-search", + "tags": [ + "search", + "magnifier", + "scan", + "scanning", + "browsing", + "finding", + "find", + "lookup", + "query", + "locate", + "explore", + "discover", + "browse", + "inspect", + "examine", + "investigate", + "magnifying glass", + "lens", + "zoom", + "data", + "copy", + "txt", + "pdf", + "document" + ] + }, + { "name": "text-wrap", "tags": ["words", "lines", "break", "paragraph"] }, + { + "name": "theater", + "tags": [ + "theater", + "theatre", + "entertainment", + "podium", + "stage", + "musical" + ] + }, + { + "name": "thermometer", + "tags": ["temperature", "celsius", "fahrenheit", "weather"] + }, + { + "name": "thermometer-snowflake", + "tags": [ + "temperature", + "celsius", + "fahrenheit", + "weather", + "cold", + "freeze", + "freezing" + ] + }, + { + "name": "thermometer-sun", + "tags": ["temperature", "celsius", "fahrenheit", "weather", "warm", "hot"] + }, + { "name": "thumbs-down", "tags": ["dislike", "bad", "emotion"] }, + { "name": "thumbs-up", "tags": ["like", "good", "emotion"] }, + { + "name": "tic-tac-toe", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "game", + "board", + "grid", + "strategy", + "noughts and crosses" + ] + }, + { + "name": "ticket", + "tags": [ + "entry", + "pass", + "voucher", + "event", + "concert", + "show", + "perforated", + "dashed" + ] + }, + { + "name": "ticket-check", + "tags": [ + "entry", + "pass", + "voucher", + "event", + "concert", + "show", + "perforated", + "dashed", + "checkmark", + "done", + "completed", + "finished", + "successful", + "confirmed", + "verified", + "validated", + "approved", + "accepted", + "correct", + "valid", + "ticked", + "task", + "todo", + "booked", + "purchased", + "receipt", + "redeemed", + "certified", + "checked", + "used" + ] + }, + { + "name": "ticket-minus", + "tags": [ + "entry", + "pass", + "voucher", + "event", + "concert", + "show", + "perforated", + "dashed", + "minus", + "remove", + "delete", + "cancel", + "erase", + "subtract", + "reduce", + "clear", + "exclude", + "-", + "unbook", + "decrease" + ] + }, + { + "name": "ticket-percent", + "tags": [ + "entry", + "pass", + "voucher", + "event", + "concert", + "show", + "perforated", + "dashed", + "discount", + "sale", + "offer", + "deal", + "markdown", + "savings", + "reduction", + "rate", + "interest", + "tax", + "ratio", + "fraction", + "proportion", + "percentage", + "%", + "marketing", + "reduced", + "price tag", + "book", + "purchase" + ] + }, + { + "name": "ticket-plus", + "tags": [ + "entry", + "pass", + "voucher", + "event", + "concert", + "show", + "perforated", + "dashed", + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added", + "book", + "purchase" + ] + }, + { + "name": "ticket-slash", + "tags": [ + "entry", + "pass", + "voucher", + "event", + "concert", + "show", + "perforated", + "dashed", + "minus", + "remove", + "delete", + "cancel", + "erase", + "subtract", + "reduce", + "clear", + "exclude", + "-", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "redeemed", + "used", + "marked", + "checked", + "verified", + "spoiled", + "invalidated", + "void", + "denied", + "refused", + "banned", + "barred", + "cancellation", + "refunded", + "error" + ] + }, + { + "name": "ticket-x", + "tags": [ + "entry", + "pass", + "voucher", + "event", + "concert", + "show", + "perforated", + "dashed", + "x", + "remove", + "delete", + "cancel", + "clear", + "close", + "discard", + "dismiss", + "erase", + "abort", + "reject", + "canceled", + "cancelled", + "cancellation", + "cross", + "times", + "ex", + "×", + "refunded", + "used", + "void", + "invalidated", + "spoiled", + "denied", + "refused", + "banned", + "barred", + "forbidden", + "prohibited", + "error" + ] + }, + { + "name": "tickets", + "tags": [ + "trip", + "travel", + "pass", + "entry", + "voucher", + "event", + "concert", + "show", + "perforated", + "dashed" + ] + }, + { + "name": "tickets-plane", + "tags": [ + "plane", + "trip", + "airplane", + "flight", + "travel", + "fly", + "takeoff", + "vacation", + "passenger", + "pass", + "check-in", + "airport" + ] + }, + { "name": "timeline", "tags": ["tags", "history"] }, + { + "name": "timer", + "tags": [ + "clock", + "time", + "hour", + "minute", + "second", + "timestamp", + "timer", + "duration", + "interval", + "frequency", + "schedule", + "deadline", + "pending", + "delayed", + "watch", + "history", + "stopwatch" + ] + }, + { + "name": "timer-off", + "tags": [ + "clock", + "time", + "hour", + "minute", + "second", + "timestamp", + "timer", + "duration", + "interval", + "frequency", + "schedule", + "deadline", + "pending", + "delayed", + "watch", + "history", + "stopwatch", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line" + ] + }, + { + "name": "timer-reset", + "tags": [ + "clock", + "time", + "hour", + "minute", + "second", + "timestamp", + "timer", + "duration", + "interval", + "frequency", + "schedule", + "deadline", + "pending", + "delayed", + "watch", + "history", + "stopwatch" + ] + }, + { + "name": "toggle-left", + "tags": [ + "position", + "placement", + "left", + "left edge", + "leftmost", + "left side", + "horizontal", + "inline", + "x", + "x-axis", + "on", + "off", + "switch", + "boolean" + ] + }, + { + "name": "toggle-right", + "tags": [ + "position", + "placement", + "right", + "right edge", + "rightmost", + "right side", + "horizontal", + "inline", + "x", + "x-axis", + "on", + "off", + "switch", + "boolean" + ] + }, + { "name": "toilet", "tags": ["toilet", "potty", "bathroom", "washroom"] }, + { + "name": "tombstone", + "tags": [ + "grave", + "gravestone", + "headstone", + "cemetery", + "graveyard", + "death", + "memorial", + "funeral", + "halloween", + "rip", + "obituary", + "deceased", + "epitaph", + "mourning", + "bereavement", + "condolence", + "deprecated", + "retired", + "archived", + "decommissioned" + ] + }, + { "name": "tool-case", "tags": ["tools", "maintenance", "repair"] }, + { + "name": "toolbox", + "tags": [ + "toolkit", + "tools", + "trunk", + "chest", + "box", + "storage", + "utility", + "utilities", + "container", + "kit", + "set", + "repair", + "fix", + "service", + "maintenance", + "mechanic", + "workshop", + "construction", + "hardware", + "equipment", + "gear", + "handyman", + "engineering", + "craft", + "diy" + ] + }, + { + "name": "toothbrush", + "tags": [ + "dental care", + "oral hygiene", + "brushing", + "teeth", + "dentist", + "bathroom", + "toiletries", + "personal care", + "cleaning", + "bristles", + "handle", + "plaque", + "toothpaste", + "self care", + "grooming" + ] + }, + { + "name": "toothbrush-sparkles", + "tags": [ + "dental care", + "oral hygiene", + "brushing", + "teeth", + "dentist", + "bathroom", + "toiletries", + "personal care", + "cleaning", + "bristles", + "handle", + "plaque", + "toothpaste", + "self care", + "grooming", + "sparkle", + "magic", + "ai", + "stars", + "glitter", + "shimmer", + "twinkle", + "shine", + "shiny", + "enchantment", + "polish", + "sanitize", + "artificial intelligence", + "smart", + "assistant", + "automation", + "generate", + "enhancement", + "fresh", + "clean" + ] + }, + { "name": "tornado", "tags": ["weather", "wind", "storm", "hurricane"] }, + { + "name": "torus", + "tags": [ + "donut", + "doughnut", + "ring", + "hollow", + "3d", + "fast food", + "junk food", + "snack", + "treat", + "sweet", + "sugar", + "dessert" + ] + }, + { "name": "touchpad", "tags": ["trackpad", "cursor"] }, + { + "name": "touchpad-off", + "tags": [ + "trackpad", + "cursor", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line" + ] + }, + { + "name": "towel-rack", + "tags": [ + "flannel", + "bathroom", + "toiletries", + "sanitation", + "clean", + "fresh", + "dry", + "laundry", + "laundrette", + "hospitality", + "housekeeping", + "room service", + "spa break", + "health club", + "amenities", + "hanging" + ] + }, + { + "name": "tower-control", + "tags": ["airport", "travel", "tower", "transportation", "lighthouse"] + }, + { + "name": "toy-brick", + "tags": ["lego", "block", "addon", "plugin", "integration"] + }, + { + "name": "tractor", + "tags": ["farming", "farmer", "ranch", "harvest", "equipment", "vehicle"] + }, + { + "name": "traffic-cone", + "tags": ["roadworks", "tarmac", "safety", "block"] + }, + { + "name": "trailer", + "tags": [ + "tow", + "shipping", + "delivery", + "haulage", + "vehicle", + "equipment", + "freight" + ] + }, + { + "name": "train-front", + "tags": [ + "railway", + "metro", + "subway", + "underground", + "high-speed", + "bullet", + "fast", + "track", + "line" + ] + }, + { + "name": "train-front-tunnel", + "tags": [ + "railway", + "metro", + "subway", + "underground", + "high-speed", + "bullet", + "fast", + "track", + "line", + "speed" + ] + }, + { "name": "train-track", "tags": ["railway", "line"] }, + { + "name": "tram-front", + "tags": [ + "railway", + "metro", + "subway", + "underground", + "track", + "line", + "tourism" + ] + }, + { "name": "transgender", "tags": ["gender", "inclusive"] }, + { + "name": "trash", + "tags": [ + "minus", + "remove", + "delete", + "cancel", + "erase", + "subtract", + "reduce", + "clear", + "exclude", + "-", + "empty", + "deletion", + "cleanup", + "junk", + "garbage", + "bin", + "waste", + "recycle", + "discard", + "rubbish" + ] + }, + { + "name": "trash-off", + "tags": [ + "minus", + "remove", + "delete", + "cancel", + "erase", + "subtract", + "reduce", + "clear", + "exclude", + "-", + "empty", + "deletion", + "cleanup", + "junk", + "garbage", + "bin", + "waste", + "recycle", + "discard", + "rubbish", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "trash", + "prevent", + "locked", + "protected" + ] + }, + { "name": "tree-deciduous", "tags": ["tree", "forest", "park", "nature"] }, + { "name": "tree-palm", "tags": ["vacation", "leisure", "island"] }, + { "name": "tree-pine", "tags": ["tree", "pine", "forest", "park", "nature"] }, + { "name": "trees", "tags": ["tree", "forest", "park", "nature"] }, + { + "name": "trending-down", + "tags": [ + "diagram", + "graph", + "visualization", + "data", + "analytics", + "analysis", + "statistics", + "presentation", + "reporting", + "data visualisation", + "visualisation", + "direction", + "movement", + "vertical", + "downward", + "downwards", + "south", + "descend", + "page down" + ] + }, + { + "name": "trending-up", + "tags": [ + "diagram", + "graph", + "visualization", + "data", + "analytics", + "analysis", + "statistics", + "presentation", + "reporting", + "data visualisation", + "visualisation", + "direction", + "movement", + "vertical", + "upward", + "upwards", + "north", + "ascend", + "page up" + ] + }, + { + "name": "trending-up-down", + "tags": [ + "diagram", + "graph", + "visualization", + "data", + "analytics", + "analysis", + "statistics", + "presentation", + "reporting", + "data visualisation", + "visualisation", + "direction", + "movement", + "vertical", + "upward", + "upwards", + "north", + "ascend", + "page up", + "downward", + "downwards", + "south", + "descend", + "page down", + "arrows", + "estimated", + "indeterminate", + "data fluctuation", + "uncertain", + "forecast", + "variable", + "prediction", + "dynamic", + "volatile" + ] + }, + { + "name": "triangle", + "tags": ["equilateral", "delta", "shape", "pyramid", "hierarchy"] + }, + { + "name": "triangle-alert", + "tags": [ + "alert", + "warning", + "danger", + "caution", + "notice", + "error", + "risk", + "concern", + "hazard", + "exclamation mark", + "exclamation point", + "!", + "linter" + ] + }, + { + "name": "triangle-dashed", + "tags": ["equilateral", "delta", "shape", "pyramid", "hierarchy", "dashed"] + }, + { + "name": "triangle-right", + "tags": [ + "direction", + "movement", + "horizontal", + "rightward", + "rightwards", + "east", + "volume", + "controls", + "controller", + "tv remote", + "geometry", + "delta", + "ramp", + "slope", + "incline", + "increase" + ] + }, + { + "name": "triangles-centerline-dashed-horizontal", + "tags": ["reflect", "mirror", "alignment", "dashed"] + }, + { + "name": "triangles-centerline-dashed-vertical", + "tags": ["reflect", "mirror", "alignment", "dashed"] + }, + { + "name": "trophy", + "tags": [ + "prize", + "sports", + "winner", + "achievement", + "award", + "champion", + "celebration", + "victory", + "competition", + "tournament", + "leaderboard", + "ranking", + "success", + "reward", + "cup", + "first", + "gold" + ] + }, + { + "name": "truck", + "tags": ["delivery", "van", "shipping", "haulage", "lorry"] + }, + { + "name": "truck-electric", + "tags": ["delivery", "van", "shipping", "haulage", "lorry", "electric"] + }, + { + "name": "tube-lotion", + "tags": [ + "sunscreen", + "sunblock", + "spf", + "uv", + "cream", + "skincare", + "toothpaste", + "ointment", + "bottle", + "toiletries", + "bathroom", + "beach", + "summer" + ] + }, + { + "name": "turkish-lira", + "tags": [ + "currency", + "money", + "cash", + "banknote", + "funds", + "finance", + "payment", + "balance", + "transaction", + "bill", + "invoice", + "receipt", + "fee", + "subscription", + "price", + "cost", + "amount", + "revenue", + "income", + "expense", + "banking", + "exchange", + "financial", + "economy", + "pricing", + "prices", + "monetization" + ] + }, + { + "name": "turntable", + "tags": [ + "record player", + "gramophone", + "stereo", + "phonograph", + "vinyl", + "lp", + "disc", + "platter", + "cut", + "music", + "analog", + "retro", + "dj deck", + "disc jockey", + "scratch", + "spinning" + ] + }, + { "name": "turtle", "tags": ["animal", "pet", "tortoise", "slow", "speed"] }, + { + "name": "tv", + "tags": [ + "television", + "stream", + "display", + "widescreen", + "high-definition", + "hd", + "1080p", + "4k", + "8k", + "smart", + "digital", + "video", + "entertainment", + "showtime", + "channels", + "terrestrial", + "satellite", + "cable", + "broadcast", + "live", + "frequency", + "tune", + "scan", + "aerial", + "receiver", + "transmission", + "signal", + "connection", + "connectivity" + ] + }, + { + "name": "tv-minimal", + "tags": [ + "television", + "stream", + "display", + "widescreen", + "high-definition", + "hd", + "1080p", + "4k", + "8k", + "smart", + "digital", + "video", + "entertainment", + "showtime", + "channels", + "terrestrial", + "satellite", + "cable", + "broadcast", + "live", + "frequency", + "tune", + "scan", + "aerial", + "receiver", + "transmission", + "signal", + "connection", + "connectivity", + "flat screen", + "home cinema", + "catchup" + ] + }, + { + "name": "tv-minimal-play", + "tags": [ + "television", + "stream", + "display", + "widescreen", + "high-definition", + "hd", + "1080p", + "4k", + "8k", + "smart", + "digital", + "video", + "entertainment", + "showtime", + "channels", + "terrestrial", + "satellite", + "cable", + "broadcast", + "live", + "frequency", + "tune", + "scan", + "aerial", + "receiver", + "transmission", + "signal", + "connection", + "connectivity", + "flat screen", + "home cinema", + "catchup", + "start", + "run", + "running", + "execute", + "launch", + "resume", + "preview", + "begin", + "continue", + "proceed", + "activate", + "trigger", + "initiate", + "movie", + "ott", + "film" + ] + }, + { + "name": "type", + "tags": ["alphabet", "character", "text", "font", "typography"] + }, + { + "name": "type-outline", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "silhouette", + "profile", + "contour", + "stroke", + "line" + ] + }, + { "name": "umbrella", "tags": ["rain", "weather"] }, + { + "name": "umbrella-off", + "tags": [ + "rain", + "weather", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "uncovered", + "uninsured", + "antivirus", + "unprotected", + "risky" + ] + }, + { + "name": "underline", + "tags": ["alphabet", "character", "text", "font", "typography", "format"] + }, + { "name": "undo", "tags": ["redo", "rerun", "history"] }, + { + "name": "undo-2", + "tags": [ + "redo", + "rerun", + "history", + "back", + "return", + "reverse", + "revert", + "direction", + "u-turn" + ] + }, + { "name": "undo-dot", "tags": ["redo", "rerun", "history", "step", "back"] }, + { + "name": "unfold-horizontal", + "tags": ["arrow", "collapse", "fold", "vertical", "dashed"] + }, + { + "name": "unfold-vertical", + "tags": ["arrow", "expand", "vertical", "dashed"] + }, + { + "name": "ungroup", + "tags": [ + "cubes", + "packages", + "parts", + "units", + "collection", + "cluster", + "separate" + ] + }, + { + "name": "university", + "tags": [ + "building", + "education", + "childhood", + "school", + "college", + "academy", + "institute" + ] + }, + { "name": "unlink", "tags": ["url", "unchain"] }, + { "name": "unlink-2", "tags": ["url", "unchain"] }, + { + "name": "unplug", + "tags": [ + "electricity", + "energy", + "electronics", + "socket", + "outlet", + "disconnect" + ] + }, + { "name": "upload", "tags": ["file"] }, + { + "name": "usb", + "tags": [ + "universal", + "serial", + "bus", + "controller", + "connector", + "interface" + ] + }, + { + "name": "usb-c-port", + "tags": [ + "universal", + "serial", + "bus", + "controller", + "connector", + "interface", + "socket", + "plug", + "slot", + "data", + "input", + "output" + ] + }, + { + "name": "user", + "tags": [ + "user", + "people", + "identity", + "individual", + "personal", + "person", + "account", + "contact", + "profile", + "member", + "client", + "participant", + "guest" + ] + }, + { + "name": "user-check", + "tags": [ + "user", + "people", + "identity", + "individual", + "personal", + "person", + "account", + "contact", + "profile", + "member", + "client", + "participant", + "guest", + "checkmark", + "done", + "completed", + "finished", + "successful", + "confirmed", + "verified", + "validated", + "approved", + "accepted", + "correct", + "valid", + "ticked", + "task", + "todo", + "followed", + "subscribed" + ] + }, + { + "name": "user-cog", + "tags": [ + "user", + "people", + "identity", + "individual", + "personal", + "person", + "account", + "contact", + "profile", + "member", + "client", + "participant", + "guest", + "cog", + "cogwheel", + "gear", + "pinion", + "sprocket", + "settings", + "configuration", + "preferences", + "options", + "customization", + "controls", + "control panel", + "edit", + "tools" + ] + }, + { + "name": "user-group", + "tags": [ + "user", + "people", + "identity", + "individual", + "personal", + "person", + "account", + "contact", + "profile", + "member", + "client", + "participant", + "guest", + "group", + "team", + "community", + "membership", + "collaboration", + "organization", + "directory", + "staff", + "family", + "ancestry", + "ancestors", + "lineage", + "parents" + ] + }, + { + "name": "user-key", + "tags": [ + "user", + "people", + "identity", + "individual", + "personal", + "person", + "account", + "contact", + "profile", + "member", + "client", + "participant", + "guest", + "key", + "password", + "security", + "secure", + "keychain", + "key ring", + "access", + "credentials", + "unlocked", + "permission", + "authentication", + "authorization", + "passkey", + "secret", + "token", + "API key", + "encryption", + "protection", + "protected", + "privacy", + "private", + "public", + "license", + "ownership", + "login", + "roles", + "permissions" + ] + }, + { + "name": "user-lock", + "tags": [ + "user", + "people", + "identity", + "individual", + "personal", + "person", + "account", + "contact", + "profile", + "member", + "client", + "participant", + "guest", + "lock", + "padlock", + "private", + "privacy", + "protection", + "password", + "secure", + "security", + "safety", + "protected", + "restricted", + "encrypted", + "authorization", + "read-only", + "blocked", + "locked" + ] + }, + { + "name": "user-minus", + "tags": [ + "user", + "people", + "identity", + "individual", + "personal", + "person", + "account", + "contact", + "profile", + "member", + "client", + "participant", + "guest", + "minus", + "remove", + "delete", + "cancel", + "erase", + "subtract", + "reduce", + "clear", + "exclude", + "-", + "unfollow", + "unsubscribe" + ] + }, + { + "name": "user-pen", + "tags": [ + "user", + "people", + "identity", + "individual", + "personal", + "person", + "account", + "contact", + "profile", + "member", + "client", + "participant", + "guest", + "edit", + "modify", + "update", + "revise", + "amend", + "create", + "change", + "write", + "writer", + "writing", + "pencil", + "compose", + "draft", + "author", + "annotate", + "comment", + "note", + "draw", + "sketch", + "doodle", + "rename", + "customize" + ] + }, + { + "name": "user-plus", + "tags": [ + "user", + "people", + "identity", + "individual", + "personal", + "person", + "account", + "contact", + "profile", + "member", + "client", + "participant", + "guest", + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added", + "follow", + "subscribe" + ] + }, + { + "name": "user-round", + "tags": [ + "user", + "people", + "identity", + "individual", + "personal", + "person", + "account", + "contact", + "profile", + "member", + "client", + "participant", + "guest" + ] + }, + { + "name": "user-round-arrow-left", + "tags": [ + "user", + "people", + "identity", + "individual", + "personal", + "person", + "account", + "contact", + "profile", + "member", + "client", + "participant", + "guest", + "direction", + "movement", + "horizontal", + "leftward", + "leftwards", + "west", + "assign", + "move", + "give", + "setup", + "self", + "me", + "myself", + "avatar", + "incoming", + "recipient", + "assignee", + "inbound" + ] + }, + { + "name": "user-round-check", + "tags": [ + "user", + "people", + "identity", + "individual", + "personal", + "person", + "account", + "contact", + "profile", + "member", + "client", + "participant", + "guest", + "checkmark", + "done", + "completed", + "finished", + "successful", + "confirmed", + "verified", + "validated", + "approved", + "accepted", + "correct", + "valid", + "ticked", + "task", + "todo", + "followed", + "subscribed" + ] + }, + { + "name": "user-round-cog", + "tags": [ + "user", + "people", + "identity", + "individual", + "personal", + "person", + "account", + "contact", + "profile", + "member", + "client", + "participant", + "guest", + "cog", + "cogwheel", + "gear", + "pinion", + "sprocket", + "settings", + "configuration", + "preferences", + "options", + "customization", + "controls", + "control panel", + "edit", + "tools" + ] + }, + { + "name": "user-round-group", + "tags": [ + "user", + "people", + "identity", + "individual", + "personal", + "person", + "account", + "contact", + "profile", + "member", + "client", + "participant", + "guest", + "group", + "team", + "community", + "membership", + "collaboration", + "organization", + "directory", + "staff", + "family", + "ancestry", + "ancestors", + "lineage", + "parents" + ] + }, + { + "name": "user-round-key", + "tags": [ + "user", + "people", + "identity", + "individual", + "personal", + "person", + "account", + "contact", + "profile", + "member", + "client", + "participant", + "guest", + "key", + "password", + "security", + "secure", + "keychain", + "key ring", + "access", + "credentials", + "unlocked", + "permission", + "authentication", + "authorization", + "passkey", + "secret", + "token", + "API key", + "encryption", + "protection", + "protected", + "privacy", + "private", + "public", + "license", + "ownership", + "login", + "roles", + "permissions" + ] + }, + { + "name": "user-round-minus", + "tags": [ + "user", + "people", + "identity", + "individual", + "personal", + "person", + "account", + "contact", + "profile", + "member", + "client", + "participant", + "guest", + "minus", + "remove", + "delete", + "cancel", + "erase", + "subtract", + "reduce", + "clear", + "exclude", + "-", + "unfollow", + "unsubscribe" + ] + }, + { + "name": "user-round-pen", + "tags": [ + "user", + "people", + "identity", + "individual", + "personal", + "person", + "account", + "contact", + "profile", + "member", + "client", + "participant", + "guest", + "edit", + "modify", + "update", + "revise", + "amend", + "create", + "change", + "write", + "writer", + "writing", + "pencil", + "compose", + "draft", + "author", + "annotate", + "comment", + "note", + "draw", + "sketch", + "doodle", + "rename", + "customize" + ] + }, + { + "name": "user-round-plus", + "tags": [ + "user", + "people", + "identity", + "individual", + "personal", + "person", + "account", + "contact", + "profile", + "member", + "client", + "participant", + "guest", + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added", + "follow", + "subscribe" + ] + }, + { + "name": "user-round-search", + "tags": [ + "user", + "people", + "identity", + "individual", + "personal", + "person", + "account", + "contact", + "profile", + "member", + "client", + "participant", + "guest", + "search", + "magnifier", + "scan", + "scanning", + "browsing", + "finding", + "find", + "lookup", + "query", + "locate", + "explore", + "discover", + "browse", + "inspect", + "examine", + "investigate", + "magnifying glass", + "lens", + "zoom" + ] + }, + { + "name": "user-round-shield", + "tags": [ + "security", + "protection", + "admin", + "guard", + "privacy", + "account", + "role", + "permissions", + "profile", + "identity", + "trusted" + ] + }, + { + "name": "user-round-star", + "tags": [ + "user", + "people", + "identity", + "individual", + "personal", + "person", + "account", + "contact", + "profile", + "member", + "client", + "participant", + "guest", + "starred", + "featured", + "favorite", + "favourite", + "save", + "wishlist", + "bookmark", + "highlight", + "important", + "priority", + "rating", + "review", + "score", + "quality", + "award", + "achievement", + "excellence", + "like", + "admin", + "avatar", + "moderator", + "verified", + "badge", + "champion" + ] + }, + { + "name": "user-round-x", + "tags": [ + "user", + "people", + "identity", + "individual", + "personal", + "person", + "account", + "contact", + "profile", + "member", + "client", + "participant", + "guest", + "x", + "remove", + "delete", + "cancel", + "clear", + "close", + "discard", + "dismiss", + "erase", + "abort", + "reject", + "canceled", + "cancelled", + "cancellation", + "cross", + "times", + "ex", + "×", + "unfollow", + "unsubscribe", + "unavailable" + ] + }, + { + "name": "user-search", + "tags": [ + "user", + "people", + "identity", + "individual", + "personal", + "person", + "account", + "contact", + "profile", + "member", + "client", + "participant", + "guest", + "search", + "magnifier", + "scan", + "scanning", + "browsing", + "finding", + "find", + "lookup", + "query", + "locate", + "explore", + "discover", + "browse", + "inspect", + "examine", + "investigate", + "magnifying glass", + "lens", + "zoom" + ] + }, + { + "name": "user-shield", + "tags": [ + "user", + "people", + "identity", + "individual", + "personal", + "person", + "account", + "contact", + "profile", + "member", + "client", + "participant", + "guest", + "shield", + "privacy", + "safeguard", + "security", + "cybersecurity", + "secure", + "safety", + "protection", + "protected", + "guard", + "guardian", + "defense", + "defence", + "defender", + "prevention", + "permissions", + "role" + ] + }, + { + "name": "user-star", + "tags": [ + "user", + "people", + "identity", + "individual", + "personal", + "person", + "account", + "contact", + "profile", + "member", + "client", + "participant", + "guest", + "starred", + "featured", + "favorite", + "favourite", + "save", + "wishlist", + "bookmark", + "highlight", + "important", + "priority", + "rating", + "review", + "score", + "quality", + "award", + "achievement", + "excellence", + "like", + "admin" + ] + }, + { + "name": "user-x", + "tags": [ + "user", + "people", + "identity", + "individual", + "personal", + "person", + "account", + "contact", + "profile", + "member", + "client", + "participant", + "guest", + "x", + "remove", + "delete", + "cancel", + "clear", + "close", + "discard", + "dismiss", + "erase", + "abort", + "reject", + "canceled", + "cancelled", + "cancellation", + "cross", + "times", + "ex", + "×", + "unfollow", + "unsubscribe", + "unavailable" + ] + }, + { + "name": "users", + "tags": [ + "user", + "people", + "identity", + "individual", + "personal", + "person", + "account", + "contact", + "profile", + "member", + "client", + "participant", + "guest", + "group" + ] + }, + { + "name": "users-collaboration", + "tags": [ + "user", + "people", + "identity", + "individual", + "personal", + "person", + "account", + "contact", + "profile", + "member", + "client", + "participant", + "guest", + "group", + "collaboration", + "team", + "communication", + "cooperative", + "workspace", + "peer-to-peer", + "p2p", + "shared", + "delegation", + "handoff", + "coauthor" + ] + }, + { + "name": "users-round", + "tags": [ + "user", + "people", + "identity", + "individual", + "personal", + "person", + "account", + "contact", + "profile", + "member", + "client", + "participant", + "guest", + "group" + ] + }, + { + "name": "users-round-collaboration", + "tags": [ + "user", + "people", + "identity", + "individual", + "personal", + "person", + "account", + "contact", + "profile", + "member", + "client", + "participant", + "guest", + "group", + "collaboration", + "team", + "communication", + "cooperative", + "workspace", + "peer-to-peer", + "p2p", + "shared", + "delegation", + "handoff", + "coauthor" + ] + }, + { + "name": "utensils", + "tags": [ + "fork", + "knife", + "cutlery", + "flatware", + "tableware", + "silverware", + "food", + "restaurant", + "meal", + "breakfast", + "dinner", + "supper" + ] + }, + { + "name": "utensils-crossed", + "tags": [ + "fork", + "knife", + "cutlery", + "flatware", + "tableware", + "silverware", + "food", + "restaurant", + "meal", + "breakfast", + "dinner", + "supper" + ] + }, + { + "name": "utility-pole", + "tags": [ + "electricity", + "energy", + "transmission line", + "telegraph pole", + "power lines", + "phone" + ] + }, + { + "name": "van", + "tags": [ + "minivan", + "cart", + "wagon", + "truck", + "lorry", + "trailer", + "camper", + "vehicle", + "drive", + "trip", + "journey", + "van", + "transport", + "carriage", + "delivery", + "travel" + ] + }, + { + "name": "variable", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "code", + "coding", + "programming", + "symbol", + "calculate", + "algebra", + "x", + "parentheses", + "parenthesis", + "brackets", + "parameter", + "(", + ")" + ] + }, + { + "name": "vault", + "tags": [ + "safe", + "lockbox", + "deposit", + "locker", + "coffer", + "strongbox", + "safety", + "secure", + "storage", + "valuables", + "bank" + ] + }, + { + "name": "vector-polygon", + "tags": [ + "map", + "vector", + "geometry", + "coordinates", + "shape", + "location", + "boundary", + "area", + "region", + "gis", + "geospatial", + "vertices", + "points", + "outline", + "drawing", + "design", + "math" + ] + }, + { + "name": "vector-square", + "tags": [ + "shape", + "geometry", + "art", + "width", + "height", + "size", + "calculate", + "measure", + "select", + "graphics", + "box" + ] + }, + { + "name": "vegan", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "vegetarian", + "fruitarian", + "herbivorous", + "animal rights", + "diet" + ] + }, + { + "name": "venetian-mask", + "tags": ["mask", "masquerade", "impersonate", "secret", "incognito"] + }, + { + "name": "venus", + "tags": ["gender", "sex", "female", "feminine", "woman", "girl"] + }, + { + "name": "venus-and-mars", + "tags": ["gender", "sex", "intersex", "androgynous", "hermaphrodite"] + }, + { + "name": "vibrate", + "tags": [ + "smartphone", + "notification", + "rumble", + "haptic feedback", + "screen" + ] + }, + { + "name": "vibrate-off", + "tags": [ + "smartphone", + "notification", + "rumble", + "haptic feedback", + "screen", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "notifications" + ] + }, + { + "name": "video", + "tags": [ + "camera", + "movie", + "film", + "recording", + "motion picture", + "camcorder", + "reel" + ] + }, + { + "name": "video-off", + "tags": [ + "camera", + "movie", + "film", + "recording", + "motion picture", + "camcorder", + "reel", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line" + ] + }, + { + "name": "videotape", + "tags": [ + "vhs", + "movie", + "film", + "recording", + "motion picture", + "showreel", + "cassette" + ] + }, + { "name": "view", "tags": ["eye", "look"] }, + { + "name": "virus", + "tags": [ + "pathogen", + "infection", + "disease", + "illness", + "contagion", + "outbreak", + "pandemic", + "epidemic", + "covid", + "coronavirus", + "germ", + "microbe", + "microorganism", + "biology", + "medical", + "healthcare", + "malware", + "cybersecurity", + "threat" + ] + }, + { + "name": "virus-off", + "tags": [ + "pathogen", + "infection", + "disease", + "illness", + "contagion", + "outbreak", + "pandemic", + "epidemic", + "covid", + "coronavirus", + "germ", + "microbe", + "microorganism", + "biology", + "medical", + "healthcare", + "malware", + "cybersecurity", + "threat", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "antivirus", + "removed", + "clean", + "safe", + "prevention", + "quarantine" + ] + }, + { + "name": "voicemail", + "tags": ["phone", "cassette", "tape", "reel", "recording", "audio"] + }, + { + "name": "volleyball", + "tags": [ + "beach", + "sand", + "net", + "holiday", + "vacation", + "summer", + "soccer", + "football", + "futbol", + "kick", + "pitch", + "goal", + "score", + "bounce", + "leather", + "wool", + "yarn", + "knitting", + "sewing", + "thread", + "embroidery", + "textile" + ] + }, + { "name": "volume", "tags": ["music", "sound", "mute", "speaker"] }, + { "name": "volume-1", "tags": ["music", "sound", "mute", "speaker"] }, + { "name": "volume-2", "tags": ["music", "sound", "mute", "speaker"] }, + { + "name": "volume-off", + "tags": [ + "music", + "sound", + "mute", + "speaker", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line" + ] + }, + { "name": "volume-x", "tags": ["music", "sound", "mute", "speaker"] }, + { + "name": "vote", + "tags": ["vote", "poll", "ballot", "political", "social", "check", "tick"] + }, + { "name": "wallet", "tags": ["money", "finance", "pocket"] }, + { + "name": "wallet-cards", + "tags": [ + "money", + "finance", + "pocket", + "wallet", + "cards", + "banking", + "cash", + "debit", + "transport", + "credit", + "purchase", + "payment", + "shopping", + "retail", + "consumer", + "cc" + ] + }, + { "name": "wallet-minimal", "tags": ["money", "finance", "pocket"] }, + { + "name": "wallpaper", + "tags": [ + "background", + "texture", + "image", + "art", + "design", + "visual", + "decor", + "pattern", + "screen", + "cover", + "lock screen" + ] + }, + { + "name": "wand", + "tags": [ + "sparkle", + "magic", + "ai", + "stars", + "glitter", + "shimmer", + "twinkle", + "shine", + "shiny", + "enchantment", + "polish", + "sanitize", + "artificial intelligence", + "smart", + "assistant", + "automation", + "generate", + "enhancement", + "wizard", + "magician", + "selection" + ] + }, + { + "name": "wand-sparkles", + "tags": [ + "sparkle", + "magic", + "ai", + "stars", + "glitter", + "shimmer", + "twinkle", + "shine", + "shiny", + "enchantment", + "polish", + "sanitize", + "artificial intelligence", + "smart", + "assistant", + "automation", + "generate", + "enhancement", + "wizard", + "magician", + "selection" + ] + }, + { + "name": "warehouse", + "tags": [ + "storage", + "storehouse", + "depot", + "depository", + "repository", + "stockroom", + "logistics", + "building" + ] + }, + { + "name": "washing-machine", + "tags": [ + "tumble dryer", + "amenities", + "electronics", + "cycle", + "clothes", + "rinse", + "spin", + "drum" + ] + }, + { + "name": "watch", + "tags": [ + "clock", + "time", + "hour", + "minute", + "second", + "timestamp", + "timer", + "duration", + "interval", + "frequency", + "schedule", + "deadline", + "pending", + "delayed", + "watch", + "history" + ] + }, + { + "name": "waves-arrow-down", + "tags": [ + "direction", + "movement", + "vertical", + "downward", + "downwards", + "south", + "descend", + "page down", + "water", + "sea", + "level", + "sound", + "hertz", + "wavelength", + "vibrate", + "low", + "tide", + "ocean", + "rising", + "down", + "falling" + ] + }, + { + "name": "waves-arrow-up", + "tags": [ + "direction", + "movement", + "vertical", + "upward", + "upwards", + "north", + "ascend", + "page up", + "water", + "sea", + "level", + "sound", + "hertz", + "wavelength", + "vibrate", + "high", + "tide", + "ocean", + "rising" + ] + }, + { + "name": "waves-horizontal", + "tags": [ + "water", + "sea", + "sound", + "hertz", + "wavelength", + "vibrate", + "ocean", + "swimming", + "frequency" + ] + }, + { + "name": "waves-ladder", + "tags": [ + "swimming", + "water", + "pool", + "lifeguard", + "ocean", + "🌊", + "🏊‍♂️", + "🏊‍♀️", + "🏊", + "🥽" + ] + }, + { + "name": "waves-vertical", + "tags": [ + "steam", + "warmth", + "temperature", + "burn", + "hot", + "boiling", + "heat", + "smoke", + "vapor", + "smell", + "aroma", + "sauna" + ] + }, + { + "name": "waypoints", + "tags": [ + "network", + "nodes", + "edges", + "links", + "connections", + "relationships", + "structure", + "topology", + "indirection", + "vpn", + "virtual private network", + "proxy", + "bounce", + "reroute", + "path", + "journey", + "planner", + "stops", + "stations", + "shared", + "spread", + "viral" + ] + }, + { "name": "webcam", "tags": ["camera", "security"] }, + { + "name": "webcam-off", + "tags": [ + "camera", + "security", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line" + ] + }, + { "name": "webhook", "tags": ["push", "api", "interface", "callback"] }, + { + "name": "webhook-off", + "tags": [ + "push", + "api", + "interface", + "callback", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line" + ] + }, + { + "name": "weight", + "tags": [ + "mass", + "heavy", + "lead", + "metal", + "measure", + "geometry", + "scales", + "balance" + ] + }, + { + "name": "weight-tilde", + "tags": [ + "measure", + "scale", + "estimate", + "load", + "balance", + "size", + "measurement", + "quantity", + "mass" + ] + }, + { "name": "wheat", "tags": ["corn", "cereal", "grain", "gluten"] }, + { + "name": "wheat-off", + "tags": [ + "corn", + "cereal", + "grain", + "gluten", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "gluten free", + "allergy", + "intolerance", + "diet" + ] + }, + { + "name": "whistle", + "tags": [ + "alert", + "signal", + "sound", + "blow", + "noise", + "coach", + "trainer", + "referee", + "gym", + "game", + "training", + "sports", + "traffic cops", + "police", + "lifeguard", + "safety", + "rescue", + "emergency" + ] + }, + { + "name": "whole-word", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "selection", + "letters", + "characters" + ] + }, + { "name": "wifi", "tags": ["connection", "signal", "wireless", "network"] }, + { + "name": "wifi-cog", + "tags": [ + "connection", + "signal", + "wireless", + "network", + "cog", + "cogwheel", + "gear", + "pinion", + "sprocket", + "settings", + "configuration", + "preferences", + "options", + "customization", + "controls", + "control panel", + "edit", + "tools", + "directory", + "control" + ] + }, + { + "name": "wifi-high", + "tags": ["connection", "signal", "wireless", "network"] + }, + { + "name": "wifi-lock", + "tags": [ + "connection", + "signal", + "wireless", + "network", + "lock", + "padlock", + "private", + "privacy", + "protection", + "password", + "secure", + "security", + "safety", + "protected", + "restricted", + "encrypted", + "authorization", + "read-only", + "blocked", + "locked", + "admin", + "hotspot", + "ssid", + "guest", + "router", + "access", + "authentication" + ] + }, + { + "name": "wifi-low", + "tags": ["connection", "signal", "wireless", "network"] + }, + { + "name": "wifi-off", + "tags": [ + "connection", + "signal", + "wireless", + "network", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "disconnected" + ] + }, + { + "name": "wifi-pen", + "tags": [ + "connection", + "signal", + "wireless", + "network", + "edit", + "modify", + "update", + "revise", + "amend", + "create", + "change", + "write", + "writer", + "writing", + "pencil", + "compose", + "draft", + "author", + "annotate", + "comment", + "note", + "draw", + "sketch", + "doodle", + "rename", + "customize" + ] + }, + { + "name": "wifi-sync", + "tags": [ + "connection", + "signal", + "wireless", + "network", + "synchronize", + "synchronise", + "refresh", + "reload", + "update", + "reconnect", + "retry", + "renew", + "rerun", + "repeat", + "cycle", + "reset", + "restart" + ] + }, + { + "name": "wifi-zero", + "tags": ["connection", "signal", "wireless", "network"] + }, + { "name": "wind", "tags": ["weather", "air", "blow"] }, + { + "name": "wind-arrow-down", + "tags": [ + "weather", + "air", + "blow", + "direction", + "movement", + "vertical", + "downward", + "downwards", + "south", + "descend", + "page down", + "pressure" + ] + }, + { + "name": "wind-arrow-up", + "tags": [ + "weather", + "air", + "blow", + "direction", + "movement", + "vertical", + "upward", + "upwards", + "north", + "ascend", + "page up", + "pressure", + "gust", + "windy", + "sort", + "increase" + ] + }, + { + "name": "wine", + "tags": [ + "alcohol", + "beverage", + "bar", + "drink", + "glass", + "sommelier", + "vineyard", + "winery" + ] + }, + { + "name": "wine-off", + "tags": [ + "alcohol", + "beverage", + "bar", + "drink", + "glass", + "sommelier", + "vineyard", + "winery", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "alcohol free", + "abstinence", + "abstaining", + "teetotalism", + "allergy", + "intolerance" + ] + }, + { + "name": "workflow", + "tags": [ + "network", + "nodes", + "edges", + "links", + "connections", + "relationships", + "structure", + "topology", + "action", + "continuous integration", + "ci", + "automation", + "devops", + "node", + "connection" + ] + }, + { + "name": "worm", + "tags": [ + "invertebrate", + "grub", + "larva", + "snake", + "crawl", + "wiggle", + "slither", + "pest control", + "computer virus", + "malware" + ] + }, + { + "name": "wrench", + "tags": [ + "account", + "settings", + "spanner", + "diy", + "toolbox", + "build", + "construction" + ] + }, + { + "name": "wrench-off", + "tags": [ + "account", + "settings", + "spanner", + "diy", + "toolbox", + "build", + "construction", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line", + "service", + "maintenance" + ] + }, + { + "name": "x", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "x", + "remove", + "delete", + "cancel", + "clear", + "close", + "discard", + "dismiss", + "erase", + "abort", + "reject", + "canceled", + "cancelled", + "cancellation", + "cross", + "times", + "ex", + "×", + "math", + "multiply", + "multiplication" + ] + }, + { + "name": "x-line-top", + "tags": [ + "alphabet", + "character", + "text", + "font", + "typography", + "x", + "remove", + "delete", + "cancel", + "clear", + "close", + "discard", + "dismiss", + "erase", + "abort", + "reject", + "canceled", + "cancelled", + "cancellation", + "cross", + "times", + "ex", + "×", + "math", + "multiply", + "multiplication", + "line", + "top", + "arrow", + "navigation", + "up", + "pointer", + "direction", + "vector", + "symbol", + "mean", + "median", + "average", + "x̄" + ] + }, + { + "name": "zap", + "tags": [ + "flash", + "camera", + "lightning", + "electricity", + "energy", + "power", + "quick" + ] + }, + { + "name": "zap-off", + "tags": [ + "flash", + "camera", + "lightning", + "electricity", + "energy", + "power", + "quick", + "off", + "disable", + "hide", + "restricted", + "turn off", + "block", + "/", + "cancel", + "cancelled", + "disabled", + "inactive", + "unavailable", + "deactivated", + "slash", + "blocked", + "ban", + "prohibited", + "forbidden", + "disallowed", + "hidden", + "invisible", + "strikethrough", + "crossed out", + "diagonal line" + ] + }, + { + "name": "zodiac-aquarius", + "tags": [ + "water bearer", + "waves", + "innovation", + "air", + "future", + "astrology", + "star sign", + "horoscope", + "constellation", + "celestial" + ] + }, + { + "name": "zodiac-aries", + "tags": [ + "ram", + "horns", + "fire", + "energy", + "initiative", + "astrology", + "star sign", + "horoscope", + "constellation", + "celestial" + ] + }, + { + "name": "zodiac-cancer", + "tags": [ + "crab", + "shell", + "protection", + "water", + "intuition", + "astrology", + "star sign", + "horoscope", + "constellation", + "celestial" + ] + }, + { + "name": "zodiac-capricorn", + "tags": [ + "goat", + "mountain", + "ambition", + "earth", + "discipline", + "astrology", + "star sign", + "horoscope", + "constellation", + "celestial" + ] + }, + { + "name": "zodiac-gemini", + "tags": [ + "twins", + "duality", + "communication", + "air", + "adaptability", + "astrology", + "star sign", + "horoscope", + "constellation", + "celestial" + ] + }, + { + "name": "zodiac-leo", + "tags": [ + "lion", + "crown", + "leadership", + "fire", + "confidence", + "astrology", + "star sign", + "horoscope", + "constellation", + "celestial" + ] + }, + { + "name": "zodiac-libra", + "tags": [ + "scales", + "balance", + "justice", + "air", + "harmony", + "astrology", + "star sign", + "horoscope", + "constellation", + "celestial" + ] + }, + { + "name": "zodiac-ophiuchus", + "tags": [ + "serpent", + "snake holder", + "healing", + "knowledge", + "astronomy", + "astrology", + "star sign", + "horoscope", + "constellation", + "celestial" + ] + }, + { + "name": "zodiac-pisces", + "tags": [ + "fish", + "duality", + "water", + "dreams", + "empathy", + "astrology", + "star sign", + "horoscope", + "constellation", + "celestial" + ] + }, + { + "name": "zodiac-sagittarius", + "tags": [ + "archer", + "arrow", + "exploration", + "fire", + "philosophy", + "astrology", + "star sign", + "horoscope", + "constellation", + "celestial" + ] + }, + { + "name": "zodiac-scorpio", + "tags": [ + "scorpion", + "stinger", + "intensity", + "water", + "transformation", + "astrology", + "star sign", + "horoscope", + "constellation", + "celestial" + ] + }, + { + "name": "zodiac-taurus", + "tags": [ + "bull", + "strength", + "stability", + "earth", + "endurance", + "astrology", + "star sign", + "horoscope", + "constellation", + "celestial" + ] + }, + { + "name": "zodiac-virgo", + "tags": [ + "virgin", + "maiden", + "harvest", + "precision", + "earth", + "analysis", + "astrology", + "star sign", + "horoscope", + "constellation", + "celestial" + ] + }, + { + "name": "zoom-in", + "tags": [ + "plus", + "add", + "new", + "create", + "+", + "increase", + "increment", + "extra", + "insert", + "addition", + "added", + "magnifying glass" + ] + }, + { + "name": "zoom-out", + "tags": [ + "minus", + "remove", + "delete", + "cancel", + "erase", + "subtract", + "reduce", + "clear", + "exclude", + "-", + "magnifying glass" + ] + } +] diff --git a/src/data/index.js b/src/data/index.js new file mode 100644 index 0000000..6f22072 --- /dev/null +++ b/src/data/index.js @@ -0,0 +1,30 @@ +import theme from "./colors-theme.json" with { type: "json" }; +import fa_brand from "./icons-fa-brand.json" with { type: "json" }; +import fa_regular from "./icons-fa-regular.json" with { type: "json" }; +import fa_solid from "./icons-fa-solid.json" with { type: "json" }; +import lucide from "./icons-lucide.json" with { type: "json" }; +import stats from "./stats.json" with { type: "json" }; +import pro from "./editions/pro.json" with { type: "json" }; +import pkg from "../../package.json" with { type: "json" }; + +export default { + meta_title: "AdminKit Demo", + meta_slogan: "Bootstrap 5 Admin Template", + meta_description: + "Responsive Admin & Dashboard Template based on Bootstrap 5", + meta_author: "AdminKit", + meta_keywords: + "adminkit, bootstrap, bootstrap 5, admin, dashboard, template, responsive, css, sass, html, theme, front-end, ui kit, web", + theme, + fa_brand, + fa_regular, + fa_solid, + lucide, + // Page, plugin and icon counts from scripts/stats.mjs; vite/stats.js refreshes them + stats, + // AdminKit PRO's stats, a snapshot refreshed with npm run stats:sync + editions: { pro }, + // The footer and the stylesheet banner take the version and year from the build + version: pkg.version, + year: new Date().getFullYear(), +}; diff --git a/src/data/plugins.json b/src/data/plugins.json new file mode 100644 index 0000000..f8edf3c --- /dev/null +++ b/src/data/plugins.json @@ -0,0 +1,34 @@ +{ + "plugins": [ + { + "name": "Chart.js", + "package": "chart.js", + "url": "https://www.chartjs.org/", + "license": "MIT" + }, + { + "name": "jsVectorMap", + "package": "jsvectormap", + "url": "https://jvm-docs.vercel.app/", + "license": "MIT" + }, + { + "name": "SimpleBar", + "package": "simplebar", + "url": "https://grsmto.github.io/simplebar/", + "license": "MIT" + }, + { + "name": "Vanilla Calendar Pro", + "package": "vanilla-calendar-pro", + "url": "https://vanilla-calendar.pro/", + "license": "MIT" + } + ], + "notPlugins": { + "@fontsource/inter": "Font: the Inter typeface", + "@popperjs/core": "Positions Bootstrap's dropdowns, popovers and tooltips", + "bootstrap": "The framework the template is built on", + "lucide": "Icon set, counted under icons" + } +} diff --git a/src/data/stats.json b/src/data/stats.json new file mode 100644 index 0000000..b77fd03 --- /dev/null +++ b/src/data/stats.json @@ -0,0 +1,92 @@ +{ + "edition": "free", + "version": "4.1.0", + "pages": { + "count": 20, + "list": [ + { "file": "charts-chartjs.html", "title": "Chart.js" }, + { "file": "icons-lucide.html", "title": "Lucide" }, + { "file": "index.html", "title": "Analytics Dashboard" }, + { "file": "maps-google.html", "title": "Google Maps" }, + { "file": "pages-404.html", "title": "404" }, + { "file": "pages-500.html", "title": "500" }, + { "file": "pages-blank.html", "title": "Blank Page" }, + { "file": "pages-invoice.html", "title": "Invoice" }, + { "file": "pages-pricing.html", "title": "Pricing" }, + { "file": "pages-profile.html", "title": "Profile" }, + { "file": "pages-sign-in.html", "title": "Sign In" }, + { "file": "pages-sign-up.html", "title": "Sign Up" }, + { "file": "tables-bootstrap.html", "title": "Tables" }, + { "file": "ui-alerts.html", "title": "Alerts" }, + { "file": "ui-buttons.html", "title": "Buttons" }, + { "file": "ui-cards.html", "title": "Cards" }, + { "file": "ui-forms.html", "title": "Forms" }, + { "file": "ui-modals.html", "title": "Modals" }, + { "file": "ui-typography.html", "title": "Typography" }, + { "file": "upgrade-to-pro.html", "title": "Upgrade to Pro" } + ] + }, + "dashboards": { + "count": 1, + "list": [{ "file": "index.html", "title": "Analytics Dashboard" }] + }, + "plugins": { + "count": 4, + "list": [ + { + "name": "Chart.js", + "package": "chart.js", + "url": "https://www.chartjs.org/", + "license": "MIT" + }, + { + "name": "jsVectorMap", + "package": "jsvectormap", + "url": "https://jvm-docs.vercel.app/", + "license": "MIT" + }, + { + "name": "SimpleBar", + "package": "simplebar", + "url": "https://grsmto.github.io/simplebar/", + "license": "MIT" + }, + { + "name": "Vanilla Calendar Pro", + "package": "vanilla-calendar-pro", + "url": "https://vanilla-calendar.pro/", + "license": "MIT" + } + ] + }, + "icons": { "total": 2015, "lucide": 2015 }, + "colorModes": { "count": 2, "list": ["light", "dark"] }, + "colorSchemes": { "count": 1, "list": ["default"] }, + "comparison": [ + { "id": "pages", "label": "Pages", "free": 20, "pro": 53 }, + { "id": "dashboards", "label": "Dashboards", "free": 1, "pro": 5 }, + { "id": "plugins", "label": "Plugins", "free": 4, "pro": 11 }, + { "id": "icons", "label": "Icons", "free": 2015, "pro": 4178 }, + { + "id": "colorSchemes", + "label": "Sidebar color schemes", + "free": 1, + "pro": 3 + }, + { "id": "darkMode", "label": "Dark mode", "free": true, "pro": true }, + { "id": "aiChat", "label": "AI features", "free": false, "pro": true }, + { + "id": "settingsPanel", + "label": "Settings panel", + "free": false, + "pro": true + }, + { + "id": "support", + "label": "Support", + "free": "GitHub issues", + "pro": "Email" + }, + { "id": "license", "label": "License", "free": "MIT", "pro": "Commercial" } + ] +} diff --git a/src/helpers/capitalize.js b/src/helpers/capitalize.js new file mode 100644 index 0000000..fd7896c --- /dev/null +++ b/src/helpers/capitalize.js @@ -0,0 +1,5 @@ +export default function (str) { + if (str && typeof str === "string") { + return str.charAt(0).toUpperCase() + str.slice(1); + } +} diff --git a/src/helpers/compare.js b/src/helpers/compare.js new file mode 100644 index 0000000..81013c3 --- /dev/null +++ b/src/helpers/compare.js @@ -0,0 +1,21 @@ +export default function (v1, operator, v2, options) { + var operators = { + "==": v1 == v2 ? true : false, + "===": v1 === v2 ? true : false, + "!=": v1 != v2 ? true : false, + "!==": v1 !== v2 ? true : false, + ">": v1 > v2 ? true : false, + ">=": v1 >= v2 ? true : false, + "<": v1 < v2 ? true : false, + "<=": v1 <= v2 ? true : false, + "||": v1 || v2 ? true : false, + "&&": v1 && v2 ? true : false, + }; + if (Object.hasOwn(operators, operator)) { + if (operators[operator]) { + return options.fn(this); + } + return options.inverse(this); + } + return console.error('Error: Expression "' + operator + '" not found'); +} diff --git a/src/helpers/divide.js b/src/helpers/divide.js new file mode 100644 index 0000000..becb2bf --- /dev/null +++ b/src/helpers/divide.js @@ -0,0 +1,3 @@ +export default function (number, divide) { + return Math.round(number / divide); +} diff --git a/src/helpers/format-number.js b/src/helpers/format-number.js new file mode 100644 index 0000000..94ff184 --- /dev/null +++ b/src/helpers/format-number.js @@ -0,0 +1,4 @@ +// 1908 -> "1,908" +export default function (value) { + return Number(value).toLocaleString("en-US"); +} diff --git a/src/helpers/index.js b/src/helpers/index.js new file mode 100644 index 0000000..6081a6a --- /dev/null +++ b/src/helpers/index.js @@ -0,0 +1,11 @@ +export { default as capitalize } from "./capitalize.js"; +export { default as compare } from "./compare.js"; +export { default as divide } from "./divide.js"; +export { default as formatNumber } from "./format-number.js"; +export { default as loop } from "./loop.js"; +export { default as min } from "./min.js"; +export { default as plus } from "./plus.js"; +export { default as slice } from "./slice.js"; +export { default as splice } from "./splice.js"; +export { push, stack } from "./stack.js"; +export { default as typeOf } from "./type-of.js"; diff --git a/src/helpers/loop.js b/src/helpers/loop.js new file mode 100644 index 0000000..bb57d49 --- /dev/null +++ b/src/helpers/loop.js @@ -0,0 +1,17 @@ +export default function (from, to, inc, block) { + block = block || { + fn: function () { + return arguments[0]; + }, + }; + + var data = block.data || { index: null }; + + var output = ""; + for (var i = from; i <= to; i += inc) { + data["index"] = i; + output += block.fn(i, { data: data }); + } + + return output; +} diff --git a/src/helpers/min.js b/src/helpers/min.js new file mode 100644 index 0000000..7aeafe4 --- /dev/null +++ b/src/helpers/min.js @@ -0,0 +1,3 @@ +export default function (number, decrement) { + return number - decrement; +} diff --git a/src/helpers/plus.js b/src/helpers/plus.js new file mode 100644 index 0000000..c802eeb --- /dev/null +++ b/src/helpers/plus.js @@ -0,0 +1,3 @@ +export default function (number, increment) { + return number + increment; +} diff --git a/src/helpers/slice.js b/src/helpers/slice.js new file mode 100644 index 0000000..d4e9bea --- /dev/null +++ b/src/helpers/slice.js @@ -0,0 +1,3 @@ +export default function (arr, start, end) { + return arr.slice(start, end); +} diff --git a/src/helpers/splice.js b/src/helpers/splice.js new file mode 100644 index 0000000..23b246d --- /dev/null +++ b/src/helpers/splice.js @@ -0,0 +1,3 @@ +export default function (arr, value) { + return arr.filter((item) => item.name !== value); +} diff --git a/src/helpers/stack.js b/src/helpers/stack.js new file mode 100644 index 0000000..e33c519 --- /dev/null +++ b/src/helpers/stack.js @@ -0,0 +1,17 @@ +import Handlebars from "handlebars"; + +// {{#push "scripts"}}…{{/push}} adds its output to a named stack; {{stack "scripts"}} prints +// the stack in push order. The stacks live on @root, the context of one page render. +const stacks = Symbol("stacks"); + +export function push(name, options) { + const root = options.data.root; + root[stacks] ??= {}; + (root[stacks][name] ??= []).push(options.fn(this)); +} + +export function stack(name, options) { + return new Handlebars.SafeString( + options.data.root[stacks]?.[name]?.join("") ?? "" + ); +} diff --git a/src/helpers/type-of.js b/src/helpers/type-of.js new file mode 100644 index 0000000..9caf057 --- /dev/null +++ b/src/helpers/type-of.js @@ -0,0 +1,4 @@ +// The JavaScript type of a value ("number", "boolean", "string"), for {{#compare}} +export default function (value) { + return typeof value; +} diff --git a/src/img/photos/unsplash-3.jpg b/src/img/photos/unsplash-3.jpg deleted file mode 100644 index 409a92e..0000000 Binary files a/src/img/photos/unsplash-3.jpg and /dev/null differ diff --git a/src/js/app.js b/src/js/app.js index d19dd44..8d2caac 100644 --- a/src/js/app.js +++ b/src/js/app.js @@ -1,16 +1,18 @@ -import "../scss/app.scss"; - // AdminKit (required) import "./modules/bootstrap"; +import "./modules/color-mode"; import "./modules/sidebar"; import "./modules/theme"; -import "./modules/feather"; +import "./modules/icons"; +import "./modules/skeleton"; +import "./modules/reveal"; +import "./modules/count-up"; // Charts import "./modules/chartjs"; // Forms -import "./modules/flatpickr"; +import "./modules/vanilla-calendar"; // Maps -import "./modules/vector-maps"; \ No newline at end of file +import "./modules/vector-maps"; diff --git a/src/js/head.js b/src/js/head.js new file mode 100644 index 0000000..71bcb4a --- /dev/null +++ b/src/js/head.js @@ -0,0 +1,27 @@ +// Runs in before the stylesheet, so the first paint already has the right color mode +// and hides the cards that fade in. Load it as a plain, blocking script: +// +const root = document.documentElement; + +// Color mode: the one stored by js/modules/color-mode.js, or the operating system's for auto +let colorMode; +try { + colorMode = localStorage.getItem("adminkit_config_colorMode"); +} catch { + // Storage is unavailable (private mode) +} +if (colorMode !== "light" && colorMode !== "dark") { + colorMode = matchMedia("(prefers-color-scheme: dark)").matches + ? "dark" + : "light"; +} +root.setAttribute("data-bs-theme", colorMode); + +// Cards fade in as they scroll into view (js/modules/reveal.js). They stay visible without +// JavaScript, and when js/app.js has not started within 3 seconds. +root.classList.add("js-reveal"); +setTimeout(() => { + if (!root.classList.contains("js-reveal-ready")) { + root.classList.remove("js-reveal"); + } +}, 3000); diff --git a/src/js/icons-all.js b/src/js/icons-all.js new file mode 100644 index 0000000..c58cda3 --- /dev/null +++ b/src/js/icons-all.js @@ -0,0 +1,18 @@ +// Every Lucide icon, for the icons page. js/app.js only bundles the icons the templates use. +// The icons come from lucide-static's icon nodes rather than the lucide package, so this +// bundle shares no modules with js/app.js and app.js stays a single self-contained file. +import iconNodes from "lucide-static/icon-nodes.json"; + +const toPascalCase = (name) => + name.replace(/(?:^|-)([a-z0-9])/g, (match, character) => + character.toUpperCase() + ); + +const icons = Object.fromEntries( + Object.entries(iconNodes).map(([name, node]) => [toPascalCase(name), node]) +); + +window.lucide = { + ...window.lucide, + icons: { ...window.lucide?.icons, ...icons }, +}; diff --git a/src/js/modules/bootstrap.js b/src/js/modules/bootstrap.js index 6eff55c..bf64712 100644 --- a/src/js/modules/bootstrap.js +++ b/src/js/modules/bootstrap.js @@ -2,4 +2,4 @@ import * as bootstrap from "bootstrap"; // Bootstrap // Note: If you want to make bootstrap globally available, e.g. for using `bootstrap.modal` -window.bootstrap = bootstrap; \ No newline at end of file +window.bootstrap = bootstrap; diff --git a/src/js/modules/chartjs.js b/src/js/modules/chartjs.js index 74364b8..18981ae 100644 --- a/src/js/modules/chartjs.js +++ b/src/js/modules/chartjs.js @@ -1,6 +1,72 @@ // Usage: https://www.chartjs.org/ -import Chart from "chart.js"; +// The theme colours this module reads are set by ./theme +import "./theme"; +import Chart from "chart.js/auto"; +import { color } from "chart.js/helpers"; +import { markReady } from "./skeleton"; -Chart.defaults.global.defaultFontColor = window.theme["gray-600"]; -Chart.defaults.global.defaultFontFamily = "'Inter', 'Helvetica Neue', 'Helvetica', 'Arial', sans-serif"; -window.Chart = Chart; \ No newline at end of file +const setDefaults = (theme) => { + Chart.defaults.color = theme["gray-600"]; + Chart.defaults.borderColor = color(theme.black).alpha(0.1).rgbString(); +}; + +setDefaults(window.theme); +Chart.defaults.font.family = + "'Inter', 'Helvetica Neue', 'Helvetica', 'Arial', sans-serif"; + +// Bars get rounded top corners; lines keep the curve Chart.js 2 drew by default, +// except on radar charts, which it drew straight +Chart.defaults.elements.bar.borderRadius = 10; +Chart.defaults.elements.line.tension = 0.4; +Chart.overrides.radar.elements = { line: { tension: 0 } }; + +// Charts animate in, except under reduced motion. Colour mode changes update without +// animation (see below). +// Doughnut, pie and polar area charts set their own animation in the dataset defaults. +const reducedMotion = window.matchMedia("(prefers-reduced-motion: reduce)"); +const animations = new Map( + [Chart.defaults, ...Object.values(Chart.defaults.datasets)] + .filter((scope) => scope.animation !== undefined) + .map((scope) => [scope, scope.animation]) +); +const setAnimation = () => { + for (const [scope, animation] of animations) { + scope.animation = reducedMotion.matches ? false : animation; + } +}; + +setAnimation(); +reducedMotion.addEventListener("change", setAnimation); + +const configs = new WeakMap(); + +// Creates a chart from config(window.theme) and calls config again with the new colours +// when the colour mode changes: adminkit.chartjs("#chart", (theme) => ({ type, data, options })) +const createChart = (element, config) => { + const canvas = + typeof element === "string" ? document.querySelector(element) : element; + const chart = new Chart(canvas, config(window.theme)); + configs.set(chart, config); + markReady(canvas); + return chart; +}; + +// Charts created with new Chart() pick up the new default colours only +document.addEventListener("adminkit:themechange", ({ detail: theme }) => { + setDefaults(theme); + + for (const chart of Object.values(Chart.instances)) { + const config = configs.get(chart); + + if (config) { + const { data, options } = config(theme); + chart.data = data; + chart.options = options; + } + + chart.update("none"); + } +}); + +window.Chart = Chart; +window.adminkit = { ...window.adminkit, chartjs: createChart }; diff --git a/src/js/modules/color-mode.js b/src/js/modules/color-mode.js new file mode 100644 index 0000000..3dd185e --- /dev/null +++ b/src/js/modules/color-mode.js @@ -0,0 +1,112 @@ +// Light, dark or auto (follows the operating system) colour mode. The mode is +// data-bs-theme on ; js/head.js sets it from localStorage before the first paint, so +// this module only changes it afterwards, or sets it when the page has no js/head.js. +import { mount } from "./mount"; +import appearance from "../../data/appearance.json" with { type: "json" }; + +const storageKey = "adminkit_config_colorMode"; +// src/data/appearance.json lists the modes css/app.css has; scripts/stats.mjs counts them +const colorModes = [...appearance.colorModes, "auto"]; +const systemDark = window.matchMedia("(prefers-color-scheme: dark)"); + +export const getStoredColorMode = () => { + try { + const mode = localStorage.getItem(storageKey); + return colorModes.includes(mode) ? mode : null; + } catch { + return null; + } +}; + +let colorMode = getStoredColorMode() ?? "auto"; + +const applyColorMode = () => { + const theme = + colorMode === "auto" ? (systemDark.matches ? "dark" : "light") : colorMode; + document.documentElement.setAttribute("data-bs-theme", theme); +}; + +export const getColorMode = () => colorMode; + +// Dispatches adminkit:colormodechange; window.theme follows through adminkit:themechange +export const setColorMode = (mode, { persist = true } = {}) => { + if (!colorModes.includes(mode)) { + return; + } + + colorMode = mode; + + if (persist) { + try { + localStorage.setItem(storageKey, mode); + } catch { + // Storage is unavailable (private mode); the mode still applies to this page + } + } + + applyColorMode(); + document.dispatchEvent( + new CustomEvent("adminkit:colormodechange", { detail: { colorMode } }) + ); +}; + +// Controls: any element with data-color-mode-value="light|dark|auto" sets that mode. +// Buttons get .active and aria-pressed, radios get checked. Elements with +// data-color-mode-icon="" are shown for the current mode only, and the +// data-color-mode-toggle element's aria-label names it. +const controls = + "[data-color-mode-value], [data-color-mode-icon], [data-color-mode-toggle]"; + +const syncControl = (element) => { + const { colorModeValue, colorModeIcon } = element.dataset; + + if (colorModeValue && element instanceof HTMLInputElement) { + element.checked = colorModeValue === colorMode; + } else if (colorModeValue) { + element.classList.toggle("active", colorModeValue === colorMode); + element.setAttribute("aria-pressed", colorModeValue === colorMode); + } + + if (colorModeIcon) { + element.hidden = colorModeIcon !== colorMode; + } + + if (element.hasAttribute("data-color-mode-toggle")) { + element.setAttribute("aria-label", `Color mode (${colorMode})`); + } +}; + +if (!document.documentElement.hasAttribute("data-bs-theme")) { + applyColorMode(); +} + +// Astro's view transitions give the attributes of the new page, which has no +// data-bs-theme: the mode is set again before the page is painted +new MutationObserver(() => { + if (!document.documentElement.hasAttribute("data-bs-theme")) { + applyColorMode(); + } +}).observe(document.documentElement, { + attributes: true, + attributeFilter: ["data-bs-theme"], +}); + +systemDark.addEventListener("change", () => { + if (colorMode === "auto") { + applyColorMode(); + } +}); + +document.addEventListener("click", (event) => { + const control = event.target.closest("[data-color-mode-value]"); + + if (control) { + setColorMode(control.dataset.colorModeValue); + } +}); + +document.addEventListener("adminkit:colormodechange", () => { + document.querySelectorAll(controls).forEach(syncControl); +}); + +mount(controls, syncControl); diff --git a/src/js/modules/count-up.js b/src/js/modules/count-up.js new file mode 100644 index 0000000..607b788 --- /dev/null +++ b/src/js/modules/count-up.js @@ -0,0 +1,73 @@ +// Numbers marked with data-count-up count up from zero the first time they scroll into +// view. The element's text is the final value and sets the format: anything around the +// number stays ("$", "%", "+", "-") and the number keeps its "," thousands separators and +// its decimals ("$21,300", "+2.65%", "1,024.50"). The text ends on the original string, +// and with reduced motion it never changes. Put it on an element that holds only the +// number and sits on a line of its own, such as the stat cards' .h1, so its changing width +// does not move anything else. +import { mount } from "./mount"; + +const duration = 1000; +const number = /(\d{1,3}(?:,\d{3})+|\d+)(\.\d+)?/; +const reducedMotion = window.matchMedia("(prefers-reduced-motion: reduce)"); + +const parse = (text) => { + const match = text.match(number); + + if (!match) { + return null; + } + + const [digits, integer, fraction = ""] = match; + const decimals = Math.max(fraction.length - 1, 0); + + return { + before: text.slice(0, match.index), + after: text.slice(match.index + digits.length), + value: Number(integer.replaceAll(",", "") + fraction), + format: new Intl.NumberFormat("en-US", { + minimumFractionDigits: decimals, + maximumFractionDigits: decimals, + useGrouping: integer.includes(","), + }), + }; +}; + +const countUp = (element) => { + const text = element.textContent; + const parsed = parse(text); + + if (!parsed) { + return; + } + + const { before, after, value, format } = parsed; + const start = performance.now(); + + const step = (now) => { + const progress = Math.min((now - start) / duration, 1); + + if (progress < 1) { + const eased = 1 - (1 - progress) ** 3; + element.textContent = before + format.format(value * eased) + after; + requestAnimationFrame(step); + } else { + element.textContent = text; + } + }; + + requestAnimationFrame(step); +}; + +const observer = new IntersectionObserver((entries) => { + for (const entry of entries) { + if (entry.isIntersecting) { + observer.unobserve(entry.target); + countUp(entry.target); + } + } +}); + +if (!reducedMotion.matches) { + mount("[data-count-up]", (element) => observer.observe(element)); +} diff --git a/src/js/modules/feather.js b/src/js/modules/feather.js deleted file mode 100644 index c33233d..0000000 --- a/src/js/modules/feather.js +++ /dev/null @@ -1,14 +0,0 @@ -// Usage: https://feathericons.com/ -import feather from "feather-icons"; - -document.addEventListener("DOMContentLoaded", () => { - try { - feather.replace(); - } - catch(e) { - console.log('You might have made a typo with one of the feather icons'); - console.log(e); - } -}); - -window.feather = feather; \ No newline at end of file diff --git a/src/js/modules/flatpickr.js b/src/js/modules/flatpickr.js deleted file mode 100644 index fb0a759..0000000 --- a/src/js/modules/flatpickr.js +++ /dev/null @@ -1,4 +0,0 @@ -// Usage: https://flatpickr.js.org/ -import flatpickr from "flatpickr"; - -window.flatpickr = flatpickr; \ No newline at end of file diff --git a/src/js/modules/icons.js b/src/js/modules/icons.js new file mode 100644 index 0000000..0149d62 --- /dev/null +++ b/src/js/modules/icons.js @@ -0,0 +1,172 @@ +// Lucide icons: https://lucide.dev/icons/ +// Only the icons the templates use are bundled. To add one, import it here, add it to +// `icons` and use it as ; `npm run lint` checks the list. +import { mount } from "./mount"; +import { + createElement, + AppWindow, + Bell, + Book, + Briefcase, + Calendar, + ChartNoAxesColumn, + ChartPie, + Check, + CircleAlert, + CircleQuestionMark, + Coffee, + Copy, + CreditCard, + Download, + Eye, + File, + Gauge, + House, + LayoutGrid, + LifeBuoy, + List, + LogIn, + LogOut, + Mail, + Map, + MapPin, + MessageSquare, + Minus, + Moon, + Pen, + Phone, + Printer, + SearchX, + Send, + ServerCrash, + Settings, + ShieldCheck, + SlidersVertical, + Square, + SquareCheckBig, + Sun, + SunMoon, + Tag, + TextAlignStart, + Timer, + Trash, + User, + UserPlus, + Users, +} from "lucide"; + +const icons = { + AppWindow, + Bell, + Book, + Briefcase, + Calendar, + ChartNoAxesColumn, + ChartPie, + Check, + CircleAlert, + CircleQuestionMark, + Coffee, + Copy, + CreditCard, + Download, + Eye, + File, + Gauge, + House, + LayoutGrid, + LifeBuoy, + List, + LogIn, + LogOut, + Mail, + Map, + MapPin, + MessageSquare, + Minus, + Moon, + Pen, + Phone, + Printer, + SearchX, + Send, + ServerCrash, + Settings, + ShieldCheck, + SlidersVertical, + Square, + SquareCheckBig, + Sun, + SunMoon, + Tag, + TextAlignStart, + Timer, + Trash, + User, + UserPlus, + Users, +}; + +// Each gets its icon as a child with the element's classes and +// attributes, and i[data-lucide] is display: contents (_lucide.scss), so the takes its +// place in the layout. The stays, so a framework that renders it can update or remove +// it, and changing data-lucide renders the other icon. +const toPascalCase = (name) => + name.replace(/(?:^|-)([a-z0-9])/g, (match, character) => + character.toUpperCase() + ); + +const renderIcon = ( + element, + { icons = window.lucide.icons, attrs = {} } = {} +) => { + const name = element.getAttribute("data-lucide"); + const icon = icons[toPascalCase(name)]; + + if (!icon) { + console.warn( + `Lucide icon "${name}" is not bundled (src/js/modules/icons.js)` + ); + return; + } + + // The id stays on the only; the lucide- class names the icon + const elementAttrs = {}; + for (const attr of element.attributes) { + if (attr.name !== "id" && attr.name !== "data-lucide") { + elementAttrs[attr.name] = attr.value; + } + } + const labelled = Object.keys(elementAttrs).some( + (attr) => attr.startsWith("aria-") || attr === "role" || attr === "title" + ); + const classes = [ + "lucide", + `lucide-${name}`, + ...(elementAttrs.class ?? "").split(" "), + ...(attrs.class ?? "").split(" "), + ]; + + element.replaceChildren( + createElement(icon, { + ...(labelled ? {} : { "aria-hidden": "true" }), + ...attrs, + ...elementAttrs, + class: [...new Set(classes.filter(Boolean))].join(" "), + }) + ); +}; + +// Icons render by themselves, also when they are added later, so lucide.createIcons() is no +// longer needed. It stays for existing code and renders the same way. On the icons page +// js/icons-all.js adds every other icon, whichever script runs first. +window.lucide = { + createIcons: ({ icons, attrs, root = document } = {}) => { + root.querySelectorAll("[data-lucide]:not(svg)").forEach((element) => { + renderIcon(element, { icons, attrs }); + }); + }, + icons: { ...icons, ...window.lucide?.icons }, +}; + +mount("[data-lucide]:not(svg)", (element) => renderIcon(element)); diff --git a/src/js/modules/mount.js b/src/js/modules/mount.js new file mode 100644 index 0000000..17c374e --- /dev/null +++ b/src/js/modules/mount.js @@ -0,0 +1,112 @@ +// The modules set up their markup (icons, the sidebar, SimpleBar, ...) once the page has +// loaded and again whenever such markup is added later, as single-page apps, Turbo and +// Livewire do, so nothing has to be called by hand. One MutationObserver on looks +// at the added elements, and at the removed ones when a setup has something to clean up. +// It watches , not , because Turbo Drive and Astro's view transitions replace +// : the new one is an added element like any other. +const entries = []; +let started = false; + +const matching = (selector, root) => { + const elements = [...root.querySelectorAll(selector)]; + return root.matches(selector) ? [root, ...elements] : elements; +}; + +const run = (entry, element) => { + entry.cleanups.get(element)?.(); + const cleanup = entry.setup(element); + entry.cleanups.set(element, typeof cleanup === "function" ? cleanup : null); + entry.cleansUp ||= typeof cleanup === "function"; +}; + +const setUp = (entry, root) => { + for (const element of matching(entry.selector, root)) { + if (!entry.cleanups.has(element)) { + run(entry, element); + } + } +}; + +const tearDown = (entry, root) => { + for (const element of matching(entry.selector, root)) { + // A moved element is in the page again by now + if (!element.isConnected && entry.cleanups.has(element)) { + entry.cleanups.get(element)?.(); + entry.cleanups.delete(element); + } + } +}; + +const elementNodes = (nodes) => + [...nodes].filter((node) => node.nodeType === Node.ELEMENT_NODE); + +const observer = new MutationObserver((records) => { + for (const { type, target, addedNodes, removedNodes } of records) { + // A changed data-lucide sets the icon up again, which renders the new icon + if (type === "attributes") { + for (const entry of entries) { + if (target.isConnected && target.matches(entry.selector)) { + run(entry, target); + } + } + continue; + } + + for (const element of elementNodes(removedNodes)) { + for (const entry of entries.filter(({ cleansUp }) => cleansUp)) { + tearDown(entry, element); + } + } + + for (const element of elementNodes(addedNodes)) { + if (element.isConnected) { + for (const entry of entries) { + setUp(entry, element); + } + } + } + } +}); + +const start = () => { + started = true; + for (const entry of entries) { + setUp(entry, document.body); + } + observer.observe(document.documentElement, { + childList: true, + subtree: true, + attributeFilter: ["data-lucide"], + }); +}; + +/** + * Calls setup(element) for every element that matches selector, in the page and added later, + * once per element. When setup returns a function, it is called after the element has left + * the page. + */ +export const mount = (selector, setup) => { + const entry = { selector, setup, cleanups: new WeakMap(), cleansUp: false }; + entries.push(entry); + + if (started) { + setUp(entry, document.body); + } +}; + +// js/app.js runs before DOMContentLoaded as a deferred or module script, so it starts then, +// after the page scripts. Imported later, by a framework or a client-only plugin, it starts +// right away. Both see readyState "interactive"; the navigation timing tells them apart. +const loaded = () => { + if (document.readyState !== "interactive") { + return document.readyState === "complete"; + } + const [navigation] = performance.getEntriesByType("navigation"); + return !navigation || navigation.domContentLoadedEventStart > 0; +}; + +if (loaded()) { + start(); +} else { + document.addEventListener("DOMContentLoaded", start); +} diff --git a/src/js/modules/reveal.js b/src/js/modules/reveal.js new file mode 100644 index 0000000..94aabef --- /dev/null +++ b/src/js/modules/reveal.js @@ -0,0 +1,49 @@ +// Cards fade up as they scroll into view: every top-level .card inside .reveal-cards (the +// layouts put it on
, which itself fades in once the page scripts have run) and any +// element with .reveal. Elements that come into view together are staggered through +// --ak-reveal-index, capped at maxStagger steps. The hidden state is CSS under +// html.js-reveal, which js/head.js sets; without JavaScript nothing is hidden. Styles: +// scss/3-components/_reveal.scss. .ak-reveal and .ak-reveal-cards are v4 aliases, remove +// them in v5. +import { mount } from "./mount"; + +const cards = ".reveal-cards, .ak-reveal-cards"; +const selector = `.reveal, .ak-reveal, :is(${cards}) .card:not(.card .card)`; +const maxStagger = 8; + +const reveal = (elements) => { + elements.forEach((element, index) => { + const onTransitionEnd = (event) => { + if (event.target === element && event.propertyName === "opacity") { + element.removeEventListener("transitionend", onTransitionEnd); + element.classList.remove("revealing"); + element.style.removeProperty("--ak-reveal-index"); + } + }; + + element.addEventListener("transitionend", onTransitionEnd); + element.style.setProperty("--ak-reveal-index", Math.min(index, maxStagger)); + element.classList.add("revealed", "revealing"); + }); +}; + +const observer = new IntersectionObserver((entries) => { + const visible = entries + .filter((entry) => entry.isIntersecting) + .map((entry) => entry.target); + + visible.forEach((element) => observer.unobserve(element)); + reveal(visible); +}); + +const root = document.documentElement; + +// js/head.js shows everything again if this module has not run within a few seconds +root.classList.add("js-reveal-ready"); + +// mount() starts after the page scripts that build charts and tables on DOMContentLoaded, so +// their layout is in place before the cards become visible +if (root.classList.contains("js-reveal")) { + mount(cards, (element) => element.classList.add("revealed")); + mount(selector, (element) => observer.observe(element)); +} diff --git a/src/js/modules/sidebar.js b/src/js/modules/sidebar.js index 0a63944..d92e1d6 100644 --- a/src/js/modules/sidebar.js +++ b/src/js/modules/sidebar.js @@ -1,45 +1,136 @@ // Usage: https://github.com/Grsmto/simplebar +import { Offcanvas } from "bootstrap"; import SimpleBar from "simplebar"; +import { mount } from "./mount"; -const initialize = () => { - initializeSimplebar(); - initializeSidebarCollapse(); -} +// From the lg breakpoint the sidebar is part of the layout and the navbar toggle hides and +// shows it. Below it the sidebar is a Bootstrap offcanvas (.offcanvas-lg) that the toggle +// opens as a sheet, which brings the backdrop, focus trap, Escape and scroll lock. The +// handlers listen on document, so they also work for a sidebar or toggle added later. +const sidebarSelector = ".js-sidebar"; +const toggleSelector = ".js-sidebar-toggle"; -const initializeSimplebar = () => { - const simplebarElement = document.getElementsByClassName("js-simplebar")[0]; +let desktop; +// Read once the stylesheet applies +const isDesktop = () => { + if (!desktop) { + const breakpoint = getComputedStyle( + document.documentElement + ).getPropertyValue("--bs-breakpoint-lg"); + desktop = matchMedia(`(min-width: ${breakpoint})`); + // Bootstrap closes the sheet when the window grows past the breakpoint + desktop.addEventListener("change", updateToggles); + } + return desktop.matches; +}; + +// aria-expanded: the toggle expands and collapses the sidebar it controls; its name says +// what a click does +const updateToggles = () => { + const sidebar = document.querySelector(sidebarSelector); + + if (!sidebar) { + return; + } + + const expanded = isDesktop() + ? !sidebar.classList.contains("collapsed") + : sidebar.classList.contains("show"); + + for (const toggle of document.querySelectorAll(toggleSelector)) { + toggle.setAttribute("aria-expanded", String(expanded)); + toggle.setAttribute( + "aria-label", + expanded ? "Collapse sidebar" : "Expand sidebar" + ); + } +}; + +// Charts resize once the sidebar has moved; without a transition (reduced motion) there is +// no transitionend, so they resize right away +const resizeAfterTransition = (sidebar) => { + const resize = () => window.dispatchEvent(new Event("resize")); + + if (!parseFloat(getComputedStyle(sidebar).transitionDuration)) { + resize(); + return; + } - if(simplebarElement){ - const simplebarInstance = new SimpleBar(document.getElementsByClassName("js-simplebar")[0]); + const onTransitionEnd = (event) => { + if (event.target === sidebar) { + sidebar.removeEventListener("transitionend", onTransitionEnd); + resize(); + } + }; + sidebar.addEventListener("transitionend", onTransitionEnd); +}; - /* Recalculate simplebar on sidebar dropdown toggle */ - const sidebarDropdowns = document.querySelectorAll(".js-sidebar [data-bs-parent]"); - - sidebarDropdowns.forEach(link => { - link.addEventListener("shown.bs.collapse", () => { - simplebarInstance.recalculate(); - }); - link.addEventListener("hidden.bs.collapse", () => { - simplebarInstance.recalculate(); - }); - }); +document.addEventListener("click", (event) => { + const sidebar = document.querySelector(sidebarSelector); + + if (!sidebar) { + return; + } + + if (event.target.closest(toggleSelector)) { + if (isDesktop()) { + sidebar.classList.toggle("collapsed"); + updateToggles(); + resizeAfterTransition(sidebar); + } else { + Offcanvas.getOrCreateInstance(sidebar).toggle(); + } + } else if ( + // Following a link closes the sheet + !isDesktop() && + event.target.closest(`${sidebarSelector} a[href]:not([data-bs-toggle])`) + ) { + Offcanvas.getInstance(sidebar)?.hide(); + } +}); + +document.addEventListener("shown.bs.offcanvas", ({ target }) => { + if (target.matches(sidebarSelector)) { + updateToggles(); } -} +}); -const initializeSidebarCollapse = () => { - const sidebarElement = document.getElementsByClassName("js-sidebar")[0]; - const sidebarToggleElement = document.getElementsByClassName("js-sidebar-toggle")[0]; +// Focus returns to the toggle, as with Bootstrap's data-bs-toggle triggers +document.addEventListener("hidden.bs.offcanvas", ({ target }) => { + if (target.matches(sidebarSelector)) { + updateToggles(); + document.querySelector(toggleSelector)?.focus(); + } +}); + +mount(toggleSelector, updateToggles); - if(sidebarElement && sidebarToggleElement) { - sidebarToggleElement.addEventListener("click", () => { - sidebarElement.classList.toggle("collapsed"); +// Turbo and Astro remove the old sidebar while a link click is still closing its sheet. The +// sheet finishes its transition first; disposing it earlier breaks Bootstrap's callback. +const disposeSheet = (sidebar) => { + const offcanvas = Offcanvas.getInstance(sidebar); - sidebarElement.addEventListener("transitionend", () => { - window.dispatchEvent(new Event("resize")); - }); - }); + if (sidebar.matches(".showing, .hiding")) { + const dispose = () => offcanvas.dispose(); + sidebar.addEventListener("shown.bs.offcanvas", dispose, { once: true }); + sidebar.addEventListener("hidden.bs.offcanvas", dispose, { once: true }); + } else { + offcanvas?.dispose(); } -} +}; + +mount(sidebarSelector, (sidebar) => { + updateToggles(); + return () => disposeSheet(sidebar); +}); + +mount(".js-simplebar", (element) => { + const simplebar = new SimpleBar(element); + const recalculate = () => simplebar.recalculate(); + + // Recalculate when a sidebar dropdown opens or closes + element.addEventListener("shown.bs.collapse", recalculate); + element.addEventListener("hidden.bs.collapse", recalculate); -// Wait until page is loaded -document.addEventListener("DOMContentLoaded", () => initialize()); \ No newline at end of file + return () => simplebar.unMount(); +}); diff --git a/src/js/modules/skeleton.js b/src/js/modules/skeleton.js new file mode 100644 index 0000000..a335c27 --- /dev/null +++ b/src/js/modules/skeleton.js @@ -0,0 +1,20 @@ +// Loading placeholders for content that JavaScript draws (charts, maps, tables). The markup +// shows a .skeleton inside an element marked aria-busy="true"; markReady(element) +// removes the placeholders around element, sets aria-busy="false" and fires +// adminkit:ready on element. The chart, map and table helpers call it when they have +// drawn; call adminkit.ready(element) for your own content. Styles: +// scss/3-components/_skeleton.scss. .ak-skeleton is a v4 alias, remove it in v5. +export const markReady = (element) => { + const busy = element.closest('[aria-busy="true"]'); + + if (busy) { + busy.querySelectorAll(".skeleton, .ak-skeleton").forEach((skeleton) => { + skeleton.remove(); + }); + busy.setAttribute("aria-busy", "false"); + } + + element.dispatchEvent(new CustomEvent("adminkit:ready", { bubbles: true })); +}; + +window.adminkit = { ...window.adminkit, ready: markReady }; diff --git a/src/js/modules/theme.js b/src/js/modules/theme.js index 7c79c40..48caff8 100644 --- a/src/js/modules/theme.js +++ b/src/js/modules/theme.js @@ -1,27 +1,50 @@ -/* - * Add color theme colors to the window object - * so this can be used by the charts and vector maps - */ +// window.theme holds the theme colours for the charts and vector maps, read from the CSS +// custom properties of the current colour mode. It is rebuilt when data-bs-theme changes, +// followed by an adminkit:themechange event on document with the new colours as detail. +const readTheme = () => { + const style = getComputedStyle(document.documentElement); + const value = (name) => style.getPropertyValue(`--${name}`).trim(); + const id = + document.documentElement.getAttribute("data-bs-theme") === "dark" + ? "dark" + : "light"; -const theme = { - "primary": "#3B7DDD", - "secondary": "#6c757d", - "success": "#1cbb8c", - "info": "#17a2b8", - "warning": "#fcb92c", - "danger": "#dc3545", - "white": "#fff", - "gray-100": "#f8f9fa", - "gray-200": "#e9ecef", - "gray-300": "#dee2e6", - "gray-400": "#ced4da", - "gray-500": "#adb5bd", - "gray-600": "#6c757d", - "gray-700": "#495057", - "gray-800": "#343a40", - "gray-900": "#212529", - "black": "#000" + const theme = { + id, + name: id === "dark" ? "Dark" : "Light", + primary: value("bs-primary"), + secondary: value("bs-secondary"), + success: value("bs-success"), + info: value("bs-info"), + warning: value("bs-warning"), + danger: value("bs-danger"), + // In dark mode white is the surface colour and black the brightest text colour + white: value("ak-surface-bg"), + black: value("bs-emphasis-color"), + "body-bg": value("bs-body-bg"), + "body-color": value("bs-body-color"), + "border-color": value("bs-border-color"), + }; + + for (const step of [100, 200, 300, 400, 500, 600, 700, 800, 900]) { + theme[`gray-${step}`] = value(`bs-gray-${step}`); + } + + return theme; }; -// Add theme to the window object -window.theme = theme; \ No newline at end of file +window.theme = readTheme(); + +new MutationObserver(() => { + const theme = readTheme(); + + if (theme.id !== window.theme.id) { + window.theme = theme; + document.dispatchEvent( + new CustomEvent("adminkit:themechange", { detail: theme }) + ); + } +}).observe(document.documentElement, { + attributes: true, + attributeFilter: ["data-bs-theme"], +}); diff --git a/src/js/modules/vanilla-calendar.js b/src/js/modules/vanilla-calendar.js new file mode 100644 index 0000000..86eb598 --- /dev/null +++ b/src/js/modules/vanilla-calendar.js @@ -0,0 +1,4 @@ +// Usage: https://vanilla-calendar-pro.com/ +import { Calendar } from "vanilla-calendar-pro"; + +window.VanillaCalendar = { Calendar }; diff --git a/src/js/modules/vector-maps.js b/src/js/modules/vector-maps.js index 91e7473..179bf3c 100644 --- a/src/js/modules/vector-maps.js +++ b/src/js/modules/vector-maps.js @@ -1,3 +1,43 @@ // Usage: https://github.com/themustafaomar/jsvectormap -import "jsvectormap" -import "./vector-maps/world.js" \ No newline at end of file +// The theme colours this module reads are set by ./theme +import "./theme"; +import { markReady } from "./skeleton"; +import "jsvectormap"; +import "./vector-maps/world.js"; + +const maps = new Set(); + +// Creates a map from config(window.theme) and restyles its regions and markers with +// config(newTheme) when the colour mode changes: +// adminkit.vectorMap((theme) => ({ selector: "#map", map: "world", regionStyle, markerStyle })) +const createMap = (config) => { + const options = config(window.theme); + const map = new window.jsVectorMap(options); + maps.add({ map, config }); + markReady( + typeof options.selector === "string" + ? document.querySelector(options.selector) + : options.selector + ); + return map; +}; + +document.addEventListener("adminkit:themechange", ({ detail: theme }) => { + for (const { map, config } of maps) { + const { regionStyle, markerStyle } = config(theme); + + if (regionStyle?.initial) { + for (const { element } of Object.values(map.regions)) { + element.setStyle(regionStyle.initial); + } + } + + if (markerStyle?.initial) { + for (const { element } of Object.values(map._markers)) { + element.setStyle(markerStyle.initial); + } + } + } +}); + +window.adminkit = { ...window.adminkit, vectorMap: createMap }; diff --git a/src/layouts/auth.hbs b/src/layouts/auth.hbs new file mode 100644 index 0000000..79e3eda --- /dev/null +++ b/src/layouts/auth.hbs @@ -0,0 +1,22 @@ + + + + {{> site-meta }} + + +
+
+
+
+
+ {{> @partial-block }} +
+
+
+
+
+ + + {{stack "scripts"}} + + diff --git a/src/layouts/default.hbs b/src/layouts/default.hbs new file mode 100644 index 0000000..1218065 --- /dev/null +++ b/src/layouts/default.hbs @@ -0,0 +1,26 @@ + + + + {{> site-meta }} + + +
+ {{> site-sidebar }} + +
+ {{> site-navbar }} + +
+
+ {{> @partial-block }} +
+
+ + {{> site-footer }} +
+
+ + + {{stack "scripts"}} + + diff --git a/src/pages/charts-chartjs.html b/src/pages/charts-chartjs.html new file mode 100644 index 0000000..1caf1f6 --- /dev/null +++ b/src/pages/charts-chartjs.html @@ -0,0 +1,27 @@ +--- +name: charts-chartjs +title: Chart.js +layout: default.hbs +active: { charts: true, chartjs: true } +meta_description: "Chart.js demo for the free AdminKit Bootstrap 5 admin template. Bar, doughnut, line and pie charts for your dashboard." +--- + +{{> site-title title=title badge="Get more chart examples"}} + +
+
+ {{> charts/chartjs-line colors=theme }} +
+ +
+ {{> charts/chartjs-bar colors=theme }} +
+ +
+ {{> charts/chartjs-doughnut colors=theme }} +
+ +
+ {{> charts/chartjs-pie colors=theme }} +
+
diff --git a/src/pages/icons-lucide.html b/src/pages/icons-lucide.html new file mode 100644 index 0000000..bac6aac --- /dev/null +++ b/src/pages/icons-lucide.html @@ -0,0 +1,64 @@ +--- +name: icons-lucide +title: Lucide +layout: default.hbs +active: { icons: true, lucide: true } +meta_description: "Lucide icons demo for the free AdminKit Bootstrap 5 admin template. {{formatNumber stats.icons.lucide}} open-source SVG icons for your dashboard." +--- + +{{> site-title title=title badge="Get more icons"}} + +
+
+

Lucide Icons

+

Open-source SVG icons

+
+
+ +
+ {{#each lucide}} +
+ {{this.name}} +
+ {{/each}} +
+

No icons match your search.

+
+
+ +{{#push "scripts"}} + + + +{{/push}} diff --git a/src/pages/index.html b/src/pages/index.html new file mode 100644 index 0000000..f8a5849 --- /dev/null +++ b/src/pages/index.html @@ -0,0 +1,9 @@ +--- +layout: default.hbs +title: Analytics Dashboard +category: dashboard +active: { dashboards: true, analytics: true } +meta_description: "Free Bootstrap 5 analytics dashboard demo: visitors, page views, bounce rate, session duration, traffic and browser charts, a live visitors map and top pages." +--- + +{{> dashboard/analytics }} diff --git a/src/pages/maps-google.html b/src/pages/maps-google.html new file mode 100644 index 0000000..9cebb30 --- /dev/null +++ b/src/pages/maps-google.html @@ -0,0 +1,58 @@ +--- +name: maps-google +title: Google Maps +layout: default.hbs +active: { maps: true, google-maps: true } +meta_description: "Google Maps demo for the free AdminKit Bootstrap 5 admin template. Embed interactive maps with markers directly into your dashboard." +--- + +{{> site-title title=title badge="Get more Google Maps examples"}} + +
+
+
+
+

Default Map

+

Displays the default road map view.

+
+
+
+
+
+
+
+
+
+

Hybrid Map

+

Displays a mixture of normal and satellite views.

+
+
+
+
+
+
+
+ +{{#push "scripts"}} + + + + +{{/push}} diff --git a/src/pages/pages-404.html b/src/pages/pages-404.html new file mode 100644 index 0000000..5ac42fe --- /dev/null +++ b/src/pages/pages-404.html @@ -0,0 +1,14 @@ +--- +name: pages-404 +title: 404 +layout: auth.hbs +active: { auth: true, page-404: true } +meta_description: "404 error page demo for the free AdminKit Bootstrap 5 admin template. A responsive not-found page for your dashboard." +--- + +
+

404

+

Page not found.

+

The page you are looking for might have been removed.

+ Return to website +
diff --git a/src/pages/pages-500.html b/src/pages/pages-500.html new file mode 100644 index 0000000..ca2f0e1 --- /dev/null +++ b/src/pages/pages-500.html @@ -0,0 +1,14 @@ +--- +name: pages-500 +title: 500 +layout: auth.hbs +active: { auth: true, page-500: true } +meta_description: "500 error page demo for the free AdminKit Bootstrap 5 admin template. A responsive server error page for your dashboard." +--- + +
+

500

+

Internal server error.

+

The server encountered something unexpected that didn't allow it to complete the request.

+ Return to website +
diff --git a/src/pages/pages-blank.html b/src/pages/pages-blank.html new file mode 100644 index 0000000..3a634b0 --- /dev/null +++ b/src/pages/pages-blank.html @@ -0,0 +1,21 @@ +--- +name: pages-blank +title: Blank Page +layout: default.hbs +active: { pages: true, blank: true } +meta_description: "Blank page demo for the free AdminKit Bootstrap 5 admin template. An empty starting point for your own dashboard pages." +--- + +

Blank Page

+ +
+
+
+
+

Empty card

+
+
+
+
+
+
diff --git a/src/pages/pages-invoice.html b/src/pages/pages-invoice.html new file mode 100644 index 0000000..4a7e0b5 --- /dev/null +++ b/src/pages/pages-invoice.html @@ -0,0 +1,311 @@ +--- +name: pages-invoice +title: Invoice +layout: default.hbs +active: { pages: true, invoice: true } +meta_description: "Invoice page demo for the free AdminKit Bootstrap 5 template. An invoice with status, billing details, line items, totals and payment details that prints without the sidebar and navbar." +--- + +
+
+

{{title}}

+ Get more page examples +
+
+ + + +
+
+ +
+
+
+
+
+
+ + AdminKit +
+
+

Invoice

+
INV-2026-0148
+ Unpaid +
+
+ +
+
+
Issued
+
+
+
+
Due date
+
+
+
+
Purchase order
+
PO-7731
+
+
+
Amount due
+
$9,579.60
+
+
+ +
+ +
+
+
From
+ AdminKit LLC +
+ 354 Roy Alley
+ Denver, CO 80202
+ USA
+ billing@example.com +
+
+
+
Billed to
+ Ashton Cox +
+ Levitz Furniture
+ 4183 Forest Avenue
+ New York, NY 10011
+ USA
+ ashton.cox@example.com +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Items on invoice INV-2026-0148
DescriptionQtyUnit priceAmount
+
Website redesign, design phase
+
Homepage, product and checkout templates
+
1$4,800.00$4,800.00
+
Front-end development
+
Bootstrap 5 build, hours · 32 × $95.00
+
32$95.00$3,040.00
+
Content migration
+
Product pages moved from the old store · 120 × $6.50
+
120$6.50$780.00
+
Hosting and maintenance
+
October 2026
+
1$250.00$250.00
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
Totals
Subtotal$8,870.00
Sales tax (8%)$709.60
Total$9,579.60
Amount paid$0.00
Amount due (USD)$9,579.60
+
+
+ +
+ +
+
+

Payment details

+
+
Bank
+
Front Range Bank
+
Account name
+
AdminKit LLC
+
Account
+
Ending in 4821
+
Reference
+
INV-2026-0148
+
+
+
+

Notes

+

+ Thank you for your business. Please include the invoice number with your payment. Payment is due within 30 days. +

+

+ Questions about this invoice? Email billing@example.com or call +1 (303) 555-0142. +

+
+
+
+
+
+ +
+
+
+

Activity

+
+
    +
  • + +
    +
    Reminder scheduled
    +
    +
    +
  • +
  • + +
    +
    Viewed by Ashton Cox
    +
    +
    +
  • +
  • + +
    +
    Sent to ashton.cox@example.com
    +
    +
    +
  • +
  • + +
    +
    Created by Charles Hall
    +
    +
    +
  • +
+
+
+
+ + + +{{#push "scripts"}} + +{{/push}} diff --git a/src/pages/pages-pricing.html b/src/pages/pages-pricing.html new file mode 100644 index 0000000..811a4c8 --- /dev/null +++ b/src/pages/pages-pricing.html @@ -0,0 +1,282 @@ +--- +name: pages-pricing +title: Pricing +layout: default.hbs +active: { pages: true, pricing: true } +meta_description: "Pricing page demo for the free AdminKit Bootstrap 5 admin template. Three plans with a monthly and yearly billing switch, a plan comparison table and frequently asked questions." +--- + +{{> site-title title=title badge="Get more page examples"}} + +
+
+
+

Choose the plan that fits your team

+

Start free and upgrade when you need more. Paid plans come with a 14-day trial, no credit card required.

+ +
+ + + + +
+
+ +
+
+
+

Free

+

For individuals and small teams getting started.

+

+ $0 + per user / month +

+

Free forever

+ +
    +
  • Up to 3 users
  • +
  • 5 projects
  • +
  • 2 GB storage
  • +
  • Tasks, boards and calendar
  • +
  • Two-factor authentication
  • +
+
+
+ +
+
+

Plus

+

For companies that need security and admin controls.

+

+ $30 + per user / month +

+

Billed monthly

+ +
    +
  • Everything in Standard, plus:
  • +
  • Unlimited users
  • +
  • 1 TB storage
  • +
  • Single sign-on (SAML)
  • +
  • Custom roles and permissions
  • +
  • Audit log and daily backups
  • +
  • Priority support
  • +
+
+
+
+ +

Prices in USD, excluding VAT. Need more than 500 users or an invoice-based contract? Contact sales

+ +
+
+

Compare plans

+

Every limit and feature, side by side.

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Feature + Free + $0 per user / month + Get started with Free + + Standard + $15 per user / month + Start trial with Standard + + Plus + $30 per user / month + Start trial with Plus +
Usage
UsersUp to 3Up to 50Unlimited
Projects5UnlimitedUnlimited
Storage2 GB100 GB1 TB
Guest accessNoYesYes
Features
Tasks, boards and calendarYesYesYes
ReportsBasicAdvancedAdvanced
Integrations and API accessNoYesYes
Custom roles and permissionsNoNoYes
Security
Two-factor authenticationYesYesYes
BackupsWeeklyWeeklyDaily
Single sign-on (SAML)NoNoYes
Audit logNoNo1 year
Support
Help center and communityYesYesYes
Email supportNo1 business day4 hours
+
+
+ +
+
+

Frequently asked questions

+
+
+
+
+

Do I need a credit card to start a trial?

+

No. You add a payment method only when you decide to keep a paid plan at the end of the 14-day trial.

+
+
+

What happens when the trial ends?

+

You choose a paid plan or your workspace moves to Free. Your projects stay; anything above the Free limits becomes read-only.

+
+
+

Can I change plans later?

+

Yes, at any time from the billing settings. Upgrades apply right away and are prorated; downgrades apply at the next renewal.

+
+
+

How are users counted?

+

You pay for each member of your workspace. Guests who can only view or comment on shared projects are free.

+
+
+

Which payment methods do you accept?

+

All major credit and debit cards. Yearly plans can also be paid by bank transfer against an invoice.

+
+
+

Can I cancel at any time?

+

Yes. Your plan stays active until the end of the billing period, and you can export your data whenever you want.

+
+
+
+
+
+
+ +{{#push "scripts"}} + +{{/push}} diff --git a/src/pages/pages-profile.html b/src/pages/pages-profile.html new file mode 100644 index 0000000..511a19a --- /dev/null +++ b/src/pages/pages-profile.html @@ -0,0 +1,366 @@ +--- +name: pages-profile +title: Profile +layout: default.hbs +active: { pages: true, profile: true } +meta_description: "User profile demo for the free AdminKit Bootstrap 5 admin template. Profile header with stats, about and skills, team, projects and an activity feed." +--- + +{{> site-title title=title badge="Get more page examples"}} + +
+
+
+
+ Charles Hall +
+
+

Charles Hall

+

Senior Product Designer, Design team

+
    +
  • San Francisco, CA
  • +
  • Joined March 2022
  • +
+
+
+ +
+
+
+
+
+
+
Active projects
+
6
+
+
+
Tasks done in October
+
148
+
+
+
Hours logged in October
+
126
+
+
+
Delivered on time
+
94%
+
+
+
+
+ +
+
+
+
+

About

+
+
+

+ I look after the design system and work with the developers on the CRM and the customer portal. Before joining the team I spent six years designing booking tools for travel companies. +

+ +
+
+

Skills

+
    +
  • Figma
  • +
  • Design systems
  • +
  • Prototyping
  • +
  • User research
  • +
  • Accessibility
  • +
  • HTML & CSS
  • +
  • Usability testing
  • +
+
+
+ +
+
+

Team

+
+
    +
  • + +
    +
    Sharon Lessman
    +
    Head of Design
    +
    + +
  • +
  • + +
    +
    Christina Mason
    +
    Lead Developer
    +
    + +
  • +
  • + +
    +
    William Harris
    +
    Product Manager
    +
    + +
  • +
  • + +
    +
    Vanessa Tucker
    +
    UX Researcher
    +
    + +
  • +
+
+
+ +
+
+
+

Projects

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ProjectStatusProgressDue date
+
Company posters
+
Lead designer
+
In progress +
+
+
+
+ 75% +
+
Nov 6, 2026
+
Upgrade CRM software
+
UI design
+
In progress +
+
+
+
+ 50% +
+
Nov 20, 2026
+
New company logo
+
Brand design
+
On hold +
+
+
+
+ 20% +
+
Dec 4, 2026
+
Landing page redesign
+
Lead designer
+
Finished +
+
+
+
+ 100% +
+
Oct 16, 2026
+
+
+ +
+
+

Activity

+
+
+

Today

+
    +
  • + +
    +
    +

    Christina Mason commented on Company posters

    + +
    +

    + The A2 export looks right now. Can you send the print files to the agency before Friday? +

    +
    +
  • +
  • + +
    +
    +

    You uploaded 2 files to Company posters

    + +
    + +
    +
  • +
  • + +
    +
    +

    Sharon Lessman assigned you Review the onboarding screens in Upgrade CRM software

    + +
    +
    +
  • +
+ +

Yesterday

+
    +
  • + +
    +
    +

    William Harris moved New company logo to On hold

    + +
    +

    + Parking this until the brand workshop on November 12. We'll pick it up with the new brief. +

    +
    +
  • +
  • + +
    +
    +

    You completed 4 tasks in Upgrade CRM software

    + +
    +
    +
  • +
  • + +
    +
    +

    Vanessa Tucker shared the results of usability test round 3

    + +
    +

    + 7 of 8 people finished the new checkout without help. Most of the trouble was on the address step. +

    +
    +
  • +
+ + + + +
+
+
+
+ +{{#push "scripts"}} + +{{/push}} diff --git a/src/pages/pages-sign-in.html b/src/pages/pages-sign-in.html new file mode 100644 index 0000000..6510ebd --- /dev/null +++ b/src/pages/pages-sign-in.html @@ -0,0 +1,43 @@ +--- +name: pages-sign-in +title: Sign In +layout: auth.hbs +active: { auth: true, sign-in: true } +meta_description: "Sign in page demo for the free AdminKit Bootstrap 5 admin template. A responsive authentication form for your dashboard." +--- + +
+

Welcome back!

+

+ Sign in to your account to continue +

+
+ +
+
+
+
+
+ + +
+
+ + +
+
+
+ + +
+
+
+ Sign in +
+
+
+
+
+

+ Don't have an account? Sign up +

\ No newline at end of file diff --git a/src/pages/pages-sign-up.html b/src/pages/pages-sign-up.html new file mode 100644 index 0000000..b5f4cc9 --- /dev/null +++ b/src/pages/pages-sign-up.html @@ -0,0 +1,41 @@ +--- +name: pages-sign-up +title: Sign Up +layout: auth.hbs +active: { auth: true, sign-up: true } +meta_description: "Sign up page demo for the free AdminKit Bootstrap 5 admin template. A responsive registration form for your dashboard." +--- + +
+

Get started

+

+ Start creating the best possible user experience for your customers. +

+
+ +
+
+
+
+
+ + +
+
+ + +
+
+ + +
+
+ Sign up +
+
+
+
+
+

+ Already have account? Log In +

\ No newline at end of file diff --git a/src/pages/tables-bootstrap.html b/src/pages/tables-bootstrap.html new file mode 100644 index 0000000..664b71e --- /dev/null +++ b/src/pages/tables-bootstrap.html @@ -0,0 +1,443 @@ +--- +name: tables-bootstrap +title: Tables +layout: default.hbs +active: { bootstrap-tables: true } +meta_description: "Bootstrap tables demo for the free AdminKit template. Basic, striped, bordered, hoverable and responsive tables for your dashboard." +--- + +{{> site-title title=title badge="Get DataTables examples"}} + +
+
+
+
+

Basic Table

+

Using the most basic table markup, here’s how .table-based tables look in Bootstrap.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePhone NumberDate of BirthActions
Vanessa Tucker864-348-0485June 21, 1961 + + +
William Harris914-939-2458May 15, 1948 + + +
Sharon Lessman704-993-5435September 14, 1965 + + +
Christina Mason765-382-8195April 2, 1971 + + +
Robin Schneiders202-672-1407October 12, 1966 + + +
+
+
+ +
+
+
+

Striped Rows

+

Use .table-striped to add zebra-striping to any table row within the <tbody>.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePhone NumberDate of BirthActions
Vanessa Tucker864-348-0485June 21, 1961 + + +
William Harris914-939-2458May 15, 1948 + + +
Sharon Lessman704-993-5435September 14, 1965 + + +
Christina Mason765-382-8195April 2, 1971 + + +
Robin Schneiders202-672-1407October 12, 1966 + + +
+
+
+ +
+
+
+

Condensed Table

+

Add .table-sm to make tables more compact by cutting cell padding in half.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Operating systemUsersShare
Windows8,23238.0%
macOS4,10819.0%
Android3,95018.3%
iOS3,31715.3%
Linux1,1845.5%
ChromeOS6423.0%
Other2050.9%
+
+
+ +
+
+
+

Hoverable Rows

+

Add .table-hover to enable a hover state on table rows within a <tbody>.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePhone NumberDate of Birth
+ Vanessa Tucker + 864-348-0485June 21, 1961
+ William Harris + 914-939-2458May 15, 1948
+ Sharon Lessman + 704-993-5435September 14, 1965
+ Christina Mason + 765-382-8195April 2, 1971
+
+
+ +
+
+
+

Bordered Table

+

Add .table-bordered for borders on all sides of the table and cells.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePhone NumberDate of BirthActions
Vanessa Tucker864-348-0485June 21, 1961 + + +
William Harris914-939-2458May 15, 1948 + + +
Sharon Lessman704-993-5435September 14, 1965 + + +
Christina Mason765-382-8195April 2, 1971 + + +
Robin Schneiders202-672-1407October 12, 1966 + + +
+
+
+ +
+
+
+

Contextual Classes

+

Use contextual classes to color table rows or individual cells.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePhone NumberDate of BirthActions
Vanessa Tucker864-348-0485June 21, 1961 + + +
William Harris914-939-2458May 15, 1948 + + +
Sharon Lessman704-993-5435September 14, 1965 + + +
Christina Mason765-382-8195April 2, 1971 + + +
Robin Schneiders202-672-1407October 12, 1966 + + +
+
+
+ +
+
+
+

Always responsive

+

Across every breakpoint, use .table-responsive for horizontally scrolling tables.

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#HeadingHeadingHeadingHeadingHeadingHeadingHeadingHeadingHeading
1CellCellCellCellCellCellCellCellCell
2CellCellCellCellCellCellCellCellCell
3CellCellCellCellCellCellCellCellCell
+
+
+
+
diff --git a/src/pages/ui-alerts.html b/src/pages/ui-alerts.html new file mode 100644 index 0000000..47f945b --- /dev/null +++ b/src/pages/ui-alerts.html @@ -0,0 +1,178 @@ +--- +name: ui-alerts +title: Alerts +layout: default.hbs +active: { ui: true, alerts: true } +meta_description: "Bootstrap alerts demo for the free AdminKit template. Contextual, icon and outline alert styles for your dashboard." +--- + +{{> site-title title=title badge="Get more notification examples"}} + +
+
+
+
+

Default alerts

+

Alerts with contextual background color.

+
+
+
+ {{#each theme}} + + {{/each}} +
+
+
+
+ +
+
+
+

Icon alerts

+

Alerts with icon and background color.

+
+
+
+ {{#each theme}} + + {{/each}} +
+
+
+
+ +
+
+
+

Outline alerts

+

Alerts with contextual icon background.

+
+
+
+ {{#each theme}} + + {{/each}} +
+
+
+
+ +
+
+
+

Colored outline alerts

+

Alerts with contextual outline color.

+
+
+
+ {{#each theme}} + + {{/each}} +
+
+
+
+ +
+
+
+

Alerts with additional content

+

Alerts with large contents.

+
+
+
+ +
+ +
+ +
+
+
+
+ +
+
+
+

Alerts with buttons

+

Alerts with actions.

+
+
+
+ +
+ +
+ +
+
+
+
+
diff --git a/src/pages/ui-buttons.html b/src/pages/ui-buttons.html new file mode 100644 index 0000000..b4f95e3 --- /dev/null +++ b/src/pages/ui-buttons.html @@ -0,0 +1,117 @@ +--- +name: ui-buttons +title: Buttons +layout: default.hbs +active: { ui: true, buttons: true } +meta_description: "Bootstrap buttons demo for the free AdminKit template. Solid, outline, icon and button group styles for your dashboard." +--- + +{{> site-title title=title badge="Get more button examples"}} + +
+
+
+
+

Basic Buttons

+

Default Bootstrap buttons style.

+
+
+
+ {{#each theme}} + + {{/each}} +
+
+ {{#each theme}} + + {{/each}} +
+
+
+ +
+
+

Button Sizes

+

Fancy larger or smaller buttons.

+
+
+
+ + + +
+
+
+
+ +
+
+
+

Button Group

+

Button group components.

+
+
+

Horizontal button group

+
+ + + +
+
+
+ + + +
+
+
+ + + +
+ +

Button toolbar

+ + +

Vertical button group

+
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+
+
+
+
diff --git a/src/pages/ui-cards.html b/src/pages/ui-cards.html new file mode 100644 index 0000000..b8669ec --- /dev/null +++ b/src/pages/ui-cards.html @@ -0,0 +1,63 @@ +--- +name: ui-cards +title: Cards +layout: default.hbs +active: { ui: true, cards: true } +meta_description: "Bootstrap cards demo for the free AdminKit template. Card layouts with images, headers and footers for your dashboard." +--- + +{{> site-title title=title badge="Get more card examples"}} + +
+
+
+ Unsplash +
+

Card with image and links

+
+
+

Some quick example text to build on the card title and make up the bulk of the card's content.

+ Card link + Another link +
+
+
+ +
+
+ Unsplash +
+

Card with image and button

+
+
+

Some quick example text to build on the card title and make up the bulk of the card's content.

+ Go somewhere +
+
+
+ +
+
+
+

Card with links

+
+
+

Some quick example text to build on the card title and make up the bulk of the card's content.

+ Card link + Another link +
+
+
+ +
+
+
+

Card with button

+
+
+

Some quick example text to build on the card title and make up the bulk of the card's content.

+ Go somewhere +
+
+
+
diff --git a/src/pages/ui-forms.html b/src/pages/ui-forms.html new file mode 100644 index 0000000..cd1715c --- /dev/null +++ b/src/pages/ui-forms.html @@ -0,0 +1,177 @@ +--- +name: ui-forms +title: Forms +layout: default.hbs +active: { ui: true, forms: true } +meta_description: "Bootstrap forms demo for the free AdminKit template. Inputs, selects, checkboxes, radios and validation for your dashboard." +--- + +{{> site-title title=title badge="Get more form examples"}} + +
+
+
+
+

Input

+
+
+ +
+
+ +
+
+

Textarea

+
+
+ +
+
+ +
+
+

Checkboxes

+
+
+
+ + +
+
+ + + +
+
+
+ +
+
+

Read only

+
+
+ +
+
+
+ +
+
+
+

Radios

+
+
+
+ + + +
+
+ + + +
+
+
+ +
+
+

Selects

+
+
+ + + +
+
+ +
+
+

Disabled

+
+
+
+ + +
+
+ + +
+ +
+
+
+
diff --git a/src/pages/ui-modals.html b/src/pages/ui-modals.html new file mode 100644 index 0000000..edb94c1 --- /dev/null +++ b/src/pages/ui-modals.html @@ -0,0 +1,152 @@ +--- +name: ui-modals +title: Modals +layout: default.hbs +active: { ui: true, modals: true } +sizes: { small: sm, medium: md, large: lg } +meta_description: "Bootstrap modal demo for the free AdminKit template. Default, colored, centered and sized dialogs for your dashboard." +--- + +{{> site-title title=title badge="Get more component examples"}} + +
+
+
+
+

Default modal

+

Default Bootstrap modal.

+
+
+

Use Bootstrap’s JavaScript modal plugin to add dialogs to your site for lightboxes, user notifications, or completely custom content.

+ + {{#each (slice (splice theme "secondary") 0 4)}} + + + {{/each}} +
+
+
+ +
+
+
+

Colored modal

+

Colored Bootstrap modal.

+
+
+

Use Bootstrap’s JavaScript modal plugin to add dialogs to your site for lightboxes, user notifications, or completely custom content.

+ + {{#each (slice (splice theme "secondary") 0 4)}} + + + {{/each}} +
+
+
+ +
+
+
+

Centered modal

+

Vertically centered modal.

+
+
+

Use Bootstrap’s JavaScript modal plugin to add dialogs to your site for lightboxes, user notifications, or completely custom content.

+ + {{#each (slice (splice theme "secondary") 0 4)}} + + + {{/each}} +
+
+
+ +
+
+
+

Modal sizes

+

These sizes kick in at certain breakpoints to avoid scrollbars on smaller viewports.

+
+
+

Use Bootstrap’s JavaScript modal plugin to add dialogs to your site for lightboxes, user notifications, or completely custom content.

+ + {{#each sizes}} + + + {{/each}} +
+
+
+
diff --git a/src/pages/ui-typography.html b/src/pages/ui-typography.html new file mode 100644 index 0000000..50c6ad3 --- /dev/null +++ b/src/pages/ui-typography.html @@ -0,0 +1,144 @@ +--- +name: ui-typography +title: Typography +layout: default.hbs +active: { ui: true, typography: true } +meta_description: "Bootstrap typography demo for the free AdminKit template. Headings, text utilities, blockquotes and lists for dashboards." +--- + +{{> site-title title=title badge="Get more typography examples"}} + +
+
+
+
+

Headings

+

All HTML headings, <h1> through <h6>, are available.

+
+
+

This is a heading h1

+

Etiam rhoncus. Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper libero, sit amet adipiscing sem neque sed ipsum. Nam quam nunc, blandit vel, luctus pulvinar, hendrerit id, lorem. Maecenas nec odio et ante tincidunt tempus. Donec vitae sapien ut libero.

+

This is a heading h2

+

Etiam rhoncus. Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper libero, sit amet adipiscing sem neque sed ipsum. Nam quam nunc, blandit vel, luctus pulvinar, hendrerit id, lorem.

+

This is a heading h3

+

Etiam rhoncus. Maecenas tempus, tellus condimentum rhoncus, sem quam libero, sit amet adipiscing sem neque sed ipsum. Nam quam nunc, vel.

+

This is a heading h4

+

Etiam rhoncus. Maecenas tempus, tellus condimentum rhoncus, sem quam libero, sit amet adipiscing sem neque sed ipsum. Nam quam nunc, vel.

+
This is a heading h5
+

Sit amet adipiscing sem neque sed ipsum. Nam quam nunc, blandit vel.

+
This is a heading h6
+

Sit amet adipiscing sem neque sed ipsum. Nam quam nunc, blandit vel.

+
+
+ +
+
+

Coloured text

+

Contextual text classes.

+
+
+ {{#each theme}} +

This line of text contains the text-{{this.name}} class.

+ {{/each}} +
+
+
+
+
+
+

Inline text

+

Styling for common inline HTML5 elements.

+
+
+

You can use the mark-tag to highlight text.

+

This line of text can be treated as deleted text.

+

This line of text can be treated as an addition to the document.

+

Bold text using the strong-tag

+

Italicized text using the em-tag

+
+
+ +
+
+

Blockquotes

+

For quoting blocks of content from another source within your document.

+
+
+
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere + erat a ante. +

+
+ Someone famous in Source Title +
+
+

+ Add .blockquote-reverse + for a blockquote with right-aligned content. +

+
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere + erat a ante. +

+
+ Someone famous in Source Title +
+
+
+
+ +
+
+

List unordered

+

The unordered list items are marked with bullets.

+
+
+
    +
  • + Lorem ipsum dolor sit amet +
  • +
  • + Consectetur adipiscing elit +
  • +
  • + Nulla volutpat aliquam velit +
  • +
  • + Phasellus iaculis neque +
  • +
  • + Eget porttitor lorem +
  • +
+
+
+ +
+
+

List ordered

+

The ordered list items are marked with numbers.

+
+
+
    +
  1. + Lorem ipsum dolor sit amet +
  2. +
  3. + Consectetur adipiscing elit +
  4. +
  5. + Nulla volutpat aliquam velit +
  6. +
  7. + Phasellus iaculis neque +
  8. +
  9. + Eget porttitor lorem +
  10. +
+
+
+
+
diff --git a/src/pages/upgrade-to-pro.html b/src/pages/upgrade-to-pro.html new file mode 100644 index 0000000..ed0b1f6 --- /dev/null +++ b/src/pages/upgrade-to-pro.html @@ -0,0 +1,161 @@ +--- +name: upgrade-to-pro +title: Upgrade to Pro +layout: default.hbs +active: { pro: true } +meta_description: "Compare the free AdminKit with AdminKit PRO: {{editions.pro.pages.count}} pages, {{editions.pro.dashboards.count}} dashboards, {{editions.pro.plugins.count}} plugins and {{formatNumber editions.pro.icons.total}} icons for Bootstrap 5." +pricing: https://adminkit.io/pricing/ +demo: https://demo.adminkit.io/ +screenshots: + - name: analytics + title: Analytics dashboard + text: Visitors, page views, bounce rate and session duration, with browser usage, real-time visitors and top pages. + - name: ecommerce + title: E-commerce dashboard + text: Income, orders and revenue by month, with sales by state and the top-selling products. + - name: crm + title: CRM dashboard + text: Customers, deals, revenue and win rate, with revenue against target, the sales pipeline and upcoming tasks. + - name: crypto + title: Crypto dashboard + text: Balances and rates per coin, a candlestick chart with time ranges and a markets table. + - name: ai-usage + title: AI analytics dashboard + text: Tokens, cost, requests, latency and error rate per model over 7, 30 or 90 days. + - name: ai-chat + title: AI chat + text: Conversation history, streamed replies with tables and code, reasoning, tool calls, sources and a model picker. + - name: calendar + title: Calendar + text: Month, week and day views with events you can drag to another day or time. + - name: datatables + title: Advanced tables + text: Sorting, search and paging, responsive columns, export buttons, fixed headers and row selection. + - name: settings + title: Settings panel + text: Color mode, sidebar color scheme, sidebar layout and position and the page layout, remembered for the next visit. +--- + +
+
+
+
+

Upgrade to AdminKit PRO

+

The commercial edition of this template: the same Bootstrap 5 code and conventions, with more dashboards, pages and components.

+
    +
  • {{editions.pro.dashboards.count}} dashboards and {{editions.pro.pages.count}} pages in total
  • +
  • An AI chat and a settings panel for color mode and layout
  • +
  • Advanced tables, a calendar, rich text editors and more form inputs
  • +
  • {{editions.pro.colorSchemes.count}} sidebar color schemes and email support
  • +
+ +
+
+
+ {{> upgrade-screenshot name="crm" title="CRM dashboard" mode="light" imgClass="img-fluid d-block" sizes="(min-width: 1200px) 50vw, 100vw" }} + {{> upgrade-screenshot name="crm" title="CRM dashboard" mode="dark" imgClass="img-fluid d-block" sizes="(min-width: 1200px) 50vw, 100vw" }} +
+
+
+
+
+
    + {{> upgrade-stat value=editions.pro.pages.count label="pages" }} + {{> upgrade-stat value=editions.pro.dashboards.count label="dashboards" }} + {{> upgrade-stat value=editions.pro.plugins.count label="plugins" }} + {{> upgrade-stat value=editions.pro.icons.total label="icons" }} +
+
+
+ +
+

What's in AdminKit PRO

+

Screenshots of the PRO demo, in the color mode you have selected.

+
+ +
+ {{#each screenshots}} +
+
+ {{> upgrade-screenshot mode="light" sizes="(min-width: 1200px) 30vw, (min-width: 768px) 45vw, 100vw" }} + {{> upgrade-screenshot mode="dark" sizes="(min-width: 1200px) 30vw, (min-width: 768px) 45vw, 100vw" }} +
+

{{title}}

+

{{text}}

+
+
+
+ {{/each}} +
+ +
+
+
+
+

AdminKit and AdminKit PRO compared

+

Counted from the source of each edition.

+
+
+ + + + + + + + + + {{#each stats.comparison}} + + + + + + {{/each}} + +
FeatureAdminKitAdminKit PRO
{{label}}{{~> upgrade-value value=free ~}}{{~> upgrade-value value=pro ~}}
+
+
+

+ One-time licenses: Hobby for one developer, Company for teams of up to five and Enterprise for unlimited developers. +

+ See prices and licenses +
+
+
+ +
+
+
+

Frequently asked questions

+
+
+
+
+

Can I move a project from the free version?

+

Yes. PRO uses the same markup, Sass variables and JavaScript modules, so pages built on the free version carry over and you add the PRO pages and components you need.

+
+
+

Is it a one-time payment?

+

Yes. You pay once, use the code in your product for as long as you like and get every update.

+
+
+

Is support included?

+

Every license comes with premium email support; how long depends on the license.

+
+
+

Does it work with my back end?

+

Yes. The build is plain HTML, CSS and JavaScript, so it works with Laravel, Rails, ASP.NET, Django or any other stack.

+
+
+

Can I get a refund?

+

Within 30 days of purchase. Email info@adminkit.io.

+
+
+
+
+
+
diff --git a/src/partials/charts/chartjs-bar.hbs b/src/partials/charts/chartjs-bar.hbs new file mode 100644 index 0000000..c24ad9a --- /dev/null +++ b/src/partials/charts/chartjs-bar.hbs @@ -0,0 +1,77 @@ +
+
+

Bar Chart

+

A bar chart provides a way of showing data values represented as vertical bars.

+
+
+
+ +
+
+
+ +{{#push "scripts"}} + +{{/push}} diff --git a/src/partials/charts/chartjs-doughnut.hbs b/src/partials/charts/chartjs-doughnut.hbs new file mode 100644 index 0000000..2e39918 --- /dev/null +++ b/src/partials/charts/chartjs-doughnut.hbs @@ -0,0 +1,46 @@ +
+
+

Doughnut Chart

+

Doughnut charts are excellent at showing the relational proportions between data.

+
+
+
+ +
+
+
+ +{{#push "scripts"}} + +{{/push}} diff --git a/src/partials/charts/chartjs-line.hbs b/src/partials/charts/chartjs-line.hbs new file mode 100644 index 0000000..d02e02f --- /dev/null +++ b/src/partials/charts/chartjs-line.hbs @@ -0,0 +1,73 @@ +
+
+

Line Chart

+

A line chart is a way of plotting data points on a line.

+
+
+
+ +
+
+
+ +{{#push "scripts"}} + +{{/push}} diff --git a/src/partials/charts/chartjs-pie.hbs b/src/partials/charts/chartjs-pie.hbs new file mode 100644 index 0000000..eb01617 --- /dev/null +++ b/src/partials/charts/chartjs-pie.hbs @@ -0,0 +1,45 @@ +
+
+

Pie Chart

+

Pie charts are excellent at showing the relational proportions between data.

+
+
+
+ +
+
+
+ +{{#push "scripts"}} + +{{/push}} diff --git a/src/partials/dashboard/analytics.hbs b/src/partials/dashboard/analytics.hbs new file mode 100644 index 0000000..31fb773 --- /dev/null +++ b/src/partials/dashboard/analytics.hbs @@ -0,0 +1,43 @@ +

Analytics Dashboard

+ +
+
+
+
+
+ {{> dashboard/stats icon="users" title="Visitors" number="48,920" percentage="5.25" percentage-color="success" percentage-text="Since last week" color="primary" }} + {{> dashboard/stats icon="eye" title="Page views" number="152,384" percentage="6.65" percentage-color="success" percentage-text="Since last week" color="primary" }} +
+
+ {{> dashboard/stats icon="log-out" title="Bounce rate" number="41.2%" percentage="-2.25" percentage-color="success" percentage-text="Since last week" color="primary" }} + {{> dashboard/stats icon="timer" title="Avg. session" number="3.7 min" percentage="-3.65" percentage-color="danger" percentage-text="Since last week" color="primary" }} +
+
+
+
+ +
+ {{> dashboard/line-chart title="Monthly Visitors" size="sm" }} +
+
+ +
+
+ {{> dashboard/pie-chart }} +
+
+ {{> dashboard/world-map }} +
+
+ {{> dashboard/calendar }} +
+
+ +
+
+ {{> dashboard/table-pages }} +
+
+ {{> dashboard/bar-chart title="Traffic Sources" }} +
+
diff --git a/src/partials/dashboard/bar-chart.hbs b/src/partials/dashboard/bar-chart.hbs new file mode 100644 index 0000000..db34157 --- /dev/null +++ b/src/partials/dashboard/bar-chart.hbs @@ -0,0 +1,69 @@ +
+
+ +

{{ title }}

+
+
+
+ {{> skeleton }} + +
+
+
+ +{{#push "scripts"}} + +{{/push}} diff --git a/src/partials/dashboard/calendar.hbs b/src/partials/dashboard/calendar.hbs new file mode 100644 index 0000000..f842d35 --- /dev/null +++ b/src/partials/dashboard/calendar.hbs @@ -0,0 +1,27 @@ +
+
+ +

Calendar

+
+
+
+
+
+
+
+ +{{#push "scripts"}} + +{{/push}} diff --git a/src/partials/dashboard/line-chart.hbs b/src/partials/dashboard/line-chart.hbs new file mode 100644 index 0000000..a18a3fe --- /dev/null +++ b/src/partials/dashboard/line-chart.hbs @@ -0,0 +1,80 @@ +
+
+ +

{{title}}

+
+
+
+ {{> skeleton }} + +
+
+
+ +{{#push "scripts"}} + +{{/push}} diff --git a/src/partials/dashboard/pie-chart.hbs b/src/partials/dashboard/pie-chart.hbs new file mode 100644 index 0000000..9963a36 --- /dev/null +++ b/src/partials/dashboard/pie-chart.hbs @@ -0,0 +1,67 @@ +
+
+ +

Browser Usage

+
+
+
+
+
+ {{> skeleton }} + +
+
+ + + + + + + + + + + + + + + + +
Chrome4306
Firefox3801
Edge1689
+
+
+
+ +{{#push "scripts"}} + +{{/push}} diff --git a/src/partials/dashboard/stats.hbs b/src/partials/dashboard/stats.hbs new file mode 100644 index 0000000..d38ef91 --- /dev/null +++ b/src/partials/dashboard/stats.hbs @@ -0,0 +1,20 @@ +
+
+
+
+

{{ title }}

+
+ +
+
+ +
+
+
+
{{ number }}
+
+ {{ percentage }}% + {{ percentage-text }} +
+
+
\ No newline at end of file diff --git a/src/partials/dashboard/table-pages.hbs b/src/partials/dashboard/table-pages.hbs new file mode 100644 index 0000000..4b42add --- /dev/null +++ b/src/partials/dashboard/table-pages.hbs @@ -0,0 +1,75 @@ +
+
+ +

Top Pages

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PageViewsVisitorsAvg. timeBounce rate
/38,42024,3101:5238%
/pricing21,98015,2402:4129%
/docs/getting-started17,5609,8704:1822%
/blog/dark-mode-with-bootstrap-512,73010,9503:3661%
/features9,8407,1201:4744%
/docs/components8,3105,4603:0527%
/blog6,9205,8301:2452%
/contact4,1503,6900:5847%
+
diff --git a/src/partials/dashboard/world-map.hbs b/src/partials/dashboard/world-map.hbs new file mode 100644 index 0000000..27c3605 --- /dev/null +++ b/src/partials/dashboard/world-map.hbs @@ -0,0 +1,63 @@ +
+
+ +

Real-Time Visitors

+
+
+
+ {{> skeleton }} +
+
+
+
+ +{{#push "scripts"}} + +{{/push}} diff --git a/src/partials/site-footer.hbs b/src/partials/site-footer.hbs new file mode 100644 index 0000000..0fb766e --- /dev/null +++ b/src/partials/site-footer.hbs @@ -0,0 +1,27 @@ + diff --git a/src/partials/site-meta.hbs b/src/partials/site-meta.hbs new file mode 100644 index 0000000..1df38a6 --- /dev/null +++ b/src/partials/site-meta.hbs @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + +{{#if title}}{{ title }} | {{/if}}{{ meta_title }}{{#unless title}} - {{ meta_slogan }}{{/unless}} + + + + + diff --git a/src/partials/site-navbar.hbs b/src/partials/site-navbar.hbs new file mode 100644 index 0000000..63bf438 --- /dev/null +++ b/src/partials/site-navbar.hbs @@ -0,0 +1,185 @@ + diff --git a/src/partials/site-sidebar.hbs b/src/partials/site-sidebar.hbs new file mode 100644 index 0000000..1cdd5b8 --- /dev/null +++ b/src/partials/site-sidebar.hbs @@ -0,0 +1,147 @@ + diff --git a/src/partials/site-title.hbs b/src/partials/site-title.hbs new file mode 100644 index 0000000..d9fc4f8 --- /dev/null +++ b/src/partials/site-title.hbs @@ -0,0 +1,11 @@ + \ No newline at end of file diff --git a/src/partials/skeleton.hbs b/src/partials/skeleton.hbs new file mode 100644 index 0000000..06fb755 --- /dev/null +++ b/src/partials/skeleton.hbs @@ -0,0 +1 @@ + diff --git a/src/partials/upgrade-screenshot.hbs b/src/partials/upgrade-screenshot.hbs new file mode 100644 index 0000000..ecdfaf8 --- /dev/null +++ b/src/partials/upgrade-screenshot.hbs @@ -0,0 +1,6 @@ +{{!-- One color mode of an upgrade page screenshot; the other mode's picture is hidden and, + being lazy, never loads. imgClass and sizes default to a card's top image in a + two-column grid --}} + + AdminKit PRO: {{title}}{{#compare mode + diff --git a/src/partials/upgrade-stat.hbs b/src/partials/upgrade-stat.hbs new file mode 100644 index 0000000..bf058a2 --- /dev/null +++ b/src/partials/upgrade-stat.hbs @@ -0,0 +1,4 @@ +
  • +
    {{formatNumber value}}
    +
    {{label}}
    +
  • diff --git a/src/partials/upgrade-value.hbs b/src/partials/upgrade-value.hbs new file mode 100644 index 0000000..3347940 --- /dev/null +++ b/src/partials/upgrade-value.hbs @@ -0,0 +1,9 @@ +{{~#compare (typeOf value) "===" "boolean"~}} + {{~#if value~}} + Yes + {{~else~}} + No + {{~/if~}} +{{~else~}} + {{~#compare (typeOf value) "===" "number"~}}{{formatNumber value}}{{~else~}}{{value}}{{~/compare~}} +{{~/compare~}} diff --git a/src/scss/1-variables/_app.scss b/src/scss/1-variables/_app.scss index 2a4471c..d5e380b 100644 --- a/src/scss/1-variables/_app.scss +++ b/src/scss/1-variables/_app.scss @@ -1,13 +1,27 @@ @use "sass:color"; +@use "sass:map"; // Fonts -$font-family-sans-serif: "Inter", "Helvetica Neue", Arial, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default; +$font-family-sans-serif: + "Inter", + "Helvetica Neue", + Arial, + -apple-system, + BlinkMacSystemFont, + "Segoe UI", + Roboto, + "Noto Sans", + sans-serif, + "Apple Color Emoji", + "Segoe UI Emoji", + "Segoe UI Symbol", + "Noto Color Emoji" !default; $font-weight-light: 300 !default; $font-weight-normal: 400 !default; $font-weight-bold: 600 !default; -$font-size-base: .875rem !default; -$font-size-lg: .925rem !default; -$font-size-sm: .75rem !default; +$font-size-base: 0.875rem !default; +$font-size-lg: 0.925rem !default; +$font-size-sm: 0.75rem !default; $small-font-size: 80% !default; // Spacer @@ -15,13 +29,25 @@ $spacer: 1rem !default; $spacers: ( 0: 0, - 1: ($spacer * .25), - 2: ($spacer * .5), + 1: ( + $spacer * 0.25, + ), + 2: ( + $spacer * 0.5, + ), 3: $spacer, - 4: ($spacer * 1.5), - 5: ($spacer * 3), - 6: ($spacer * 4.5), - 7: ($spacer * 6) + 4: ( + $spacer * 1.5, + ), + 5: ( + $spacer * 3, + ), + 6: ( + $spacer * 4.5, + ), + 7: ( + $spacer * 6, + ), ) !default; // Grid breakpoints @@ -31,7 +57,7 @@ $grid-breakpoints: ( md: 768px, lg: 992px, xl: 1200px, - xxl: 1440px + xxl: 1440px, ) !default; // Grid gutter @@ -42,53 +68,74 @@ $container-max-widths: ( sm: 540px, md: 720px, lg: 960px, - xl: 1200px + xl: 1200px, ) !default; -$container-padding-x: .75rem !default; +$container-padding-x: 0.75rem !default; // Options -$min-contrast-ratio: 3 !default; +$min-contrast-ratio: 4.5 !default; $enable-validation-icons: false !default; $enable-rfs: false !default; $enable-negative-margins: true !default; -$enable-dark-mode: false !default; - -// Transitions -$transition-base: all .35s ease-in-out !default; +$enable-dark-mode: true !default; // Dark mode values live in 1-variables/_dark.scss + +// Motion. Components read these as custom properties (--ak-duration-fast|base|slow and +// --ak-ease-standard|emphasized, set on :root in 3-components/_root.scss) so they can be +// tuned at runtime. Under prefers-reduced-motion: reduce, Bootstrap's transition() mixin +// drops the transitions and AdminKit's own animations only fade. +$transition-duration-fast: 0.15s !default; +$transition-duration-base: 0.25s !default; +$transition-duration-slow: 0.35s !default; +$transition-easing-standard: cubic-bezier(0.4, 0, 0.2, 1) !default; +$transition-easing-emphasized: cubic-bezier(0.2, 0, 0, 1) !default; + +// v4 aliases, remove in v5 +$ak-transition-duration-fast: $transition-duration-fast; +$ak-transition-duration-base: $transition-duration-base; +$ak-transition-duration-slow: $transition-duration-slow; +$ak-transition-easing-standard: $transition-easing-standard; +$ak-transition-easing-emphasized: $transition-easing-emphasized; + +// Bootstrap transitions on the motion tokens +$transition-base: all var(--ak-duration-slow) var(--ak-ease-standard) !default; +$transition-fade: opacity var(--ak-duration-fast) linear !default; +$transition-collapse: height var(--ak-duration-slow) var(--ak-ease-standard) !default; +$transition-collapse-width: width var(--ak-duration-slow) + var(--ak-ease-standard) !default; // Theme colors -$blue: #3B7DDD !default; -$indigo: #0a0a0a !default; -$purple: #6f42c1 !default; -$pink: #e83e8c !default; -$red: #dc3545 !default; -$orange: #fd7e14 !default; -$yellow: #fcb92c !default; -$green: #1cbb8c !default; -$teal: #20c997 !default; -$cyan: #17a2b8 !default; - -$white: #fff !default; +$blue: #266ed8 !default; +$indigo: #0a0a0a !default; +$purple: #6f42c1 !default; +$pink: #e83e8c !default; +$red: #da2839 !default; +$orange: #fd7e14 !default; +$yellow: #fcb92c !default; +$green: #138161 !default; +$teal: #20c997 !default; +$cyan: #127d8e !default; + +$white: #fff !default; $gray-100: #f8f9fa !default; $gray-200: #e9ecef !default; $gray-300: #dee2e6 !default; $gray-400: #ced4da !default; $gray-500: #adb5bd !default; -$gray-600: #6c757d !default; +$gray-600: #6a737a !default; $gray-700: #495057 !default; $gray-800: #343a40 !default; $gray-900: #212529 !default; $black: #000 !default; -$primary: $blue !default; -$secondary: $gray-600 !default; -$success: $green !default; -$info: $cyan !default; -$warning: $yellow !default; -$danger: $red !default; -$light: #f5f7fb !default; -$dark: $gray-900 !default; +$primary: $blue !default; +$secondary: $gray-600 !default; +$success: $green !default; +$info: $cyan !default; +$warning: $yellow !default; +$danger: $red !default; +$light: #f5f7fb !default; +$dark: $gray-900 !default; $theme-colors: ( "primary": $primary, @@ -98,7 +145,7 @@ $theme-colors: ( "warning": $warning, "danger": $danger, "light": $light, - "dark": $dark + "dark": $dark, ) !default; // Social colors @@ -113,12 +160,35 @@ $social-colors: ( "instagram": #e4405f, "pinterest": #bd081c, "flickr": #0063dc, - "bitbucket": #0052cc + "bitbucket": #0052cc, ) !default; // Body $body-bg: #f5f7fb !default; $body-color: $gray-700 !default; +$body-secondary-color: $gray-600 !default; + +// Cards, dropdowns, inputs, the navbar and footer. Components use it as var(--ak-surface-bg), +// which is $surface-bg-dark in dark mode. +$surface-bg: $white !default; + +// Theme colours drawn as text (.text-*, outline buttons): the colour where it reaches 4.5:1 +// on the page background, a darker shade where it does not. Dark mode has +// $theme-text-colors-dark. +$theme-text-colors: () !default; + +@each $name, $value in $theme-colors { + @if not map.has-key($theme-text-colors, $name) { + $theme-text-colors: map.merge( + $theme-text-colors, + ( + $name: readable($value, $body-bg), + ) + ); + } +} + +$code-color: readable($pink, $body-bg) !default; // Links $link-decoration: none !default; @@ -144,98 +214,130 @@ $headings-font-weight: 400 !default; // Displays $display-font-sizes: ( - 1: 6rem, + 1: 6rem, 2: 5.5rem, 3: 4.5rem, 4: 3.5rem, 5: 3rem, - 6: 2.5rem - ) !default; + 6: 2.5rem, +) !default; + +// Progress +$progress-height-sm: 0.4rem !default; // Shadows -$box-shadow-sm: 0 0.05rem 0.2rem rgba($black, .05) !default; -$box-shadow: 0 0.1rem 0.2rem rgba($black, .05) !default; -$box-shadow-lg: 0 0.2rem 0.2rem rgba($black, .05) !default; +$box-shadow-sm: 0 0.05rem 0.2rem rgba(var(--bs-emphasis-color-rgb), 0.05) !default; +$box-shadow: 0 0.1rem 0.2rem rgba(var(--bs-emphasis-color-rgb), 0.05) !default; +$box-shadow-lg: 0 0.2rem 0.2rem rgba(var(--bs-emphasis-color-rgb), 0.05) !default; // Navbar input $navbar-input-bg: color.adjust($body-bg, $lightness: -0.5%) !default; // Border radius -$border-radius-sm: .1rem !default; -$border-radius: .2rem !default; -$border-radius-lg: .3rem !default; +$border-radius-sm: 0.1rem !default; +$border-radius: 0.2rem !default; +$border-radius-lg: 0.3rem !default; // Navbar -$navbar-padding-y: $spacer*0.875 !default; -$navbar-padding-x: $spacer*1.375 !default; -$navbar-nav-link-padding-x: .5rem !default; +$navbar-padding-y: $spacer * 0.875 !default; +$navbar-padding-x: $spacer * 1.375 !default; +$navbar-nav-link-padding-x: 0.5rem !default; $navbar-border-bottom: 0 !default; -$navbar-box-shadow: 0 0 2rem 0 rgba($dark, .1) !default; +$navbar-box-shadow: 0 0 2rem 0 rgba($dark, 0.1) !default; // Navbar brand -$navbar-brand-padding-y: $spacer*0.875 !default; +$navbar-brand-padding-y: $spacer * 0.875 !default; $navbar-brand-padding-x: 0 !default; -$navbar-brand-color: $gray-100 !default; +$navbar-brand-color: var(--bs-gray-100) !default; $navbar-brand-font-weight: $font-weight-normal !default; $navbar-brand-font-size: 1.15rem !default; $navbar-brand-icon-color: $primary !default; -$navbar-bg: $white !default; +$navbar-bg: var(--ak-surface-bg) !default; // Footer -$footer-bg: $white !default; +$footer-bg: var(--ak-surface-bg) !default; + +// Alerts +$alert-padding-y: 0.95rem !default; +$alert-padding-x: 0.95rem !default; +$alert-border-width: 0 !default; +$alert-color: $dark !default; +$alert-bg-scale: -80% !default; + +// List group +$list-group-bg: var(--ak-surface-bg) !default; +$list-group-item-padding-y: 0.75rem !default; +$list-group-item-padding-x: 1.25rem !default; // Forms -$input-bg: $white !default; -$input-disabled-bg: $gray-200 !default; -$input-color: $gray-700 !default; +// Stacked checks and radios 24px apart, the WCAG 2.2 target spacing +$form-check-margin-bottom: 0.25rem !default; +$input-bg: var(--ak-surface-bg) !default; +$input-disabled-bg: var(--bs-secondary-bg) !default; +$input-color: var(--bs-body-color) !default; +$form-check-input-border: var(--bs-border-width) solid + var(--ak-form-check-input-border-color) !default; $input-btn-border-width: $border-width !default; $input-btn-line-height: $line-height-base !default; $input-btn-line-height-sm: $line-height-sm !default; $input-btn-line-height-lg: $line-height-lg !default; -$input-btn-focus-width: .2rem !default; -$input-btn-padding-y: .3rem !default; -$input-btn-padding-y-sm: .2rem !default; -$input-btn-padding-y-lg: .4rem !default; -$input-btn-padding-x: .85rem !default; +$input-btn-focus-width: 0.2rem !default; +$input-btn-padding-y: 0.3rem !default; +$input-btn-padding-y-sm: 0.2rem !default; +$input-btn-padding-y-lg: 0.4rem !default; +$input-btn-padding-x: 0.85rem !default; $input-border-width: $input-btn-border-width !default; $input-height-border: $input-border-width * 2 !default; -$input-height-inner: ($font-size-base * $input-btn-line-height) + ($input-btn-padding-y * 2) !default; +$input-height-inner: ($font-size-base * $input-btn-line-height) + + ($input-btn-padding-y * 2) !default; $input-height: calc(#{$input-height-inner} + #{$input-height-border}) !default; -$input-height-inner-sm: ($font-size-sm * $input-btn-line-height-sm) + ($input-btn-padding-y-sm * 2) !default; -$input-height-sm: calc(#{$input-height-inner-sm} + #{$input-height-border}) !default; -$input-height-inner-lg: ($font-size-lg * $input-btn-line-height-lg) + ($input-btn-padding-y-lg * 2) !default; -$input-height-lg: calc(#{$input-height-inner-lg} + #{$input-height-border}) !default; +$input-height-inner-sm: ($font-size-sm * $input-btn-line-height-sm) + + ($input-btn-padding-y-sm * 2) !default; +$input-height-sm: calc( + #{$input-height-inner-sm} + #{$input-height-border} +) !default; +$input-height-inner-lg: ($font-size-lg * $input-btn-line-height-lg) + + ($input-btn-padding-y-lg * 2) !default; +$input-height-lg: calc( + #{$input-height-inner-lg} + #{$input-height-border} +) !default; // Cards -$card-bg: $white !default; -$card-border-radius: .25rem !default; +$card-bg: var(--ak-surface-bg) !default; +$card-border-radius: 0.25rem !default; $card-inner-border-radius: $card-border-radius !default; $card-border-width: 0 !default; $card-border-color: transparent !default; -$card-cap-bg: $white !default; -$card-shadow: 0 0 .875rem 0 rgba($dark, 0.05) !default; +$card-cap-bg: var(--ak-surface-bg) !default; +$card-shadow: 0 0 0.875rem 0 rgba($dark, 0.05) !default; +$card-shadow-hover: 0 0.5rem 1.5rem 0 rgba($dark, 0.1) !default; +$card-hover-lift: -0.125rem !default; $card-title-font-size: $font-size-lg !default; $card-title-font-weight: $font-weight-bold !default; -$card-title-color: color.adjust($gray-600, $lightness: 15%) !default; +$card-title-color: $gray-600 !default; $card-spacer-y: 1.25rem !default; $card-spacer-x: 1.25rem !default; $card-cap-padding-y: 1rem !default; $card-cap-padding-x: $card-spacer-x !default; // Tables -$table-cell-padding-y: .75rem !default; -$table-cell-padding-x: .75rem !default; -$table-cell-padding-y-sm: .3rem !default; -$table-cell-padding-x-sm: .3rem !default; +$table-cell-padding-y: 0.75rem !default; +$table-cell-padding-x: 0.75rem !default; +$table-cell-padding-y-sm: 0.3rem !default; +$table-cell-padding-x-sm: 0.3rem !default; $table-bg: transparent !default; $table-striped-bg: $gray-100 !default; -$table-hover-bg: rgba($black, .0375) !default; +$table-hover-bg: rgba(var(--bs-emphasis-color-rgb), 0.0375) !default; // Sidebar general $sidebar-width: 260px !default; -$sidebar-transition: margin-left .35s ease-in-out, left .35s ease-in-out, margin-right .35s ease-in-out, right .35s ease-in-out !default; -$sidebar-bg: #222E3C !default; +// Hiding and showing the sidebar from lg up +$sidebar-transition: margin-left var(--ak-duration-slow) var(--ak-ease-standard) !default; +// The sheet below lg, Bootstrap's offcanvas transition on the motion tokens +$sidebar-sheet-transition: transform var(--ak-duration-slow) + var(--ak-ease-standard) !default; +$sidebar-bg: #222e3c !default; // Sidebar brand $sidebar-brand-padding-y: 1.15rem !default; @@ -250,19 +352,24 @@ $sidebar-header-font-size: $font-size-sm !default; $sidebar-header-color: $gray-400 !default; // Sidebar link -$sidebar-link-padding: .625rem 1.625rem !default; +$sidebar-link-padding: 0.625rem 1.625rem !default; $sidebar-link-font-weight: 400 !default; -$sidebar-link-bg: #222E3C !default; -$sidebar-link-color: rgba($gray-200, 0.5) !default; +$sidebar-link-bg: #222e3c !default; +$sidebar-link-color: rgba($gray-200, 0.6) !default; $sidebar-link-border-left-color: transparent !default; $sidebar-link-hover-font-weight: $font-weight-normal !default; -$sidebar-link-hover-bg: #222E3C !default; +$sidebar-link-hover-bg: #222e3c !default; $sidebar-link-hover-color: #{rgba($gray-200, 0.75)} !default; $sidebar-link-hover-border-left-color: transparent !default; $sidebar-link-active-font-weight: $font-weight-normal !default; -$sidebar-link-active-bg: #{linear-gradient(90deg, rgba($primary,0.1) 0%, rgba($primary,0.0875) 50%, rgba($black, 0) 100%)} !default; +$sidebar-link-active-bg: #{linear-gradient( + 90deg, + rgba($primary, 0.1) 0%, + rgba($primary, 0.0875) 50%, + rgba($black, 0) 100% + )} !default; $sidebar-link-active-color: $gray-200 !default; $sidebar-link-active-border-left-color: $primary !default; @@ -273,15 +380,21 @@ $sidebar-link-icon-active-color: $gray-200 !default; // Sidebar bottom $sidebar-cta-color: $gray-200 !default; -$sidebar-cta-bg: #2B3947 !default; -$sidebar-cta-padding: $spacer*1.5 !default; -$sidebar-cta-margin: $spacer*1.75 !default; +$sidebar-cta-bg: #2b3947 !default; +$sidebar-cta-padding: $spacer * 1.5 !default; +$sidebar-cta-margin: $spacer * 1.75 !default; $sidebar-cta-border-radius: $border-radius-lg !default; // Transitions -$transition-appearance: background .4s ease-in-out, color .4s ease-in-out !default; -$transition-appearance-slow: background .6s ease-in-out, color .6s ease-in-out !default; -$transition-appearance-fast: background .1s ease-in-out, color .1s ease-in-out !default; +$transition-appearance: + background var(--ak-duration-base) var(--ak-ease-standard), + color var(--ak-duration-base) var(--ak-ease-standard) !default; +$transition-appearance-slow: + background var(--ak-duration-slow) var(--ak-ease-standard), + color var(--ak-duration-slow) var(--ak-ease-standard) !default; +$transition-appearance-fast: + background var(--ak-duration-fast) var(--ak-ease-standard), + color var(--ak-duration-fast) var(--ak-ease-standard) !default; // Modals $modal-content-border-width: 0 !default; @@ -291,22 +404,36 @@ $modal-xl: 1140px !default; $modal-lg: 900px !default; $modal-md: 600px !default; $modal-sm: 400px !default; -$modal-transition: transform .25s ease-out !default; +$modal-transition: transform var(--ak-duration-base) var(--ak-ease-emphasized) !default; +$modal-content-bg: var(--ak-surface-bg) !default; // Badges $badge-font-size: 80% !default; -$badge-padding-y: .3em !default; -$badge-padding-x: .45em !default; +$badge-padding-y: 0.3em !default; +$badge-padding-x: 0.45em !default; + +// Chevrons: dropdown carets (2-mixins/_chevron.scss) +$chevron-padding: 2px !default; +$chevron-border-width: 2px !default; + +// Inline carets centre on the text: Inter's cap height is 0.727em, so the middle of a capital +// sits 0.3635em above the baseline, and the caret box rises to put its own middle there. +$caret-vertical-align: calc( + 0.3635em - #{$chevron-padding + $chevron-border-width * 0.5} +) !default; // Dropdowns -$dropdown-bg: $white !default; +$dropdown-bg: var(--ak-surface-bg) !default; +$dropdown-link-color: var(--bs-body-color) !default; +$dropdown-link-hover-bg: var(--bs-tertiary-bg) !default; +$dropdown-header-color: var(--bs-gray-600) !default; // Main -$main-box-shadow: inset .75rem 0px 1.5rem 0px rgba($black, 0.075); +$main-box-shadow: inset 0.75rem 0px 1.5rem 0px rgba($black, 0.075); // Content $content-padding-desktop: 3rem 3rem 1.5rem !default; -$content-padding-mobile: 1.5rem 1.5rem .75rem !default; +$content-padding-mobile: 1.5rem 1.5rem 0.75rem !default; // Datetimepicker $bs-datetimepicker-active-bg: $primary !default; @@ -322,4 +449,4 @@ $hamburger-width-bottom: 16px !default; // Stats $stat-bg: color.adjust($primary, $lightness: 35%) !default; $stat-icon-color: $primary !default; -$stat-padding: $spacer * 0.75 !default; \ No newline at end of file +$stat-padding: $spacer * 0.75 !default; diff --git a/src/scss/1-variables/_dark.scss b/src/scss/1-variables/_dark.scss new file mode 100644 index 0000000..186ddcf --- /dev/null +++ b/src/scss/1-variables/_dark.scss @@ -0,0 +1,134 @@ +@use "sass:color"; +@use "sass:map"; + +// Dark color mode +// +// The values behind [data-bs-theme="dark"]: Bootstrap's $*-dark variables (see +// bootstrap/scss/_variables-dark.scss) and AdminKit's own, used in 3-components/_root.scss +// and the component dark rules. The palette is the light one with the gray scale turned +// around on a navy base, so gray-100 is the step closest to the surface in both modes. + +$dark-theme-base: #222e3c !default; + +$surface-bg-dark: $dark-theme-base !default; + +$gray-100-dark: color.mix(#fff, $dark-theme-base, 10%) !default; +$gray-200-dark: color.mix(#fff, $dark-theme-base, 20%) !default; +$gray-300-dark: color.mix(#fff, $dark-theme-base, 30%) !default; +$gray-400-dark: color.mix(#fff, $dark-theme-base, 40%) !default; +$gray-500-dark: color.mix(#fff, $dark-theme-base, 50%) !default; +$gray-600-dark: color.mix(#fff, $dark-theme-base, 60%) !default; +$gray-700-dark: color.mix(#fff, $dark-theme-base, 70%) !default; +$gray-800-dark: color.mix(#fff, $dark-theme-base, 80%) !default; +$gray-900-dark: color.mix(#fff, $dark-theme-base, 90%) !default; + +$grays-dark: ( + "100": $gray-100-dark, + "200": $gray-200-dark, + "300": $gray-300-dark, + "400": $gray-400-dark, + "500": $gray-500-dark, + "600": $gray-600-dark, + "700": $gray-700-dark, + "800": $gray-800-dark, + "900": $gray-900-dark, +) !default; + +// The theme colours that differ in dark mode; the others keep their light value +// Dark enough for white text on it; as text, see $theme-text-colors-dark +$secondary-dark: readable($gray-400-dark, #fff) !default; +$light-dark: color.mix(#fff, $dark-theme-base, 5%) !default; +$dark-dark: $gray-900-dark !default; + +$theme-colors-dark: ( + "secondary": $secondary-dark, + "light": $light-dark, + "dark": $dark-dark, +) !default; + +// Theme colours drawn as text, light enough for the dark surfaces +$theme-text-colors-dark: () !default; + +@each $name, $value in map.merge($theme-colors, $theme-colors-dark) { + @if not map.has-key($theme-text-colors-dark, $name) { + $theme-text-colors-dark: map.merge( + $theme-text-colors-dark, + ( + $name: readable($value, $surface-bg-dark), + ) + ); + } +} + +// Body +$body-bg-dark: color.adjust($dark-theme-base, $lightness: -5%) !default; +$body-color-dark: $gray-700-dark !default; +$body-secondary-color-dark: rgba($body-color-dark, 0.75) !default; +$body-secondary-bg-dark: $gray-200-dark !default; +$body-tertiary-color-dark: rgba($body-color-dark, 0.5) !default; +$body-tertiary-bg-dark: $gray-100-dark !default; +$body-emphasis-color-dark: #fff !default; +$headings-color-dark: #fff !default; +$border-color-dark: $gray-200-dark !default; +$border-color-translucent-dark: rgba(#fff, 0.175) !default; + +// Links, code and marks keep their light colours +$link-color-dark: readable($primary, $surface-bg-dark) !default; +$link-hover-color-dark: color.mix(#fff, $link-color-dark, 20%) !default; +$code-color-dark: readable($pink, $surface-bg-dark) !default; +$mark-color-dark: $gray-900 !default; +$mark-bg-dark: color.mix(#fff, $yellow, 80%) !default; + +// Theme colour text, backgrounds and borders, from the same formulas as in light mode +$primary-text-emphasis-dark: color.mix(#000, $primary, 60%) !default; +$secondary-text-emphasis-dark: color.mix(#000, $secondary-dark, 60%) !default; +$success-text-emphasis-dark: color.mix(#000, $success, 60%) !default; +$info-text-emphasis-dark: color.mix(#000, $info, 60%) !default; +$warning-text-emphasis-dark: color.mix(#000, $warning, 60%) !default; +$danger-text-emphasis-dark: color.mix(#000, $danger, 60%) !default; +$light-text-emphasis-dark: $gray-700-dark !default; +$dark-text-emphasis-dark: $gray-700-dark !default; + +$primary-bg-subtle-dark: color.mix(#fff, $primary, 80%) !default; +$secondary-bg-subtle-dark: color.mix(#fff, $secondary-dark, 80%) !default; +$success-bg-subtle-dark: color.mix(#fff, $success, 80%) !default; +$info-bg-subtle-dark: color.mix(#fff, $info, 80%) !default; +$warning-bg-subtle-dark: color.mix(#fff, $warning, 80%) !default; +$danger-bg-subtle-dark: color.mix(#fff, $danger, 80%) !default; +$light-bg-subtle-dark: color.mix($gray-100-dark, $surface-bg-dark) !default; +$dark-bg-subtle-dark: $gray-400-dark !default; + +$primary-border-subtle-dark: color.mix(#fff, $primary, 60%) !default; +$secondary-border-subtle-dark: color.mix(#fff, $secondary-dark, 60%) !default; +$success-border-subtle-dark: color.mix(#fff, $success, 60%) !default; +$info-border-subtle-dark: color.mix(#fff, $info, 60%) !default; +$warning-border-subtle-dark: color.mix(#fff, $warning, 60%) !default; +$danger-border-subtle-dark: color.mix(#fff, $danger, 60%) !default; +$light-border-subtle-dark: $gray-200-dark !default; +$dark-border-subtle-dark: $gray-500-dark !default; + +// Forms +$form-select-indicator-color-dark: $gray-800-dark !default; +$form-switch-color-dark: rgba(#fff, 0.5) !default; +$form-check-input-border-color-dark: rgba(#fff, 0.5) !default; +$form-valid-color-dark: map.get($theme-text-colors-dark, "success") !default; +$form-valid-border-color-dark: $success !default; +$form-invalid-color-dark: map.get($theme-text-colors-dark, "danger") !default; +$form-invalid-border-color-dark: $danger !default; + +// Navbar +$navbar-bg-dark: transparent !default; + +// Cards +$card-title-color-dark: $gray-800-dark !default; + +// Alerts +$alert-color-dark: #fff !default; +$alert-bg-scale-dark: 50% !default; + +// Tables +$table-striped-bg-dark: $light-dark !default; + +// Stats +$stat-bg-dark: $gray-100-dark !default; +$stat-icon-color-dark: #fff !default; diff --git a/src/scss/1-variables/_functions.scss b/src/scss/1-variables/_functions.scss new file mode 100644 index 0000000..c1369e0 --- /dev/null +++ b/src/scss/1-variables/_functions.scss @@ -0,0 +1,42 @@ +@use "sass:color"; + +// WCAG 2.2 AA asks for 4.5:1 for text, 3:1 for large text, icons and other UI parts. +// readable() returns $color, mixed with black (on a light $background) or white (on a +// dark one) in 1% steps until it reaches $min contrast with $background; a colour that +// passes comes back unchanged. Use it for every colour that text or a control is drawn in. +// contrast-ratio() and luminance() come from Bootstrap's functions. +@function readable($color, $background, $min: 4.5) { + $towards: #000; + + @if luminance($background) < 0.18 { + $towards: #fff; + } + + @for $weight from 0 through 100 { + $candidate: color.mix($towards, $color, $weight * 1%); + + @if contrast-ratio($background, $candidate) >= $min { + @return $candidate; + } + } + + @return $towards; +} + +// White, or the darkest gray when white does not reach 4.5:1 on $background +@function text-on($background) { + @if contrast-ratio($background, #fff) >= 4.5 { + @return #fff; + } + + @return #212529; +} + +// v4 aliases, remove in v5 +@function ak-readable($color, $background, $min: 4.5) { + @return readable($color, $background, $min); +} + +@function ak-text-on($background) { + @return text-on($background); +} diff --git a/src/scss/2-mixins/_badge.scss b/src/scss/2-mixins/_badge.scss new file mode 100644 index 0000000..e597984 --- /dev/null +++ b/src/scss/2-mixins/_badge.scss @@ -0,0 +1,20 @@ +@use "sass:color"; + +@mixin badge-variant($bg, $color) { + color: $color; + background-color: $bg; + + &:is(a) { + &:hover, + &:focus { + color: $color; + background-color: color.adjust($bg, $lightness: -10%); + } + + &:focus, + &.focus { + outline: 0; + box-shadow: 0 0 0 1px rgba($bg, 0.5); + } + } +} diff --git a/src/scss/2-mixins/_chevron.scss b/src/scss/2-mixins/_chevron.scss new file mode 100644 index 0000000..948fe46 --- /dev/null +++ b/src/scss/2-mixins/_chevron.scss @@ -0,0 +1,17 @@ +// A chevron drawn as the right and bottom borders of a box rotated by $angle (45deg points it +// down, -135deg up). The ink of the V does not sit on the box centre: it is offset towards the +// point by half the padding along both rotated axes. Translating it back by that much centres +// the V itself on the box, so flex centring, `top: 50%` or `vertical-align` place the visible +// chevron, whichever way it points. $before goes ahead of the rotation (`translateY(-50%)`). +@mixin chevron( + $angle: 45deg, + $padding: $chevron-padding, + $border-width: $chevron-border-width, + $before: null +) { + display: inline-block; + padding: $padding; + border: solid; + border-width: 0 $border-width $border-width 0; + transform: $before rotate($angle) translate($padding * -0.5, $padding * -0.5); +} diff --git a/src/scss/2-mixins/_modal.scss b/src/scss/2-mixins/_modal.scss new file mode 100644 index 0000000..57f9b39 --- /dev/null +++ b/src/scss/2-mixins/_modal.scss @@ -0,0 +1,30 @@ +@mixin modal-variant($color) { + .modal-content { + background: $color; + color: text-on($color); + } + + // The close button follows the text: white, or the default dark one in both modes + .btn-close { + @if text-on($color) == #fff { + filter: $btn-close-filter-dark; + } @else { + filter: none; + } + } + + h1, + h2, + h3, + h4, + h5, + h6, + .h1, + .h2, + .h3, + .h4, + .h5, + .h6 { + color: text-on($color); + } +} diff --git a/src/scss/3-components/_alert.scss b/src/scss/3-components/_alert.scss new file mode 100644 index 0000000..f647d8e --- /dev/null +++ b/src/scss/3-components/_alert.scss @@ -0,0 +1,81 @@ +.alert { + padding: 0; + display: flex; + color: var(--ak-alert-color); +} + +.alert-outline, +.alert-outline-coloured { + color: var(--bs-body-color); + background: var(--ak-surface-bg); + + hr { + border-top-color: var(--bs-gray-400); + } + + .alert-message { + @include border-end-radius($alert-border-radius); + @include border-start-radius($alert-border-radius); + border: 1px solid var(--bs-gray-400); + } + + .alert-message:not(:nth-child(2)) { + @include border-start-radius(0); + border-left: 0; + } + + .alert-icon { + @include border-start-radius($alert-border-radius); + } + + // White icons, or dark ones where white does not reach 3:1 (warning) + @each $color, $value in $theme-colors { + &.alert-#{$color} .alert-icon { + background-color: var(--#{$prefix}#{$color}); + color: text-on($value); + } + } +} + +.alert-outline-coloured { + @each $color, $value in $theme-colors { + &.alert-#{$color} .alert-message { + border-color: var(--#{$prefix}#{$color}); + } + } +} + +.alert-icon { + padding: $alert-padding-y $alert-padding-x; + background: rgba(0, 0, 0, 0.05); +} + +.alert-message { + padding: $alert-padding-y $alert-padding-x; + width: 100%; + box-sizing: border-box; +} + +// .alert sets no padding, so the message keeps the close button's space free +.alert-dismissible .alert-message { + padding-right: $alert-dismissible-padding-r; +} + +@each $color, $value in $theme-colors { + .alert-#{$color}:not(.alert-outline):not(.alert-outline-coloured) { + background: shift-color($value, $alert-bg-scale); + } +} + +@include color-mode(dark) { + @each $color, $value in map-merge($theme-colors, $theme-colors-dark) { + .alert-#{$color}:not(.alert-outline):not(.alert-outline-coloured) { + background: shift-color($value, $alert-bg-scale-dark); + } + } +} + +// Code in an alert takes the alert's text colour, which is readable on its tint +.alert-message :is(code, pre) { + color: inherit; +} diff --git a/src/scss/3-components/_avatar.scss b/src/scss/3-components/_avatar.scss index f08b98d..0a22ac1 100644 --- a/src/scss/3-components/_avatar.scss +++ b/src/scss/3-components/_avatar.scss @@ -15,4 +15,4 @@ align-items: center; justify-content: center; color: $primary; -} \ No newline at end of file +} diff --git a/src/scss/3-components/_badges.scss b/src/scss/3-components/_badges.scss new file mode 100644 index 0000000..0513c22 --- /dev/null +++ b/src/scss/3-components/_badges.scss @@ -0,0 +1,24 @@ +@use "sass:color"; + +// A 15% tint of the colour with the text darkened (lightened in dark mode) to 4.5:1 +@each $color, $value in $theme-colors { + a.badge-#{$color}-light, + .badge-#{$color}-light { + @include badge-variant( + rgba($value, 0.15), + readable($value, color.mix($value, $surface-bg, 15%)) + ); + } +} + +@include color-mode(dark) { + @each $color, $value in map-merge($theme-colors, $theme-colors-dark) { + a.badge-#{$color}-light, + .badge-#{$color}-light { + @include badge-variant( + rgba($value, 0.15), + readable($value, color.mix($value, $surface-bg-dark, 15%)) + ); + } + } +} diff --git a/src/scss/3-components/_buttons.scss b/src/scss/3-components/_buttons.scss index 04cc7b0..a00813b 100644 --- a/src/scss/3-components/_buttons.scss +++ b/src/scss/3-components/_buttons.scss @@ -1,25 +1,68 @@ -.btn .feather { +.btn .lucide, +.btn i[data-lucide] { width: 14px; height: 14px; } +// White text, or dark text where white does not reach 4.5:1 on the colour (warning) @each $color, $value in $theme-colors { .btn-#{$color} { - @include button-color($white); - @include button-color-hover($white); + @include button-color(text-on($value)); + @include button-color-hover(text-on($value)); + } +} + +// Outline buttons draw their label and border in the colour, as text on the surface +@each $color, $value in $theme-text-colors { + .btn-outline-#{$color} { + --#{$prefix}btn-color: #{$value}; + --#{$prefix}btn-border-color: #{$value}; } } +// Brand colours, darkened where white text does not reach 4.5:1 on them @each $color, $value in $social-colors { + $bg: readable($value, $white); + .btn-#{$color} { - @include button-variant($value, $value); + @include button-variant($bg, $bg); @include button-color($white); @include button-color-hover($white); } } +// Dark text on the badge colours where white does not reach 4.5:1 (warning) +@each $color, $value in $theme-colors { + @if $color != "light" and text-on($value) != #fff { + .badge.bg-#{$color} { + color: text-on($value); + } + } +} + .btn-light, .btn-white { - @include button-color($gray-800); - @include button-color-hover($gray-800); -} \ No newline at end of file + @include button-color(var(--#{$prefix}gray-800)); + @include button-color-hover(var(--#{$prefix}gray-800)); +} + +@include color-mode(dark) { + @each $color, $value in $theme-colors-dark { + .btn-#{$color} { + @include button-variant($value, $value); + @include button-color(text-on($value)); + @include button-color-hover(text-on($value)); + } + + .btn-outline-#{$color} { + @include button-outline-variant($value); + } + } + + @each $color, $value in $theme-text-colors-dark { + .btn-outline-#{$color} { + --#{$prefix}btn-color: #{$value}; + --#{$prefix}btn-border-color: #{$value}; + } + } +} diff --git a/src/scss/3-components/_card.scss b/src/scss/3-components/_card.scss index 1ca60d6..1d94ddd 100644 --- a/src/scss/3-components/_card.scss +++ b/src/scss/3-components/_card.scss @@ -3,6 +3,46 @@ box-shadow: $card-shadow; } +// Clickable cards, a.card or a card with a .stretched-link, lift on hover and keyboard focus +a.card, +.card:has(.stretched-link) { + @include transition( + transform var(--ak-duration-fast) var(--ak-ease-standard), + box-shadow var(--ak-duration-fast) var(--ak-ease-standard) + ); +} + +a.card { + color: inherit; + text-decoration: none; +} + +a.card:hover, +.card:has(.stretched-link:hover) { + transform: translateY($card-hover-lift); + box-shadow: $card-shadow-hover; +} + +a.card:focus-visible, +.card:has(.stretched-link:focus-visible) { + outline: 0; + transform: translateY($card-hover-lift); + box-shadow: + $card-shadow-hover, + 0 0 0 $focus-ring-width $focus-ring-color; + + .stretched-link { + outline: 0; + } +} + +@media (prefers-reduced-motion: reduce) { + a.card, + .card:has(.stretched-link) { + transform: none !important; + } +} + .card-header { border-bottom-width: 1px; } @@ -13,6 +53,12 @@ color: $card-title-color; } +@include color-mode(dark) { + .card-title { + color: $card-title-color-dark; + } +} + .card-subtitle { font-weight: $font-weight-normal; } @@ -21,10 +67,6 @@ .card-img-top, .card-img-bottom { @include img-fluid; - - @media all and (-ms-high-contrast:none) { - height: 100%; - } } .card > .table > tbody { @@ -36,4 +78,4 @@ tr:last-child th:last-child { border-bottom-right-radius: $card-border-radius; } -} \ No newline at end of file +} diff --git a/src/scss/3-components/_chart.scss b/src/scss/3-components/_chart.scss index 08704f3..d4d0f9c 100644 --- a/src/scss/3-components/_chart.scss +++ b/src/scss/3-components/_chart.scss @@ -1,23 +1,24 @@ +// Chart.js sizes its canvas from the container, so the container has an explicit height .chart { margin: auto; position: relative; width: 100%; - min-height: 300px; + height: 300px; &-xs { - min-height: 200px; + height: 200px; } &-sm { - min-height: 252px; + height: 252px; } &-lg { - min-height: 350px; + height: 350px; } &-xl { - min-height: 500px; + height: 500px; } canvas { diff --git a/src/scss/3-components/_content.scss b/src/scss/3-components/_content.scss index 9b50811..51b7ba3 100644 --- a/src/scss/3-components/_content.scss +++ b/src/scss/3-components/_content.scss @@ -11,6 +11,6 @@ } @include media-breakpoint-up(lg) { - padding: $content-padding-desktop; + padding: $content-padding-desktop; } } diff --git a/src/scss/3-components/_dropdown.scss b/src/scss/3-components/_dropdown.scss index 091fab7..6e920b9 100644 --- a/src/scss/3-components/_dropdown.scss +++ b/src/scss/3-components/_dropdown.scss @@ -2,35 +2,35 @@ box-shadow: $box-shadow; } +// The slide uses translate, not transform: Popper places menus with transform, and a +// held transform would override it .dropdown .dropdown-menu.show { - animation-name: dropdownAnimation; - animation-duration: .25s; - animation-iteration-count: 1; - animation-timing-function: ease; - animation-fill-mode: forwards; + animation: dropdownAnimation var(--ak-duration-base) var(--ak-ease-emphasized); + + @media (prefers-reduced-motion: reduce) { + animation-name: dropdownFade; + } } @keyframes dropdownAnimation { from { opacity: 0; - transform: translateY(-8px); + translate: 0 -8px; } - to { - opacity: 1; - transform: translate(0); +} + +@keyframes dropdownFade { + from { + opacity: 0; } } .dropdown-toggle:after { - border: solid; - border-width: 0 2px 2px 0; - display: inline-block; - padding: 2px; - transform: rotate(45deg); + @include chevron; } .dropdown-item { - transition: $transition-appearance-fast; + @include transition($transition-appearance-fast); } .dropdown-menu { @@ -38,7 +38,7 @@ } .dropdown-menu-lg { - min-width: $dropdown-min-width*2; + min-width: $dropdown-min-width * 2; } .dropdown .list-group .list-group-item { @@ -52,19 +52,19 @@ } &:hover { - background: $gray-100; + background: var(--#{$prefix}gray-100); } } .dropdown-menu-header { - padding: $spacer*0.75; + padding: $spacer * 0.75; text-align: center; font-weight: $font-weight-bold; - border-bottom: 1px solid $gray-300; + border-bottom: 1px solid var(--#{$prefix}gray-300); } .dropdown-menu-footer { - padding: $spacer*0.5; + padding: $spacer * 0.5; text-align: center; display: block; font-size: $font-size-sm; diff --git a/src/scss/3-components/_feather.scss b/src/scss/3-components/_feather.scss deleted file mode 100644 index 580777d..0000000 --- a/src/scss/3-components/_feather.scss +++ /dev/null @@ -1,15 +0,0 @@ -.feather { - width: 18px; - height: 18px; - stroke-width: 2; -} - -.feather-sm { - width: 14px; - height: 14px; -} - -.feather-lg { - width: 36px; - height: 36px; -} diff --git a/src/scss/3-components/_fonts.scss b/src/scss/3-components/_fonts.scss new file mode 100644 index 0000000..ed20194 --- /dev/null +++ b/src/scss/3-components/_fonts.scss @@ -0,0 +1,100 @@ +// Inter from @fontsource/inter, bundled with the stylesheet: the weights +// $font-weight-light, -normal and -bold use, split into the unicode ranges Google Fonts +// serves so a page only downloads the scripts it shows +$inter-unicode-ranges: ( + cyrillic-ext: ( + U+0460-052F, + U+1C80-1C8A, + U+20B4, + U+2DE0-2DFF, + U+A640-A69F, + U+FE2E-FE2F, + ), + cyrillic: ( + U+0301, + U+0400-045F, + U+0490-0491, + U+04B0-04B1, + U+2116, + ), + greek-ext: (U+1F00-1FFF), + greek: ( + U+0370-0377, + U+037A-037F, + U+0384-038A, + U+038C, + U+038E-03A1, + U+03A3-03FF, + ), + vietnamese: ( + U+0102-0103, + U+0110-0111, + U+0128-0129, + U+0168-0169, + U+01A0-01A1, + U+01AF-01B0, + U+0300-0301, + U+0303-0304, + U+0308-0309, + U+0323, + U+0329, + U+1EA0-1EF9, + U+20AB, + ), + latin-ext: ( + U+0100-02BA, + U+02BD-02C5, + U+02C7-02CC, + U+02CE-02D7, + U+02DD-02FF, + U+0304, + U+0308, + U+0329, + U+1D00-1DBF, + U+1E00-1E9F, + U+1EF2-1EFF, + U+2020, + U+20A0-20AB, + U+20AD-20C0, + U+2113, + U+2C60-2C7F, + U+A720-A7FF, + ), + latin: ( + U+0000-00FF, + U+0131, + U+0152-0153, + U+02BB-02BC, + U+02C6, + U+02DA, + U+02DC, + U+0304, + U+0308, + U+0329, + U+2000-206F, + U+20AC, + U+2122, + U+2191, + U+2193, + U+2212, + U+2215, + U+FEFF, + U+FFFD, + ), +) !default; +$inter-display: swap !default; + +@each $weight in (300, 400, 600) { + @each $subset, $range in $inter-unicode-ranges { + $file: "@fontsource/inter/files/inter-#{$subset}-#{$weight}-normal.woff2"; + + @font-face { + font-family: "Inter"; + font-style: normal; + font-display: $inter-display; + font-weight: $weight; + src: url($file) format("woff2"); + unicode-range: $range; + } + } +} diff --git a/src/scss/3-components/_footer.scss b/src/scss/3-components/_footer.scss index 0ce5968..6795f1a 100644 --- a/src/scss/3-components/_footer.scss +++ b/src/scss/3-components/_footer.scss @@ -1,5 +1,5 @@ footer.footer { - padding: $spacer $spacer*0.875; + padding: $spacer $spacer * 0.875; direction: ltr; background: $footer-bg; diff --git a/src/scss/3-components/_hamburger.scss b/src/scss/3-components/_hamburger.scss index 1fef36c..a25c08d 100644 --- a/src/scss/3-components/_hamburger.scss +++ b/src/scss/3-components/_hamburger.scss @@ -5,10 +5,10 @@ border-radius: 1px; height: 3px; width: $hamburger-width-middle; - background: $gray-700; + background: var(--#{$prefix}gray-700); display: block; - content: ''; - transition: $transition-appearance-fast; + content: ""; + @include transition($transition-appearance-fast); } .hamburger { diff --git a/src/scss/3-components/_invoice.scss b/src/scss/3-components/_invoice.scss new file mode 100644 index 0000000..b330681 --- /dev/null +++ b/src/scss/3-components/_invoice.scss @@ -0,0 +1,80 @@ +// Invoice page (pages-invoice.html) + +.invoice-meta, +.invoice-payment { + dt { + font-weight: $font-weight-normal; + color: var(--#{$prefix}secondary-color); + } + + dd { + margin-bottom: 0; + } +} + +.invoice-meta dd { + color: var(--#{$prefix}emphasis-color); +} + +.invoice-payment dd { + margin-bottom: $spacer * 0.25; +} + +// The item and total columns line up with the text above them +.invoice-items, +.invoice-totals { + > :not(caption) > * > :first-child { + padding-left: 0; + } + + > :not(caption) > * > :last-child { + padding-right: 0; + } +} + +.invoice-items { + thead th { + font-weight: $font-weight-normal; + color: var(--#{$prefix}secondary-color); + } + + td { + padding-top: $spacer * 0.75; + padding-bottom: $spacer * 0.75; + } +} + +.invoice-totals { + margin-top: $spacer * 0.5; + + .invoice-due > * { + border-top: var(--#{$prefix}border-width) solid + var(--#{$prefix}border-color); + padding-top: $spacer * 0.75; + font-size: $font-size-lg; + font-weight: $font-weight-bold; + color: var(--#{$prefix}emphasis-color); + } +} + +// Printing, with the rules in _print.scss: the invoice without its padding and in the light +// colors whatever the color mode +@media print { + .invoice { + --#{$prefix}body-color: #{$body-color}; + --#{$prefix}body-bg: #{$white}; + --#{$prefix}emphasis-color: #{$body-emphasis-color}; + --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color)}; + --#{$prefix}secondary-color: #{$body-secondary-color}; + --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color)}; + --#{$prefix}heading-color: #{$headings-color}; + --#{$prefix}border-color: #{$border-color}; + --#{$prefix}link-color-rgb: #{to-rgb($link-color)}; + color: var(--#{$prefix}body-color); + background: $white; + + .card-body { + padding: 0 !important; + } + } +} diff --git a/src/scss/3-components/_list-group.scss b/src/scss/3-components/_list-group.scss index f872134..6cdea4c 100644 --- a/src/scss/3-components/_list-group.scss +++ b/src/scss/3-components/_list-group.scss @@ -1,3 +1,3 @@ a.list-group-item { text-decoration: none; -} \ No newline at end of file +} diff --git a/src/scss/3-components/_lucide.scss b/src/scss/3-components/_lucide.scss new file mode 100644 index 0000000..c641d59 --- /dev/null +++ b/src/scss/3-components/_lucide.scss @@ -0,0 +1,29 @@ +.lucide { + width: 18px; + height: 18px; + stroke-width: 2; +} + +// js/app.js renders each icon as an inside its . Until then the empty +// takes the size the SVG will have (the rules that size .lucide or svg in a component +// list it too), so the layout does not move when the icons appear; after that it leaves +// the layout to the SVG. :where() keeps .lucide-sm and -lg ahead. +:where(i[data-lucide]:empty) { + display: inline-block; + width: 18px; + height: 18px; +} + +i[data-lucide]:not(:empty) { + display: contents; +} + +.lucide-sm { + width: 14px; + height: 14px; +} + +.lucide-lg { + width: 36px; + height: 36px; +} diff --git a/src/scss/3-components/_main.scss b/src/scss/3-components/_main.scss index 67f0e70..00d7b87 100644 --- a/src/scss/3-components/_main.scss +++ b/src/scss/3-components/_main.scss @@ -3,10 +3,11 @@ width: 100%; min-width: 0; min-height: 100vh; - transition: $sidebar-transition; - background: $body-bg; + background: var(--#{$prefix}body-bg); flex-direction: column; - overflow: hidden; + // clip, not hidden: hidden makes .main a scroll container, so position: sticky + // inside the page (such as the pricing table header) would never stick + overflow: clip; border-top-left-radius: 0; border-bottom-left-radius: 0; } diff --git a/src/scss/3-components/_modal.scss b/src/scss/3-components/_modal.scss new file mode 100644 index 0000000..0d32baf --- /dev/null +++ b/src/scss/3-components/_modal.scss @@ -0,0 +1,12 @@ +@each $color, $value in $theme-colors { + .modal-#{$color} { + @include modal-variant($value); + } +} + +.modal-colored { + .modal-header, + .modal-footer { + border-color: rgba(255, 255, 255, 0.33); + } +} diff --git a/src/scss/3-components/_navbar.scss b/src/scss/3-components/_navbar.scss index b2f8301..e5de8b5 100644 --- a/src/scss/3-components/_navbar.scss +++ b/src/scss/3-components/_navbar.scss @@ -24,6 +24,12 @@ background: $navbar-bg; } +@include color-mode(dark) { + .navbar-bg { + background: $navbar-bg-dark; + } +} + .navbar-brand { font-weight: $navbar-brand-font-weight; font-size: $navbar-brand-font-size; @@ -32,7 +38,8 @@ display: block; svg, - .feather { + .lucide, + i[data-lucide] { color: $navbar-brand-icon-color; height: 24px; width: 24px; @@ -44,11 +51,11 @@ .nav-icon, .nav-flag { - padding: .1rem .8rem; + padding: 0.1rem 0.8rem; display: block; font-size: 1.5rem; - color: $gray-600; - transition: $transition-appearance-fast; + color: var(--#{$prefix}gray-600); + @include transition($transition-appearance-fast); line-height: 1.4; &:after { @@ -61,7 +68,8 @@ } svg, - .feather { + .lucide, + i[data-lucide] { width: 20px; height: 20px; } @@ -80,7 +88,7 @@ top: 0; right: -8px; text-align: center; - transition: top .1s ease-out; + @include transition(top var(--ak-duration-fast) var(--ak-ease-standard)); font-size: 0.675rem; color: $white; } @@ -89,24 +97,18 @@ top: -4px; } - a:focus { + a:focus:not(:focus-visible) { outline: 0; } } -@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { - .navbar .avatar { - max-height: 47px; - } -} - @include media-breakpoint-down(sm) { .navbar { padding: 0.75rem; } .nav-icon { - padding: .1rem .75rem; + padding: 0.1rem 0.75rem; } .dropdown, @@ -134,4 +136,4 @@ .navbar input { direction: ltr; -} \ No newline at end of file +} diff --git a/src/scss/3-components/_pricing.scss b/src/scss/3-components/_pricing.scss new file mode 100644 index 0000000..1163898 --- /dev/null +++ b/src/scss/3-components/_pricing.scss @@ -0,0 +1,153 @@ +// Pricing page (pages-pricing.html) + +// Plan cards. From lg up the cards share the rows of one grid (subgrid), so the name, +// description, price, button and feature list line up across the cards whatever their length. +.pricing-plans { + display: grid; + gap: $spacer; + + > .card { + margin-bottom: 0; + } + + @include media-breakpoint-up(lg) { + grid-template-columns: repeat(3, minmax(0, 1fr)); + row-gap: 0; + + > .card, + > .card > .card-body { + display: grid; + grid-row: span 6; + grid-template-rows: subgrid; + } + } +} + +// The highlighted plan: a primary ring outside the card, so its content lines up with the others +.pricing-plan-featured { + box-shadow: + 0 0 0 2px var(--#{$prefix}primary), + $card-shadow; +} + +.pricing-price { + font-variant-numeric: tabular-nums; +} + +.pricing-features { + li { + display: flex; + gap: $spacer * 0.5; + } + + li + li { + margin-top: $spacer * 0.625; + } + + svg, + i[data-lucide] { + flex-shrink: 0; + margin-top: 0.125em; + } +} + +// Comparison table: plan header row, a tinted Standard column and grouped rows +.pricing-table { + --ak-pricing-featured-bg: rgba(var(--#{$prefix}primary-rgb), 0.05); + + > :not(caption) > * > * { + padding-top: $spacer * 0.875; + padding-bottom: $spacer * 0.875; + } + + thead th { + padding-top: $spacer * 1.25; + padding-bottom: $spacer * 1.25; + font-weight: $font-weight-normal; + vertical-align: bottom; + background-color: var(--ak-surface-bg); + } + + thead th:not(:first-child), + td { + width: 22%; + min-width: 9.5rem; + text-align: center; + } + + tbody th { + font-weight: $font-weight-normal; + vertical-align: middle; + } + + td { + font-variant-numeric: tabular-nums; + } + + // The Standard column + > :not(caption) > tr > :nth-child(3) { + --#{$prefix}table-bg-state: var(--ak-pricing-featured-bg); + } + + .pricing-table-group th { + padding-top: $spacer * 1.5; + font-weight: $font-weight-semibold; + + svg, + i[data-lucide] { + margin-right: $spacer * 0.5; + color: var(--#{$prefix}primary); + vertical-align: -0.2em; + } + } + + tbody tr:last-child > * { + border-bottom-width: 0; + } + + td .lucide, + td i[data-lucide] { + vertical-align: -0.2em; + } + + // From lg up the plan header row stays in view while the table scrolls by + @include media-breakpoint-up(lg) { + thead th { + position: sticky; + top: 0; + } + } + + // Below lg the table scrolls sideways inside the card; the feature names stay in view + @include media-breakpoint-down(lg) { + th:first-child { + position: sticky; + left: 0; + min-width: 10rem; + background-color: var(--ak-surface-bg); + } + } + + @include media-breakpoint-down(sm) { + font-size: $font-size-sm; + + > :not(caption) > * > * { + padding-inline: $spacer * 0.5; + } + + thead th:not(:first-child), + td { + min-width: 7.5rem; + } + + th:first-child { + min-width: 8rem; + } + } +} + +@include color-mode(dark) { + .pricing-table { + --ak-pricing-featured-bg: rgba(var(--#{$prefix}primary-rgb), 0.08); + } +} diff --git a/src/scss/3-components/_print.scss b/src/scss/3-components/_print.scss new file mode 100644 index 0000000..3ac5add --- /dev/null +++ b/src/scss/3-components/_print.scss @@ -0,0 +1,36 @@ +// Printing (the invoice's Print button): only the page content, without the sidebar, +// navbar, footer and card chrome, on a white page whatever the color mode, and with every +// card shown, revealed or not. The invoice resets its own colors in _invoice.scss. +@media print { + .sidebar, + .navbar, + .footer { + display: none !important; + } + + body, + .wrapper, + .main { + background: $white !important; + } + + .main, + .content { + width: 100%; + margin: 0; + padding: 0; + } + + .card { + border: 0; + box-shadow: none; + } + + // .ak-reveal and .ak-reveal-cards: v4 aliases, remove in v5 + .js-reveal :is(.reveal-cards, .ak-reveal-cards), + .js-reveal + :is(.reveal, .ak-reveal, .reveal-cards .card, .ak-reveal-cards .card) { + opacity: 1 !important; + transform: none !important; + } +} diff --git a/src/scss/3-components/_profile.scss b/src/scss/3-components/_profile.scss new file mode 100644 index 0000000..6cc799d --- /dev/null +++ b/src/scss/3-components/_profile.scss @@ -0,0 +1,15 @@ +// Profile page (pages-profile.html) + +// Smaller avatar in the profile header on phones, so the name keeps its line +.profile-avatar { + @include media-breakpoint-down(sm) { + width: 64px; + height: 64px; + } +} + +// Keeps the progress bars in the projects table the same length +.profile-progress-value { + min-width: 2.5rem; + text-align: end; +} diff --git a/src/scss/3-components/_progress.scss b/src/scss/3-components/_progress.scss new file mode 100644 index 0000000..6952f68 --- /dev/null +++ b/src/scss/3-components/_progress.scss @@ -0,0 +1,3 @@ +.progress-sm { + height: $progress-height-sm; +} diff --git a/src/scss/3-components/_reboot.scss b/src/scss/3-components/_reboot.scss index 78d39c6..65f432a 100644 --- a/src/scss/3-components/_reboot.scss +++ b/src/scss/3-components/_reboot.scss @@ -1,14 +1,9 @@ -body, html, #root { +body, +html, +#root { height: 100%; } body { overflow-y: scroll; - opacity: 1 !important; -} - -@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { - html { - overflow-x: hidden; - } } diff --git a/src/scss/3-components/_reveal.scss b/src/scss/3-components/_reveal.scss new file mode 100644 index 0000000..a662ef0 --- /dev/null +++ b/src/scss/3-components/_reveal.scss @@ -0,0 +1,42 @@ +// Cards fade up as they scroll into view (js/modules/reveal.js): the top-level cards in +// .reveal-cards and any .reveal element. The hidden state only applies under +// html.js-reveal, which js/head.js sets, so without JavaScript nothing is hidden. Reduced +// motion keeps the fade and drops the movement. +// v4 aliases, remove in v5: .ak-reveal, .ak-reveal-cards, .ak-revealed, .ak-revealing +$reveal-cards: ".reveal-cards, .ak-reveal-cards"; +$reveal-items: ".reveal, .ak-reveal, :is(#{$reveal-cards}) .card:not(.card .card)"; +$revealed: ".revealed, .ak-revealed"; +$revealing: ".revealing, .ak-revealing"; + +.js-reveal :is(#{$reveal-items}):not(#{$revealed}) { + opacity: 0; + transform: translateY(0.75rem); +} + +// The rest of the content (page title, columns) waits for the page scripts too, so plugins +// that change the layout on DOMContentLoaded do so before anything is seen +.js-reveal :is(#{$reveal-cards}) { + opacity: 0; + + &:is(#{$revealed}) { + opacity: 1; + transition: opacity var(--ak-duration-fast) var(--ak-ease-standard); + } +} + +.js-reveal :is(#{$revealing}) { + transition: + opacity var(--ak-duration-slow) var(--ak-ease-standard), + transform var(--ak-duration-slow) var(--ak-ease-emphasized); + transition-delay: calc(var(--ak-reveal-index, 0) * 60ms); +} + +@media (prefers-reduced-motion: reduce) { + .js-reveal :is(#{$reveal-items}):not(#{$revealed}) { + transform: none; + } + + .js-reveal :is(#{$revealing}) { + transition-property: opacity; + } +} diff --git a/src/scss/3-components/_root.scss b/src/scss/3-components/_root.scss new file mode 100644 index 0000000..efdbb24 --- /dev/null +++ b/src/scss/3-components/_root.scss @@ -0,0 +1,38 @@ +// AdminKit's custom properties, next to the ones Bootstrap puts on :root. Bootstrap keeps the +// gray scale and the theme colours the same in both modes; AdminKit's dark palette turns the +// grays and the secondary, light and dark colours around, so components that should follow +// the mode use var(--bs-gray-*), var(--bs-secondary) and friends rather than Sass values. +:root { + --ak-duration-fast: #{$transition-duration-fast}; + --ak-duration-base: #{$transition-duration-base}; + --ak-duration-slow: #{$transition-duration-slow}; + --ak-ease-standard: #{$transition-easing-standard}; + --ak-ease-emphasized: #{$transition-easing-emphasized}; +} + +:root, +[data-bs-theme="light"] { + --ak-surface-bg: #{$surface-bg}; + --ak-surface-bg-rgb: #{to-rgb($surface-bg)}; + --ak-alert-color: #{$alert-color}; + --ak-form-check-input-border-color: var(--#{$prefix}border-color); +} + +@include color-mode(dark, true) { + --ak-surface-bg: #{$surface-bg-dark}; + --ak-surface-bg-rgb: #{to-rgb($surface-bg-dark)}; + --ak-alert-color: #{$alert-color-dark}; + --ak-form-check-input-border-color: #{$form-check-input-border-color-dark}; + + --#{$prefix}gray: #{$gray-600-dark}; + --#{$prefix}gray-dark: #{$gray-800-dark}; + + @each $step, $value in $grays-dark { + --#{$prefix}gray-#{$step}: #{$value}; + } + + @each $color, $value in $theme-colors-dark { + --#{$prefix}#{$color}: #{$value}; + --#{$prefix}#{$color}-rgb: #{to-rgb($value)}; + } +} diff --git a/src/scss/3-components/_sidebar.scss b/src/scss/3-components/_sidebar.scss index 72715a5..d37b7bf 100644 --- a/src/scss/3-components/_sidebar.scss +++ b/src/scss/3-components/_sidebar.scss @@ -1,13 +1,23 @@ +// Below lg the sidebar is a Bootstrap offcanvas sheet (.offcanvas-lg in the markup), from lg +// up a column of the layout that the toggle hides and shows .sidebar { + --#{$prefix}offcanvas-width: #{$sidebar-width}; + --#{$prefix}offcanvas-transition: #{$sidebar-sheet-transition}; min-width: $sidebar-width; max-width: $sidebar-width; - transition: $sidebar-transition; direction: ltr; background: $sidebar-bg; + + @include media-breakpoint-up(lg) { + @include transition($sidebar-transition); + + &.collapsed { + margin-left: -$sidebar-width; + } + } } .sidebar-content { - transition: $sidebar-transition; display: flex; height: 100vh; flex-direction: column; @@ -27,7 +37,9 @@ a.sidebar-link { display: block; padding: $sidebar-link-padding; font-weight: $sidebar-link-font-weight; - transition: background .1s ease-in-out; + @include transition( + background var(--ak-duration-fast) var(--ak-ease-standard) + ); position: relative; text-decoration: none; cursor: pointer; @@ -39,12 +51,12 @@ a.sidebar-link { i, svg { - margin-right: .75rem; + margin-right: 0.75rem; color: $sidebar-link-icon-color; } } -.sidebar-link:focus { +.sidebar-link:focus:not(:focus-visible) { outline: 0; } @@ -84,38 +96,22 @@ a.sidebar-link { color: $sidebar-brand-color; } - &:focus { + &:focus:not(:focus-visible) { outline: 0; } } // Toggle states .sidebar-toggle { + background: none; + border: 0; + padding: 0; cursor: pointer; width: 26px; height: 26px; display: flex; } -.sidebar { - &.collapsed { - margin-left: -$sidebar-width; - } - - // Workaround for IE bug, more info: - // https://stackoverflow.com/a/25850649 - @media (min-width: 1px) and (max-width: #{map-get($grid-breakpoints, 'lg') - .02px}) { - - // Sidebar default state (on mobile) - margin-left: -$sidebar-width; - - // Sidebar collapsed state (on mobile) - &.collapsed { - margin-left: 0; - } - } -} - .sidebar-toggle { margin-right: $spacer; } @@ -144,4 +140,4 @@ a.sidebar-link { background: $sidebar-cta-bg; color: $sidebar-cta-color; -} \ No newline at end of file +} diff --git a/src/scss/3-components/_sizing.scss b/src/scss/3-components/_sizing.scss index 7733eda..eeb6dc1 100644 --- a/src/scss/3-components/_sizing.scss +++ b/src/scss/3-components/_sizing.scss @@ -1,5 +1,13 @@ -.min-vw-50 { min-width: 50vw !important; } -.min-vh-50 { min-height: 50vh !important; } +.min-vw-50 { + min-width: 50vw !important; +} +.min-vh-50 { + min-height: 50vh !important; +} -.vw-50 { width: 50vw !important; } -.vh-50 { height: 50vh !important; } \ No newline at end of file +.vw-50 { + width: 50vw !important; +} +.vh-50 { + height: 50vh !important; +} diff --git a/src/scss/3-components/_skeleton.scss b/src/scss/3-components/_skeleton.scss new file mode 100644 index 0000000..98362f9 --- /dev/null +++ b/src/scss/3-components/_skeleton.scss @@ -0,0 +1,17 @@ +// Loading placeholder (js/modules/skeleton.js) built from Bootstrap's .placeholder. A +// .skeleton covers the element that will hold the content, which keeps its final size +// (a .chart, or a min-height), so nothing moves when the content replaces it. +.skeleton, +.ak-skeleton { + // .ak-skeleton: v4 alias, remove in v5 + position: absolute; + inset: 0; + z-index: 1; + display: flex; + pointer-events: none; + + > .placeholder { + flex: 1; + border-radius: $border-radius-lg; + } +} diff --git a/src/scss/3-components/_stat.scss b/src/scss/3-components/_stat.scss index 510249a..a902990 100644 --- a/src/scss/3-components/_stat.scss +++ b/src/scss/3-components/_stat.scss @@ -7,10 +7,21 @@ justify-content: center; display: flex; - svg { + svg, + i[data-lucide] { width: 18px; height: 18px; color: $stat-icon-color !important; stroke-width: 1.5; } -} \ No newline at end of file +} + +@include color-mode(dark) { + .stat { + background: $stat-bg-dark; + + svg { + color: $stat-icon-color-dark !important; + } + } +} diff --git a/src/scss/3-components/_tables.scss b/src/scss/3-components/_tables.scss index 4957952..17e6f69 100644 --- a/src/scss/3-components/_tables.scss +++ b/src/scss/3-components/_tables.scss @@ -1,13 +1,80 @@ +@include color-mode(dark) { + .table { + --#{$prefix}table-striped-bg: #{$table-striped-bg-dark}; + } +} + .table { - thead, tbody, tfoot, tr, td, th { - border-color: $table-border-color; - } - - > :not(:last-child) > :last-child > * { - border-color: $table-border-color; - } + thead, + tbody, + tfoot, + tr, + td, + th { + border-color: $table-border-color; + } + + > :not(:last-child) > :last-child > * { + border-color: $table-border-color; + } +} + +.card { + > .table, + > .table-responsive .table, + > .table-responsive-sm .table, + > .table-responsive-md .table, + > .table-responsive-lg .table, + > .table-responsive-xl .table { + border-right: 0; + border-bottom: 0; + border-left: 0; + margin-bottom: 0; + + td:first-child, + th:first-child { + border-left: 0; + padding-left: $spacer * 1.25; + } + + td:last-child, + th:last-child { + border-right: 0; + padding-right: $spacer * 1.25; + } + + tr:first-child td, + tr:first-child th { + border-top: 0; + } + + tr:last-child td, + tbody tr:last-child th { + border-bottom: 0; + } + } + + .card-header + .table { + border-top: 0; + } +} + +.table-action { + a { + color: var(--bs-gray-600); + + &:hover { + color: var(--bs-gray-900); + } + } + + .lucide, + i[data-lucide] { + width: 18px; + height: 18px; + } } .table > tbody > tr > td { - vertical-align: middle; -} \ No newline at end of file + vertical-align: middle; +} diff --git a/src/scss/3-components/_type.scss b/src/scss/3-components/_type.scss index a5b0e9c..922c05a 100644 --- a/src/scss/3-components/_type.scss +++ b/src/scss/3-components/_type.scss @@ -6,8 +6,9 @@ font-size: $font-size-lg; } -b, strong { - font-weight: $font-weight-bold; +b, +strong { + font-weight: $font-weight-bold; } pre.snippet { @@ -18,4 +19,11 @@ pre.snippet { a { cursor: pointer; -} \ No newline at end of file +} + +// Links in running text are underlined, so they do not rely on colour alone +:is(p, li, dd, small, .card-subtitle, .form-text, .alert-message) + > a:not([class]) { + text-decoration: underline; + text-underline-offset: 0.15em; +} diff --git a/src/scss/3-components/_upgrade.scss b/src/scss/3-components/_upgrade.scss new file mode 100644 index 0000000..82d92fb --- /dev/null +++ b/src/scss/3-components/_upgrade.scss @@ -0,0 +1,77 @@ +// Upgrade page + +// What PRO adds, as a list of checks next to the hero screenshot +.upgrade-features { + li { + display: flex; + gap: $spacer * 0.5; + } + + li + li { + margin-top: $spacer * 0.625; + } + + svg, + i[data-lucide] { + flex-shrink: 0; + margin-top: 0.125em; + } +} + +// The edition comparison table, with the PRO column tinted +.upgrade-table { + --ak-upgrade-pro-bg: rgba(var(--#{$prefix}primary-rgb), 0.05); + + > :not(caption) > * > * { + padding-top: $spacer * 0.75; + padding-bottom: $spacer * 0.75; + } + + thead th:not(:first-child), + td { + width: 30%; + min-width: 8rem; + text-align: center; + } + + tbody th { + font-weight: $font-weight-normal; + } + + td { + font-variant-numeric: tabular-nums; + } + + > :not(caption) > tr > :nth-child(3) { + --#{$prefix}table-bg-state: var(--ak-upgrade-pro-bg); + } + + tbody tr:last-child > * { + border-bottom-width: 0; + } + + .lucide, + i[data-lucide] { + vertical-align: -0.2em; + } + + // On phones the three columns share the card's width instead of scrolling + @include media-breakpoint-down(sm) { + font-size: $font-size-sm; + + > :not(caption) > * > * { + padding-inline: $spacer * 0.5; + } + + thead th:not(:first-child), + td { + min-width: 0; + } + } +} + +@include color-mode(dark) { + .upgrade-table { + --ak-upgrade-pro-bg: rgba(var(--#{$prefix}primary-rgb), 0.08); + } +} diff --git a/src/scss/4-utilities/_color-mode.scss b/src/scss/4-utilities/_color-mode.scss new file mode 100644 index 0000000..6925429 --- /dev/null +++ b/src/scss/4-utilities/_color-mode.scss @@ -0,0 +1,9 @@ +// Content for one color mode only, such as a light and a dark screenshot side by side in +// the markup. Hidden content does not load when it is lazy (loading="lazy" images). +// .ak-dark-only and .ak-light-only: v4 aliases, remove in v5 +html:not([data-bs-theme="dark"]) .dark-only, +html:not([data-bs-theme="dark"]) .ak-dark-only, +[data-bs-theme="dark"] .light-only, +[data-bs-theme="dark"] .ak-light-only { + display: none !important; +} diff --git a/src/scss/4-utilities/_cursors.scss b/src/scss/4-utilities/_cursors.scss index d88632d..7dd0ddb 100644 --- a/src/scss/4-utilities/_cursors.scss +++ b/src/scss/4-utilities/_cursors.scss @@ -7,4 +7,4 @@ .cursor-pointer { cursor: pointer; -} \ No newline at end of file +} diff --git a/src/scss/4-utilities/_text.scss b/src/scss/4-utilities/_text.scss new file mode 100644 index 0000000..cd1aaac --- /dev/null +++ b/src/scss/4-utilities/_text.scss @@ -0,0 +1,22 @@ +// Theme colour text reaches 4.5:1 on the page and surface backgrounds in both modes +// ($theme-text-colors, $theme-text-colors-dark) +@each $color, $value in $theme-text-colors { + @if $color != "light" and $color != "dark" { + .text-#{$color} { + color: rgba(#{to-rgb($value)}, var(--#{$prefix}text-opacity)) !important; + } + } +} + +@include color-mode(dark) { + @each $color, $value in $theme-text-colors-dark { + @if $color != "light" and $color != "dark" { + .text-#{$color} { + color: rgba( + #{to-rgb($value)}, + var(--#{$prefix}text-opacity) + ) !important; + } + } + } +} diff --git a/src/scss/5-vendor/_flatpickr.scss b/src/scss/5-vendor/_flatpickr.scss deleted file mode 100644 index 96a986b..0000000 --- a/src/scss/5-vendor/_flatpickr.scss +++ /dev/null @@ -1,104 +0,0 @@ -$flatpickr-tile-height: 45px; - -.flatpickr-calendar.inline { - background: transparent; - box-shadow: none; - width: 100%; - - .flatpickr-days { - width: 100%; - } - - .dayContainer { - width: 100%; - min-width: 100%; - max-width: 100%; - } - - .flatpickr-day { - border-radius: $border-radius; - max-width: inherit; - height: $flatpickr-tile-height; - line-height: $flatpickr-tile-height; - - &.today { - border: 0; - - &:before { - content: ""; - display: inline-block; - border-color: rgba(0,0,0,.2) transparent $primary; - border-style: solid; - border-width: 0 0 7px 7px; - position: absolute; - bottom: 4px; - right: 4px; - } - - &.selected:before { - border-color: rgba(0,0,0,.2) transparent $white; - } - - &:hover { - background: #e6e6e6; - color: $black; - } - } - - &.selected { - &, - &:hover, - &:focus { - border-radius: $border-radius; - background: $primary; - color: $white; - } - } - } - - .flatpickr-weekdays { - height: $flatpickr-tile-height; - } - .flatpickr-weekday { - height: $flatpickr-tile-height; - line-height: $flatpickr-tile-height; - } - - .flatpickr-months { - .flatpickr-month { - height: $flatpickr-tile-height; - } - - .flatpickr-prev-month, - .flatpickr-next-month { - height: $flatpickr-tile-height; - } - } - - .flatpickr-current-month { - padding-top: 0; - line-height: $flatpickr-tile-height; - height: $flatpickr-tile-height; - - .flatpickr-monthDropdown-months { - appearance: none; - } - - .flatpickr-monthDropdown-months, - input.cur-year { - font-weight: $font-weight-normal; - font-size: $h4-font-size; - } - } - - .flatpickr-prev-month, - .flatpickr-next-month { - width: 45px; - border-radius: $border-radius; - - &:hover { - background: #e6e6e6; - color: $black; - } - } -} \ No newline at end of file diff --git a/src/scss/5-vendor/_simplebar.scss b/src/scss/5-vendor/_simplebar.scss index 5552439..a16f80f 100644 --- a/src/scss/5-vendor/_simplebar.scss +++ b/src/scss/5-vendor/_simplebar.scss @@ -14,4 +14,4 @@ top: 0; left: 0; width: $sidebar-width; -} \ No newline at end of file +} diff --git a/src/scss/5-vendor/_vanilla-calendar.scss b/src/scss/5-vendor/_vanilla-calendar.scss new file mode 100644 index 0000000..22efa66 --- /dev/null +++ b/src/scss/5-vendor/_vanilla-calendar.scss @@ -0,0 +1,200 @@ +// Vanilla Calendar Pro, coloured with the theme variables. Weekends keep the weekday colours. +body { + --vc-bg: var(--ak-surface-bg); + --vc-color: var(--bs-body-color); + --vc-focus-outline-color: #{$primary}; + --vc-header-color: var(--bs-gray-900); + --vc-title-color: var(--bs-gray-900); + --vc-title-color-hover: var(--bs-gray-600); + --vc-title-color-disabled: var(--bs-gray-400); + --vc-months-years-bg: transparent; + --vc-months-years-bg-hover: var(--bs-gray-200); + --vc-months-years-color: var(--bs-gray-800); + --vc-months-years-color-disabled: var(--bs-gray-400); + --vc-months-years-bg-selected: #{$primary}; + --vc-months-years-color-selected: #{$white}; + --vc-week-day-color: var(--bs-gray-600); + --vc-week-day-color-hover: var(--bs-gray-800); + --vc-week-day-off-color: var(--bs-gray-600); + --vc-week-day-off-color-hover: var(--bs-gray-800); + --vc-date-bg: transparent; + --vc-date-color: var(--bs-gray-800); + --vc-date-bg-hover: var(--bs-gray-200); + --vc-date-hover-bg: var(--bs-gray-200); + --vc-date-hover-edge-bg: var(--bs-gray-300); + --vc-date-today-bg: transparent; + --vc-date-today-color: var(--bs-gray-800); + --vc-date-today-outside-color: var(--bs-secondary-color); + --vc-date-outside-color: var(--bs-secondary-color); + --vc-date-disabled-color: color-mix( + in srgb, + var(--bs-gray-800) 10%, + transparent + ); + --vc-date-selected-bg: #{$primary}; + --vc-date-selected-color: #{$white}; + --vc-date-selected-outside-bg: #{rgba($primary, 0.5)}; + --vc-date-selected-outside-color: #{$white}; + --vc-date-range-middle-bg: var(--bs-gray-200); + --vc-date-range-middle-color: var(--bs-gray-800); + --vc-date-range-middle-outside-bg: var(--bs-gray-200); + --vc-date-range-middle-outside-color: var(--bs-secondary-color); + --vc-date-range-middle-weekend-bg: var(--bs-gray-200); + --vc-date-range-middle-weekend-color: var(--bs-gray-800); + --vc-date-weekend-color: var(--bs-gray-800); + --vc-date-weekend-bg-hover: var(--bs-gray-200); + --vc-date-weekend-hover-bg: var(--bs-gray-200); + --vc-date-weekend-hover-edge-bg: var(--bs-gray-300); + --vc-date-weekend-today-color: var(--bs-gray-800); + --vc-date-weekend-today-outside-color: var(--bs-secondary-color); + --vc-date-weekend-today-disabled-color: color-mix( + in srgb, + var(--bs-gray-800) 10%, + transparent + ); + --vc-date-weekend-disabled-color: color-mix( + in srgb, + var(--bs-gray-800) 10%, + transparent + ); + --vc-date-weekend-disabled-outside-color: color-mix( + in srgb, + var(--bs-gray-800) 10%, + transparent + ); + --vc-date-weekend-outside-bg: transparent; + --vc-date-weekend-outside-color: var(--bs-secondary-color); + --vc-date-weekend-outside-bg-hover: var(--bs-gray-200); + --vc-date-weekend-outside-hover-bg: var(--bs-gray-200); + --vc-date-weekend-selected-bg: #{$primary}; + --vc-date-weekend-selected-color: #{$white}; +} + +.vc { + font-family: $font-family-base; + + [data-vc-arrow] { + border-radius: $border-radius; + + &:hover { + background-color: var(--#{$prefix}gray-200); + } + } + + [data-vc="month"], + [data-vc="year"] { + font-weight: $font-weight-normal; + } + + [data-vc-week-day] { + font-weight: $font-weight-normal; + } + + [data-vc-date-btn] { + font-size: $font-size-base; + border-radius: $border-radius; + } + + // Today marker, like the one the previous date picker drew + [data-vc-date-today] [data-vc-date-btn] { + position: relative; + font-weight: $font-weight-normal; + + &::after { + content: ""; + position: absolute; + right: 4px; + bottom: 4px; + border-style: solid; + border-width: 0 0 7px 7px; + border-color: rgba(var(--#{$prefix}emphasis-color-rgb), 0.2) transparent + $primary; + } + } + + [data-vc-date-today][data-vc-date-selected] [data-vc-date-btn]::after { + border-color: rgba(var(--#{$prefix}emphasis-color-rgb), 0.2) transparent + $white; + } +} + +// Inline calendar, which fills its card at every width. The plugin sizes the calendar +// for a popup (17rem minimum, header padding, 1.875rem minimum day cells, `1fr` columns +// that grow to their content), which is wider than a quarter-width dashboard card, so the +// inline calendar drops those minimums and its seven columns share the width evenly. +.vc:not([data-vc-input]) { + container-type: inline-size; + width: 100%; + min-width: 0; + padding: 0; + background-color: transparent; + + [data-vc="wrapper"], + [data-vc="content"], + [data-vc="dates"], + [data-vc="months"], + [data-vc="years"] { + min-width: 0; + } + + [data-vc-header="content"] { + min-width: 0; + padding-right: $spacer * 0.5; + padding-left: $spacer * 0.5; + } + + [data-vc-arrow] { + flex-shrink: 0; + height: 45px; + width: 45px; + + &::before { + background-size: 1.5rem; + } + } + + [data-vc="week"], + [data-vc-dates="row"] { + grid-template-columns: repeat(7, minmax(0, 1fr)); + } + + [data-vc-week-day], + [data-vc-date-btn] { + min-width: 0; + } + + [data-vc-week-day] { + min-height: 45px; + } + + [data-vc-date-btn] { + min-height: 45px; + } + + // Narrow cards (a quarter-width dashboard column, phones): smaller arrows, title and rows + @container (width < 18rem) { + [data-vc-header="content"] { + padding-right: 0; + padding-left: 0; + } + + [data-vc-arrow] { + height: 2rem; + width: 2rem; + + &::before { + background-size: 1.25rem; + } + } + + [data-vc="month"], + [data-vc="year"] { + font-size: $font-size-base; + } + + [data-vc-week-day], + [data-vc-date-btn] { + min-height: 2.25rem; + } + } +} diff --git a/src/scss/app.scss b/src/scss/app.scss index 60eb22e..4dd946b 100644 --- a/src/scss/app.scss +++ b/src/scss/app.scss @@ -1,72 +1,93 @@ -/*! - * AdminKit v3.5.0 (https://adminkit.io/) - * Copyright 2023 Paul Laros - * Copyright 2023 AdminKit - * Licensed under MIT (https://github.com/adminkit/adminkit/blob/master/LICENSE) - */ +// Bootstrap's functions first: the variables use its contrast functions +@import "bootstrap/scss/functions"; +@import "1-variables/functions"; // Variables @import "1-variables/app"; +@import "1-variables/dark"; // Bootstrap -@import "~bootstrap/scss/functions"; -@import "~bootstrap/scss/variables"; -@import "~bootstrap/scss/maps"; -@import "~bootstrap/scss/mixins"; -@import "~bootstrap/scss/utilities"; -@import "~bootstrap/scss/root"; -@import "~bootstrap/scss/reboot"; -@import "~bootstrap/scss/type"; -@import "~bootstrap/scss/images"; -@import "~bootstrap/scss/containers"; -@import "~bootstrap/scss/grid"; -@import "~bootstrap/scss/tables"; -@import "~bootstrap/scss/forms"; -@import "~bootstrap/scss/buttons"; -@import "~bootstrap/scss/transitions"; -@import "~bootstrap/scss/dropdown"; -@import "~bootstrap/scss/button-group"; -@import "~bootstrap/scss/nav"; -@import "~bootstrap/scss/navbar"; -@import "~bootstrap/scss/card"; -@import "~bootstrap/scss/badge"; -@import "~bootstrap/scss/list-group"; -@import "~bootstrap/scss/close"; -@import "~bootstrap/scss/helpers"; -@import "~bootstrap/scss/utilities/api"; +@import "bootstrap/scss/variables"; +@import "bootstrap/scss/variables-dark"; +@import "bootstrap/scss/maps"; +@import "bootstrap/scss/mixins"; +@import "bootstrap/scss/utilities"; +@import "bootstrap/scss/root"; +@import "bootstrap/scss/reboot"; +@import "bootstrap/scss/type"; +@import "bootstrap/scss/images"; +@import "bootstrap/scss/containers"; +@import "bootstrap/scss/grid"; +@import "bootstrap/scss/tables"; +@import "bootstrap/scss/forms"; +@import "bootstrap/scss/buttons"; +@import "bootstrap/scss/transitions"; +@import "bootstrap/scss/dropdown"; +@import "bootstrap/scss/button-group"; +@import "bootstrap/scss/nav"; +@import "bootstrap/scss/navbar"; +@import "bootstrap/scss/card"; +@import "bootstrap/scss/badge"; +@import "bootstrap/scss/list-group"; +@import "bootstrap/scss/alert"; +@import "bootstrap/scss/progress"; +@import "bootstrap/scss/close"; +@import "bootstrap/scss/modal"; +@import "bootstrap/scss/offcanvas"; +@import "bootstrap/scss/placeholders"; +@import "bootstrap/scss/helpers"; +@import "bootstrap/scss/utilities/api"; // Theme mixins +@import "2-mixins/badge"; @import "2-mixins/button"; +@import "2-mixins/chevron"; +@import "2-mixins/modal"; // Theme components +@import "3-components/root"; +@import "3-components/fonts"; +@import "3-components/alert"; @import "3-components/avatar"; +@import "3-components/badges"; @import "3-components/buttons"; @import "3-components/card"; @import "3-components/chart"; @import "3-components/content"; @import "3-components/dropdown"; -@import "3-components/feather"; @import "3-components/footer"; @import "3-components/hamburger"; +@import "3-components/invoice"; @import "3-components/list-group"; +@import "3-components/lucide"; @import "3-components/main"; +@import "3-components/modal"; @import "3-components/navbar"; +@import "3-components/pricing"; +@import "3-components/print"; +@import "3-components/profile"; +@import "3-components/progress"; @import "3-components/reboot"; +@import "3-components/reveal"; @import "3-components/sidebar"; +@import "3-components/skeleton"; @import "3-components/sizing"; @import "3-components/stat"; @import "3-components/tables"; @import "3-components/type"; +@import "3-components/upgrade"; @import "3-components/wrapper"; // Theme utilities +@import "4-utilities/color-mode"; @import "4-utilities/cursors"; +@import "4-utilities/text"; // 3rd party plugins -@import "~jsvectormap/dist/jsvectormap"; -@import "~simplebar/dist/simplebar"; -@import "~flatpickr/dist/flatpickr"; +@import "jsvectormap/dist/jsvectormap"; +@import "simplebar/dist/simplebar.css"; +@import "vanilla-calendar-pro/styles/core.css"; // 3rd party plugin styles -@import "5-vendor/flatpickr"; @import "5-vendor/simplebar"; +@import "5-vendor/vanilla-calendar"; diff --git a/src/types/app.d.css.ts b/src/types/app.d.css.ts new file mode 100644 index 0000000..1f07068 --- /dev/null +++ b/src/types/app.d.css.ts @@ -0,0 +1,3 @@ +// Types for css/app.css (`import "@adminkit/core/css"`), so TypeScript resolves the +// stylesheet import. Copied to dist/css/app.d.css.ts by the build. +export {}; diff --git a/src/types/app.d.ts b/src/types/app.d.ts new file mode 100644 index 0000000..328b5b7 --- /dev/null +++ b/src/types/app.d.ts @@ -0,0 +1,78 @@ +// Types for js/app.js (`import "@adminkit/core"`). The import has no exports: it sets up +// the page and adds the globals below. Copied to dist/js/app.d.ts by the build. +import type { Chart, ChartConfiguration } from "chart.js"; +import type { IconNode } from "lucide"; +import type { Calendar } from "vanilla-calendar-pro"; + +/** The colors of the current color mode (window.theme), read from the CSS custom properties. */ +export interface AdminKitTheme { + id: "light" | "dark"; + name: "Light" | "Dark"; + primary: string; + secondary: string; + success: string; + info: string; + warning: string; + danger: string; + /** The surface color: white in light mode */ + white: string; + /** The strongest text color: black in light mode */ + black: string; + "body-bg": string; + "body-color": string; + "border-color": string; + "gray-100": string; + "gray-200": string; + "gray-300": string; + "gray-400": string; + "gray-500": string; + "gray-600": string; + "gray-700": string; + "gray-800": string; + "gray-900": string; +} + +export interface AdminKit { + /** Creates a Chart.js chart and calls config again with the new colors when the color mode changes. */ + chartjs( + element: string | HTMLCanvasElement, + config: (theme: AdminKitTheme) => ChartConfiguration + ): Chart; + /** Creates a jsVectorMap map (options.selector names the element) that recolors with the color mode. */ + vectorMap( + config: (theme: AdminKitTheme) => { + selector: string | HTMLElement; + [option: string]: unknown; + } + ): unknown; + /** Removes the loading placeholders around element and fires adminkit:ready on it. */ + ready(element: Element): void; +} + +declare global { + interface Window { + adminkit: AdminKit; + theme: AdminKitTheme; + lucide: { + /** Renders the icons in root; icons added to the page later render by themselves. */ + createIcons(options?: { + icons?: Record; + attrs?: Record; + root?: ParentNode; + }): void; + icons: Record; + }; + /** The bootstrap module (Bootstrap 5.3), which ships no types of its own. */ + bootstrap: any; + Chart: typeof Chart; + VanillaCalendar: { Calendar: typeof Calendar }; + } + + interface DocumentEventMap { + "adminkit:themechange": CustomEvent; + "adminkit:colormodechange": CustomEvent<{ + colorMode: "light" | "dark" | "auto"; + }>; + "adminkit:ready": CustomEvent; + } +} diff --git a/static/charts-chartjs.html b/static/charts-chartjs.html deleted file mode 100644 index 2bb0cc2..0000000 --- a/static/charts-chartjs.html +++ /dev/null @@ -1,567 +0,0 @@ - - - - - - - - - - - - - - - - - Chart.js | AdminKit Demo - - - - - - -
    - - -
    - - -
    -
    - - -
    -
    -
    -
    -
    Line Chart
    -
    A line chart is a way of plotting data points on a line.
    -
    -
    -
    - -
    -
    -
    -
    - -
    -
    -
    -
    Bar Chart
    -
    A bar chart provides a way of showing data values represented as vertical bars.
    -
    -
    -
    - -
    -
    -
    -
    - -
    -
    -
    -
    Doughnut Chart
    -
    Doughnut charts are excellent at showing the relational proportions between data.
    -
    -
    -
    - -
    -
    -
    -
    - -
    -
    -
    -
    Pie Chart
    -
    Pie charts are excellent at showing the relational proportions between data.
    -
    -
    -
    - -
    -
    -
    -
    -
    - -
    -
    - - -
    -
    - - - - - - - - - - - \ No newline at end of file diff --git a/static/css/app.css b/static/css/app.css deleted file mode 100644 index a6ef8fa..0000000 --- a/static/css/app.css +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * AdminKit v3.5.0 (https://adminkit.io/) - * Copyright 2023 Paul Laros - * Copyright 2023 AdminKit - * Licensed under MIT (https://github.com/adminkit/adminkit/blob/master/LICENSE) - */:root,[data-bs-theme=light]{--bs-blue:#3b7ddd;--bs-indigo:#0a0a0a;--bs-purple:#6f42c1;--bs-pink:#e83e8c;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#fcb92c;--bs-green:#1cbb8c;--bs-teal:#20c997;--bs-cyan:#17a2b8;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#3b7ddd;--bs-secondary:#6c757d;--bs-success:#1cbb8c;--bs-info:#17a2b8;--bs-warning:#fcb92c;--bs-danger:#dc3545;--bs-light:#f5f7fb;--bs-dark:#212529;--bs-primary-rgb:59,125,221;--bs-secondary-rgb:108,117,125;--bs-success-rgb:28,187,140;--bs-info-rgb:23,162,184;--bs-warning-rgb:252,185,44;--bs-danger-rgb:220,53,69;--bs-light-rgb:245,247,251;--bs-dark-rgb:33,37,41;--bs-primary-text-emphasis:#183258;--bs-secondary-text-emphasis:#2b2f32;--bs-success-text-emphasis:#0b4b38;--bs-info-text-emphasis:#09414a;--bs-warning-text-emphasis:#654a12;--bs-danger-text-emphasis:#58151c;--bs-light-text-emphasis:#495057;--bs-dark-text-emphasis:#495057;--bs-primary-bg-subtle:#d8e5f8;--bs-secondary-bg-subtle:#e2e3e5;--bs-success-bg-subtle:#d2f1e8;--bs-info-bg-subtle:#d1ecf1;--bs-warning-bg-subtle:#fef1d5;--bs-danger-bg-subtle:#f8d7da;--bs-light-bg-subtle:#fcfcfc;--bs-dark-bg-subtle:#ced4da;--bs-primary-border-subtle:#b1cbf1;--bs-secondary-border-subtle:#c4c8cb;--bs-success-border-subtle:#a4e4d1;--bs-info-border-subtle:#a2dae3;--bs-warning-border-subtle:#fee3ab;--bs-danger-border-subtle:#f1aeb5;--bs-light-border-subtle:#e9ecef;--bs-dark-border-subtle:#adb5bd;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-font-sans-serif:"Inter","Helvetica Neue",Arial,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg,hsla(0,0%,100%,.15),hsla(0,0%,100%,0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:0.875rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#495057;--bs-body-color-rgb:73,80,87;--bs-body-bg:#f5f7fb;--bs-body-bg-rgb:245,247,251;--bs-emphasis-color:#000;--bs-emphasis-color-rgb:0,0,0;--bs-secondary-color:rgba(73,80,87,.75);--bs-secondary-color-rgb:73,80,87;--bs-secondary-bg:#e9ecef;--bs-secondary-bg-rgb:233,236,239;--bs-tertiary-color:rgba(73,80,87,.5);--bs-tertiary-color-rgb:73,80,87;--bs-tertiary-bg:#f8f9fa;--bs-tertiary-bg-rgb:248,249,250;--bs-heading-color:#000;--bs-link-color:#3b7ddd;--bs-link-color-rgb:59,125,221;--bs-link-decoration:none;--bs-link-hover-color:#2f64b1;--bs-link-hover-color-rgb:47,100,177;--bs-link-hover-decoration:underline;--bs-code-color:#e83e8c;--bs-highlight-color:#495057;--bs-highlight-bg:#fef1d5;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:rgba(0,0,0,.175);--bs-border-radius:0.2rem;--bs-border-radius-sm:0.1rem;--bs-border-radius-lg:0.3rem;--bs-border-radius-xl:1rem;--bs-border-radius-xxl:2rem;--bs-border-radius-2xl:var(--bs-border-radius-xxl);--bs-border-radius-pill:50rem;--bs-box-shadow:0 0.1rem 0.2rem rgba(0,0,0,.05);--bs-box-shadow-sm:0 0.05rem 0.2rem rgba(0,0,0,.05);--bs-box-shadow-lg:0 0.2rem 0.2rem rgba(0,0,0,.05);--bs-box-shadow-inset:inset 0 1px 2px rgba(0,0,0,.075);--bs-focus-ring-width:0.25rem;--bs-focus-ring-opacity:0.25;--bs-focus-ring-color:rgba(59,125,221,.25);--bs-form-valid-color:#1cbb8c;--bs-form-valid-border-color:#1cbb8c;--bs-form-invalid-color:#dc3545;--bs-form-invalid-border-color:#dc3545}*,:after,:before{box-sizing:border-box}@media(prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{background-color:var(--bs-body-bg);color:var(--bs-body-color);font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);margin:0;text-align:var(--bs-body-text-align);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}hr{border:0;border-top:var(--bs-border-width) solid;color:inherit;margin:1rem 0;opacity:.25}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{color:var(--bs-heading-color);font-weight:400;line-height:1.2;margin-bottom:.5rem;margin-top:0}.h1,h1{font-size:1.75rem}.h2,h2{font-size:1.53125rem}.h3,h3{font-size:1.3125rem}.h4,h4{font-size:1.09375rem}.h5,.h6,h5,h6{font-size:.875rem}p{margin-bottom:1rem;margin-top:0}abbr[title]{cursor:help;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{font-style:normal;line-height:inherit;margin-bottom:1rem}ol,ul{padding-left:2rem}dl,ol,ul{margin-bottom:1rem;margin-top:0}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:600}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:80%}.mark,mark{background-color:var(--bs-highlight-bg);color:var(--bs-highlight-color);padding:.1875em}sub,sup{font-size:.75em;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,1));text-decoration:none}a:hover{--bs-link-color-rgb:var(--bs-link-hover-color-rgb);text-decoration:underline}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;font-size:80%;margin-bottom:1rem;margin-top:0;overflow:auto}pre code{color:inherit;font-size:inherit;word-break:normal}code{color:var(--bs-code-color);font-size:80%;word-wrap:break-word}a>code{color:inherit}kbd{background-color:var(--bs-body-color);border-radius:.1rem;color:var(--bs-body-bg);font-size:80%;padding:.1875rem .375rem}kbd kbd{font-size:1em;padding:0}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{border-collapse:collapse;caption-side:bottom}caption{color:var(--bs-secondary-color);padding-bottom:.75rem;padding-top:.75rem;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border:0 solid;border-color:inherit}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit;margin:0}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{border-style:none;padding:0}textarea{resize:vertical}fieldset{border:0;margin:0;min-width:0;padding:0}legend{float:left;font-size:1.5rem;line-height:inherit;margin-bottom:.5rem;padding:0;width:100%}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button{cursor:pointer;filter:grayscale(1)}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}::file-selector-button{-webkit-appearance:button;font:inherit}output{display:inline-block}iframe{border:0}summary{cursor:pointer;display:list-item}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.09375rem;font-weight:300}.display-1{font-size:6rem}.display-1,.display-2{font-weight:300;line-height:1.2}.display-2{font-size:5.5rem}.display-3{font-size:4.5rem}.display-3,.display-4{font-weight:300;line-height:1.2}.display-4{font-size:3.5rem}.display-5{font-size:3rem}.display-5,.display-6{font-weight:300;line-height:1.2}.display-6{font-size:2.5rem}.list-inline,.list-unstyled{list-style:none;padding-left:0}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:80%;text-transform:uppercase}.blockquote{font-size:1.09375rem;margin-bottom:1rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{color:#6c757d;font-size:80%;margin-bottom:1rem;margin-top:-1rem}.blockquote-footer:before{content:"— "}.img-fluid,.img-thumbnail{height:auto;max-width:100%}.img-thumbnail{background-color:var(--bs-body-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);padding:.25rem}.figure{display:inline-block}.figure-img{line-height:1;margin-bottom:.5rem}.figure-caption{color:var(--bs-secondary-color);font-size:80%}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl{--bs-gutter-x:0.75rem;--bs-gutter-y:0;margin-left:auto;margin-right:auto;padding-left:calc(var(--bs-gutter-x)*.5);padding-right:calc(var(--bs-gutter-x)*.5);width:100%}@media(min-width:576px){.container,.container-sm{max-width:540px}}@media(min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media(min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media(min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1200px}}:root{--bs-breakpoint-xs:0;--bs-breakpoint-sm:576px;--bs-breakpoint-md:768px;--bs-breakpoint-lg:992px;--bs-breakpoint-xl:1200px;--bs-breakpoint-xxl:1440px}.row{--bs-gutter-x:24px;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-left:calc(var(--bs-gutter-x)*-.5);margin-right:calc(var(--bs-gutter-x)*-.5);margin-top:calc(var(--bs-gutter-y)*-1)}.row>*{flex-shrink:0;margin-top:var(--bs-gutter-y);max-width:100%;padding-left:calc(var(--bs-gutter-x)*.5);padding-right:calc(var(--bs-gutter-x)*.5);width:100%}.col{flex:1 0 0}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.66666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}.g-6,.gx-6{--bs-gutter-x:4.5rem}.g-6,.gy-6{--bs-gutter-y:4.5rem}.g-7,.gx-7{--bs-gutter-x:6rem}.g-7,.gy-7{--bs-gutter-y:6rem}@media(min-width:576px){.col-sm{flex:1 0 0}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.66666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}.g-sm-6,.gx-sm-6{--bs-gutter-x:4.5rem}.g-sm-6,.gy-sm-6{--bs-gutter-y:4.5rem}.g-sm-7,.gx-sm-7{--bs-gutter-x:6rem}.g-sm-7,.gy-sm-7{--bs-gutter-y:6rem}}@media(min-width:768px){.col-md{flex:1 0 0}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.66666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}.g-md-6,.gx-md-6{--bs-gutter-x:4.5rem}.g-md-6,.gy-md-6{--bs-gutter-y:4.5rem}.g-md-7,.gx-md-7{--bs-gutter-x:6rem}.g-md-7,.gy-md-7{--bs-gutter-y:6rem}}@media(min-width:992px){.col-lg{flex:1 0 0}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.66666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}.g-lg-6,.gx-lg-6{--bs-gutter-x:4.5rem}.g-lg-6,.gy-lg-6{--bs-gutter-y:4.5rem}.g-lg-7,.gx-lg-7{--bs-gutter-x:6rem}.g-lg-7,.gy-lg-7{--bs-gutter-y:6rem}}@media(min-width:1200px){.col-xl{flex:1 0 0}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.66666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}.g-xl-6,.gx-xl-6{--bs-gutter-x:4.5rem}.g-xl-6,.gy-xl-6{--bs-gutter-y:4.5rem}.g-xl-7,.gx-xl-7{--bs-gutter-x:6rem}.g-xl-7,.gy-xl-7{--bs-gutter-y:6rem}}@media(min-width:1440px){.col-xxl{flex:1 0 0}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.66666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}.g-xxl-6,.gx-xxl-6{--bs-gutter-x:4.5rem}.g-xxl-6,.gy-xxl-6{--bs-gutter-y:4.5rem}.g-xxl-7,.gx-xxl-7{--bs-gutter-x:6rem}.g-xxl-7,.gy-xxl-7{--bs-gutter-y:6rem}}.table{--bs-table-color-type:initial;--bs-table-bg-type:initial;--bs-table-color-state:initial;--bs-table-bg-state:initial;--bs-table-color:var(--bs-emphasis-color);--bs-table-bg:transparent;--bs-table-border-color:var(--bs-border-color);--bs-table-accent-bg:transparent;--bs-table-striped-color:var(--bs-emphasis-color);--bs-table-striped-bg:#f8f9fa;--bs-table-active-color:var(--bs-emphasis-color);--bs-table-active-bg:rgba(var(--bs-emphasis-color-rgb),0.1);--bs-table-hover-color:var(--bs-emphasis-color);--bs-table-hover-bg:rgba(0,0,0,.038);border-color:var(--bs-table-border-color);margin-bottom:1rem;vertical-align:top;width:100%}.table>:not(caption)>*>*{background-color:var(--bs-table-bg);border-bottom-width:var(--bs-border-width);box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state,var(--bs-table-bg-type,var(--bs-table-accent-bg)));color:var(--bs-table-color-state,var(--bs-table-color-type,var(--bs-table-color)));padding:.75rem}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-top:calc(var(--bs-border-width)*2) solid}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.3rem}.table-bordered>:not(caption)>*{border-width:var(--bs-border-width) 0}.table-bordered>:not(caption)>*>*{border-width:0 var(--bs-border-width)}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped-columns>:not(caption)>tr>:nth-child(2n),.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-color-type:var(--bs-table-striped-color);--bs-table-bg-type:var(--bs-table-striped-bg)}.table-active{--bs-table-color-state:var(--bs-table-active-color);--bs-table-bg-state:var(--bs-table-active-bg)}.table-hover>tbody>tr:hover>*{--bs-table-color-state:var(--bs-table-hover-color);--bs-table-bg-state:var(--bs-table-hover-bg)}.table-primary{--bs-table-color:#000;--bs-table-bg:#d8e5f8;--bs-table-border-color:#adb7c7;--bs-table-striped-bg:#cddaec;--bs-table-striped-color:#000;--bs-table-active-bg:#c2cedf;--bs-table-active-color:#000;--bs-table-hover-bg:#c8d4e6;--bs-table-hover-color:#000}.table-primary,.table-secondary{border-color:var(--bs-table-border-color);color:var(--bs-table-color)}.table-secondary{--bs-table-color:#000;--bs-table-bg:#e2e3e5;--bs-table-border-color:#b4b6b7;--bs-table-striped-bg:#d6d8da;--bs-table-striped-color:#000;--bs-table-active-bg:#cbcdce;--bs-table-active-color:#000;--bs-table-hover-bg:#d1d2d4;--bs-table-hover-color:#000}.table-success{--bs-table-color:#000;--bs-table-bg:#d2f1e8;--bs-table-border-color:#a8c1ba;--bs-table-striped-bg:#c7e5dc;--bs-table-striped-color:#000;--bs-table-active-bg:#bdd9d1;--bs-table-active-color:#000;--bs-table-hover-bg:#c2dfd7;--bs-table-hover-color:#000}.table-info,.table-success{border-color:var(--bs-table-border-color);color:var(--bs-table-color)}.table-info{--bs-table-color:#000;--bs-table-bg:#d1ecf1;--bs-table-border-color:#a7bdc1;--bs-table-striped-bg:#c6e1e5;--bs-table-striped-color:#000;--bs-table-active-bg:#bcd5d9;--bs-table-active-color:#000;--bs-table-hover-bg:#c1dbdf;--bs-table-hover-color:#000}.table-warning{--bs-table-color:#000;--bs-table-bg:#fef1d5;--bs-table-border-color:#ccc1aa;--bs-table-striped-bg:#f2e5ca;--bs-table-striped-color:#000;--bs-table-active-bg:#e5d9c0;--bs-table-active-color:#000;--bs-table-hover-bg:#ebdfc5;--bs-table-hover-color:#000}.table-danger,.table-warning{border-color:var(--bs-table-border-color);color:var(--bs-table-color)}.table-danger{--bs-table-color:#000;--bs-table-bg:#f8d7da;--bs-table-border-color:#c6acae;--bs-table-striped-bg:#eccccf;--bs-table-striped-color:#000;--bs-table-active-bg:#dfc1c4;--bs-table-active-color:#000;--bs-table-hover-bg:#e5c7c9;--bs-table-hover-color:#000}.table-light{--bs-table-color:#000;--bs-table-bg:#f5f7fb;--bs-table-border-color:#c4c6c9;--bs-table-striped-bg:#e9ebee;--bs-table-striped-color:#000;--bs-table-active-bg:#dddee2;--bs-table-active-color:#000;--bs-table-hover-bg:#e3e4e8;--bs-table-hover-color:#000}.table-dark,.table-light{border-color:var(--bs-table-border-color);color:var(--bs-table-color)}.table-dark{--bs-table-color:#fff;--bs-table-bg:#212529;--bs-table-border-color:#4d5154;--bs-table-striped-bg:#2c3034;--bs-table-striped-color:#fff;--bs-table-active-bg:#373b3e;--bs-table-active-color:#fff;--bs-table-hover-bg:#323539;--bs-table-hover-color:#fff}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media(max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width:1439.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.col-form-label{font-size:inherit;line-height:1.5;margin-bottom:0;padding-bottom:calc(.3rem + 1px);padding-top:calc(.3rem + 1px)}.col-form-label-lg{font-size:.925rem;padding-bottom:calc(.4rem + 1px);padding-top:calc(.4rem + 1px)}.col-form-label-sm{font-size:.75rem;padding-bottom:calc(.2rem + 1px);padding-top:calc(.2rem + 1px)}.form-text{color:var(--bs-secondary-color);font-size:80%;margin-top:.25rem}.form-control{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-clip:padding-box;background-color:#fff;border:1px solid var(--bs-border-color);border-radius:var(--bs-border-radius);color:#495057;display:block;font-size:.875rem;font-weight:400;line-height:1.5;padding:.3rem .85rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;width:100%}@media(prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{background-color:#fff;border-color:#9dbeee;box-shadow:0 0 0 .25rem rgba(59,125,221,.25);color:#495057;outline:0}.form-control::-webkit-date-and-time-value{height:1.5em;margin:0;min-width:85px}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::-moz-placeholder{color:var(--bs-secondary-color);opacity:1}.form-control::placeholder{color:var(--bs-secondary-color);opacity:1}.form-control:disabled{background-color:#e9ecef;opacity:1}.form-control::-webkit-file-upload-button{margin:-.3rem -.85rem;padding:.3rem .85rem;-webkit-margin-end:.85rem;background-color:var(--bs-tertiary-bg);border:0 solid;border-color:inherit;border-inline-end-width:1px;border-radius:0;color:#495057;margin-inline-end:.85rem;pointer-events:none;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control::file-selector-button{margin:-.3rem -.85rem;padding:.3rem .85rem;-webkit-margin-end:.85rem;background-color:var(--bs-tertiary-bg);border:0 solid;border-color:inherit;border-inline-end-width:1px;border-radius:0;color:#495057;margin-inline-end:.85rem;pointer-events:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:var(--bs-secondary-bg)}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--bs-secondary-bg)}.form-control-plaintext{background-color:transparent;border:solid transparent;border-width:1px 0;color:var(--bs-body-color);display:block;line-height:1.5;margin-bottom:0;padding:.3rem 0;width:100%}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-left:0;padding-right:0}.form-control-sm{border-radius:var(--bs-border-radius-sm);font-size:.75rem;min-height:calc(1.525rem + 2px);padding:.2rem .5rem}.form-control-sm::-webkit-file-upload-button{margin:-.2rem -.5rem;padding:.2rem .5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-sm::file-selector-button{margin:-.2rem -.5rem;padding:.2rem .5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-lg{border-radius:var(--bs-border-radius-lg);font-size:.925rem;min-height:calc(2.1875rem + 2px);padding:.4rem 1rem}.form-control-lg::-webkit-file-upload-button{margin:-.4rem -1rem;padding:.4rem 1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}.form-control-lg::file-selector-button{margin:-.4rem -1rem;padding:.4rem 1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.9125rem + 2px)}textarea.form-control-sm{min-height:calc(1.525rem + 2px)}textarea.form-control-lg{min-height:calc(2.1875rem + 2px)}.form-control-color{height:calc(1.9125rem + 2px);padding:.3rem;width:3rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0!important;border-radius:var(--bs-border-radius)}.form-control-color::-webkit-color-swatch{border:0!important;border-radius:var(--bs-border-radius)}.form-control-color.form-control-sm{height:calc(1.525rem + 2px)}.form-control-color.form-control-lg{height:calc(2.1875rem + 2px)}.form-select{--bs-form-select-bg-img:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3E%3C/svg%3E");-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;background-image:var(--bs-form-select-bg-img),var(--bs-form-select-bg-icon,none);background-position:right .85rem center;background-repeat:no-repeat;background-size:16px 12px;border:1px solid var(--bs-border-color);border-radius:var(--bs-border-radius);color:#495057;display:block;font-size:.875rem;font-weight:400;line-height:1.5;padding:.3rem 2.55rem .3rem .85rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;width:100%}@media(prefers-reduced-motion:reduce){.form-select{transition:none}}.form-select:focus{border-color:#9dbeee;box-shadow:0 0 0 .2rem rgba(59,125,221,.25);outline:0}.form-select[multiple],.form-select[size]:not([size="1"]){background-image:none;padding-right:.85rem}.form-select:disabled{background-color:#e9ecef}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.form-select-sm{border-radius:var(--bs-border-radius-sm);font-size:.75rem;padding-bottom:.2rem;padding-left:.5rem;padding-top:.2rem}.form-select-lg{border-radius:var(--bs-border-radius-lg);font-size:.925rem;padding-bottom:.4rem;padding-left:1rem;padding-top:.4rem}.form-check{display:block;margin-bottom:.125rem;min-height:1.3125rem;padding-left:1.5em}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-reverse{padding-left:0;padding-right:1.5em;text-align:right}.form-check-reverse .form-check-input{float:right;margin-left:0;margin-right:-1.5em}.form-check-input{--bs-form-check-bg:#fff;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--bs-form-check-bg);background-image:var(--bs-form-check-bg-image);background-position:50%;background-repeat:no-repeat;background-size:contain;border:var(--bs-border-width) solid var(--bs-border-color);flex-shrink:0;height:1em;margin-top:.25em;-webkit-print-color-adjust:exact;vertical-align:top;width:1em;color-adjust:exact;print-color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#9dbeee;box-shadow:0 0 0 .25rem rgba(59,125,221,.25);outline:0}.form-check-input:checked{background-color:#3b7ddd;border-color:#3b7ddd}.form-check-input:checked[type=checkbox]{--bs-form-check-bg-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3E%3C/svg%3E")}.form-check-input:checked[type=radio]{--bs-form-check-bg-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='2' fill='%23fff'/%3E%3C/svg%3E")}.form-check-input[type=checkbox]:indeterminate{background-color:#3b7ddd;border-color:#3b7ddd;--bs-form-check-bg-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3E%3C/svg%3E")}.form-check-input:disabled{filter:none;opacity:.5;pointer-events:none}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{cursor:default;opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{--bs-form-switch-bg:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='rgba(0, 0, 0, 0.25)'/%3E%3C/svg%3E");background-image:var(--bs-form-switch-bg);background-position:0;border-radius:2em;margin-left:-2.5em;transition:background-position .15s ease-in-out;width:2em}@media(prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{--bs-form-switch-bg:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%239dbeee'/%3E%3C/svg%3E")}.form-switch .form-check-input:checked{background-position:100%;--bs-form-switch-bg:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E")}.form-switch.form-check-reverse{padding-left:0;padding-right:2.5em}.form-switch.form-check-reverse .form-check-input{margin-left:0;margin-right:-2.5em}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{filter:none;opacity:.65;pointer-events:none}.form-range{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;height:1.4rem;padding:0;width:100%}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #f5f7fb,0 0 0 .25rem rgba(59,125,221,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #f5f7fb,0 0 0 .25rem rgba(59,125,221,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;background-color:#3b7ddd;border:0;border-radius:1rem;height:1rem;margin-top:-.25rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;width:1rem}@media(prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#c4d8f5}.form-range::-webkit-slider-runnable-track{background-color:var(--bs-secondary-bg);border-color:transparent;border-radius:1rem;color:transparent;cursor:pointer;height:.5rem;width:100%}.form-range::-moz-range-thumb{-moz-appearance:none;appearance:none;background-color:#3b7ddd;border:0;border-radius:1rem;height:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;width:1rem}@media(prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{-moz-transition:none;transition:none}}.form-range::-moz-range-thumb:active{background-color:#c4d8f5}.form-range::-moz-range-track{background-color:var(--bs-secondary-bg);border-color:transparent;border-radius:1rem;color:transparent;cursor:pointer;height:.5rem;width:100%}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:var(--bs-secondary-color)}.form-range:disabled::-moz-range-thumb{background-color:var(--bs-secondary-color)}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + 2px);line-height:1.25;min-height:calc(3.5rem + 2px)}.form-floating>label{border:1px solid transparent;color:rgba(var(--bs-body-color-rgb),.65);height:100%;left:0;max-width:100%;overflow:hidden;padding:1rem .85rem;pointer-events:none;position:absolute;text-align:start;text-overflow:ellipsis;top:0;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out;white-space:nowrap;z-index:2}@media(prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .85rem}.form-floating>.form-control-plaintext::-moz-placeholder,.form-floating>.form-control::-moz-placeholder{color:transparent}.form-floating>.form-control-plaintext::placeholder,.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control-plaintext:not(:-moz-placeholder),.form-floating>.form-control:not(:-moz-placeholder){padding-bottom:.625rem;padding-top:1.625rem}.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown),.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-bottom:.625rem;padding-top:1.625rem}.form-floating>.form-control-plaintext:-webkit-autofill,.form-floating>.form-control:-webkit-autofill{padding-bottom:.625rem;padding-top:1.625rem}.form-floating>.form-select{padding-bottom:.625rem;padding-left:.85rem;padding-top:1.625rem}.form-floating>.form-control:not(:-moz-placeholder)~label{transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control-plaintext~label,.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:-webkit-autofill~label{transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>textarea:not(:-moz-placeholder)~label:after{background-color:#fff;border-radius:var(--bs-border-radius);content:"";height:1.5em;inset:1rem .425rem;position:absolute;z-index:-1}.form-floating>textarea:focus~label:after,.form-floating>textarea:not(:placeholder-shown)~label:after{background-color:#fff;border-radius:var(--bs-border-radius);content:"";height:1.5em;inset:1rem .425rem;position:absolute;z-index:-1}.form-floating>textarea:disabled~label:after{background-color:#e9ecef}.form-floating>.form-control-plaintext~label{border-width:1px 0}.form-floating>.form-control:disabled~label,.form-floating>:disabled~label{color:#6c757d}.input-group{align-items:stretch;display:flex;flex-wrap:wrap;position:relative;width:100%}.input-group>.form-control,.input-group>.form-floating,.input-group>.form-select{flex:1 1 auto;min-width:0;position:relative;width:1%}.input-group>.form-control:focus,.input-group>.form-floating:focus-within,.input-group>.form-select:focus{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{align-items:center;background-color:var(--bs-tertiary-bg);border:1px solid var(--bs-border-color);border-radius:var(--bs-border-radius);color:#495057;display:flex;font-size:.875rem;font-weight:400;line-height:1.5;padding:.3rem .85rem;text-align:center;white-space:nowrap}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{border-radius:var(--bs-border-radius-lg);font-size:.925rem;padding:.4rem 1rem}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{border-radius:var(--bs-border-radius-sm);font-size:.75rem;padding:.2rem .5rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3.4rem}.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select,.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select,.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-bottom-right-radius:0;border-top-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){border-bottom-left-radius:0;border-top-left-radius:0;margin-left:-1px}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-bottom-left-radius:0;border-top-left-radius:0}.valid-feedback{color:var(--bs-form-valid-color);display:none;font-size:80%;margin-top:.25rem;width:100%}.valid-tooltip{background-color:var(--bs-success);border-radius:var(--bs-border-radius);color:#fff;display:none;font-size:.75rem;margin-top:.1rem;max-width:100%;padding:.25rem .5rem;position:absolute;top:100%;z-index:5}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:var(--bs-form-valid-border-color)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .2rem rgba(var(--bs-success-rgb),.25)}.form-select.is-valid,.was-validated .form-select:valid{border-color:var(--bs-form-valid-border-color)}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .2rem rgba(var(--bs-success-rgb),.25)}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:var(--bs-form-valid-border-color)}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:var(--bs-form-valid-color)}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .2rem rgba(var(--bs-success-rgb),.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:var(--bs-form-valid-color)}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-valid,.input-group>.form-floating:not(:focus-within).is-valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-control:not(:focus):valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.was-validated .input-group>.form-select:not(:focus):valid{z-index:3}.invalid-feedback{color:var(--bs-form-invalid-color);display:none;font-size:80%;margin-top:.25rem;width:100%}.invalid-tooltip{background-color:var(--bs-danger);border-radius:var(--bs-border-radius);color:#fff;display:none;font-size:.75rem;margin-top:.1rem;max-width:100%;padding:.25rem .5rem;position:absolute;top:100%;z-index:5}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:var(--bs-form-invalid-border-color)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .2rem rgba(var(--bs-danger-rgb),.25)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:var(--bs-form-invalid-border-color)}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .2rem rgba(var(--bs-danger-rgb),.25)}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:var(--bs-form-invalid-border-color)}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:var(--bs-form-invalid-color)}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .2rem rgba(var(--bs-danger-rgb),.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:var(--bs-form-invalid-color)}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-invalid,.input-group>.form-floating:not(:focus-within).is-invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-control:not(:focus):invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.was-validated .input-group>.form-select:not(:focus):invalid{z-index:4}.btn{--bs-btn-padding-x:0.85rem;--bs-btn-padding-y:0.3rem;--bs-btn-font-family: ;--bs-btn-font-size:0.875rem;--bs-btn-font-weight:400;--bs-btn-line-height:1.5;--bs-btn-color:var(--bs-body-color);--bs-btn-bg:transparent;--bs-btn-border-width:1px;--bs-btn-border-color:transparent;--bs-btn-border-radius:var(--bs-border-radius);--bs-btn-hover-border-color:transparent;--bs-btn-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.15),0 1px 1px rgba(0,0,0,.075);--bs-btn-disabled-opacity:0.65;--bs-btn-focus-box-shadow:0 0 0 0.2rem rgba(var(--bs-btn-focus-shadow-rgb),.5);background-color:var(--bs-btn-bg);border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);color:var(--bs-btn-color);cursor:pointer;display:inline-block;font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);text-align:center;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle}@media(prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);color:var(--bs-btn-hover-color);text-decoration:none}.btn-check+.btn:hover{background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);color:var(--bs-btn-color)}.btn:focus-visible{background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);box-shadow:var(--bs-btn-focus-box-shadow);color:var(--bs-btn-hover-color);outline:0}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);box-shadow:var(--bs-btn-focus-box-shadow);outline:0}.btn-check:checked+.btn,.btn.active,.btn.show,.btn:first-child:active,:not(.btn-check)+.btn:active{background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color);color:var(--bs-btn-active-color)}.btn-check:checked+.btn:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible,.btn:first-child:active:focus-visible,:not(.btn-check)+.btn:active:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked:focus-visible+.btn{box-shadow:var(--bs-btn-focus-box-shadow)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);color:var(--bs-btn-disabled-color);opacity:var(--bs-btn-disabled-opacity);pointer-events:none}.btn-primary{--bs-btn-color:#fff;--bs-btn-bg:#3b7ddd;--bs-btn-border-color:#3b7ddd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#326abc;--bs-btn-hover-border-color:#2f64b1;--bs-btn-focus-shadow-rgb:88,145,226;--bs-btn-active-color:#fff;--bs-btn-active-bg:#2f64b1;--bs-btn-active-border-color:#2c5ea6;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#3b7ddd;--bs-btn-disabled-border-color:#3b7ddd}.btn-secondary{--bs-btn-color:#fff;--bs-btn-bg:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#5c636a;--bs-btn-hover-border-color:#565e64;--bs-btn-focus-shadow-rgb:130,138,145;--bs-btn-active-color:#fff;--bs-btn-active-bg:#565e64;--bs-btn-active-border-color:#51585e;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#6c757d;--bs-btn-disabled-border-color:#6c757d}.btn-success{--bs-btn-color:#000;--bs-btn-bg:#1cbb8c;--bs-btn-border-color:#1cbb8c;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#3ec59d;--bs-btn-hover-border-color:#33c298;--bs-btn-focus-shadow-rgb:24,159,119;--bs-btn-active-color:#000;--bs-btn-active-bg:#49c9a3;--bs-btn-active-border-color:#33c298;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#1cbb8c;--bs-btn-disabled-border-color:#1cbb8c}.btn-info{--bs-btn-color:#fff;--bs-btn-bg:#17a2b8;--bs-btn-border-color:#17a2b8;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#148a9c;--bs-btn-hover-border-color:#128293;--bs-btn-focus-shadow-rgb:58,176,195;--bs-btn-active-color:#fff;--bs-btn-active-bg:#128293;--bs-btn-active-border-color:#11798a;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#17a2b8;--bs-btn-disabled-border-color:#17a2b8}.btn-warning{--bs-btn-color:#000;--bs-btn-bg:#fcb92c;--bs-btn-border-color:#fcb92c;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#fcc44c;--bs-btn-hover-border-color:#fcc041;--bs-btn-focus-shadow-rgb:214,157,37;--bs-btn-active-color:#000;--bs-btn-active-bg:#fdc756;--bs-btn-active-border-color:#fcc041;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#fcb92c;--bs-btn-disabled-border-color:#fcb92c}.btn-danger{--bs-btn-color:#fff;--bs-btn-bg:#dc3545;--bs-btn-border-color:#dc3545;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#bb2d3b;--bs-btn-hover-border-color:#b02a37;--bs-btn-focus-shadow-rgb:225,83,97;--bs-btn-active-color:#fff;--bs-btn-active-bg:#b02a37;--bs-btn-active-border-color:#a52834;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#dc3545;--bs-btn-disabled-border-color:#dc3545}.btn-light{--bs-btn-color:#000;--bs-btn-bg:#f5f7fb;--bs-btn-border-color:#f5f7fb;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#d0d2d5;--bs-btn-hover-border-color:#c4c6c9;--bs-btn-focus-shadow-rgb:208,210,213;--bs-btn-active-color:#000;--bs-btn-active-bg:#c4c6c9;--bs-btn-active-border-color:#b8b9bc;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#f5f7fb;--bs-btn-disabled-border-color:#f5f7fb}.btn-dark{--bs-btn-color:#fff;--bs-btn-bg:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#424649;--bs-btn-hover-border-color:#373b3e;--bs-btn-focus-shadow-rgb:66,70,73;--bs-btn-active-color:#fff;--bs-btn-active-bg:#4d5154;--bs-btn-active-border-color:#373b3e;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#212529;--bs-btn-disabled-border-color:#212529}.btn-outline-primary{--bs-btn-color:#3b7ddd;--bs-btn-border-color:#3b7ddd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#3b7ddd;--bs-btn-hover-border-color:#3b7ddd;--bs-btn-focus-shadow-rgb:59,125,221;--bs-btn-active-color:#fff;--bs-btn-active-bg:#3b7ddd;--bs-btn-active-border-color:#3b7ddd;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#3b7ddd;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#3b7ddd;--bs-gradient:none}.btn-outline-secondary{--bs-btn-color:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#6c757d;--bs-btn-hover-border-color:#6c757d;--bs-btn-focus-shadow-rgb:108,117,125;--bs-btn-active-color:#fff;--bs-btn-active-bg:#6c757d;--bs-btn-active-border-color:#6c757d;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#6c757d;--bs-gradient:none}.btn-outline-success{--bs-btn-color:#1cbb8c;--bs-btn-border-color:#1cbb8c;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#1cbb8c;--bs-btn-hover-border-color:#1cbb8c;--bs-btn-focus-shadow-rgb:28,187,140;--bs-btn-active-color:#000;--bs-btn-active-bg:#1cbb8c;--bs-btn-active-border-color:#1cbb8c;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#1cbb8c;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#1cbb8c;--bs-gradient:none}.btn-outline-info{--bs-btn-color:#17a2b8;--bs-btn-border-color:#17a2b8;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#17a2b8;--bs-btn-hover-border-color:#17a2b8;--bs-btn-focus-shadow-rgb:23,162,184;--bs-btn-active-color:#fff;--bs-btn-active-bg:#17a2b8;--bs-btn-active-border-color:#17a2b8;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#17a2b8;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#17a2b8;--bs-gradient:none}.btn-outline-warning{--bs-btn-color:#fcb92c;--bs-btn-border-color:#fcb92c;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#fcb92c;--bs-btn-hover-border-color:#fcb92c;--bs-btn-focus-shadow-rgb:252,185,44;--bs-btn-active-color:#000;--bs-btn-active-bg:#fcb92c;--bs-btn-active-border-color:#fcb92c;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#fcb92c;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#fcb92c;--bs-gradient:none}.btn-outline-danger{--bs-btn-color:#dc3545;--bs-btn-border-color:#dc3545;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#dc3545;--bs-btn-hover-border-color:#dc3545;--bs-btn-focus-shadow-rgb:220,53,69;--bs-btn-active-color:#fff;--bs-btn-active-bg:#dc3545;--bs-btn-active-border-color:#dc3545;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#dc3545;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#dc3545;--bs-gradient:none}.btn-outline-light{--bs-btn-color:#f5f7fb;--bs-btn-border-color:#f5f7fb;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#f5f7fb;--bs-btn-hover-border-color:#f5f7fb;--bs-btn-focus-shadow-rgb:245,247,251;--bs-btn-active-color:#000;--bs-btn-active-bg:#f5f7fb;--bs-btn-active-border-color:#f5f7fb;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#f5f7fb;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#f5f7fb;--bs-gradient:none}.btn-outline-dark{--bs-btn-color:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#212529;--bs-btn-hover-border-color:#212529;--bs-btn-focus-shadow-rgb:33,37,41;--bs-btn-active-color:#fff;--bs-btn-active-bg:#212529;--bs-btn-active-border-color:#212529;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#212529;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#212529;--bs-gradient:none}.btn-link{--bs-btn-font-weight:400;--bs-btn-color:var(--bs-link-color);--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:var(--bs-link-hover-color);--bs-btn-hover-border-color:transparent;--bs-btn-active-color:var(--bs-link-hover-color);--bs-btn-active-border-color:transparent;--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-border-color:transparent;--bs-btn-box-shadow:0 0 0 #000;--bs-btn-focus-shadow-rgb:88,145,226;text-decoration:none}.btn-link:focus-visible,.btn-link:hover{text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-group-lg>.btn,.btn-lg{--bs-btn-padding-y:0.4rem;--bs-btn-padding-x:1rem;--bs-btn-font-size:0.925rem;--bs-btn-border-radius:var(--bs-border-radius-lg)}.btn-group-sm>.btn,.btn-sm{--bs-btn-padding-y:0.2rem;--bs-btn-padding-x:0.5rem;--bs-btn-font-size:0.75rem;--bs-btn-border-radius:var(--bs-border-radius-sm)}.fade{transition:opacity .15s linear}@media(prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media(prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{height:auto;transition:width .35s ease;width:0}@media(prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}.dropdown,.dropdown-center,.dropend,.dropstart,.dropup,.dropup-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{border-bottom:0;border-left:.3em solid transparent;border-right:.3em solid transparent;border-top:.3em solid;content:"";margin-left:.255em;vertical-align:.255em}.dropdown-toggle:empty:after{margin-left:0}.dropdown-menu{--bs-dropdown-zindex:1000;--bs-dropdown-min-width:10rem;--bs-dropdown-padding-x:0;--bs-dropdown-padding-y:0.5rem;--bs-dropdown-spacer:0.125rem;--bs-dropdown-font-size:0.875rem;--bs-dropdown-color:var(--bs-body-color);--bs-dropdown-bg:#fff;--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-border-radius:var(--bs-border-radius);--bs-dropdown-border-width:var(--bs-border-width);--bs-dropdown-inner-border-radius:calc(var(--bs-border-radius) - var(--bs-border-width));--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-divider-margin-y:0.5rem;--bs-dropdown-box-shadow:var(--bs-box-shadow);--bs-dropdown-link-color:var(--bs-body-color);--bs-dropdown-link-hover-color:var(--bs-body-color);--bs-dropdown-link-hover-bg:var(--bs-tertiary-bg);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#3b7ddd;--bs-dropdown-link-disabled-color:var(--bs-tertiary-color);--bs-dropdown-item-padding-x:1rem;--bs-dropdown-item-padding-y:0.25rem;--bs-dropdown-header-color:#6c757d;--bs-dropdown-header-padding-x:1rem;--bs-dropdown-header-padding-y:0.5rem;background-clip:padding-box;background-color:var(--bs-dropdown-bg);border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius);color:var(--bs-dropdown-color);display:none;font-size:var(--bs-dropdown-font-size);list-style:none;margin:0;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);position:absolute;text-align:left;z-index:var(--bs-dropdown-zindex)}.dropdown-menu[data-bs-popper]{left:0;margin-top:var(--bs-dropdown-spacer);top:100%}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{left:auto;right:0}@media(min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{left:auto;right:0}}@media(min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{left:auto;right:0}}@media(min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{left:auto;right:0}}@media(min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{left:auto;right:0}}@media(min-width:1440px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{left:auto;right:0}}.dropup .dropdown-menu[data-bs-popper]{bottom:100%;margin-bottom:var(--bs-dropdown-spacer);margin-top:0;top:auto}.dropup .dropdown-toggle:after{border-bottom:.3em solid;border-left:.3em solid transparent;border-right:.3em solid transparent;border-top:0;content:"";display:inline-block;margin-left:.255em;vertical-align:.255em}.dropup .dropdown-toggle:empty:after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{left:100%;margin-left:var(--bs-dropdown-spacer);margin-top:0;right:auto;top:0}.dropend .dropdown-toggle:after{border-bottom:.3em solid transparent;border-left:.3em solid;border-right:0;border-top:.3em solid transparent;content:"";display:inline-block;margin-left:.255em;vertical-align:.255em}.dropend .dropdown-toggle:empty:after{margin-left:0}.dropend .dropdown-toggle:after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{left:auto;margin-right:var(--bs-dropdown-spacer);margin-top:0;right:100%;top:0}.dropstart .dropdown-toggle:after{content:"";display:inline-block;display:none;margin-left:.255em;vertical-align:.255em}.dropstart .dropdown-toggle:before{border-bottom:.3em solid transparent;border-right:.3em solid;border-top:.3em solid transparent;content:"";display:inline-block;margin-right:.255em;vertical-align:.255em}.dropstart .dropdown-toggle:empty:after{margin-left:0}.dropstart .dropdown-toggle:before{vertical-align:0}.dropdown-divider{border-top:1px solid var(--bs-dropdown-divider-bg);height:0;margin:var(--bs-dropdown-divider-margin-y) 0;opacity:1;overflow:hidden}.dropdown-item{background-color:transparent;border:0;border-radius:var(--bs-dropdown-item-border-radius,0);clear:both;color:var(--bs-dropdown-link-color);display:block;font-weight:400;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);text-align:inherit;white-space:nowrap;width:100%}.dropdown-item:focus,.dropdown-item:hover{background-color:var(--bs-dropdown-link-hover-bg);color:var(--bs-dropdown-link-hover-color);text-decoration:none}.dropdown-item.active,.dropdown-item:active{background-color:var(--bs-dropdown-link-active-bg);color:var(--bs-dropdown-link-active-color);text-decoration:none}.dropdown-item.disabled,.dropdown-item:disabled{background-color:transparent;color:var(--bs-dropdown-link-disabled-color);pointer-events:none}.dropdown-menu.show{display:block}.dropdown-header{color:var(--bs-dropdown-header-color);display:block;font-size:.75rem;margin-bottom:0;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);white-space:nowrap}.dropdown-item-text{color:var(--bs-dropdown-link-color);display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x)}.dropdown-menu-dark{--bs-dropdown-color:#dee2e6;--bs-dropdown-bg:#343a40;--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color:#dee2e6;--bs-dropdown-link-hover-color:#fff;--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-link-hover-bg:hsla(0,0%,100%,.15);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#3b7ddd;--bs-dropdown-link-disabled-color:#adb5bd;--bs-dropdown-header-color:#adb5bd}.btn-group,.btn-group-vertical{display:inline-flex;position:relative;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{flex:1 1 auto;position:relative}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:var(--bs-border-radius)}.btn-group>.btn-group:not(:first-child),.btn-group>:not(.btn-check:first-child)+.btn{margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-bottom-left-radius:0;border-top-left-radius:0}.dropdown-toggle-split{padding-left:.6375rem;padding-right:.6375rem}.dropdown-toggle-split:after,.dropend .dropdown-toggle-split:after,.dropup .dropdown-toggle-split:after{margin-left:0}.dropstart .dropdown-toggle-split:before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-left:.375rem;padding-right:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-left:.75rem;padding-right:.75rem}.btn-group-vertical{align-items:flex-start;flex-direction:column;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-left-radius:0;border-bottom-right-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:nth-child(n+3),.btn-group-vertical>:not(.btn-check)+.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{--bs-nav-link-padding-x:1rem;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-link-color);--bs-nav-link-hover-color:var(--bs-link-hover-color);--bs-nav-link-disabled-color:var(--bs-secondary-color);display:flex;flex-wrap:wrap;list-style:none;margin-bottom:0;padding-left:0}.nav-link{background:none;border:0;color:var(--bs-nav-link-color);display:block;font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media(prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:var(--bs-nav-link-hover-color);text-decoration:none}.nav-link:focus-visible{box-shadow:0 0 0 .25rem rgba(59,125,221,.25);outline:0}.nav-link.disabled,.nav-link:disabled{color:var(--bs-nav-link-disabled-color);cursor:default;pointer-events:none}.nav-tabs{--bs-nav-tabs-border-width:var(--bs-border-width);--bs-nav-tabs-border-color:var(--bs-border-color);--bs-nav-tabs-border-radius:var(--bs-border-radius);--bs-nav-tabs-link-hover-border-color:var(--bs-secondary-bg) var(--bs-secondary-bg) var(--bs-border-color);--bs-nav-tabs-link-active-color:var(--bs-emphasis-color);--bs-nav-tabs-link-active-bg:var(--bs-body-bg);--bs-nav-tabs-link-active-border-color:var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg);border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{border:var(--bs-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius);margin-bottom:calc(var(--bs-nav-tabs-border-width)*-1)}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:var(--bs-nav-tabs-link-hover-border-color);isolation:isolate}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color);color:var(--bs-nav-tabs-link-active-color)}.nav-tabs .dropdown-menu{border-top-left-radius:0;border-top-right-radius:0;margin-top:calc(var(--bs-nav-tabs-border-width)*-1)}.nav-pills{--bs-nav-pills-border-radius:var(--bs-border-radius);--bs-nav-pills-link-active-color:#fff;--bs-nav-pills-link-active-bg:#3b7ddd}.nav-pills .nav-link{border-radius:var(--bs-nav-pills-border-radius)}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{background-color:var(--bs-nav-pills-link-active-bg);color:var(--bs-nav-pills-link-active-color)}.nav-underline{--bs-nav-underline-gap:1rem;--bs-nav-underline-border-width:0.125rem;--bs-nav-underline-link-active-color:var(--bs-emphasis-color);gap:var(--bs-nav-underline-gap)}.nav-underline .nav-link{border-bottom:var(--bs-nav-underline-border-width) solid transparent;padding-left:0;padding-right:0}.nav-underline .nav-link:focus,.nav-underline .nav-link:hover{border-bottom-color:currentcolor}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{border-bottom-color:currentcolor;color:var(--bs-nav-underline-link-active-color);font-weight:600}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--bs-navbar-padding-x:1.375rem;--bs-navbar-padding-y:0.875rem;--bs-navbar-color:rgba(var(--bs-emphasis-color-rgb),0.65);--bs-navbar-hover-color:rgba(var(--bs-emphasis-color-rgb),0.8);--bs-navbar-disabled-color:rgba(var(--bs-emphasis-color-rgb),0.3);--bs-navbar-active-color:rgba(var(--bs-emphasis-color-rgb),1);--bs-navbar-brand-padding-y:0.875rem;--bs-navbar-brand-margin-end:1rem;--bs-navbar-brand-font-size:1.15rem;--bs-navbar-brand-color:rgba(var(--bs-emphasis-color-rgb),1);--bs-navbar-brand-hover-color:rgba(var(--bs-emphasis-color-rgb),1);--bs-navbar-nav-link-padding-x:0.5rem;--bs-navbar-toggler-padding-y:0.25rem;--bs-navbar-toggler-padding-x:0.75rem;--bs-navbar-toggler-font-size:0.925rem;--bs-navbar-toggler-icon-bg:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3E%3Cpath stroke='rgba(73, 80, 87, 0.75)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E");--bs-navbar-toggler-border-color:rgba(var(--bs-emphasis-color-rgb),0.15);--bs-navbar-toggler-border-radius:var(--bs-border-radius);--bs-navbar-toggler-focus-width:0.2rem;--bs-navbar-toggler-transition:box-shadow 0.15s ease-in-out;align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x);position:relative}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl{align-items:center;display:flex;flex-wrap:inherit;justify-content:space-between}.navbar-brand{color:var(--bs-navbar-brand-color);font-size:var(--bs-navbar-brand-font-size);margin-right:var(--bs-navbar-brand-margin-end);padding-bottom:var(--bs-navbar-brand-padding-y);padding-top:var(--bs-navbar-brand-padding-y);white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{color:var(--bs-navbar-brand-hover-color);text-decoration:none}.navbar-nav{--bs-nav-link-padding-x:0;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-navbar-color);--bs-nav-link-hover-color:var(--bs-navbar-hover-color);--bs-nav-link-disabled-color:var(--bs-navbar-disabled-color);display:flex;flex-direction:column;list-style:none;margin-bottom:0;padding-left:0}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{color:var(--bs-navbar-color);padding-bottom:.5rem;padding-top:.5rem}.navbar-text a,.navbar-text a:focus,.navbar-text a:hover{color:var(--bs-navbar-active-color)}.navbar-collapse{align-items:center;flex-basis:100%;flex-grow:1}.navbar-toggler{background-color:transparent;border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);color:var(--bs-navbar-color);font-size:var(--bs-navbar-toggler-font-size);line-height:1;padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);transition:var(--bs-navbar-toggler-transition)}@media(prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width);outline:0;text-decoration:none}.navbar-toggler-icon{background-image:var(--bs-navbar-toggler-icon-bg);background-position:50%;background-repeat:no-repeat;background-size:100%;display:inline-block;height:1.5em;vertical-align:middle;width:1.5em}.navbar-nav-scroll{max-height:var(--bs-scroll-height,75vh);overflow-y:auto}@media(min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-left:var(--bs-navbar-nav-link-padding-x);padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{background-color:transparent!important;border:0!important;flex-grow:1;height:auto!important;position:static;transform:none!important;transition:none;visibility:visible!important;width:auto!important;z-index:auto}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;flex-grow:0;overflow-y:visible;padding:0}}@media(min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-left:var(--bs-navbar-nav-link-padding-x);padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{background-color:transparent!important;border:0!important;flex-grow:1;height:auto!important;position:static;transform:none!important;transition:none;visibility:visible!important;width:auto!important;z-index:auto}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;flex-grow:0;overflow-y:visible;padding:0}}@media(min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-left:var(--bs-navbar-nav-link-padding-x);padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{background-color:transparent!important;border:0!important;flex-grow:1;height:auto!important;position:static;transform:none!important;transition:none;visibility:visible!important;width:auto!important;z-index:auto}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;flex-grow:0;overflow-y:visible;padding:0}}@media(min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-left:var(--bs-navbar-nav-link-padding-x);padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{background-color:transparent!important;border:0!important;flex-grow:1;height:auto!important;position:static;transform:none!important;transition:none;visibility:visible!important;width:auto!important;z-index:auto}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;flex-grow:0;overflow-y:visible;padding:0}}@media(min-width:1440px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-left:var(--bs-navbar-nav-link-padding-x);padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{background-color:transparent!important;border:0!important;flex-grow:1;height:auto!important;position:static;transform:none!important;transition:none;visibility:visible!important;width:auto!important;z-index:auto}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;flex-grow:0;overflow-y:visible;padding:0}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-left:var(--bs-navbar-nav-link-padding-x);padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{background-color:transparent!important;border:0!important;flex-grow:1;height:auto!important;position:static;transform:none!important;transition:none;visibility:visible!important;width:auto!important;z-index:auto}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;flex-grow:0;overflow-y:visible;padding:0}.navbar-dark,.navbar[data-bs-theme=dark]{--bs-navbar-color:hsla(0,0%,100%,.55);--bs-navbar-hover-color:hsla(0,0%,100%,.75);--bs-navbar-disabled-color:hsla(0,0%,100%,.25);--bs-navbar-active-color:#fff;--bs-navbar-brand-color:#fff;--bs-navbar-brand-hover-color:#fff;--bs-navbar-toggler-border-color:hsla(0,0%,100%,.1);--bs-navbar-toggler-icon-bg:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3E%3Cpath stroke='rgba(255, 255, 255, 0.55)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.card{--bs-card-spacer-y:1.25rem;--bs-card-spacer-x:1.25rem;--bs-card-title-spacer-y:0.5rem;--bs-card-title-color:#939ba2;--bs-card-subtitle-color: ;--bs-card-border-width:0;--bs-card-border-color:transparent;--bs-card-border-radius:0.25rem;--bs-card-box-shadow: ;--bs-card-inner-border-radius:0.25rem;--bs-card-cap-padding-y:1rem;--bs-card-cap-padding-x:1.25rem;--bs-card-cap-bg:#fff;--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg:#fff;--bs-card-img-overlay-padding:1rem;--bs-card-group-margin:12px;color:var(--bs-body-color);display:flex;flex-direction:column;height:var(--bs-card-height);min-width:0;position:relative;word-wrap:break-word;background-clip:border-box;background-color:var(--bs-card-bg);border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.card>hr{margin-left:0;margin-right:0}.card>.list-group{border-bottom:inherit;border-top:inherit}.card>.list-group:first-child{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius);border-top-width:0}.card>.list-group:last-child{border-bottom-left-radius:var(--bs-card-inner-border-radius);border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-width:0}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{color:var(--bs-card-color);flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x)}.card-title{color:var(--bs-card-title-color);margin-bottom:var(--bs-card-title-spacer-y)}.card-subtitle{color:var(--bs-card-subtitle-color);margin-top:calc(var(--bs-card-title-spacer-y)*-.5)}.card-subtitle,.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color);color:var(--bs-card-cap-color);margin-bottom:0;padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.card-footer{background-color:var(--bs-card-cap-bg);border-top:var(--bs-card-border-width) solid var(--bs-card-border-color);color:var(--bs-card-cap-color);padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x)}.card-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius)}.card-header-tabs{border-bottom:0;margin-bottom:calc(var(--bs-card-cap-padding-y)*-1);margin-left:calc(var(--bs-card-cap-padding-x)*-.5);margin-right:calc(var(--bs-card-cap-padding-x)*-.5)}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-left:calc(var(--bs-card-cap-padding-x)*-.5);margin-right:calc(var(--bs-card-cap-padding-x)*-.5)}.card-img-overlay{border-radius:var(--bs-card-inner-border-radius);bottom:0;left:0;padding:var(--bs-card-img-overlay-padding);position:absolute;right:0;top:0}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-left-radius:var(--bs-card-inner-border-radius);border-bottom-right-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media(min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0;margin-bottom:0}.card-group>.card+.card{border-left:0;margin-left:0}.card-group>.card:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.card-group>.card:not(:last-child)>.card-header,.card-group>.card:not(:last-child)>.card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child)>.card-footer,.card-group>.card:not(:last-child)>.card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.card-group>.card:not(:first-child)>.card-header,.card-group>.card:not(:first-child)>.card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child)>.card-footer,.card-group>.card:not(:first-child)>.card-img-bottom{border-bottom-left-radius:0}}.badge{--bs-badge-padding-x:0.45em;--bs-badge-padding-y:0.3em;--bs-badge-font-size:80%;--bs-badge-font-weight:600;--bs-badge-color:#fff;--bs-badge-border-radius:var(--bs-border-radius);border-radius:var(--bs-badge-border-radius);color:var(--bs-badge-color);display:inline-block;font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);text-align:center;vertical-align:baseline;white-space:nowrap}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.list-group{--bs-list-group-color:var(--bs-body-color);--bs-list-group-bg:var(--bs-body-bg);--bs-list-group-border-color:var(--bs-border-color);--bs-list-group-border-width:var(--bs-border-width);--bs-list-group-border-radius:var(--bs-border-radius);--bs-list-group-item-padding-x:1rem;--bs-list-group-item-padding-y:0.5rem;--bs-list-group-action-color:var(--bs-secondary-color);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-tertiary-bg);--bs-list-group-action-active-color:var(--bs-body-color);--bs-list-group-action-active-bg:var(--bs-secondary-bg);--bs-list-group-disabled-color:var(--bs-secondary-color);--bs-list-group-disabled-bg:var(--bs-body-bg);--bs-list-group-active-color:#fff;--bs-list-group-active-bg:#3b7ddd;--bs-list-group-active-border-color:#3b7ddd;border-radius:var(--bs-list-group-border-radius);display:flex;flex-direction:column;margin-bottom:0;padding-left:0}.list-group-numbered{counter-reset:section;list-style-type:none}.list-group-numbered>.list-group-item:before{content:counters(section,".") ". ";counter-increment:section}.list-group-item{background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color);color:var(--bs-list-group-color);display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);position:relative}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{background-color:var(--bs-list-group-disabled-bg);color:var(--bs-list-group-disabled-color);pointer-events:none}.list-group-item.active{background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color);color:var(--bs-list-group-active-color);z-index:2}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{border-top-width:var(--bs-list-group-border-width);margin-top:calc(var(--bs-list-group-border-width)*-1)}.list-group-item-action{color:var(--bs-list-group-action-color);text-align:inherit;width:100%}.list-group-item-action:not(.active):focus,.list-group-item-action:not(.active):hover{background-color:var(--bs-list-group-action-hover-bg);color:var(--bs-list-group-action-hover-color);text-decoration:none;z-index:1}.list-group-item-action:not(.active):active{background-color:var(--bs-list-group-action-active-bg);color:var(--bs-list-group-action-active-color)}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-right-radius:var(--bs-list-group-border-radius)}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-left-width:0;border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal>.list-group-item+.list-group-item.active{border-left-width:var(--bs-list-group-border-width);margin-left:calc(var(--bs-list-group-border-width)*-1)}@media(min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-right-radius:var(--bs-list-group-border-radius)}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-left-width:0;border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{border-left-width:var(--bs-list-group-border-width);margin-left:calc(var(--bs-list-group-border-width)*-1)}}@media(min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-right-radius:var(--bs-list-group-border-radius)}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-left-width:0;border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal-md>.list-group-item+.list-group-item.active{border-left-width:var(--bs-list-group-border-width);margin-left:calc(var(--bs-list-group-border-width)*-1)}}@media(min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-right-radius:var(--bs-list-group-border-radius)}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-left-width:0;border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{border-left-width:var(--bs-list-group-border-width);margin-left:calc(var(--bs-list-group-border-width)*-1)}}@media(min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-right-radius:var(--bs-list-group-border-radius)}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-left-width:0;border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{border-left-width:var(--bs-list-group-border-width);margin-left:calc(var(--bs-list-group-border-width)*-1)}}@media(min-width:1440px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-right-radius:var(--bs-list-group-border-radius)}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-left-width:0;border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{border-left-width:var(--bs-list-group-border-width);margin-left:calc(var(--bs-list-group-border-width)*-1)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{--bs-list-group-color:var(--bs-primary-text-emphasis);--bs-list-group-bg:var(--bs-primary-bg-subtle);--bs-list-group-border-color:var(--bs-primary-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-primary-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-primary-border-subtle);--bs-list-group-active-color:var(--bs-primary-bg-subtle);--bs-list-group-active-bg:var(--bs-primary-text-emphasis);--bs-list-group-active-border-color:var(--bs-primary-text-emphasis)}.list-group-item-secondary{--bs-list-group-color:var(--bs-secondary-text-emphasis);--bs-list-group-bg:var(--bs-secondary-bg-subtle);--bs-list-group-border-color:var(--bs-secondary-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-secondary-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-secondary-border-subtle);--bs-list-group-active-color:var(--bs-secondary-bg-subtle);--bs-list-group-active-bg:var(--bs-secondary-text-emphasis);--bs-list-group-active-border-color:var(--bs-secondary-text-emphasis)}.list-group-item-success{--bs-list-group-color:var(--bs-success-text-emphasis);--bs-list-group-bg:var(--bs-success-bg-subtle);--bs-list-group-border-color:var(--bs-success-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-success-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-success-border-subtle);--bs-list-group-active-color:var(--bs-success-bg-subtle);--bs-list-group-active-bg:var(--bs-success-text-emphasis);--bs-list-group-active-border-color:var(--bs-success-text-emphasis)}.list-group-item-info{--bs-list-group-color:var(--bs-info-text-emphasis);--bs-list-group-bg:var(--bs-info-bg-subtle);--bs-list-group-border-color:var(--bs-info-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-info-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-info-border-subtle);--bs-list-group-active-color:var(--bs-info-bg-subtle);--bs-list-group-active-bg:var(--bs-info-text-emphasis);--bs-list-group-active-border-color:var(--bs-info-text-emphasis)}.list-group-item-warning{--bs-list-group-color:var(--bs-warning-text-emphasis);--bs-list-group-bg:var(--bs-warning-bg-subtle);--bs-list-group-border-color:var(--bs-warning-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-warning-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-warning-border-subtle);--bs-list-group-active-color:var(--bs-warning-bg-subtle);--bs-list-group-active-bg:var(--bs-warning-text-emphasis);--bs-list-group-active-border-color:var(--bs-warning-text-emphasis)}.list-group-item-danger{--bs-list-group-color:var(--bs-danger-text-emphasis);--bs-list-group-bg:var(--bs-danger-bg-subtle);--bs-list-group-border-color:var(--bs-danger-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-danger-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-danger-border-subtle);--bs-list-group-active-color:var(--bs-danger-bg-subtle);--bs-list-group-active-bg:var(--bs-danger-text-emphasis);--bs-list-group-active-border-color:var(--bs-danger-text-emphasis)}.list-group-item-light{--bs-list-group-color:var(--bs-light-text-emphasis);--bs-list-group-bg:var(--bs-light-bg-subtle);--bs-list-group-border-color:var(--bs-light-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-light-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-light-border-subtle);--bs-list-group-active-color:var(--bs-light-bg-subtle);--bs-list-group-active-bg:var(--bs-light-text-emphasis);--bs-list-group-active-border-color:var(--bs-light-text-emphasis)}.list-group-item-dark{--bs-list-group-color:var(--bs-dark-text-emphasis);--bs-list-group-bg:var(--bs-dark-bg-subtle);--bs-list-group-border-color:var(--bs-dark-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-dark-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-dark-border-subtle);--bs-list-group-active-color:var(--bs-dark-bg-subtle);--bs-list-group-active-bg:var(--bs-dark-text-emphasis);--bs-list-group-active-border-color:var(--bs-dark-text-emphasis)}.btn-close{--bs-btn-close-color:#000;--bs-btn-close-bg:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414'/%3E%3C/svg%3E");--bs-btn-close-opacity:0.5;--bs-btn-close-hover-opacity:0.75;--bs-btn-close-focus-shadow:0 0 0 0.25rem rgba(59,125,221,.25);--bs-btn-close-focus-opacity:1;--bs-btn-close-disabled-opacity:0.25;background:transparent var(--bs-btn-close-bg) center/1em auto no-repeat;border:0;border-radius:.2rem;box-sizing:content-box;filter:var(--bs-btn-close-filter);height:1em;opacity:var(--bs-btn-close-opacity);padding:.25em;width:1em}.btn-close,.btn-close:hover{color:var(--bs-btn-close-color)}.btn-close:hover{opacity:var(--bs-btn-close-hover-opacity);text-decoration:none}.btn-close:focus{box-shadow:var(--bs-btn-close-focus-shadow);opacity:var(--bs-btn-close-focus-opacity);outline:0}.btn-close.disabled,.btn-close:disabled{opacity:var(--bs-btn-close-disabled-opacity);pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.btn-close-white{--bs-btn-close-filter:invert(1) grayscale(100%) brightness(200%)}:root,[data-bs-theme=light]{--bs-btn-close-filter: }.clearfix:after{clear:both;content:"";display:block}.text-bg-primary{background-color:RGBA(var(--bs-primary-rgb),var(--bs-bg-opacity,1))!important;color:#fff!important}.text-bg-secondary{background-color:RGBA(var(--bs-secondary-rgb),var(--bs-bg-opacity,1))!important;color:#fff!important}.text-bg-success{background-color:RGBA(var(--bs-success-rgb),var(--bs-bg-opacity,1))!important;color:#000!important}.text-bg-info{background-color:RGBA(var(--bs-info-rgb),var(--bs-bg-opacity,1))!important;color:#fff!important}.text-bg-warning{background-color:RGBA(var(--bs-warning-rgb),var(--bs-bg-opacity,1))!important;color:#000!important}.text-bg-danger{background-color:RGBA(var(--bs-danger-rgb),var(--bs-bg-opacity,1))!important;color:#fff!important}.text-bg-light{background-color:RGBA(var(--bs-light-rgb),var(--bs-bg-opacity,1))!important;color:#000!important}.text-bg-dark{background-color:RGBA(var(--bs-dark-rgb),var(--bs-bg-opacity,1))!important;color:#fff!important}.link-primary{color:RGBA(var(--bs-primary-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-primary-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-primary-rgb),var(--bs-link-underline-opacity,1))!important}.link-primary:focus,.link-primary:hover{color:RGBA(47,100,177,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(47,100,177,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(47,100,177,var(--bs-link-underline-opacity,1))!important}.link-secondary{color:RGBA(var(--bs-secondary-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-secondary-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-secondary-rgb),var(--bs-link-underline-opacity,1))!important}.link-secondary:focus,.link-secondary:hover{color:RGBA(86,94,100,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(86,94,100,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(86,94,100,var(--bs-link-underline-opacity,1))!important}.link-success{color:RGBA(var(--bs-success-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-success-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-success-rgb),var(--bs-link-underline-opacity,1))!important}.link-success:focus,.link-success:hover{color:RGBA(73,201,163,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(73,201,163,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(73,201,163,var(--bs-link-underline-opacity,1))!important}.link-info{color:RGBA(var(--bs-info-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-info-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-info-rgb),var(--bs-link-underline-opacity,1))!important}.link-info:focus,.link-info:hover{color:RGBA(18,130,147,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(18,130,147,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(18,130,147,var(--bs-link-underline-opacity,1))!important}.link-warning{color:RGBA(var(--bs-warning-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-warning-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-warning-rgb),var(--bs-link-underline-opacity,1))!important}.link-warning:focus,.link-warning:hover{color:RGBA(253,199,86,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(253,199,86,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(253,199,86,var(--bs-link-underline-opacity,1))!important}.link-danger{color:RGBA(var(--bs-danger-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-danger-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-danger-rgb),var(--bs-link-underline-opacity,1))!important}.link-danger:focus,.link-danger:hover{color:RGBA(176,42,55,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(176,42,55,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(176,42,55,var(--bs-link-underline-opacity,1))!important}.link-light{color:RGBA(var(--bs-light-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-light-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-light-rgb),var(--bs-link-underline-opacity,1))!important}.link-light:focus,.link-light:hover{color:RGBA(247,249,252,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(247,249,252,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(247,249,252,var(--bs-link-underline-opacity,1))!important}.link-dark{color:RGBA(var(--bs-dark-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-dark-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-dark-rgb),var(--bs-link-underline-opacity,1))!important}.link-dark:focus,.link-dark:hover{color:RGBA(26,30,33,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(26,30,33,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(26,30,33,var(--bs-link-underline-opacity,1))!important}.link-body-emphasis{color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,1))!important}.link-body-emphasis:focus,.link-body-emphasis:hover{color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-opacity,.75))!important;-webkit-text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,.75))!important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,.75))!important}.focus-ring:focus{box-shadow:var(--bs-focus-ring-x,0) var(--bs-focus-ring-y,0) var(--bs-focus-ring-blur,0) var(--bs-focus-ring-width) var(--bs-focus-ring-color);outline:0}.icon-link{align-items:center;-webkit-backface-visibility:hidden;backface-visibility:hidden;display:inline-flex;gap:.375rem;-webkit-text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,.5));text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,.5));text-underline-offset:.25em}.icon-link>.bi{fill:currentcolor;flex-shrink:0;height:1em;transition:transform .2s ease-in-out;width:1em}@media(prefers-reduced-motion:reduce){.icon-link>.bi{transition:none}}.icon-link-hover:focus-visible>.bi,.icon-link-hover:hover>.bi{transform:var(--bs-icon-link-transform,translate3d(.25em,0,0))}.ratio{position:relative;width:100%}.ratio:before{content:"";display:block;padding-top:var(--bs-aspect-ratio)}.ratio>*{height:100%;left:0;position:absolute;top:0;width:100%}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:75%}.ratio-16x9{--bs-aspect-ratio:56.25%}.ratio-21x9{--bs-aspect-ratio:42.8571428571%}.fixed-top{top:0}.fixed-bottom,.fixed-top{left:0;position:fixed;right:0;z-index:1030}.fixed-bottom{bottom:0}.sticky-top{top:0}.sticky-bottom,.sticky-top{position:-webkit-sticky;position:sticky;z-index:1020}.sticky-bottom{bottom:0}@media(min-width:576px){.sticky-sm-top{top:0}.sticky-sm-bottom,.sticky-sm-top{position:-webkit-sticky;position:sticky;z-index:1020}.sticky-sm-bottom{bottom:0}}@media(min-width:768px){.sticky-md-top{top:0}.sticky-md-bottom,.sticky-md-top{position:-webkit-sticky;position:sticky;z-index:1020}.sticky-md-bottom{bottom:0}}@media(min-width:992px){.sticky-lg-top{top:0}.sticky-lg-bottom,.sticky-lg-top{position:-webkit-sticky;position:sticky;z-index:1020}.sticky-lg-bottom{bottom:0}}@media(min-width:1200px){.sticky-xl-top{top:0}.sticky-xl-bottom,.sticky-xl-top{position:-webkit-sticky;position:sticky;z-index:1020}.sticky-xl-bottom{bottom:0}}@media(min-width:1440px){.sticky-xxl-top{top:0}.sticky-xxl-bottom,.sticky-xxl-top{position:-webkit-sticky;position:sticky;z-index:1020}.sticky-xxl-bottom{bottom:0}}.hstack{align-items:center;flex-direction:row}.hstack,.vstack{align-self:stretch;display:flex}.vstack{flex:1 1 auto;flex-direction:column}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;width:1px!important;clip:rect(0,0,0,0)!important;border:0!important;white-space:nowrap!important}.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption),.visually-hidden:not(caption){position:absolute!important}.visually-hidden *,.visually-hidden-focusable:not(:focus):not(:focus-within) *{overflow:hidden!important}.stretched-link:after{bottom:0;content:"";left:0;position:absolute;right:0;top:0;z-index:1}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{align-self:stretch;background-color:currentcolor;display:inline-block;min-height:1em;opacity:.25;width:var(--bs-border-width)}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.object-fit-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-none{-o-object-fit:none!important;object-fit:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.overflow-x-auto{overflow-x:auto!important}.overflow-x-hidden{overflow-x:hidden!important}.overflow-x-visible{overflow-x:visible!important}.overflow-x-scroll{overflow-x:scroll!important}.overflow-y-auto{overflow-y:auto!important}.overflow-y-hidden{overflow-y:hidden!important}.overflow-y-visible{overflow-y:visible!important}.overflow-y-scroll{overflow-y:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-inline-grid{display:inline-grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:var(--bs-box-shadow)!important}.shadow-sm{box-shadow:var(--bs-box-shadow-sm)!important}.shadow-lg{box-shadow:var(--bs-box-shadow-lg)!important}.shadow-none{box-shadow:none!important}.focus-ring-primary{--bs-focus-ring-color:rgba(var(--bs-primary-rgb),var(--bs-focus-ring-opacity))}.focus-ring-secondary{--bs-focus-ring-color:rgba(var(--bs-secondary-rgb),var(--bs-focus-ring-opacity))}.focus-ring-success{--bs-focus-ring-color:rgba(var(--bs-success-rgb),var(--bs-focus-ring-opacity))}.focus-ring-info{--bs-focus-ring-color:rgba(var(--bs-info-rgb),var(--bs-focus-ring-opacity))}.focus-ring-warning{--bs-focus-ring-color:rgba(var(--bs-warning-rgb),var(--bs-focus-ring-opacity))}.focus-ring-danger{--bs-focus-ring-color:rgba(var(--bs-danger-rgb),var(--bs-focus-ring-opacity))}.focus-ring-light{--bs-focus-ring-color:rgba(var(--bs-light-rgb),var(--bs-focus-ring-opacity))}.focus-ring-dark{--bs-focus-ring-color:rgba(var(--bs-dark-rgb),var(--bs-focus-ring-opacity))}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translateX(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-0{border:0!important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-0{border-top:0!important}.border-end{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-start-0{border-left:0!important}.border-primary{--bs-border-opacity:1;border-color:rgba(var(--bs-primary-rgb),var(--bs-border-opacity))!important}.border-secondary{--bs-border-opacity:1;border-color:rgba(var(--bs-secondary-rgb),var(--bs-border-opacity))!important}.border-success{--bs-border-opacity:1;border-color:rgba(var(--bs-success-rgb),var(--bs-border-opacity))!important}.border-info{--bs-border-opacity:1;border-color:rgba(var(--bs-info-rgb),var(--bs-border-opacity))!important}.border-warning{--bs-border-opacity:1;border-color:rgba(var(--bs-warning-rgb),var(--bs-border-opacity))!important}.border-danger{--bs-border-opacity:1;border-color:rgba(var(--bs-danger-rgb),var(--bs-border-opacity))!important}.border-light{--bs-border-opacity:1;border-color:rgba(var(--bs-light-rgb),var(--bs-border-opacity))!important}.border-dark{--bs-border-opacity:1;border-color:rgba(var(--bs-dark-rgb),var(--bs-border-opacity))!important}.border-black{--bs-border-opacity:1;border-color:rgba(var(--bs-black-rgb),var(--bs-border-opacity))!important}.border-white{--bs-border-opacity:1;border-color:rgba(var(--bs-white-rgb),var(--bs-border-opacity))!important}.border-primary-subtle{border-color:var(--bs-primary-border-subtle)!important}.border-secondary-subtle{border-color:var(--bs-secondary-border-subtle)!important}.border-success-subtle{border-color:var(--bs-success-border-subtle)!important}.border-info-subtle{border-color:var(--bs-info-border-subtle)!important}.border-warning-subtle{border-color:var(--bs-warning-border-subtle)!important}.border-danger-subtle{border-color:var(--bs-danger-border-subtle)!important}.border-light-subtle{border-color:var(--bs-light-border-subtle)!important}.border-dark-subtle{border-color:var(--bs-dark-border-subtle)!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.border-opacity-10{--bs-border-opacity:0.1}.border-opacity-25{--bs-border-opacity:0.25}.border-opacity-50{--bs-border-opacity:0.5}.border-opacity-75{--bs-border-opacity:0.75}.border-opacity-100{--bs-border-opacity:1}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-6{margin:4.5rem!important}.m-7{margin:6rem!important}.m-auto{margin:auto!important}.mx-0{margin-left:0!important;margin-right:0!important}.mx-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-3{margin-left:1rem!important;margin-right:1rem!important}.mx-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-5{margin-left:3rem!important;margin-right:3rem!important}.mx-6{margin-left:4.5rem!important;margin-right:4.5rem!important}.mx-7{margin-left:6rem!important;margin-right:6rem!important}.mx-auto{margin-left:auto!important;margin-right:auto!important}.my-0{margin-bottom:0!important;margin-top:0!important}.my-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-6{margin-bottom:4.5rem!important;margin-top:4.5rem!important}.my-7{margin-bottom:6rem!important;margin-top:6rem!important}.my-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-6{margin-top:4.5rem!important}.mt-7{margin-top:6rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-6{margin-right:4.5rem!important}.me-7{margin-right:6rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-6{margin-bottom:4.5rem!important}.mb-7{margin-bottom:6rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-6{margin-left:4.5rem!important}.ms-7{margin-left:6rem!important}.ms-auto{margin-left:auto!important}.m-n1{margin:-.25rem!important}.m-n2{margin:-.5rem!important}.m-n3{margin:-1rem!important}.m-n4{margin:-1.5rem!important}.m-n5{margin:-3rem!important}.m-n6{margin:-4.5rem!important}.m-n7{margin:-6rem!important}.mx-n1{margin-left:-.25rem!important;margin-right:-.25rem!important}.mx-n2{margin-left:-.5rem!important;margin-right:-.5rem!important}.mx-n3{margin-left:-1rem!important;margin-right:-1rem!important}.mx-n4{margin-left:-1.5rem!important;margin-right:-1.5rem!important}.mx-n5{margin-left:-3rem!important;margin-right:-3rem!important}.mx-n6{margin-left:-4.5rem!important;margin-right:-4.5rem!important}.mx-n7{margin-left:-6rem!important;margin-right:-6rem!important}.my-n1{margin-bottom:-.25rem!important;margin-top:-.25rem!important}.my-n2{margin-bottom:-.5rem!important;margin-top:-.5rem!important}.my-n3{margin-bottom:-1rem!important;margin-top:-1rem!important}.my-n4{margin-bottom:-1.5rem!important;margin-top:-1.5rem!important}.my-n5{margin-bottom:-3rem!important;margin-top:-3rem!important}.my-n6{margin-bottom:-4.5rem!important;margin-top:-4.5rem!important}.my-n7{margin-bottom:-6rem!important;margin-top:-6rem!important}.mt-n1{margin-top:-.25rem!important}.mt-n2{margin-top:-.5rem!important}.mt-n3{margin-top:-1rem!important}.mt-n4{margin-top:-1.5rem!important}.mt-n5{margin-top:-3rem!important}.mt-n6{margin-top:-4.5rem!important}.mt-n7{margin-top:-6rem!important}.me-n1{margin-right:-.25rem!important}.me-n2{margin-right:-.5rem!important}.me-n3{margin-right:-1rem!important}.me-n4{margin-right:-1.5rem!important}.me-n5{margin-right:-3rem!important}.me-n6{margin-right:-4.5rem!important}.me-n7{margin-right:-6rem!important}.mb-n1{margin-bottom:-.25rem!important}.mb-n2{margin-bottom:-.5rem!important}.mb-n3{margin-bottom:-1rem!important}.mb-n4{margin-bottom:-1.5rem!important}.mb-n5{margin-bottom:-3rem!important}.mb-n6{margin-bottom:-4.5rem!important}.mb-n7{margin-bottom:-6rem!important}.ms-n1{margin-left:-.25rem!important}.ms-n2{margin-left:-.5rem!important}.ms-n3{margin-left:-1rem!important}.ms-n4{margin-left:-1.5rem!important}.ms-n5{margin-left:-3rem!important}.ms-n6{margin-left:-4.5rem!important}.ms-n7{margin-left:-6rem!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.p-6{padding:4.5rem!important}.p-7{padding:6rem!important}.px-0{padding-left:0!important;padding-right:0!important}.px-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-3{padding-left:1rem!important;padding-right:1rem!important}.px-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-5{padding-left:3rem!important;padding-right:3rem!important}.px-6{padding-left:4.5rem!important;padding-right:4.5rem!important}.px-7{padding-left:6rem!important;padding-right:6rem!important}.py-0{padding-bottom:0!important;padding-top:0!important}.py-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-5{padding-bottom:3rem!important;padding-top:3rem!important}.py-6{padding-bottom:4.5rem!important;padding-top:4.5rem!important}.py-7{padding-bottom:6rem!important;padding-top:6rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pt-6{padding-top:4.5rem!important}.pt-7{padding-top:6rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pe-6{padding-right:4.5rem!important}.pe-7{padding-right:6rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.pb-6{padding-bottom:4.5rem!important}.pb-7{padding-bottom:6rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.ps-6{padding-left:4.5rem!important}.ps-7{padding-left:6rem!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.gap-6{gap:4.5rem!important}.gap-7{gap:6rem!important}.row-gap-0{row-gap:0!important}.row-gap-1{row-gap:.25rem!important}.row-gap-2{row-gap:.5rem!important}.row-gap-3{row-gap:1rem!important}.row-gap-4{row-gap:1.5rem!important}.row-gap-5{row-gap:3rem!important}.row-gap-6{row-gap:4.5rem!important}.row-gap-7{row-gap:6rem!important}.column-gap-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.column-gap-6{-moz-column-gap:4.5rem!important;column-gap:4.5rem!important}.column-gap-7{-moz-column-gap:6rem!important;column-gap:6rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:1.75rem!important}.fs-2{font-size:1.53125rem!important}.fs-3{font-size:1.3125rem!important}.fs-4{font-size:1.09375rem!important}.fs-5,.fs-6{font-size:.875rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-lighter{font-weight:lighter!important}.fw-light{font-weight:300!important}.fw-normal{font-weight:400!important}.fw-medium{font-weight:500!important}.fw-bold,.fw-semibold{font-weight:600!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-base,.lh-lg,.lh-sm{line-height:1.5!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{--bs-text-opacity:1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity:1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity:1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-info{--bs-text-opacity:1;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))!important}.text-warning{--bs-text-opacity:1;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity:1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity:1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{--bs-text-opacity:1;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-black{--bs-text-opacity:1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity:1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{--bs-text-opacity:1;color:rgba(var(--bs-body-color-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity:1;color:var(--bs-secondary-color)!important}.text-black-50{--bs-text-opacity:1;color:rgba(0,0,0,.5)!important}.text-white-50{--bs-text-opacity:1;color:hsla(0,0%,100%,.5)!important}.text-body-secondary{--bs-text-opacity:1;color:var(--bs-secondary-color)!important}.text-body-tertiary{--bs-text-opacity:1;color:var(--bs-tertiary-color)!important}.text-body-emphasis{--bs-text-opacity:1;color:var(--bs-emphasis-color)!important}.text-reset{--bs-text-opacity:1;color:inherit!important}.text-opacity-25{--bs-text-opacity:0.25}.text-opacity-50{--bs-text-opacity:0.5}.text-opacity-75{--bs-text-opacity:0.75}.text-opacity-100{--bs-text-opacity:1}.text-primary-emphasis{color:var(--bs-primary-text-emphasis)!important}.text-secondary-emphasis{color:var(--bs-secondary-text-emphasis)!important}.text-success-emphasis{color:var(--bs-success-text-emphasis)!important}.text-info-emphasis{color:var(--bs-info-text-emphasis)!important}.text-warning-emphasis{color:var(--bs-warning-text-emphasis)!important}.text-danger-emphasis{color:var(--bs-danger-text-emphasis)!important}.text-light-emphasis{color:var(--bs-light-text-emphasis)!important}.text-dark-emphasis{color:var(--bs-dark-text-emphasis)!important}.link-opacity-10,.link-opacity-10-hover:hover{--bs-link-opacity:0.1}.link-opacity-25,.link-opacity-25-hover:hover{--bs-link-opacity:0.25}.link-opacity-50,.link-opacity-50-hover:hover{--bs-link-opacity:0.5}.link-opacity-75,.link-opacity-75-hover:hover{--bs-link-opacity:0.75}.link-opacity-100,.link-opacity-100-hover:hover{--bs-link-opacity:1}.link-offset-1,.link-offset-1-hover:hover{text-underline-offset:.125em!important}.link-offset-2,.link-offset-2-hover:hover{text-underline-offset:.25em!important}.link-offset-3,.link-offset-3-hover:hover{text-underline-offset:.375em!important}.link-underline-primary{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-primary-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-primary-rgb),var(--bs-link-underline-opacity))!important}.link-underline-secondary{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-secondary-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-secondary-rgb),var(--bs-link-underline-opacity))!important}.link-underline-success{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-success-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-success-rgb),var(--bs-link-underline-opacity))!important}.link-underline-info{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-info-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-info-rgb),var(--bs-link-underline-opacity))!important}.link-underline-warning{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-warning-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-warning-rgb),var(--bs-link-underline-opacity))!important}.link-underline-danger{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-danger-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-danger-rgb),var(--bs-link-underline-opacity))!important}.link-underline-light{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-light-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-light-rgb),var(--bs-link-underline-opacity))!important}.link-underline-dark{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-dark-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-dark-rgb),var(--bs-link-underline-opacity))!important}.link-underline{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-underline-opacity,1))!important}.link-underline-opacity-0,.link-underline-opacity-0-hover:hover{--bs-link-underline-opacity:0}.link-underline-opacity-10,.link-underline-opacity-10-hover:hover{--bs-link-underline-opacity:0.1}.link-underline-opacity-25,.link-underline-opacity-25-hover:hover{--bs-link-underline-opacity:0.25}.link-underline-opacity-50,.link-underline-opacity-50-hover:hover{--bs-link-underline-opacity:0.5}.link-underline-opacity-75,.link-underline-opacity-75-hover:hover{--bs-link-underline-opacity:0.75}.link-underline-opacity-100,.link-underline-opacity-100-hover:hover{--bs-link-underline-opacity:1}.bg-primary{--bs-bg-opacity:1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{--bs-bg-opacity:1;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-info{--bs-bg-opacity:1;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))!important}.bg-warning{--bs-bg-opacity:1;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{--bs-bg-opacity:1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity:1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{--bs-bg-opacity:1;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity:1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{--bs-bg-opacity:1;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{--bs-bg-opacity:1;background-color:rgba(var(--bs-body-bg-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity:1;background-color:transparent!important}.bg-body-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-bg-rgb),var(--bs-bg-opacity))!important}.bg-body-tertiary{--bs-bg-opacity:1;background-color:rgba(var(--bs-tertiary-bg-rgb),var(--bs-bg-opacity))!important}.bg-opacity-10{--bs-bg-opacity:0.1}.bg-opacity-25{--bs-bg-opacity:0.25}.bg-opacity-50{--bs-bg-opacity:0.5}.bg-opacity-75{--bs-bg-opacity:0.75}.bg-opacity-100{--bs-bg-opacity:1}.bg-primary-subtle{background-color:var(--bs-primary-bg-subtle)!important}.bg-secondary-subtle{background-color:var(--bs-secondary-bg-subtle)!important}.bg-success-subtle{background-color:var(--bs-success-bg-subtle)!important}.bg-info-subtle{background-color:var(--bs-info-bg-subtle)!important}.bg-warning-subtle{background-color:var(--bs-warning-bg-subtle)!important}.bg-danger-subtle{background-color:var(--bs-danger-bg-subtle)!important}.bg-light-subtle{background-color:var(--bs-light-bg-subtle)!important}.bg-dark-subtle{background-color:var(--bs-dark-bg-subtle)!important}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:var(--bs-border-radius)!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:var(--bs-border-radius-sm)!important}.rounded-2{border-radius:var(--bs-border-radius)!important}.rounded-3{border-radius:var(--bs-border-radius-lg)!important}.rounded-4{border-radius:var(--bs-border-radius-xl)!important}.rounded-5{border-radius:var(--bs-border-radius-xxl)!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:var(--bs-border-radius-pill)!important}.rounded-top{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-top-0{border-top-left-radius:0!important;border-top-right-radius:0!important}.rounded-top-1{border-top-left-radius:var(--bs-border-radius-sm)!important;border-top-right-radius:var(--bs-border-radius-sm)!important}.rounded-top-2{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-top-3{border-top-left-radius:var(--bs-border-radius-lg)!important;border-top-right-radius:var(--bs-border-radius-lg)!important}.rounded-top-4{border-top-left-radius:var(--bs-border-radius-xl)!important;border-top-right-radius:var(--bs-border-radius-xl)!important}.rounded-top-5{border-top-left-radius:var(--bs-border-radius-xxl)!important;border-top-right-radius:var(--bs-border-radius-xxl)!important}.rounded-top-circle{border-top-left-radius:50%!important;border-top-right-radius:50%!important}.rounded-top-pill{border-top-left-radius:var(--bs-border-radius-pill)!important;border-top-right-radius:var(--bs-border-radius-pill)!important}.rounded-end{border-bottom-right-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-end-0{border-bottom-right-radius:0!important;border-top-right-radius:0!important}.rounded-end-1{border-bottom-right-radius:var(--bs-border-radius-sm)!important;border-top-right-radius:var(--bs-border-radius-sm)!important}.rounded-end-2{border-bottom-right-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-end-3{border-bottom-right-radius:var(--bs-border-radius-lg)!important;border-top-right-radius:var(--bs-border-radius-lg)!important}.rounded-end-4{border-bottom-right-radius:var(--bs-border-radius-xl)!important;border-top-right-radius:var(--bs-border-radius-xl)!important}.rounded-end-5{border-bottom-right-radius:var(--bs-border-radius-xxl)!important;border-top-right-radius:var(--bs-border-radius-xxl)!important}.rounded-end-circle{border-bottom-right-radius:50%!important;border-top-right-radius:50%!important}.rounded-end-pill{border-bottom-right-radius:var(--bs-border-radius-pill)!important;border-top-right-radius:var(--bs-border-radius-pill)!important}.rounded-bottom{border-bottom-left-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-bottom-0{border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}.rounded-bottom-1{border-bottom-left-radius:var(--bs-border-radius-sm)!important;border-bottom-right-radius:var(--bs-border-radius-sm)!important}.rounded-bottom-2{border-bottom-left-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-bottom-3{border-bottom-left-radius:var(--bs-border-radius-lg)!important;border-bottom-right-radius:var(--bs-border-radius-lg)!important}.rounded-bottom-4{border-bottom-left-radius:var(--bs-border-radius-xl)!important;border-bottom-right-radius:var(--bs-border-radius-xl)!important}.rounded-bottom-5{border-bottom-left-radius:var(--bs-border-radius-xxl)!important;border-bottom-right-radius:var(--bs-border-radius-xxl)!important}.rounded-bottom-circle{border-bottom-left-radius:50%!important;border-bottom-right-radius:50%!important}.rounded-bottom-pill{border-bottom-left-radius:var(--bs-border-radius-pill)!important;border-bottom-right-radius:var(--bs-border-radius-pill)!important}.rounded-start{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.rounded-start-0{border-bottom-left-radius:0!important;border-top-left-radius:0!important}.rounded-start-1{border-bottom-left-radius:var(--bs-border-radius-sm)!important;border-top-left-radius:var(--bs-border-radius-sm)!important}.rounded-start-2{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.rounded-start-3{border-bottom-left-radius:var(--bs-border-radius-lg)!important;border-top-left-radius:var(--bs-border-radius-lg)!important}.rounded-start-4{border-bottom-left-radius:var(--bs-border-radius-xl)!important;border-top-left-radius:var(--bs-border-radius-xl)!important}.rounded-start-5{border-bottom-left-radius:var(--bs-border-radius-xxl)!important;border-top-left-radius:var(--bs-border-radius-xxl)!important}.rounded-start-circle{border-bottom-left-radius:50%!important;border-top-left-radius:50%!important}.rounded-start-pill{border-bottom-left-radius:var(--bs-border-radius-pill)!important;border-top-left-radius:var(--bs-border-radius-pill)!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}.z-n1{z-index:-1!important}.z-0{z-index:0!important}.z-1{z-index:1!important}.z-2{z-index:2!important}.z-3{z-index:3!important}@media(min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.object-fit-sm-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-sm-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-sm-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-sm-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-sm-none{-o-object-fit:none!important;object-fit:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-inline-grid{display:inline-grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-6{margin:4.5rem!important}.m-sm-7{margin:6rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-left:0!important;margin-right:0!important}.mx-sm-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-sm-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-sm-3{margin-left:1rem!important;margin-right:1rem!important}.mx-sm-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-sm-5{margin-left:3rem!important;margin-right:3rem!important}.mx-sm-6{margin-left:4.5rem!important;margin-right:4.5rem!important}.mx-sm-7{margin-left:6rem!important;margin-right:6rem!important}.mx-sm-auto{margin-left:auto!important;margin-right:auto!important}.my-sm-0{margin-bottom:0!important;margin-top:0!important}.my-sm-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-sm-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-sm-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-sm-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-sm-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-sm-6{margin-bottom:4.5rem!important;margin-top:4.5rem!important}.my-sm-7{margin-bottom:6rem!important;margin-top:6rem!important}.my-sm-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-6{margin-top:4.5rem!important}.mt-sm-7{margin-top:6rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-6{margin-right:4.5rem!important}.me-sm-7{margin-right:6rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-6{margin-bottom:4.5rem!important}.mb-sm-7{margin-bottom:6rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-6{margin-left:4.5rem!important}.ms-sm-7{margin-left:6rem!important}.ms-sm-auto{margin-left:auto!important}.m-sm-n1{margin:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.m-sm-n3{margin:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.m-sm-n6{margin:-4.5rem!important}.m-sm-n7{margin:-6rem!important}.mx-sm-n1{margin-left:-.25rem!important;margin-right:-.25rem!important}.mx-sm-n2{margin-left:-.5rem!important;margin-right:-.5rem!important}.mx-sm-n3{margin-left:-1rem!important;margin-right:-1rem!important}.mx-sm-n4{margin-left:-1.5rem!important;margin-right:-1.5rem!important}.mx-sm-n5{margin-left:-3rem!important;margin-right:-3rem!important}.mx-sm-n6{margin-left:-4.5rem!important;margin-right:-4.5rem!important}.mx-sm-n7{margin-left:-6rem!important;margin-right:-6rem!important}.my-sm-n1{margin-bottom:-.25rem!important;margin-top:-.25rem!important}.my-sm-n2{margin-bottom:-.5rem!important;margin-top:-.5rem!important}.my-sm-n3{margin-bottom:-1rem!important;margin-top:-1rem!important}.my-sm-n4{margin-bottom:-1.5rem!important;margin-top:-1.5rem!important}.my-sm-n5{margin-bottom:-3rem!important;margin-top:-3rem!important}.my-sm-n6{margin-bottom:-4.5rem!important;margin-top:-4.5rem!important}.my-sm-n7{margin-bottom:-6rem!important;margin-top:-6rem!important}.mt-sm-n1{margin-top:-.25rem!important}.mt-sm-n2{margin-top:-.5rem!important}.mt-sm-n3{margin-top:-1rem!important}.mt-sm-n4{margin-top:-1.5rem!important}.mt-sm-n5{margin-top:-3rem!important}.mt-sm-n6{margin-top:-4.5rem!important}.mt-sm-n7{margin-top:-6rem!important}.me-sm-n1{margin-right:-.25rem!important}.me-sm-n2{margin-right:-.5rem!important}.me-sm-n3{margin-right:-1rem!important}.me-sm-n4{margin-right:-1.5rem!important}.me-sm-n5{margin-right:-3rem!important}.me-sm-n6{margin-right:-4.5rem!important}.me-sm-n7{margin-right:-6rem!important}.mb-sm-n1{margin-bottom:-.25rem!important}.mb-sm-n2{margin-bottom:-.5rem!important}.mb-sm-n3{margin-bottom:-1rem!important}.mb-sm-n4{margin-bottom:-1.5rem!important}.mb-sm-n5{margin-bottom:-3rem!important}.mb-sm-n6{margin-bottom:-4.5rem!important}.mb-sm-n7{margin-bottom:-6rem!important}.ms-sm-n1{margin-left:-.25rem!important}.ms-sm-n2{margin-left:-.5rem!important}.ms-sm-n3{margin-left:-1rem!important}.ms-sm-n4{margin-left:-1.5rem!important}.ms-sm-n5{margin-left:-3rem!important}.ms-sm-n6{margin-left:-4.5rem!important}.ms-sm-n7{margin-left:-6rem!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.p-sm-6{padding:4.5rem!important}.p-sm-7{padding:6rem!important}.px-sm-0{padding-left:0!important;padding-right:0!important}.px-sm-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-sm-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-sm-3{padding-left:1rem!important;padding-right:1rem!important}.px-sm-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-sm-5{padding-left:3rem!important;padding-right:3rem!important}.px-sm-6{padding-left:4.5rem!important;padding-right:4.5rem!important}.px-sm-7{padding-left:6rem!important;padding-right:6rem!important}.py-sm-0{padding-bottom:0!important;padding-top:0!important}.py-sm-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-sm-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-sm-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-sm-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-sm-5{padding-bottom:3rem!important;padding-top:3rem!important}.py-sm-6{padding-bottom:4.5rem!important;padding-top:4.5rem!important}.py-sm-7{padding-bottom:6rem!important;padding-top:6rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pt-sm-6{padding-top:4.5rem!important}.pt-sm-7{padding-top:6rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pe-sm-6{padding-right:4.5rem!important}.pe-sm-7{padding-right:6rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.pb-sm-6{padding-bottom:4.5rem!important}.pb-sm-7{padding-bottom:6rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.ps-sm-6{padding-left:4.5rem!important}.ps-sm-7{padding-left:6rem!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.gap-sm-6{gap:4.5rem!important}.gap-sm-7{gap:6rem!important}.row-gap-sm-0{row-gap:0!important}.row-gap-sm-1{row-gap:.25rem!important}.row-gap-sm-2{row-gap:.5rem!important}.row-gap-sm-3{row-gap:1rem!important}.row-gap-sm-4{row-gap:1.5rem!important}.row-gap-sm-5{row-gap:3rem!important}.row-gap-sm-6{row-gap:4.5rem!important}.row-gap-sm-7{row-gap:6rem!important}.column-gap-sm-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-sm-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-sm-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-sm-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-sm-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-sm-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.column-gap-sm-6{-moz-column-gap:4.5rem!important;column-gap:4.5rem!important}.column-gap-sm-7{-moz-column-gap:6rem!important;column-gap:6rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media(min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.object-fit-md-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-md-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-md-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-md-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-md-none{-o-object-fit:none!important;object-fit:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-inline-grid{display:inline-grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-6{margin:4.5rem!important}.m-md-7{margin:6rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-left:0!important;margin-right:0!important}.mx-md-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-md-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-md-3{margin-left:1rem!important;margin-right:1rem!important}.mx-md-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-md-5{margin-left:3rem!important;margin-right:3rem!important}.mx-md-6{margin-left:4.5rem!important;margin-right:4.5rem!important}.mx-md-7{margin-left:6rem!important;margin-right:6rem!important}.mx-md-auto{margin-left:auto!important;margin-right:auto!important}.my-md-0{margin-bottom:0!important;margin-top:0!important}.my-md-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-md-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-md-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-md-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-md-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-md-6{margin-bottom:4.5rem!important;margin-top:4.5rem!important}.my-md-7{margin-bottom:6rem!important;margin-top:6rem!important}.my-md-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-6{margin-top:4.5rem!important}.mt-md-7{margin-top:6rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-6{margin-right:4.5rem!important}.me-md-7{margin-right:6rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-6{margin-bottom:4.5rem!important}.mb-md-7{margin-bottom:6rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-6{margin-left:4.5rem!important}.ms-md-7{margin-left:6rem!important}.ms-md-auto{margin-left:auto!important}.m-md-n1{margin:-.25rem!important}.m-md-n2{margin:-.5rem!important}.m-md-n3{margin:-1rem!important}.m-md-n4{margin:-1.5rem!important}.m-md-n5{margin:-3rem!important}.m-md-n6{margin:-4.5rem!important}.m-md-n7{margin:-6rem!important}.mx-md-n1{margin-left:-.25rem!important;margin-right:-.25rem!important}.mx-md-n2{margin-left:-.5rem!important;margin-right:-.5rem!important}.mx-md-n3{margin-left:-1rem!important;margin-right:-1rem!important}.mx-md-n4{margin-left:-1.5rem!important;margin-right:-1.5rem!important}.mx-md-n5{margin-left:-3rem!important;margin-right:-3rem!important}.mx-md-n6{margin-left:-4.5rem!important;margin-right:-4.5rem!important}.mx-md-n7{margin-left:-6rem!important;margin-right:-6rem!important}.my-md-n1{margin-bottom:-.25rem!important;margin-top:-.25rem!important}.my-md-n2{margin-bottom:-.5rem!important;margin-top:-.5rem!important}.my-md-n3{margin-bottom:-1rem!important;margin-top:-1rem!important}.my-md-n4{margin-bottom:-1.5rem!important;margin-top:-1.5rem!important}.my-md-n5{margin-bottom:-3rem!important;margin-top:-3rem!important}.my-md-n6{margin-bottom:-4.5rem!important;margin-top:-4.5rem!important}.my-md-n7{margin-bottom:-6rem!important;margin-top:-6rem!important}.mt-md-n1{margin-top:-.25rem!important}.mt-md-n2{margin-top:-.5rem!important}.mt-md-n3{margin-top:-1rem!important}.mt-md-n4{margin-top:-1.5rem!important}.mt-md-n5{margin-top:-3rem!important}.mt-md-n6{margin-top:-4.5rem!important}.mt-md-n7{margin-top:-6rem!important}.me-md-n1{margin-right:-.25rem!important}.me-md-n2{margin-right:-.5rem!important}.me-md-n3{margin-right:-1rem!important}.me-md-n4{margin-right:-1.5rem!important}.me-md-n5{margin-right:-3rem!important}.me-md-n6{margin-right:-4.5rem!important}.me-md-n7{margin-right:-6rem!important}.mb-md-n1{margin-bottom:-.25rem!important}.mb-md-n2{margin-bottom:-.5rem!important}.mb-md-n3{margin-bottom:-1rem!important}.mb-md-n4{margin-bottom:-1.5rem!important}.mb-md-n5{margin-bottom:-3rem!important}.mb-md-n6{margin-bottom:-4.5rem!important}.mb-md-n7{margin-bottom:-6rem!important}.ms-md-n1{margin-left:-.25rem!important}.ms-md-n2{margin-left:-.5rem!important}.ms-md-n3{margin-left:-1rem!important}.ms-md-n4{margin-left:-1.5rem!important}.ms-md-n5{margin-left:-3rem!important}.ms-md-n6{margin-left:-4.5rem!important}.ms-md-n7{margin-left:-6rem!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.p-md-6{padding:4.5rem!important}.p-md-7{padding:6rem!important}.px-md-0{padding-left:0!important;padding-right:0!important}.px-md-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-md-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-md-3{padding-left:1rem!important;padding-right:1rem!important}.px-md-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-md-5{padding-left:3rem!important;padding-right:3rem!important}.px-md-6{padding-left:4.5rem!important;padding-right:4.5rem!important}.px-md-7{padding-left:6rem!important;padding-right:6rem!important}.py-md-0{padding-bottom:0!important;padding-top:0!important}.py-md-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-md-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-md-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-md-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-md-5{padding-bottom:3rem!important;padding-top:3rem!important}.py-md-6{padding-bottom:4.5rem!important;padding-top:4.5rem!important}.py-md-7{padding-bottom:6rem!important;padding-top:6rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pt-md-6{padding-top:4.5rem!important}.pt-md-7{padding-top:6rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pe-md-6{padding-right:4.5rem!important}.pe-md-7{padding-right:6rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.pb-md-6{padding-bottom:4.5rem!important}.pb-md-7{padding-bottom:6rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.ps-md-6{padding-left:4.5rem!important}.ps-md-7{padding-left:6rem!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.gap-md-6{gap:4.5rem!important}.gap-md-7{gap:6rem!important}.row-gap-md-0{row-gap:0!important}.row-gap-md-1{row-gap:.25rem!important}.row-gap-md-2{row-gap:.5rem!important}.row-gap-md-3{row-gap:1rem!important}.row-gap-md-4{row-gap:1.5rem!important}.row-gap-md-5{row-gap:3rem!important}.row-gap-md-6{row-gap:4.5rem!important}.row-gap-md-7{row-gap:6rem!important}.column-gap-md-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-md-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-md-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-md-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-md-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-md-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.column-gap-md-6{-moz-column-gap:4.5rem!important;column-gap:4.5rem!important}.column-gap-md-7{-moz-column-gap:6rem!important;column-gap:6rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media(min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.object-fit-lg-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-lg-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-lg-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-lg-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-lg-none{-o-object-fit:none!important;object-fit:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-inline-grid{display:inline-grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-6{margin:4.5rem!important}.m-lg-7{margin:6rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-left:0!important;margin-right:0!important}.mx-lg-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-lg-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-lg-3{margin-left:1rem!important;margin-right:1rem!important}.mx-lg-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-lg-5{margin-left:3rem!important;margin-right:3rem!important}.mx-lg-6{margin-left:4.5rem!important;margin-right:4.5rem!important}.mx-lg-7{margin-left:6rem!important;margin-right:6rem!important}.mx-lg-auto{margin-left:auto!important;margin-right:auto!important}.my-lg-0{margin-bottom:0!important;margin-top:0!important}.my-lg-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-lg-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-lg-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-lg-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-lg-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-lg-6{margin-bottom:4.5rem!important;margin-top:4.5rem!important}.my-lg-7{margin-bottom:6rem!important;margin-top:6rem!important}.my-lg-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-6{margin-top:4.5rem!important}.mt-lg-7{margin-top:6rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-6{margin-right:4.5rem!important}.me-lg-7{margin-right:6rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-6{margin-bottom:4.5rem!important}.mb-lg-7{margin-bottom:6rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-6{margin-left:4.5rem!important}.ms-lg-7{margin-left:6rem!important}.ms-lg-auto{margin-left:auto!important}.m-lg-n1{margin:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.m-lg-n3{margin:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.m-lg-n6{margin:-4.5rem!important}.m-lg-n7{margin:-6rem!important}.mx-lg-n1{margin-left:-.25rem!important;margin-right:-.25rem!important}.mx-lg-n2{margin-left:-.5rem!important;margin-right:-.5rem!important}.mx-lg-n3{margin-left:-1rem!important;margin-right:-1rem!important}.mx-lg-n4{margin-left:-1.5rem!important;margin-right:-1.5rem!important}.mx-lg-n5{margin-left:-3rem!important;margin-right:-3rem!important}.mx-lg-n6{margin-left:-4.5rem!important;margin-right:-4.5rem!important}.mx-lg-n7{margin-left:-6rem!important;margin-right:-6rem!important}.my-lg-n1{margin-bottom:-.25rem!important;margin-top:-.25rem!important}.my-lg-n2{margin-bottom:-.5rem!important;margin-top:-.5rem!important}.my-lg-n3{margin-bottom:-1rem!important;margin-top:-1rem!important}.my-lg-n4{margin-bottom:-1.5rem!important;margin-top:-1.5rem!important}.my-lg-n5{margin-bottom:-3rem!important;margin-top:-3rem!important}.my-lg-n6{margin-bottom:-4.5rem!important;margin-top:-4.5rem!important}.my-lg-n7{margin-bottom:-6rem!important;margin-top:-6rem!important}.mt-lg-n1{margin-top:-.25rem!important}.mt-lg-n2{margin-top:-.5rem!important}.mt-lg-n3{margin-top:-1rem!important}.mt-lg-n4{margin-top:-1.5rem!important}.mt-lg-n5{margin-top:-3rem!important}.mt-lg-n6{margin-top:-4.5rem!important}.mt-lg-n7{margin-top:-6rem!important}.me-lg-n1{margin-right:-.25rem!important}.me-lg-n2{margin-right:-.5rem!important}.me-lg-n3{margin-right:-1rem!important}.me-lg-n4{margin-right:-1.5rem!important}.me-lg-n5{margin-right:-3rem!important}.me-lg-n6{margin-right:-4.5rem!important}.me-lg-n7{margin-right:-6rem!important}.mb-lg-n1{margin-bottom:-.25rem!important}.mb-lg-n2{margin-bottom:-.5rem!important}.mb-lg-n3{margin-bottom:-1rem!important}.mb-lg-n4{margin-bottom:-1.5rem!important}.mb-lg-n5{margin-bottom:-3rem!important}.mb-lg-n6{margin-bottom:-4.5rem!important}.mb-lg-n7{margin-bottom:-6rem!important}.ms-lg-n1{margin-left:-.25rem!important}.ms-lg-n2{margin-left:-.5rem!important}.ms-lg-n3{margin-left:-1rem!important}.ms-lg-n4{margin-left:-1.5rem!important}.ms-lg-n5{margin-left:-3rem!important}.ms-lg-n6{margin-left:-4.5rem!important}.ms-lg-n7{margin-left:-6rem!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.p-lg-6{padding:4.5rem!important}.p-lg-7{padding:6rem!important}.px-lg-0{padding-left:0!important;padding-right:0!important}.px-lg-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-lg-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-lg-3{padding-left:1rem!important;padding-right:1rem!important}.px-lg-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-lg-5{padding-left:3rem!important;padding-right:3rem!important}.px-lg-6{padding-left:4.5rem!important;padding-right:4.5rem!important}.px-lg-7{padding-left:6rem!important;padding-right:6rem!important}.py-lg-0{padding-bottom:0!important;padding-top:0!important}.py-lg-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-lg-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-lg-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-lg-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-lg-5{padding-bottom:3rem!important;padding-top:3rem!important}.py-lg-6{padding-bottom:4.5rem!important;padding-top:4.5rem!important}.py-lg-7{padding-bottom:6rem!important;padding-top:6rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pt-lg-6{padding-top:4.5rem!important}.pt-lg-7{padding-top:6rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pe-lg-6{padding-right:4.5rem!important}.pe-lg-7{padding-right:6rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.pb-lg-6{padding-bottom:4.5rem!important}.pb-lg-7{padding-bottom:6rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.ps-lg-6{padding-left:4.5rem!important}.ps-lg-7{padding-left:6rem!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.gap-lg-6{gap:4.5rem!important}.gap-lg-7{gap:6rem!important}.row-gap-lg-0{row-gap:0!important}.row-gap-lg-1{row-gap:.25rem!important}.row-gap-lg-2{row-gap:.5rem!important}.row-gap-lg-3{row-gap:1rem!important}.row-gap-lg-4{row-gap:1.5rem!important}.row-gap-lg-5{row-gap:3rem!important}.row-gap-lg-6{row-gap:4.5rem!important}.row-gap-lg-7{row-gap:6rem!important}.column-gap-lg-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-lg-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-lg-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-lg-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-lg-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-lg-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.column-gap-lg-6{-moz-column-gap:4.5rem!important;column-gap:4.5rem!important}.column-gap-lg-7{-moz-column-gap:6rem!important;column-gap:6rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media(min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.object-fit-xl-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-xl-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-xl-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-xl-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-xl-none{-o-object-fit:none!important;object-fit:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-inline-grid{display:inline-grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-6{margin:4.5rem!important}.m-xl-7{margin:6rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-left:0!important;margin-right:0!important}.mx-xl-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-xl-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-xl-3{margin-left:1rem!important;margin-right:1rem!important}.mx-xl-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-xl-5{margin-left:3rem!important;margin-right:3rem!important}.mx-xl-6{margin-left:4.5rem!important;margin-right:4.5rem!important}.mx-xl-7{margin-left:6rem!important;margin-right:6rem!important}.mx-xl-auto{margin-left:auto!important;margin-right:auto!important}.my-xl-0{margin-bottom:0!important;margin-top:0!important}.my-xl-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-xl-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-xl-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-xl-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-xl-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-xl-6{margin-bottom:4.5rem!important;margin-top:4.5rem!important}.my-xl-7{margin-bottom:6rem!important;margin-top:6rem!important}.my-xl-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-6{margin-top:4.5rem!important}.mt-xl-7{margin-top:6rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-6{margin-right:4.5rem!important}.me-xl-7{margin-right:6rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-6{margin-bottom:4.5rem!important}.mb-xl-7{margin-bottom:6rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-6{margin-left:4.5rem!important}.ms-xl-7{margin-left:6rem!important}.ms-xl-auto{margin-left:auto!important}.m-xl-n1{margin:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.m-xl-n3{margin:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.m-xl-n6{margin:-4.5rem!important}.m-xl-n7{margin:-6rem!important}.mx-xl-n1{margin-left:-.25rem!important;margin-right:-.25rem!important}.mx-xl-n2{margin-left:-.5rem!important;margin-right:-.5rem!important}.mx-xl-n3{margin-left:-1rem!important;margin-right:-1rem!important}.mx-xl-n4{margin-left:-1.5rem!important;margin-right:-1.5rem!important}.mx-xl-n5{margin-left:-3rem!important;margin-right:-3rem!important}.mx-xl-n6{margin-left:-4.5rem!important;margin-right:-4.5rem!important}.mx-xl-n7{margin-left:-6rem!important;margin-right:-6rem!important}.my-xl-n1{margin-bottom:-.25rem!important;margin-top:-.25rem!important}.my-xl-n2{margin-bottom:-.5rem!important;margin-top:-.5rem!important}.my-xl-n3{margin-bottom:-1rem!important;margin-top:-1rem!important}.my-xl-n4{margin-bottom:-1.5rem!important;margin-top:-1.5rem!important}.my-xl-n5{margin-bottom:-3rem!important;margin-top:-3rem!important}.my-xl-n6{margin-bottom:-4.5rem!important;margin-top:-4.5rem!important}.my-xl-n7{margin-bottom:-6rem!important;margin-top:-6rem!important}.mt-xl-n1{margin-top:-.25rem!important}.mt-xl-n2{margin-top:-.5rem!important}.mt-xl-n3{margin-top:-1rem!important}.mt-xl-n4{margin-top:-1.5rem!important}.mt-xl-n5{margin-top:-3rem!important}.mt-xl-n6{margin-top:-4.5rem!important}.mt-xl-n7{margin-top:-6rem!important}.me-xl-n1{margin-right:-.25rem!important}.me-xl-n2{margin-right:-.5rem!important}.me-xl-n3{margin-right:-1rem!important}.me-xl-n4{margin-right:-1.5rem!important}.me-xl-n5{margin-right:-3rem!important}.me-xl-n6{margin-right:-4.5rem!important}.me-xl-n7{margin-right:-6rem!important}.mb-xl-n1{margin-bottom:-.25rem!important}.mb-xl-n2{margin-bottom:-.5rem!important}.mb-xl-n3{margin-bottom:-1rem!important}.mb-xl-n4{margin-bottom:-1.5rem!important}.mb-xl-n5{margin-bottom:-3rem!important}.mb-xl-n6{margin-bottom:-4.5rem!important}.mb-xl-n7{margin-bottom:-6rem!important}.ms-xl-n1{margin-left:-.25rem!important}.ms-xl-n2{margin-left:-.5rem!important}.ms-xl-n3{margin-left:-1rem!important}.ms-xl-n4{margin-left:-1.5rem!important}.ms-xl-n5{margin-left:-3rem!important}.ms-xl-n6{margin-left:-4.5rem!important}.ms-xl-n7{margin-left:-6rem!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.p-xl-6{padding:4.5rem!important}.p-xl-7{padding:6rem!important}.px-xl-0{padding-left:0!important;padding-right:0!important}.px-xl-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-xl-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-xl-3{padding-left:1rem!important;padding-right:1rem!important}.px-xl-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-xl-5{padding-left:3rem!important;padding-right:3rem!important}.px-xl-6{padding-left:4.5rem!important;padding-right:4.5rem!important}.px-xl-7{padding-left:6rem!important;padding-right:6rem!important}.py-xl-0{padding-bottom:0!important;padding-top:0!important}.py-xl-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-xl-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-xl-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-xl-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-xl-5{padding-bottom:3rem!important;padding-top:3rem!important}.py-xl-6{padding-bottom:4.5rem!important;padding-top:4.5rem!important}.py-xl-7{padding-bottom:6rem!important;padding-top:6rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pt-xl-6{padding-top:4.5rem!important}.pt-xl-7{padding-top:6rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pe-xl-6{padding-right:4.5rem!important}.pe-xl-7{padding-right:6rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.pb-xl-6{padding-bottom:4.5rem!important}.pb-xl-7{padding-bottom:6rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.ps-xl-6{padding-left:4.5rem!important}.ps-xl-7{padding-left:6rem!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.gap-xl-6{gap:4.5rem!important}.gap-xl-7{gap:6rem!important}.row-gap-xl-0{row-gap:0!important}.row-gap-xl-1{row-gap:.25rem!important}.row-gap-xl-2{row-gap:.5rem!important}.row-gap-xl-3{row-gap:1rem!important}.row-gap-xl-4{row-gap:1.5rem!important}.row-gap-xl-5{row-gap:3rem!important}.row-gap-xl-6{row-gap:4.5rem!important}.row-gap-xl-7{row-gap:6rem!important}.column-gap-xl-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-xl-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-xl-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-xl-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-xl-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-xl-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.column-gap-xl-6{-moz-column-gap:4.5rem!important;column-gap:4.5rem!important}.column-gap-xl-7{-moz-column-gap:6rem!important;column-gap:6rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media(min-width:1440px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.object-fit-xxl-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-xxl-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-xxl-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-xxl-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-xxl-none{-o-object-fit:none!important;object-fit:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-inline-grid{display:inline-grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-6{margin:4.5rem!important}.m-xxl-7{margin:6rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-left:0!important;margin-right:0!important}.mx-xxl-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-xxl-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-xxl-3{margin-left:1rem!important;margin-right:1rem!important}.mx-xxl-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-xxl-5{margin-left:3rem!important;margin-right:3rem!important}.mx-xxl-6{margin-left:4.5rem!important;margin-right:4.5rem!important}.mx-xxl-7{margin-left:6rem!important;margin-right:6rem!important}.mx-xxl-auto{margin-left:auto!important;margin-right:auto!important}.my-xxl-0{margin-bottom:0!important;margin-top:0!important}.my-xxl-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-xxl-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-xxl-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-xxl-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-xxl-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-xxl-6{margin-bottom:4.5rem!important;margin-top:4.5rem!important}.my-xxl-7{margin-bottom:6rem!important;margin-top:6rem!important}.my-xxl-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-6{margin-top:4.5rem!important}.mt-xxl-7{margin-top:6rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-6{margin-right:4.5rem!important}.me-xxl-7{margin-right:6rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-6{margin-bottom:4.5rem!important}.mb-xxl-7{margin-bottom:6rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-6{margin-left:4.5rem!important}.ms-xxl-7{margin-left:6rem!important}.ms-xxl-auto{margin-left:auto!important}.m-xxl-n1{margin:-.25rem!important}.m-xxl-n2{margin:-.5rem!important}.m-xxl-n3{margin:-1rem!important}.m-xxl-n4{margin:-1.5rem!important}.m-xxl-n5{margin:-3rem!important}.m-xxl-n6{margin:-4.5rem!important}.m-xxl-n7{margin:-6rem!important}.mx-xxl-n1{margin-left:-.25rem!important;margin-right:-.25rem!important}.mx-xxl-n2{margin-left:-.5rem!important;margin-right:-.5rem!important}.mx-xxl-n3{margin-left:-1rem!important;margin-right:-1rem!important}.mx-xxl-n4{margin-left:-1.5rem!important;margin-right:-1.5rem!important}.mx-xxl-n5{margin-left:-3rem!important;margin-right:-3rem!important}.mx-xxl-n6{margin-left:-4.5rem!important;margin-right:-4.5rem!important}.mx-xxl-n7{margin-left:-6rem!important;margin-right:-6rem!important}.my-xxl-n1{margin-bottom:-.25rem!important;margin-top:-.25rem!important}.my-xxl-n2{margin-bottom:-.5rem!important;margin-top:-.5rem!important}.my-xxl-n3{margin-bottom:-1rem!important;margin-top:-1rem!important}.my-xxl-n4{margin-bottom:-1.5rem!important;margin-top:-1.5rem!important}.my-xxl-n5{margin-bottom:-3rem!important;margin-top:-3rem!important}.my-xxl-n6{margin-bottom:-4.5rem!important;margin-top:-4.5rem!important}.my-xxl-n7{margin-bottom:-6rem!important;margin-top:-6rem!important}.mt-xxl-n1{margin-top:-.25rem!important}.mt-xxl-n2{margin-top:-.5rem!important}.mt-xxl-n3{margin-top:-1rem!important}.mt-xxl-n4{margin-top:-1.5rem!important}.mt-xxl-n5{margin-top:-3rem!important}.mt-xxl-n6{margin-top:-4.5rem!important}.mt-xxl-n7{margin-top:-6rem!important}.me-xxl-n1{margin-right:-.25rem!important}.me-xxl-n2{margin-right:-.5rem!important}.me-xxl-n3{margin-right:-1rem!important}.me-xxl-n4{margin-right:-1.5rem!important}.me-xxl-n5{margin-right:-3rem!important}.me-xxl-n6{margin-right:-4.5rem!important}.me-xxl-n7{margin-right:-6rem!important}.mb-xxl-n1{margin-bottom:-.25rem!important}.mb-xxl-n2{margin-bottom:-.5rem!important}.mb-xxl-n3{margin-bottom:-1rem!important}.mb-xxl-n4{margin-bottom:-1.5rem!important}.mb-xxl-n5{margin-bottom:-3rem!important}.mb-xxl-n6{margin-bottom:-4.5rem!important}.mb-xxl-n7{margin-bottom:-6rem!important}.ms-xxl-n1{margin-left:-.25rem!important}.ms-xxl-n2{margin-left:-.5rem!important}.ms-xxl-n3{margin-left:-1rem!important}.ms-xxl-n4{margin-left:-1.5rem!important}.ms-xxl-n5{margin-left:-3rem!important}.ms-xxl-n6{margin-left:-4.5rem!important}.ms-xxl-n7{margin-left:-6rem!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.p-xxl-6{padding:4.5rem!important}.p-xxl-7{padding:6rem!important}.px-xxl-0{padding-left:0!important;padding-right:0!important}.px-xxl-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-xxl-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-xxl-3{padding-left:1rem!important;padding-right:1rem!important}.px-xxl-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-xxl-5{padding-left:3rem!important;padding-right:3rem!important}.px-xxl-6{padding-left:4.5rem!important;padding-right:4.5rem!important}.px-xxl-7{padding-left:6rem!important;padding-right:6rem!important}.py-xxl-0{padding-bottom:0!important;padding-top:0!important}.py-xxl-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-xxl-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-xxl-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-xxl-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-xxl-5{padding-bottom:3rem!important;padding-top:3rem!important}.py-xxl-6{padding-bottom:4.5rem!important;padding-top:4.5rem!important}.py-xxl-7{padding-bottom:6rem!important;padding-top:6rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pt-xxl-6{padding-top:4.5rem!important}.pt-xxl-7{padding-top:6rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pe-xxl-6{padding-right:4.5rem!important}.pe-xxl-7{padding-right:6rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.pb-xxl-6{padding-bottom:4.5rem!important}.pb-xxl-7{padding-bottom:6rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.ps-xxl-6{padding-left:4.5rem!important}.ps-xxl-7{padding-left:6rem!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.gap-xxl-6{gap:4.5rem!important}.gap-xxl-7{gap:6rem!important}.row-gap-xxl-0{row-gap:0!important}.row-gap-xxl-1{row-gap:.25rem!important}.row-gap-xxl-2{row-gap:.5rem!important}.row-gap-xxl-3{row-gap:1rem!important}.row-gap-xxl-4{row-gap:1.5rem!important}.row-gap-xxl-5{row-gap:3rem!important}.row-gap-xxl-6{row-gap:4.5rem!important}.row-gap-xxl-7{row-gap:6rem!important}.column-gap-xxl-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-xxl-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-xxl-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-xxl-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-xxl-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-xxl-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.column-gap-xxl-6{-moz-column-gap:4.5rem!important;column-gap:4.5rem!important}.column-gap-xxl-7{-moz-column-gap:6rem!important;column-gap:6rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-inline-grid{display:inline-grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}}.avatar{height:40px;width:40px}.avatar-lg{height:64px;width:64px}.avatar-title{align-items:center;color:#3b7ddd;display:flex;height:100%;justify-content:center;width:100%}.btn .feather{height:14px;width:14px}.btn-danger,.btn-danger.disabled,.btn-danger.focus,.btn-danger.hover:not(:disabled):not(.disabled),.btn-danger:disabled,.btn-danger:focus,.btn-danger:hover:not(:disabled):not(.disabled),.btn-dark,.btn-dark.disabled,.btn-dark.focus,.btn-dark.hover:not(:disabled):not(.disabled),.btn-dark:disabled,.btn-dark:focus,.btn-dark:hover:not(:disabled):not(.disabled),.btn-info,.btn-info.disabled,.btn-info.focus,.btn-info.hover:not(:disabled):not(.disabled),.btn-info:disabled,.btn-info:focus,.btn-info:hover:not(:disabled):not(.disabled),.btn-light,.btn-light.disabled,.btn-light.focus,.btn-light.hover:not(:disabled):not(.disabled),.btn-light:disabled,.btn-light:focus,.btn-light:hover:not(:disabled):not(.disabled),.btn-primary,.btn-primary.disabled,.btn-primary.focus,.btn-primary.hover:not(:disabled):not(.disabled),.btn-primary:disabled,.btn-primary:focus,.btn-primary:hover:not(:disabled):not(.disabled),.btn-secondary,.btn-secondary.disabled,.btn-secondary.focus,.btn-secondary.hover:not(:disabled):not(.disabled),.btn-secondary:disabled,.btn-secondary:focus,.btn-secondary:hover:not(:disabled):not(.disabled),.btn-success,.btn-success.disabled,.btn-success.focus,.btn-success.hover:not(:disabled):not(.disabled),.btn-success:disabled,.btn-success:focus,.btn-success:hover:not(:disabled):not(.disabled),.btn-warning,.btn-warning.disabled,.btn-warning.focus,.btn-warning.hover:not(:disabled):not(.disabled),.btn-warning:disabled,.btn-warning:focus,.btn-warning:hover:not(:disabled):not(.disabled),.show>.btn-danger.dropdown-toggle,.show>.btn-dark.dropdown-toggle,.show>.btn-info.dropdown-toggle,.show>.btn-light.dropdown-toggle,.show>.btn-primary.dropdown-toggle,.show>.btn-secondary.dropdown-toggle,.show>.btn-success.dropdown-toggle,.show>.btn-warning.dropdown-toggle{color:#fff}.btn-facebook{--bs-btn-color:#fff;--bs-btn-bg:#3b5998;--bs-btn-border-color:#3b5998;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#324c81;--bs-btn-hover-border-color:#2f477a;--bs-btn-focus-shadow-rgb:88,114,167;--bs-btn-active-color:#fff;--bs-btn-active-bg:#2f477a;--bs-btn-active-border-color:#2c4372;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#3b5998;--bs-btn-disabled-border-color:#3b5998}.btn-facebook,.btn-facebook.disabled,.btn-facebook.focus,.btn-facebook.hover:not(:disabled):not(.disabled),.btn-facebook:disabled,.btn-facebook:focus,.btn-facebook:hover:not(:disabled):not(.disabled),.show>.btn-facebook.dropdown-toggle{color:#fff}.btn-twitter{--bs-btn-color:#000;--bs-btn-bg:#1da1f2;--bs-btn-border-color:#1da1f2;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#3faff4;--bs-btn-hover-border-color:#34aaf3;--bs-btn-focus-shadow-rgb:25,137,206;--bs-btn-active-color:#000;--bs-btn-active-bg:#4ab4f5;--bs-btn-active-border-color:#34aaf3;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#1da1f2;--bs-btn-disabled-border-color:#1da1f2}.btn-twitter,.btn-twitter.disabled,.btn-twitter.focus,.btn-twitter.hover:not(:disabled):not(.disabled),.btn-twitter:disabled,.btn-twitter:focus,.btn-twitter:hover:not(:disabled):not(.disabled),.show>.btn-twitter.dropdown-toggle{color:#fff}.btn-google{--bs-btn-color:#fff;--bs-btn-bg:#dc4e41;--bs-btn-border-color:#dc4e41;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#bb4237;--bs-btn-hover-border-color:#b03e34;--bs-btn-focus-shadow-rgb:225,105,94;--bs-btn-active-color:#fff;--bs-btn-active-bg:#b03e34;--bs-btn-active-border-color:#a53b31;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#dc4e41;--bs-btn-disabled-border-color:#dc4e41}.btn-google,.btn-google.disabled,.btn-google.focus,.btn-google.hover:not(:disabled):not(.disabled),.btn-google:disabled,.btn-google:focus,.btn-google:hover:not(:disabled):not(.disabled),.show>.btn-google.dropdown-toggle{color:#fff}.btn-youtube{--bs-btn-color:#fff;--bs-btn-bg:red;--bs-btn-border-color:red;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#d90000;--bs-btn-hover-border-color:#c00;--bs-btn-focus-shadow-rgb:255,38,38;--bs-btn-active-color:#fff;--bs-btn-active-bg:#c00;--bs-btn-active-border-color:#bf0000;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:red;--bs-btn-disabled-border-color:red}.btn-youtube,.btn-youtube.disabled,.btn-youtube.focus,.btn-youtube.hover:not(:disabled):not(.disabled),.btn-youtube:disabled,.btn-youtube:focus,.btn-youtube:hover:not(:disabled):not(.disabled),.show>.btn-youtube.dropdown-toggle{color:#fff}.btn-vimeo{--bs-btn-color:#000;--bs-btn-bg:#1ab7ea;--bs-btn-border-color:#1ab7ea;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#3cc2ed;--bs-btn-hover-border-color:#31beec;--bs-btn-focus-shadow-rgb:22,156,199;--bs-btn-active-color:#000;--bs-btn-active-bg:#48c5ee;--bs-btn-active-border-color:#31beec;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#1ab7ea;--bs-btn-disabled-border-color:#1ab7ea}.btn-vimeo,.btn-vimeo.disabled,.btn-vimeo.focus,.btn-vimeo.hover:not(:disabled):not(.disabled),.btn-vimeo:disabled,.btn-vimeo:focus,.btn-vimeo:hover:not(:disabled):not(.disabled),.show>.btn-vimeo.dropdown-toggle{color:#fff}.btn-dribbble{--bs-btn-color:#fff;--bs-btn-bg:#ea4c89;--bs-btn-border-color:#ea4c89;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#c74174;--bs-btn-hover-border-color:#bb3d6e;--bs-btn-focus-shadow-rgb:237,103,155;--bs-btn-active-color:#fff;--bs-btn-active-bg:#bb3d6e;--bs-btn-active-border-color:#b03967;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#ea4c89;--bs-btn-disabled-border-color:#ea4c89}.btn-dribbble,.btn-dribbble.disabled,.btn-dribbble.focus,.btn-dribbble.hover:not(:disabled):not(.disabled),.btn-dribbble:disabled,.btn-dribbble:focus,.btn-dribbble:hover:not(:disabled):not(.disabled),.show>.btn-dribbble.dropdown-toggle{color:#fff}.btn-github{--bs-btn-color:#fff;--bs-btn-bg:#181717;--bs-btn-border-color:#181717;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#141414;--bs-btn-hover-border-color:#131212;--bs-btn-focus-shadow-rgb:59,58,58;--bs-btn-active-color:#fff;--bs-btn-active-bg:#131212;--bs-btn-active-border-color:#121111;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#181717;--bs-btn-disabled-border-color:#181717}.btn-github,.btn-github.disabled,.btn-github.focus,.btn-github.hover:not(:disabled):not(.disabled),.btn-github:disabled,.btn-github:focus,.btn-github:hover:not(:disabled):not(.disabled),.show>.btn-github.dropdown-toggle{color:#fff}.btn-instagram{--bs-btn-color:#fff;--bs-btn-bg:#e4405f;--bs-btn-border-color:#e4405f;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#c23651;--bs-btn-hover-border-color:#b6334c;--bs-btn-focus-shadow-rgb:232,93,119;--bs-btn-active-color:#fff;--bs-btn-active-bg:#b6334c;--bs-btn-active-border-color:#ab3047;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#e4405f;--bs-btn-disabled-border-color:#e4405f}.btn-instagram,.btn-instagram.disabled,.btn-instagram.focus,.btn-instagram.hover:not(:disabled):not(.disabled),.btn-instagram:disabled,.btn-instagram:focus,.btn-instagram:hover:not(:disabled):not(.disabled),.show>.btn-instagram.dropdown-toggle{color:#fff}.btn-pinterest{--bs-btn-color:#fff;--bs-btn-bg:#bd081c;--bs-btn-border-color:#bd081c;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#a10718;--bs-btn-hover-border-color:#970616;--bs-btn-focus-shadow-rgb:199,45,62;--bs-btn-active-color:#fff;--bs-btn-active-bg:#970616;--bs-btn-active-border-color:#8e0615;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#bd081c;--bs-btn-disabled-border-color:#bd081c}.btn-pinterest,.btn-pinterest.disabled,.btn-pinterest.focus,.btn-pinterest.hover:not(:disabled):not(.disabled),.btn-pinterest:disabled,.btn-pinterest:focus,.btn-pinterest:hover:not(:disabled):not(.disabled),.show>.btn-pinterest.dropdown-toggle{color:#fff}.btn-flickr{--bs-btn-color:#fff;--bs-btn-bg:#0063dc;--bs-btn-border-color:#0063dc;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0054bb;--bs-btn-hover-border-color:#004fb0;--bs-btn-focus-shadow-rgb:38,122,225;--bs-btn-active-color:#fff;--bs-btn-active-bg:#004fb0;--bs-btn-active-border-color:#004aa5;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#0063dc;--bs-btn-disabled-border-color:#0063dc}.btn-flickr,.btn-flickr.disabled,.btn-flickr.focus,.btn-flickr.hover:not(:disabled):not(.disabled),.btn-flickr:disabled,.btn-flickr:focus,.btn-flickr:hover:not(:disabled):not(.disabled),.show>.btn-flickr.dropdown-toggle{color:#fff}.btn-bitbucket{--bs-btn-color:#fff;--bs-btn-bg:#0052cc;--bs-btn-border-color:#0052cc;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0046ad;--bs-btn-hover-border-color:#0042a3;--bs-btn-focus-shadow-rgb:38,108,212;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0042a3;--bs-btn-active-border-color:#003d99;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#0052cc;--bs-btn-disabled-border-color:#0052cc}.btn-bitbucket,.btn-bitbucket.disabled,.btn-bitbucket.focus,.btn-bitbucket.hover:not(:disabled):not(.disabled),.btn-bitbucket:disabled,.btn-bitbucket:focus,.btn-bitbucket:hover:not(:disabled):not(.disabled),.show>.btn-bitbucket.dropdown-toggle{color:#fff}.btn-light,.btn-light.disabled,.btn-light.focus,.btn-light.hover:not(:disabled):not(.disabled),.btn-light:disabled,.btn-light:focus,.btn-light:hover:not(:disabled):not(.disabled),.btn-white,.btn-white.disabled,.btn-white.focus,.btn-white.hover:not(:disabled):not(.disabled),.btn-white:disabled,.btn-white:focus,.btn-white:hover:not(:disabled):not(.disabled),.show>.btn-light.dropdown-toggle,.show>.btn-white.dropdown-toggle{color:#343a40}.card{box-shadow:0 0 .875rem 0 rgba(33,37,41,.05);margin-bottom:24px}.card-header{border-bottom-width:1px}.card-title{color:#939ba2;font-size:.925rem;font-weight:600}.card-subtitle{font-weight:400}.card-img,.card-img-bottom,.card-img-top{height:auto;max-width:100%}@media (-ms-high-contrast:none){.card-img,.card-img-bottom,.card-img-top{height:100%}}.card>.table>tbody tr:last-child td:first-child,.card>.table>tbody tr:last-child th:first-child{border-bottom-left-radius:.25rem}.card>.table>tbody tr:last-child td:last-child,.card>.table>tbody tr:last-child th:last-child{border-bottom-right-radius:.25rem}.chart{margin:auto;min-height:300px;position:relative;width:100%}.chart-xs{min-height:200px}.chart-sm{min-height:252px}.chart-lg{min-height:350px}.chart-xl{min-height:500px}.chart canvas{max-width:100%}.content{direction:ltr;flex:1;max-width:100vw;padding:1.5rem 1.5rem .75rem;width:100vw}@media(min-width:768px){.content{max-width:auto;width:auto}}@media(min-width:992px){.content{padding:3rem 3rem 1.5rem}}.navbar-nav .dropdown-menu{box-shadow:0 .1rem .2rem rgba(0,0,0,.05)}.dropdown .dropdown-menu.show{animation-duration:.25s;animation-fill-mode:forwards;animation-iteration-count:1;animation-name:dropdownAnimation;animation-timing-function:ease}@keyframes dropdownAnimation{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translate(0)}}.dropdown-toggle:after{border:solid;border-width:0 2px 2px 0;display:inline-block;padding:2px;transform:rotate(45deg)}.dropdown-item{transition:background .1s ease-in-out,color .1s ease-in-out}.dropdown-menu{top:auto}.dropdown-menu-lg{min-width:20rem}.dropdown .list-group .list-group-item{border-width:0 0 1px;margin-bottom:0}.dropdown .list-group .list-group-item:first-child,.dropdown .list-group .list-group-item:last-child{border-radius:0}.dropdown .list-group .list-group-item:hover{background:#f8f9fa}.dropdown-menu-header{border-bottom:1px solid #dee2e6;font-weight:600;padding:.75rem;text-align:center}.dropdown-menu-footer{display:block;font-size:.75rem;padding:.5rem;text-align:center}.feather{height:18px;stroke-width:2;width:18px}.feather-sm{height:14px;width:14px}.feather-lg{height:36px;width:36px}footer.footer{background:#fff;direction:ltr;padding:1rem .875rem}footer.footer ul{margin-bottom:0}@media(max-width:767.98px){footer.footer{width:100vw}}.hamburger,.hamburger:after,.hamburger:before{background:#495057;border-radius:1px;content:"";cursor:pointer;display:block;height:3px;transition:background .1s ease-in-out,color .1s ease-in-out;width:24px}.hamburger{position:relative}.hamburger:before{position:absolute;top:-7.5px;width:24px}.hamburger:after{bottom:-7.5px;position:absolute;width:16px}.sidebar-toggle:hover .hamburger,.sidebar-toggle:hover .hamburger:after,.sidebar-toggle:hover .hamburger:before{background:#3b7ddd}.hamburger-right,.hamburger-right:after,.hamburger-right:before{right:0}a.list-group-item{text-decoration:none}.main{background:#f5f7fb;border-bottom-left-radius:0;border-top-left-radius:0;display:flex;flex-direction:column;min-height:100vh;min-width:0;overflow:hidden;transition:margin-left .35s ease-in-out,left .35s ease-in-out,margin-right .35s ease-in-out,right .35s ease-in-out;width:100%}.navbar{border-bottom:0;box-shadow:0 0 2rem 0 rgba(33,37,41,.1)}@media(max-width:767.98px){.navbar{width:100vw}}.navbar .avatar{margin-bottom:-15px;margin-top:-15px}.navbar-nav{direction:ltr}.navbar-align{margin-left:auto}.navbar-bg{background:#fff}.navbar-brand{color:#f8f9fa;display:block;font-size:1.15rem;font-weight:400;padding:.875rem 0}.navbar-brand .feather,.navbar-brand svg{color:#3b7ddd;height:24px;margin-left:-.15rem;margin-right:.375rem;margin-top:-.375rem;width:24px}.nav-flag,.nav-icon{color:#6c757d;display:block;font-size:1.5rem;line-height:1.4;padding:.1rem .8rem;transition:background .1s ease-in-out,color .1s ease-in-out}.nav-flag:after,.nav-icon:after{display:none!important}.nav-flag.active,.nav-flag:hover,.nav-icon.active,.nav-icon:hover{color:#3b7ddd}.nav-flag .feather,.nav-flag svg,.nav-icon .feather,.nav-icon svg{height:20px;width:20px}.nav-item .indicator{background:#3b7ddd;border-radius:50%;box-shadow:0 .1rem .2rem rgba(0,0,0,.05);color:#fff;display:block;font-size:.675rem;height:18px;padding:1px;position:absolute;right:-8px;text-align:center;top:0;transition:top .1s ease-out;width:18px}.nav-item:hover .indicator{top:-4px}.nav-item a:focus{outline:0}@media (-ms-high-contrast:none),screen and (-ms-high-contrast:active){.navbar .avatar{max-height:47px}}@media(max-width:575.98px){.navbar{padding:.75rem}.nav-icon{padding:.1rem .75rem}.dropdown,.dropleft,.dropright,.dropup{position:inherit}.navbar-expand .navbar-nav .dropdown-menu-lg{min-width:100%}.nav-item .nav-link:after{display:none}}.nav-flag img{border-radius:50%;height:20px;-o-object-fit:cover;object-fit:cover;width:20px}.navbar input{direction:ltr}#root,body,html{height:100%}body{opacity:1!important;overflow-y:scroll}@media (-ms-high-contrast:none),screen and (-ms-high-contrast:active){html{overflow-x:hidden}}.sidebar{direction:ltr;max-width:260px;min-width:260px}.sidebar,.sidebar-content{background:#222e3c;transition:margin-left .35s ease-in-out,left .35s ease-in-out,margin-right .35s ease-in-out,right .35s ease-in-out}.sidebar-content{display:flex;flex-direction:column;height:100vh}.sidebar-nav{flex-grow:1;list-style:none;margin-bottom:0;padding-left:0}.sidebar-link,a.sidebar-link{background:#222e3c;border-left:3px solid transparent;color:rgba(233,236,239,.5);cursor:pointer;display:block;font-weight:400;padding:.625rem 1.625rem;position:relative;text-decoration:none;transition:background .1s ease-in-out}.sidebar-link i,.sidebar-link svg,a.sidebar-link i,a.sidebar-link svg{color:rgba(233,236,239,.5);margin-right:.75rem}.sidebar-link:focus{outline:0}.sidebar-link:hover{background:#222e3c;border-left-color:transparent}.sidebar-link:hover,.sidebar-link:hover i,.sidebar-link:hover svg{color:rgba(233,236,239,.75)}.sidebar-item.active .sidebar-link:hover,.sidebar-item.active>.sidebar-link{background:linear-gradient(90deg,rgba(59,125,221,.1),rgba(59,125,221,.088) 50%,transparent);border-left-color:#3b7ddd;color:#e9ecef}.sidebar-item.active .sidebar-link:hover i,.sidebar-item.active .sidebar-link:hover svg,.sidebar-item.active>.sidebar-link i,.sidebar-item.active>.sidebar-link svg{color:#e9ecef}.sidebar-brand{color:#f8f9fa;display:block;font-size:1.15rem;font-weight:600;padding:1.15rem 1.5rem}.sidebar-brand:hover{color:#f8f9fa;text-decoration:none}.sidebar-brand:focus{outline:0}.sidebar-toggle{cursor:pointer;display:flex;height:26px;width:26px}.sidebar.collapsed{margin-left:-260px}@media(min-width:1px)and (max-width:991.98px){.sidebar{margin-left:-260px}.sidebar.collapsed{margin-left:0}}.sidebar-toggle{margin-right:1rem}.sidebar-header{background:transparent;color:#ced4da;font-size:.75rem;padding:1.5rem 1.5rem .375rem}.sidebar-badge{position:absolute;right:15px;top:14px;z-index:1}.sidebar-cta-content{background:#2b3947;border-radius:.3rem;color:#e9ecef;margin:1.75rem;padding:1.5rem}.min-vw-50{min-width:50vw!important}.min-vh-50{min-height:50vh!important}.vw-50{width:50vw!important}.vh-50{height:50vh!important}.stat{align-items:center;background:#d3e2f7;border-radius:50%;display:flex;height:40px;justify-content:center;width:40px}.stat svg{color:#3b7ddd!important;height:18px;stroke-width:1.5;width:18px}.table tbody,.table td,.table tfoot,.table th,.table thead,.table tr,.table>:not(:last-child)>:last-child>*{border-color:var(--bs-border-color)}.table>tbody>tr>td{vertical-align:middle}.text-sm{font-size:.75rem}.text-lg{font-size:.925rem}b,strong{font-weight:600}pre.snippet{white-space:pre-wrap;word-wrap:break-word;text-align:justify}a{cursor:pointer}.wrapper{align-items:stretch;background:#222e3c;display:flex;width:100%}.cursor-grab{cursor:move;cursor:grab;cursor:-webkit-grab}.cursor-pointer{cursor:pointer}:root{--jvm-border-color:#e5e6e7;--jvm-box-shadow:0 1px 2px 0 rgba(0,0,0,.05);--jvm-tooltip-font-size:0.9rem;--jvm-tooltip-bg-color:#337ffa;--jvm-tooltip-color:#fff;--jvm-tooltip-padding:3px 5px;--jvm-tooltip-shadow:var(--jvm-box-shadow);--jvm-tooltip-radius:3px;--jvm-zoom-btn-bg-color:#292929;--jvm-zoom-btn-color:#fff;--jvm-zoom-btn-size:15px;--jvm-zoom-btn-radius:3px;--jvm-series-container-right:15px;--jvm-legend-bg-color:#fff;--jvm-legend-radius:0.15rem;--jvm-legend-margin-left:0.75rem;--jvm-legend-padding:0.6rem;--jvm-legend-title-padding-bottom:0.5rem;--jvm-legend-title-margin-bottom:0.575rem;--jvm-legend-tick-margin-top:0.575rem;--jvm-legend-tick-sample-radius:0;--jvm-legend-tick-sample-height:12px;--jvm-legend-tick-sample-width:30px;--jvm-legend-tick-text-font-size:12px;--jvm-legend-tick-text-margin-top:3px}.jvm-zoom-btn,image,text{-webkit-user-select:none;-moz-user-select:none;user-select:none}.jvm-container{height:100%;position:relative;width:100%}.jvm-tooltip{background-color:var(--jvm-tooltip-bg-color);border-radius:var(--jvm-tooltip-radius);box-shadow:var(--jvm-tooltip-shadow);color:var(--jvm-tooltip-color);display:none;font-size:var(--jvm-tooltip-font-size);padding:var(--jvm-tooltip-padding);position:absolute;white-space:nowrap}.jvm-tooltip.active{display:block}.jvm-zoom-btn{background-color:var(--jvm-zoom-btn-bg-color);border-radius:var(--jvm-zoom-btn-radius);box-sizing:border-box;color:var(--jvm-zoom-btn-color);cursor:pointer;height:var(--jvm-zoom-btn-size);left:10px;line-height:var(--jvm-zoom-btn-size);position:absolute;text-align:center;width:var(--jvm-zoom-btn-size)}.jvm-zoom-btn.jvm-zoomin{top:var(--jvm-zoom-btn-size)}.jvm-zoom-btn.jvm-zoomout{top:calc(var(--jvm-zoom-btn-size)*2 + var(--jvm-zoom-btn-size)/3)}.jvm-series-container{position:absolute;right:var(--jvm-series-container-right)}.jvm-series-container.jvm-series-h{bottom:15px}.jvm-series-container.jvm-series-v{display:flex;flex-direction:column;gap:.75rem;top:15px}.jvm-legend{background-color:var(--jvm-legend-bg-color);border:1px solid var(--jvm-border-color);border-radius:var(--jvm-legend-radius);box-shadow:var(--jvm-box-shadow);margin-left:var(--jvm-legend-margin-left);padding:var(--jvm-legend-padding)}.jvm-legend-title{border-bottom:1px solid var(--jvm-border-color);line-height:1;margin-bottom:var(--jvm-legend-title-margin-bottom);padding-bottom:var(--jvm-legend-title-padding-bottom);text-align:left}.jvm-legend-tick{align-items:center;display:flex;min-width:40px}.jvm-legend-tick:not(:first-child){margin-top:var(--jvm-legend-tick-margin-top)}.jvm-legend-tick-sample{border-radius:var(--jvm-legend-tick-sample-radius);height:var(--jvm-legend-tick-sample-height);margin-right:.45rem;width:var(--jvm-legend-tick-sample-width)}.jvm-legend-tick-text{font-size:var(--jvm-legend-tick-text-font-size);line-height:1;text-align:center}.jvm-line[animation=true]{animation:jvm-line-animation 10s linear infinite forwards}@keyframes jvm-line-animation{0%{stroke-dashoffset:250}}[data-simplebar]{align-content:flex-start;align-items:flex-start;flex-direction:column;flex-wrap:wrap;justify-content:flex-start;position:relative}.simplebar-wrapper{height:inherit;max-height:inherit;max-width:inherit;overflow:hidden;width:inherit}.simplebar-mask{direction:inherit;height:auto!important;overflow:hidden;width:auto!important;z-index:0}.simplebar-mask,.simplebar-offset{bottom:0;left:0;margin:0;padding:0;position:absolute;right:0;top:0}.simplebar-offset{box-sizing:inherit!important;direction:inherit!important;resize:none!important;-webkit-overflow-scrolling:touch}.simplebar-content-wrapper{box-sizing:border-box!important;direction:inherit;display:block;height:100%;max-height:100%;max-width:100%;position:relative;scrollbar-width:none;width:auto;-ms-overflow-style:none}.simplebar-content-wrapper::-webkit-scrollbar,.simplebar-hide-scrollbar::-webkit-scrollbar{display:none;height:0;width:0}.simplebar-content:after,.simplebar-content:before{content:" ";display:table}.simplebar-placeholder{max-height:100%;max-width:100%;pointer-events:none;width:100%}.simplebar-height-auto-observer-wrapper{box-sizing:inherit!important;flex-basis:0;flex-grow:inherit;flex-shrink:0;float:left;height:100%;margin:0;max-height:1px;max-width:1px;overflow:hidden;padding:0;pointer-events:none;position:relative;width:100%;z-index:-1}.simplebar-height-auto-observer{box-sizing:inherit;display:block;height:1000%;left:0;min-height:1px;min-width:1px;opacity:0;top:0;width:1000%;z-index:-1}.simplebar-height-auto-observer,.simplebar-track{overflow:hidden;pointer-events:none;position:absolute}.simplebar-track{bottom:0;right:0;z-index:1}[data-simplebar].simplebar-dragging .simplebar-content{pointer-events:none;-moz-user-select:none;user-select:none;-webkit-user-select:none}[data-simplebar].simplebar-dragging .simplebar-track{pointer-events:all}.simplebar-scrollbar{left:0;min-height:10px;position:absolute;right:0}.simplebar-scrollbar:before{background:#000;border-radius:7px;content:"";left:2px;opacity:0;position:absolute;right:2px;transition:opacity .2s linear}.simplebar-scrollbar.simplebar-visible:before{opacity:.5;transition:opacity 0s linear}.simplebar-track.simplebar-vertical{top:0;width:11px}.simplebar-track.simplebar-vertical .simplebar-scrollbar:before{bottom:2px;top:2px}.simplebar-track.simplebar-horizontal{height:11px;left:0}.simplebar-track.simplebar-horizontal .simplebar-scrollbar:before{height:100%;left:2px;right:2px}.simplebar-track.simplebar-horizontal .simplebar-scrollbar{height:7px;left:0;min-height:0;min-width:10px;right:auto;top:2px;width:auto}[data-simplebar-direction=rtl] .simplebar-track.simplebar-vertical{left:0;right:auto}.hs-dummy-scrollbar-size{direction:rtl;height:500px;opacity:0;overflow-x:scroll;overflow-y:hidden;position:fixed;visibility:hidden;width:500px}.simplebar-hide-scrollbar{left:0;overflow-y:scroll;position:fixed;scrollbar-width:none;visibility:hidden;-ms-overflow-style:none}.flatpickr-calendar{animation:none;background:transparent;background:#fff;border:0;border-radius:5px;box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,.08);box-sizing:border-box;direction:ltr;display:none;font-size:14px;line-height:24px;opacity:0;padding:0;position:absolute;text-align:center;touch-action:manipulation;visibility:hidden;width:307.875px}.flatpickr-calendar.inline,.flatpickr-calendar.open{max-height:640px;opacity:1;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{animation:fpFadeInDown .3s cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{display:block;z-index:999}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){box-shadow:none!important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasTime .dayContainer,.flatpickr-calendar .hasWeeks .dayContainer{border-bottom:0;border-bottom-left-radius:0;border-bottom-right-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-time{border-top:1px solid #e6e6e6;height:40px}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:after,.flatpickr-calendar:before{border:solid transparent;content:"";display:block;height:0;left:22px;pointer-events:none;position:absolute;width:0}.flatpickr-calendar.arrowRight:after,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.rightMost:before{left:auto;right:22px}.flatpickr-calendar.arrowCenter:after,.flatpickr-calendar.arrowCenter:before{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:after,.flatpickr-calendar.arrowTop:before{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:after,.flatpickr-calendar.arrowBottom:before{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{display:inline-block;position:relative}.flatpickr-months{display:flex}.flatpickr-months .flatpickr-month{background:transparent;flex:1;line-height:1;overflow:hidden;position:relative;text-align:center}.flatpickr-months .flatpickr-month,.flatpickr-months .flatpickr-next-month,.flatpickr-months .flatpickr-prev-month{color:rgba(0,0,0,.9);fill:rgba(0,0,0,.9);height:34px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.flatpickr-months .flatpickr-next-month,.flatpickr-months .flatpickr-prev-month{cursor:pointer;padding:10px;position:absolute;text-decoration:none;top:0;z-index:3}.flatpickr-months .flatpickr-next-month.flatpickr-disabled,.flatpickr-months .flatpickr-prev-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-next-month i,.flatpickr-months .flatpickr-prev-month i{position:relative}.flatpickr-months .flatpickr-next-month.flatpickr-prev-month,.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month{left:0}.flatpickr-months .flatpickr-next-month.flatpickr-next-month,.flatpickr-months .flatpickr-prev-month.flatpickr-next-month{right:0}.flatpickr-months .flatpickr-next-month:hover,.flatpickr-months .flatpickr-prev-month:hover{color:#959ea9}.flatpickr-months .flatpickr-next-month:hover svg,.flatpickr-months .flatpickr-prev-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-next-month svg,.flatpickr-months .flatpickr-prev-month svg{height:14px;width:14px}.flatpickr-months .flatpickr-next-month svg path,.flatpickr-months .flatpickr-prev-month svg path{fill:inherit;transition:fill .1s}.numInputWrapper{height:auto;position:relative}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-inner-spin-button,.numInputWrapper input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.numInputWrapper span{border:1px solid rgba(57,57,57,.15);box-sizing:border-box;cursor:pointer;height:50%;line-height:50%;opacity:0;padding:0 4px 0 2px;position:absolute;right:0;width:14px}.numInputWrapper span:hover{background:rgba(0,0,0,.1)}.numInputWrapper span:active{background:rgba(0,0,0,.2)}.numInputWrapper span:after{content:"";display:block;position:absolute}.numInputWrapper span.arrowUp{border-bottom:0;top:0}.numInputWrapper span.arrowUp:after{border-bottom:4px solid rgba(57,57,57,.6);border-left:4px solid transparent;border-right:4px solid transparent;top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,.6);top:40%}.numInputWrapper span svg{height:auto;width:inherit}.numInputWrapper span svg path{fill:rgba(0,0,0,.5)}.numInputWrapper:hover{background:rgba(0,0,0,.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{color:inherit;display:inline-block;font-size:135%;font-weight:300;height:34px;left:12.5%;line-height:inherit;line-height:1;padding:7.48px 0 0;position:absolute;text-align:center;transform:translateZ(0);width:75%}.flatpickr-current-month span.cur-month{color:inherit;display:inline-block;font-family:inherit;font-weight:700;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,.05)}.flatpickr-current-month .numInputWrapper{display:inline-block;width:6ch;width:7ch\0}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,.9)}.flatpickr-current-month input.cur-year{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield;background:transparent;border:0;border-radius:0;box-sizing:border-box;color:inherit;cursor:text;display:inline-block;font-family:inherit;font-size:inherit;font-weight:300;height:auto;line-height:inherit;margin:0;padding:0 0 0 .5ch;vertical-align:initial}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{background:transparent;color:rgba(0,0,0,.5);font-size:100%;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;-webkit-appearance:menulist;-moz-appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;-webkit-box-sizing:border-box;color:inherit;cursor:pointer;font-family:inherit;font-size:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:active,.flatpickr-current-month .flatpickr-monthDropdown-months:focus{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{align-items:center;background:transparent;display:flex;height:28px;overflow:hidden;text-align:center;width:100%}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:flex;flex:1}span.flatpickr-weekday{background:transparent;color:rgba(0,0,0,.54);cursor:default;display:block;flex:1;font-size:90%;font-weight:bolder;line-height:1;margin:0;text-align:center}.dayContainer,.flatpickr-weeks{padding:1px 0 0}.flatpickr-days{align-items:flex-start;display:flex;overflow:hidden;position:relative;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{box-sizing:border-box;display:inline-block;display:flex;flex-wrap:wrap;-ms-flex-wrap:wrap;justify-content:space-around;max-width:307.875px;min-width:307.875px;opacity:1;outline:0;padding:0;text-align:left;transform:translateZ(0);width:307.875px}.dayContainer+.dayContainer{box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;box-sizing:border-box;color:#393939;cursor:pointer;display:inline-block;flex-basis:14.2857143%;font-weight:400;height:39px;justify-content:center;line-height:39px;margin:0;max-width:39px;position:relative;text-align:center;width:14.2857143%}.flatpickr-day.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day.nextMonthDay:focus,.flatpickr-day.nextMonthDay:hover,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.today.inRange,.flatpickr-day:focus,.flatpickr-day:hover{background:#e6e6e6;border-color:#e6e6e6;cursor:pointer;outline:0}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:focus,.flatpickr-day.today:hover{background:#959ea9;border-color:#959ea9;color:#fff}.flatpickr-day.endRange,.flatpickr-day.endRange.inRange,.flatpickr-day.endRange.nextMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.endRange:focus,.flatpickr-day.endRange:hover,.flatpickr-day.selected,.flatpickr-day.selected.inRange,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.selected:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange,.flatpickr-day.startRange.inRange,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.startRange:focus,.flatpickr-day.startRange:hover{background:#569ff7;border-color:#569ff7;box-shadow:none;color:#fff}.flatpickr-day.endRange.startRange,.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.endRange.endRange,.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.endRange.startRange+.endRange:not(:nth-child(7n+1)),.flatpickr-day.selected.startRange+.endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange+.endRange:not(:nth-child(7n+1)){box-shadow:-10px 0 0 #569ff7}.flatpickr-day.endRange.startRange.endRange,.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.nextMonthDay,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.prevMonthDay{background:transparent;border-color:transparent;color:rgba(57,57,57,.3);cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{color:rgba(57,57,57,.1);cursor:not-allowed}.flatpickr-day.week.selected{border-radius:0;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{box-shadow:1px 0 0 #e6e6e6;padding:0 12px}.flatpickr-weekwrapper .flatpickr-weekday{float:none;line-height:28px;width:100%}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{background:transparent;border:none;color:rgba(57,57,57,.3);cursor:default;display:block;max-width:none;width:100%}.flatpickr-innerContainer{box-sizing:border-box;display:block;display:flex;overflow:hidden}.flatpickr-rContainer{box-sizing:border-box;display:inline-block;padding:0}.flatpickr-time{box-sizing:border-box;display:block;display:flex;height:0;line-height:40px;max-height:40px;outline:0;overflow:hidden;text-align:center}.flatpickr-time:after{clear:both;content:"";display:table}.flatpickr-time .numInputWrapper{flex:1;float:left;height:40px;width:40%}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield;background:transparent;border:0;border-radius:0;box-shadow:none;box-sizing:border-box;color:#393939;font-size:14px;height:inherit;line-height:inherit;margin:0;padding:0;position:relative;text-align:center}.flatpickr-time input.flatpickr-hour{font-weight:700}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{border:0;outline:0}.flatpickr-time .flatpickr-am-pm,.flatpickr-time .flatpickr-time-separator{align-self:center;color:#393939;float:left;font-weight:700;height:inherit;line-height:inherit;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:2%}.flatpickr-time .flatpickr-am-pm{cursor:pointer;font-weight:400;outline:0;text-align:center;width:18%}.flatpickr-time .flatpickr-am-pm:focus,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time input:hover{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@keyframes fpFadeInDown{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}.flatpickr-calendar.inline{background:transparent;box-shadow:none;width:100%}.flatpickr-calendar.inline .flatpickr-days{width:100%}.flatpickr-calendar.inline .dayContainer{max-width:100%;min-width:100%;width:100%}.flatpickr-calendar.inline .flatpickr-day{border-radius:.2rem;height:45px;line-height:45px;max-width:inherit}.flatpickr-calendar.inline .flatpickr-day.today{border:0}.flatpickr-calendar.inline .flatpickr-day.today:before{border-color:rgba(0,0,0,.2) transparent #3b7ddd;border-style:solid;border-width:0 0 7px 7px;bottom:4px;content:"";display:inline-block;position:absolute;right:4px}.flatpickr-calendar.inline .flatpickr-day.today.selected:before{border-color:rgba(0,0,0,.2) transparent #fff}.flatpickr-calendar.inline .flatpickr-day.today:hover{background:#e6e6e6;color:#000}.flatpickr-calendar.inline .flatpickr-day.selected,.flatpickr-calendar.inline .flatpickr-day.selected:focus,.flatpickr-calendar.inline .flatpickr-day.selected:hover{background:#3b7ddd;border-radius:.2rem;color:#fff}.flatpickr-calendar.inline .flatpickr-weekdays{height:45px}.flatpickr-calendar.inline .flatpickr-weekday{height:45px;line-height:45px}.flatpickr-calendar.inline .flatpickr-months .flatpickr-month,.flatpickr-calendar.inline .flatpickr-months .flatpickr-next-month,.flatpickr-calendar.inline .flatpickr-months .flatpickr-prev-month{height:45px}.flatpickr-calendar.inline .flatpickr-current-month{height:45px;line-height:45px;padding-top:0}.flatpickr-calendar.inline .flatpickr-current-month .flatpickr-monthDropdown-months{-webkit-appearance:none;-moz-appearance:none;appearance:none}.flatpickr-calendar.inline .flatpickr-current-month .flatpickr-monthDropdown-months,.flatpickr-calendar.inline .flatpickr-current-month input.cur-year{font-size:1.09375rem;font-weight:400}.flatpickr-calendar.inline .flatpickr-next-month,.flatpickr-calendar.inline .flatpickr-prev-month{border-radius:.2rem;width:45px}.flatpickr-calendar.inline .flatpickr-next-month:hover,.flatpickr-calendar.inline .flatpickr-prev-month:hover{background:#e6e6e6;color:#000}.simplebar-scrollbar:before{background:#fff}.simplebar-content{display:flex;flex-direction:column;height:100vh;padding-bottom:0!important}[data-simplebar]{left:0;position:-webkit-sticky;position:sticky;top:0;width:260px} -/*# sourceMappingURL=app.css.map*/ \ No newline at end of file diff --git a/static/css/app.css.map b/static/css/app.css.map deleted file mode 100644 index f01a9d5..0000000 --- a/static/css/app.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"css/app.css","mappings":"AAAA;;;;;EAAA,CAAC,4BCSG,qQAIA,sMAIA,iKAIA,wNAIA,iRAIA,iPAIA,iRAGF,2BACA,qBAMA,wMACA,mGACA,4EAOA,gDC2OI,4BALI,CDpOR,0BACA,0BAKA,wBACA,6BACA,qBACA,6BAEA,yBACA,8BAEA,wCACA,kCACA,0BACA,kCAEA,sCACA,iCACA,yBACA,iCAGA,wBAEA,wBACA,+BACA,0BAEA,8BACA,qCAGE,qCAGF,wBACA,6BACA,0BAGA,sBACA,wBACA,0BACA,+CAEA,0BACA,6BACA,6BACA,2BACA,4BACA,mDACA,8BAGA,gDACA,oDACA,mDACA,uDAIA,8BACA,6BACA,2CAIA,8BACA,qCACA,gCACA,uCEhHF,iBAGE,sBAeE,6CANJ,MAOM,wBAcN,KAQE,mCAFA,2BAJA,uCD6OI,kCALI,CCtOR,uCACA,uCAJA,SAMA,qCAEA,8BACA,0CASF,GAGE,SACA,wCAFA,aCmnB4B,CDpnB5B,cAIA,WCynB4B,CD/mB9B,0CAOE,8BAFA,eEuDqB,CFtDrB,eCwjB4B,CD5jB5B,mBCwjB4B,CDzjB5B,YAMA,CAGF,ODmMM,iBALI,CCzLV,OD8LM,oBALI,CCpLV,ODyLM,mBALI,CC/KV,ODoLM,oBALI,CCrKV,cD0KM,iBALI,CC1JV,EAEE,mBADA,YCyV0B,CD9U5B,YAEE,YADA,0EAEA,oEAMF,QAEE,kBACA,oBAFA,kBAEA,CAMF,MAEE,kBAGF,SAIE,mBADA,YACA,CAGF,wBAIE,gBAGF,GACE,eE5KiB,CFiLnB,GACE,oBACA,cAMF,WACE,gBAQF,SAEE,kBCsa4B,CD9Z9B,aD6EM,aALI,CCjEV,WAGE,wCADA,gCADA,eAEA,CASF,QD0DM,eALI,CCjDR,cAFA,kBAGA,wBAGF,kBACA,cAKA,EACE,8DACA,oBE1HgB,CF4HhB,QACE,mDACA,yBE7HoB,CFuItB,4DAEE,cACA,qBAOJ,kBAIE,oCCgV4B,CFlUxB,aALI,CCDV,IACE,cDKI,cCHJ,mBADA,aAEA,aDHQ,CCQR,SAEE,cDLE,iBALI,CCWN,kBAIJ,KAEE,2BDZI,aALI,CCkBR,qBAGA,OACE,cAIJ,IAIE,qCC25CkC,CEhsDhC,oBHoSF,uBC25CkC,CFn7C9B,aALI,CC2BR,wBGlSE,CHwSF,QD5BI,cC6BF,SDlCM,CC6CV,OACE,gBAMF,QAEE,sBAQF,MAEE,yBADA,mBACA,CAGF,QAGE,+BC4Z4B,CD7Z5B,qBE7HqB,CF4HrB,kBE5HqB,CF+HrB,gBAOF,GAEE,mBACA,gCAGF,2BAQE,cAAa,CAFb,oBAEA,CAQF,MACE,qBAMF,OAEE,gBAQF,iCACE,UAKF,sCAME,oBD5HI,iBALI,CCmIR,oBAHA,QAGA,CAIF,cAEE,oBAKF,cACE,eAGF,OAGE,iBAGA,gBACE,UAOJ,0IACE,uBAQF,gDAIE,0BAGE,4GACE,eAON,mBAEE,kBADA,SACA,CAKF,SACE,gBAUF,SAIE,QAAO,CADP,SAFA,YACA,SAEA,CAQF,OACE,WDlNI,iBCuNJ,oBAFA,mBCmN4B,CDpN5B,UADA,UDxNQ,CC+NR,SACE,WAOJ,+OAOE,UAGF,4BACE,YASF,cACE,6BACA,oBAGA,4CACE,eACA,oBAoBJ,4BACE,wBAKF,+BACE,UAOF,6BAEE,0BADA,YACA,CAFF,uBAEE,0BADA,YACA,CAKF,OACE,qBAKF,OACE,SAOF,QAEE,eADA,iBACA,CAQF,SACE,wBAQF,SACE,uBI3kBF,MLmQM,oBALI,CK5PR,eHwoB4B,CGnoB5B,WL4PI,cALI,CKvPR,sBAGE,eH0nBkB,CGznBlB,eLmPM,CKvPR,WL4PI,gBALI,CKvPR,WL4PI,gBALI,CKvPR,sBAGE,eH0nBkB,CGznBlB,eLmPM,CKvPR,WL4PI,gBALI,CKvPR,WL4PI,cALI,CKvPR,sBAGE,eH0nBkB,CGznBlB,eLmPM,CKvPR,WL4PI,gBALI,CK1NV,4BC3DE,gBADA,cACA,CD8DF,kBACE,qBAEA,mCACE,kBHsoB0B,CG5nB9B,YL8MM,aALI,CKvMR,yBAIF,YLwMM,qBKvMJ,kBLkMQ,CK/LR,wBACE,gBAIJ,mBAIE,cL2LI,aALI,CKxLR,kBFrFO,CEoFP,gBFpBS,CEyBT,0BACE,aE1FJ,0BCCE,YAHA,cAGA,CDDF,eAEE,kCL+jDkC,CK9jDlC,2DHGE,sCGLF,cCAA,CDcF,QAEE,qBAGF,YAEE,aAAY,CADZ,mBACA,CAGF,gBAEE,gCPuPI,aE2zC8B,COplDlC,oFCHA,sBACA,gBAKA,iBADA,kBADA,yCADA,0CADA,UAIA,CCsDE,wBF5CE,yBACE,eNoBe,EQuBnB,wBF5CE,uCACE,eNoBe,EQuBnB,wBF5CE,qDACE,eNoBe,EQuBnB,yBF5CE,mEACE,gBNoBe,ESpCvB,MAEI,qJAKF,KCNA,mBACA,gBACA,aACA,eAIA,yCADA,0CADA,sCAEA,CDEE,OCOF,cAKA,8BAHA,eAEA,yCADA,0CAFA,UAIA,CA+CI,KACE,WAGF,iBApCJ,cACA,WAcA,cACE,cACA,WAFF,cACE,cACA,UAFF,cACE,cACA,mBAFF,cACE,cACA,UAFF,cACE,cACA,UAFF,cACE,cACA,mBA+BE,UAhDJ,cACA,WAqDQ,OAhEN,cACA,kBA+DM,OAhEN,cACA,mBA+DM,OAhEN,cACA,UA+DM,OAhEN,cACA,mBA+DM,OAhEN,cACA,mBA+DM,OAhEN,cACA,UA+DM,OAhEN,cACA,mBA+DM,OAhEN,cACA,mBA+DM,OAhEN,cACA,UA+DM,QAhEN,cACA,mBA+DM,QAhEN,cACA,mBA+DM,QAhEN,cACA,WAuEQ,UAxDV,wBAwDU,UAxDV,yBAwDU,UAxDV,gBAwDU,UAxDV,yBAwDU,UAxDV,yBAwDU,UAxDV,gBAwDU,UAxDV,yBAwDU,UAxDV,yBAwDU,UAxDV,gBAwDU,WAxDV,yBAwDU,WAxDV,yBAmEM,WAEE,gBAGF,WAEE,gBAPF,WAEE,sBAGF,WAEE,sBAPF,WAEE,qBAGF,WAEE,qBAPF,WAEE,mBAGF,WAEE,mBAPF,WAEE,qBAGF,WAEE,qBAPF,WAEE,mBAGF,WAEE,mBAPF,WAEE,qBAGF,WAEE,qBAPF,WAEE,mBAGF,WAEE,mBF1DN,wBEUE,QACE,WAGF,oBApCJ,cACA,WAcA,iBACE,cACA,WAFF,iBACE,cACA,UAFF,iBACE,cACA,mBAFF,iBACE,cACA,UAFF,iBACE,cACA,UAFF,iBACE,cACA,mBA+BE,aAhDJ,cACA,WAqDQ,UAhEN,cACA,kBA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,UA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,UA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,UA+DM,WAhEN,cACA,mBA+DM,WAhEN,cACA,mBA+DM,WAhEN,cACA,WAuEQ,aAxDV,cAwDU,aAxDV,wBAwDU,aAxDV,yBAwDU,aAxDV,gBAwDU,aAxDV,yBAwDU,aAxDV,yBAwDU,aAxDV,gBAwDU,aAxDV,yBAwDU,aAxDV,yBAwDU,aAxDV,gBAwDU,cAxDV,yBAwDU,cAxDV,yBAmEM,iBAEE,gBAGF,iBAEE,gBAPF,iBAEE,sBAGF,iBAEE,sBAPF,iBAEE,qBAGF,iBAEE,qBAPF,iBAEE,mBAGF,iBAEE,mBAPF,iBAEE,qBAGF,iBAEE,qBAPF,iBAEE,mBAGF,iBAEE,mBAPF,iBAEE,qBAGF,iBAEE,qBAPF,iBAEE,mBAGF,iBAEE,oBF1DN,wBEUE,QACE,WAGF,oBApCJ,cACA,WAcA,iBACE,cACA,WAFF,iBACE,cACA,UAFF,iBACE,cACA,mBAFF,iBACE,cACA,UAFF,iBACE,cACA,UAFF,iBACE,cACA,mBA+BE,aAhDJ,cACA,WAqDQ,UAhEN,cACA,kBA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,UA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,UA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,UA+DM,WAhEN,cACA,mBA+DM,WAhEN,cACA,mBA+DM,WAhEN,cACA,WAuEQ,aAxDV,cAwDU,aAxDV,wBAwDU,aAxDV,yBAwDU,aAxDV,gBAwDU,aAxDV,yBAwDU,aAxDV,yBAwDU,aAxDV,gBAwDU,aAxDV,yBAwDU,aAxDV,yBAwDU,aAxDV,gBAwDU,cAxDV,yBAwDU,cAxDV,yBAmEM,iBAEE,gBAGF,iBAEE,gBAPF,iBAEE,sBAGF,iBAEE,sBAPF,iBAEE,qBAGF,iBAEE,qBAPF,iBAEE,mBAGF,iBAEE,mBAPF,iBAEE,qBAGF,iBAEE,qBAPF,iBAEE,mBAGF,iBAEE,mBAPF,iBAEE,qBAGF,iBAEE,qBAPF,iBAEE,mBAGF,iBAEE,oBF1DN,wBEUE,QACE,WAGF,oBApCJ,cACA,WAcA,iBACE,cACA,WAFF,iBACE,cACA,UAFF,iBACE,cACA,mBAFF,iBACE,cACA,UAFF,iBACE,cACA,UAFF,iBACE,cACA,mBA+BE,aAhDJ,cACA,WAqDQ,UAhEN,cACA,kBA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,UA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,UA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,UA+DM,WAhEN,cACA,mBA+DM,WAhEN,cACA,mBA+DM,WAhEN,cACA,WAuEQ,aAxDV,cAwDU,aAxDV,wBAwDU,aAxDV,yBAwDU,aAxDV,gBAwDU,aAxDV,yBAwDU,aAxDV,yBAwDU,aAxDV,gBAwDU,aAxDV,yBAwDU,aAxDV,yBAwDU,aAxDV,gBAwDU,cAxDV,yBAwDU,cAxDV,yBAmEM,iBAEE,gBAGF,iBAEE,gBAPF,iBAEE,sBAGF,iBAEE,sBAPF,iBAEE,qBAGF,iBAEE,qBAPF,iBAEE,mBAGF,iBAEE,mBAPF,iBAEE,qBAGF,iBAEE,qBAPF,iBAEE,mBAGF,iBAEE,mBAPF,iBAEE,qBAGF,iBAEE,qBAPF,iBAEE,mBAGF,iBAEE,oBF1DN,yBEUE,QACE,WAGF,oBApCJ,cACA,WAcA,iBACE,cACA,WAFF,iBACE,cACA,UAFF,iBACE,cACA,mBAFF,iBACE,cACA,UAFF,iBACE,cACA,UAFF,iBACE,cACA,mBA+BE,aAhDJ,cACA,WAqDQ,UAhEN,cACA,kBA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,UA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,UA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,UA+DM,WAhEN,cACA,mBA+DM,WAhEN,cACA,mBA+DM,WAhEN,cACA,WAuEQ,aAxDV,cAwDU,aAxDV,wBAwDU,aAxDV,yBAwDU,aAxDV,gBAwDU,aAxDV,yBAwDU,aAxDV,yBAwDU,aAxDV,gBAwDU,aAxDV,yBAwDU,aAxDV,yBAwDU,aAxDV,gBAwDU,cAxDV,yBAwDU,cAxDV,yBAmEM,iBAEE,gBAGF,iBAEE,gBAPF,iBAEE,sBAGF,iBAEE,sBAPF,iBAEE,qBAGF,iBAEE,qBAPF,iBAEE,mBAGF,iBAEE,mBAPF,iBAEE,qBAGF,iBAEE,qBAPF,iBAEE,mBAGF,iBAEE,mBAPF,iBAEE,qBAGF,iBAEE,qBAPF,iBAEE,mBAGF,iBAEE,oBF1DN,yBEUE,SACE,WAGF,qBApCJ,cACA,WAcA,kBACE,cACA,WAFF,kBACE,cACA,UAFF,kBACE,cACA,mBAFF,kBACE,cACA,UAFF,kBACE,cACA,UAFF,kBACE,cACA,mBA+BE,cAhDJ,cACA,WAqDQ,WAhEN,cACA,kBA+DM,WAhEN,cACA,mBA+DM,WAhEN,cACA,UA+DM,WAhEN,cACA,mBA+DM,WAhEN,cACA,mBA+DM,WAhEN,cACA,UA+DM,WAhEN,cACA,mBA+DM,WAhEN,cACA,mBA+DM,WAhEN,cACA,UA+DM,YAhEN,cACA,mBA+DM,YAhEN,cACA,mBA+DM,YAhEN,cACA,WAuEQ,cAxDV,cAwDU,cAxDV,wBAwDU,cAxDV,yBAwDU,cAxDV,gBAwDU,cAxDV,yBAwDU,cAxDV,yBAwDU,cAxDV,gBAwDU,cAxDV,yBAwDU,cAxDV,yBAwDU,cAxDV,gBAwDU,eAxDV,yBAwDU,eAxDV,yBAmEM,mBAEE,gBAGF,mBAEE,gBAPF,mBAEE,sBAGF,mBAEE,sBAPF,mBAEE,qBAGF,mBAEE,qBAPF,mBAEE,mBAGF,mBAEE,mBAPF,mBAEE,qBAGF,mBAEE,qBAPF,mBAEE,mBAGF,mBAEE,mBAPF,mBAEE,qBAGF,mBAEE,qBAPF,mBAEE,mBAGF,mBAEE,oBCrHV,OAEE,8BACA,2BACA,+BACA,4BAEA,0CACA,0BACA,+CACA,iCACA,kDACA,8BACA,iDACA,4DACA,gDACA,qCAKA,0CAFA,kBXVO,CWWP,kBZusB4B,CYzsB5B,UAGA,CAOA,yBAIE,oCACA,0CZ+sB0B,CY9sB1B,yGAHA,mFAFA,cAKA,CAGF,aACE,uBAGF,aACE,sBAIJ,qBACE,gDAOF,aACE,iBAUA,4BACE,cAeF,gCACE,sCAGA,kCACE,sCAOJ,oCACE,sBAGF,qCACE,mBAkBF,kGACE,oDACA,8CAQJ,cACE,oDACA,8CAQA,8BACE,mDACA,6CC5IF,eAOE,sBACA,sBACA,gCACA,8BACA,8BACA,6BACA,6BACA,4BACA,2BAGA,CAlBF,gCAkBE,0CADA,2BACA,CAlBF,iBAOE,sBACA,sBACA,gCACA,8BACA,8BACA,6BACA,6BACA,4BACA,2BAGA,CAlBF,eAOE,sBACA,sBACA,gCACA,8BACA,8BACA,6BACA,6BACA,4BACA,2BAGA,CAlBF,2BAkBE,0CADA,2BACA,CAlBF,YAOE,sBACA,sBACA,gCACA,8BACA,8BACA,6BACA,6BACA,4BACA,2BAGA,CAlBF,eAOE,sBACA,sBACA,gCACA,8BACA,8BACA,6BACA,6BACA,4BACA,2BAGA,CAlBF,6BAkBE,0CADA,2BACA,CAlBF,cAOE,sBACA,sBACA,gCACA,8BACA,8BACA,6BACA,6BACA,4BACA,2BAGA,CAlBF,aAOE,sBACA,sBACA,gCACA,8BACA,8BACA,6BACA,6BACA,4BACA,2BAGA,CAlBF,yBAkBE,0CADA,2BACA,CAlBF,YAOE,sBACA,sBACA,gCACA,8BACA,8BACA,6BACA,6BACA,4BACA,2BAGA,CDiJA,kBACE,gBACA,iCH3FF,2BGyFA,qBACE,gBACA,kCH3FF,2BGyFA,qBACE,gBACA,kCH3FF,2BGyFA,qBACE,gBACA,kCH3FF,4BGyFA,qBACE,gBACA,kCH3FF,4BGyFA,sBACE,gBACA,kCEnKN,YACE,mBdu2BsC,Cc91BxC,gBhBiRM,iBALI,CgBrQR,gBAJA,gBADA,iCADA,6BbmHiB,CazGnB,mBhBsQM,kBgBpQJ,iCADA,6BhBgQQ,CgB3PV,mBhBgQM,iBgB9PJ,iCADA,6BhB0PQ,CiBtRV,WAKE,gCjBsRI,aALI,CiBrRR,iBfm2BsC,CgBp2BxC,cASE,6DAEA,4BADA,qBfyDS,CevDT,wCdGE,sCcPF,afkES,CezET,clB0RI,iBALI,CkBhRR,efLmB,CeMnB,efuHiB,Ce3HjB,qBCSI,qEDVJ,UAgBA,CCFI,sCDhBN,cCiBQ,iBDGN,yBACE,gBAEA,wDACE,eAKJ,oBAEE,qBfoCO,CenCP,oBhB82BoC,CgBx2BlC,6CARF,af4CO,CezCP,ShBuhBoB,CgB9gBtB,2CAYE,aAKA,QAAO,CAXP,cAWA,CAKF,qCACE,cACA,UAIF,gCACE,+BhB40BoC,CgB10BpC,UAHF,2BACE,+BhB40BoC,CgB10BpC,UAQF,uBAEE,wBfdO,CeiBP,UAIF,0CAEE,sBADA,qBAEA,yBfsGkB,CiBnMpB,sClBqiCgC,CgBl8B9B,eAFA,qBAGA,2BfuBW,CetBX,gBAPA,afpBO,CemBP,wBfsGkB,CenGlB,oBCpFE,qID0FF,CC1FE,6HD0FF,CAZF,oCAEE,sBADA,qBAEA,yBfsGkB,CiBnMpB,sClBqiCgC,CgBl8B9B,eAFA,qBAGA,2BfuBW,CetBX,gBAPA,afpBO,CemBP,wBfsGkB,CenGlB,oBCpFE,6HD0FF,CCtFE,sCD0EJ,0CCzEM,wCDyEN,oCCzEM,iBDwFN,+EACE,uChB47B8B,CgB77BhC,yEACE,uChB47B8B,CgBn7BlC,wBAOE,6BAEA,4CAHA,0BhB2xBsC,CgBhyBtC,cAIA,efMiB,CePjB,gBADA,gBADA,UAOA,CAEA,8BACE,UAGF,gFAGE,cAAa,CADb,eACA,CAWJ,iBdjII,yCJ4QE,gBALI,CkBrIR,+BfwDgB,CevDhB,mBdnIE,CcuIF,6CAEE,qBADA,oBAEA,wBhBooB0B,CgBpoB1B,uBhBooB0B,CgBvoB5B,uCAEE,qBADA,oBAEA,wBhBooB0B,CgBpoB1B,uBhBooB0B,CgBhoB9B,iBd9II,yCJ4QE,iBALI,CkBxHR,gCf6CgB,Ce5ChB,kBdhJE,CcoJF,6CAEE,oBADA,mBAEA,uBhB2nB0B,CgB3nB1B,sBhB2nB0B,CgB9nB5B,uCAEE,oBADA,mBAEA,uBhB2nB0B,CgB3nB1B,sBhB2nB0B,CgBnnB5B,sBACE,gCfwBW,CerBb,yBACE,+BfsBc,CenBhB,yBACE,gCfoBc,CeflB,oBAEE,4BfSa,CeRb,cAFA,UfGoB,CeCpB,mDACE,eAGF,uCACE,mBdvLA,sCc2LF,0CACE,mBd5LA,sCcgMF,+DfNgB,CeOhB,gEfLgB,CkB1MlB,aACE,qQAYA,CAEA,uBACA,qBACA,uCjBHE,gFeHE,CAIA,uCEfN,CFWM,2BAIA,CEfN,yBFgBQ,CEMN,uCnBu3BsC,CmBr3BpC,qCAKE,CAdJ,cAFA,+BACA,gCACA,CAFA,mCAgBI,oEAIJ,CApBA,UAoBA,uCAGE,aAGF,oCAEE,oBAKF,4CAEE,CAFF,SAEE,2DnB4uB0B,qBE9wB1B,CiBwCF,oBjBxCE,+CiB8CJ,6BAEE,iBACA,0BrB2NI,iBsBzRJ,wCAEA,CAHA,gBACA,ClBaE,oBkBfJ,mBACE,ClBcE,iBkBXF,iBASA,wCAEA,CAHF,iBACE,CAPA,oBAEE,kBAIJ,CANE,iBASA,aAEA,cAEE,qBACA,CAHF,oBACE,mBAEA,CAIJ,8BACE,6BAGA,qBAGA,cACA,CAFA,mBACA,CACA,kEACA,mCACA,0CAGA,uBACA,8EACA,+CAGA,wBAIA,CAJA,4BAIA,kFAME,CAlBF,aACA,WACA,kBAgBE,gCAGF,CAnBA,kBACA,CAFA,UAoBA,kBACE,yBAEA,kCAGF,kDnBLQ,iBmBON,0BAEA,sBAII,0FAIJ,CAJI,SAIJ,2BAII,6CAKN,8SAsBI,uCAgBJ,4KAOE,gDlBhHA,wBeHE,oRGkIE,uCAKN,YALM,mBAKN,4FAIE,cACE,YACA,+BAKN,gCAEE,oLC7JA,CAEA,yCACA,sBACA,mBAHA,kBACA,CAEA,+CAOE,CAXF,SAWE,uFrB8gCuC,qCqB7gCvC,0KAUA,wCACA,wBAEA,wKJhBE,sHIUJ,aJLM,CIKN,mBJLM,wCIgBJ,+CHjCF,uClB8hCyC,CqBx/BzC,mDAGE,uBACA,CAHA,mBAGA,aAEA,4CnB7BA,gBmBkCF,6BAEE,CARA,uBrBu+B8B,CqBv+B9B,UAQA,mBACA,kDpBIM,8DgB5CJ,6KAIA,uBIiCJ,gBJhCM,kCI0CJ,oBJ3CE,+BI2CF,8GAOA,uGAIA,CJ1DE,UI0DF,uCAKF,kCAGE,yCACE,iEAIA,4CCpFJ,gEAGE,mBACA,CAJF,iCAFA,YAEA,CAFA,UAME,+BAIF,oBACE,gBAEA,yBAEA,SACA,mBACA,CtB6hCoC,WsBpiCtC,CAOE,2GAKA,uGLPE,CKRF,ULQE,qEAIA,oBKTJ,uDAmBA,wBAEE,+BAEA,uCACE,yBADF,iKAIA,4HAEE,gBACA,iBAHF,+LAaA,4BACA,CARA,wCACE,CADF,YAHE,qBAGF,qCAMF,mBACE,CAXE,kBAKA,uCACA,CANA,KACA,CAWF,oBACA,6DAOA,CAdE,kBAIJ,CATI,SAmBF,uCACE,oCADF,kMACE,gHAMA,oIAUA,sBACA,CAHA,oBAGA,qMADA,sBACA,CAHA,oBAGA,uGASF,uBAJA,oBAIA,6BAKF,2CAJI,oBAIJ,2DCvFA,0DAMA,oLAUA,0DAGE,qDAQA,0DAeF,4DAQA,qBACA,sCACA,CAHA,UACA,CAFA,YACA,CAHA,kBAEA,CzB0OI,iByB5OJ,CAEA,UAIA,uGAUF,qBAIE,sCrBpDE,CqBgDJ,uErBhDI,8CqByDJ,oKrBzDI,aqBkEJ,cAEE,mBAaE,CAfJ,2BAEE,CAFF,kBAeI,uWrBhEA,mBqByEA,mIrB1EA,YACA,CqByEA,kDrBzEA,oBqByEA,wJAaF,yCrBtFE,iBqBsFF,CrBvFE,kBqBuFF,mHrBxEE,wCqB6EF,CrB9EE,gBACA,CqByEA,mBAIF,gFC5EE,iqBAmBI,4BAKE,CALF,yBAKE,2IA8BJ,2BACE,CADF,yCACE,wHApGJ,2BAyHE,CAzHF,wBAyHE,iBAEA,iCAFA,aAEA,gCAFA,UAEA,gBAKE,wEAGF,CAHE,WAJA,YAGF,iBACE,CADF,qDAHE,oCAOF,+HAMF,wEAzIA,iUAoJM,qE1BqIJ,8C0B5PJ,uDAIE,mE1BwPE,8C0BjPF,mFAKA,0HA7CA,6JA+DE,gCACE,sDAKE,mWArEN,4BAyHE,kCAEA,CA3HF,aAyHE,gCAzHF,UA2HE,kBAIA,uEACE,CADF,WAJA,YACE,CAGF,iBAHE,gBAGF,CAHE,oCADF,oCAKE,+IAIA,4EAKJ,gDAzIA,uWCAF,gDAEA,sDAEA,uEAGA,gDAEA,uFAEA,6CACA,mFACA,qDACA,2GAIA,kCACA,wD3BsQI,gB2BpQJ,+VPvBA,SDYI,sIAIA,yBQhBN,oCAuCI,kDAEA,iFAIF,wCAEE,iFAKF,+BACE,+EAEA,CAiCA,kCAHA,kEAGA,2CAZF,0BAKE,eA1BA,oBACA,CASF,qCACE,kCACA,CAKE,2EAIJ,CAfI,uDAIJ,CAWA,kBAYE,6HAUF,CAjBE,wBACA,uCAGA,CATF,qBAsBA,uCAKI,iCAOF,uCACA,8CACA,CALF,oDAKE,uBAEA,iCACA,wCCnGF,CDkGE,yBClGF,oBAEA,uCAEA,wFACA,CAJA,+BACA,CAEA,SACA,4EACA,CACA,yCACA,CAFA,SAEA,oGAEA,uFAEA,CAHA,gCAGA,0KATA,yCACA,uCACA,6FAGA,2FACA,CAHA,kCACA,CAEA,uCAFA,mBAEA,cACA,qEACA,0BACA,0BAZA,oCAGA,qCACA,sDACA,qCAEA,wDACA,6BACA,oEACA,wDACA,6BACA,oDDmGA,oCC5GA,sCACA,sDACA,qCAEA,wDACA,6BACA,oEACA,mFACA,0BACA,0BAZA,oCAGA,qCACA,sDACA,qCAEA,wDACA,6BACA,+EACA,qEACA,0BACA,0BACA,CDkGA,mCC7GA,qCAEA,sDACA,qCAEA,wDACA,0DACA,qDACA,qEACA,0BACA,0BACA,oCAXA,qCAEA,sDACA,qCACA,wDAEA,0DACA,uEACA,kDACA,2BACA,yBACA,oCAXA,oCACA,CACA,qDACA,qCAEA,wDACA,0DACA,sEACA,kDACA,0BACA,0BD6HA,oCC9GA,sCACA,2BACA,2BAEA,qCAGA,wDACA,6BACA,oEACA,WACA,mBDmGA,oBChHA,8BACA,0BACA,0BAEA,oCAEA,mCAEA,sDAEA,qCAEA,wDDoGA,6BC/GA,6BACA,uCACA,sBACA,oDACA,0BACA,0BACA,oCACA,qCACA,sDACA,qCACA,wDAEA,gCAbA,iCACA,uCACA,mBACA,wBACA,uBACA,uDACA,0BACA,oCACA,sCACA,sDACA,qCACA,wDAEA,gCAbA,iCACA,uCACA,CACA,wCACA,sBACA,wDACA,0BACA,oCACA,qCACA,sDACA,qCACA,wDAEA,gCAbA,iCACA,uCAEA,sCACA,oDACA,0BACA,0BACA,oCACA,qCACA,sDACA,qCACA,wDAEA,gCAbA,iCACA,uCAEA,yCACA,sBACA,wDACA,0BACA,oCACA,qCACA,sDACA,qCACA,wDAEA,gCAbA,iCACA,uCAEA,wCACA,sBACA,wDACA,0BACA,oCACA,oCACA,sDACA,qCACA,wDAEA,gCDgHA,iCACA,uCAEA,uCACA,oDACA,0BACA,8DACA,sCACA,2BACA,gEAEA,wDAOA,iEAKA,uCACE,mBAGF,mBACE,sBAWJ,8BCjJE,0BACA,0B5B8NI,oC4B5NJ,mCDkJF,2BCrJE,2BACA,qC5B8NI,wD6B/RN,gCVoBM,wEUjBJ,mBAOA,mCAKF,oCVCM,wBAIA,kCULN,gDAKE,wCVJI,iDAIA,yCACE,gCWpBR,0EASA,qCCyBI,qBACE,yCAEA,yBApCJ,yBACA,0CACA,+BACA,4BA0DE,yBACE,wBD5CJ,4BACA,kDAEA,qDACA,0B9BuQI,2B8BrQJ,kDACA,OACA,qEACA,iDACA,+CACA,2FACA,6DACA,sCACA,CADA,OACA,uCACA,+CACA,wEACA,mCACA,0CAIA,kDACA,CAFA,mCACA,CAFA,qBACA,CADA,WADA,kBACA,sBAGA,8BACA,cACA,wCAGA,8BACA,0BACA,+BACA,8BACA,0E9B2OI,sB8BxOJ,8DAGA,oDACA,kDACA,yFAIA,4DAGE,sCAyBE,8CAEA,8CAOA,oDAEA,CACE,iDAbJ,qCAGE,gGAOA,CAEA,sEnBxCF,mCmB6BE,oCAEA,sCAEE,CASA,2BnB1CJ,CmBwCE,sCAEE,CnB1CJ,4EmB+BE,+CAMF,CALI,8BAMF,CAEA,aATA,sCACE,CAMF,eAEA,CATA,SASA,sCnBxCF,kEmB+BE,CAMF,kBACE,gBADF,iEAGE,2CnBxCF,CmBwCE,QnBxCF,sBmB4BA,yDAGE,qCACE,iBAKJ,oCAGE,0CACE,wBAWN,4DAIE,OADA,UACA,wCCpFA,uCAEE,SACA,CADA,OACA,0BACA,wBA7BJ,4DAEA,wCAmDE,wDDiEF,2CAEE,wBAGA,4DCjGE,OADF,UACE,uBACA,iBACA,uCAtBJ,4CAEA,2CACA,yCA6CI,OADF,UACE,uBD0EF,iBACE,uCAMJ,iBACE,2BAGA,yBACA,6DClHE,yCAEA,kB7B2hBwB,uC6B9gBtB,UADF,OACE,yCAIA,WACA,wCAEA,CAFA,aADA,QAhCN,gCDoIE,2DAQJ,CCpGI,mCD4FA,CC5FA,aAtCF,UAsCE,CAxCF,oBACA,mBACA,sBD0IF,sCAEE,sDAEA,UACA,qCAQA,CATA,YACA,CADA,gBASA,iCAKA,oCAGA,uBACA,CALA,cACA,CAFA,iCACA,CADA,WAFA,6DAQA,uC1BtKE,8C0ByKF,gBAEE,2CACA,SV3LF,uCU+LA,CV/LA,aU2LE,gBAIF,mCAGE,UVlMF,CUiME,qBVjMF,YUsMA,CALE,wCVjMF,CUsMA,mCAWA,oCAMA,CAPF,uBACE,CAPE,iCAMJ,CAPI,UACA,CAJF,oBAEE,0CAeF,0F9BoEI,gBALI,C8B5DR,kBAMA,kDACA,CAPA,qDAKF,CAEE,UAFF,eAEE,gBAUA,4BACA,SACA,sDACA,CALA,WACA,oCATA,aACA,CAOA,eACA,CARA,2EAOA,CACA,kBACA,oBATA,UAYA,2CAEA,iDACA,CAFA,8DAEA,6CEpPF,kDAGE,CFkPA,0CACA,qBEnPA,iDAUA,6BAPA,4CAEE,oBAKF,gQAWF,mCAGE,CAdA,yFAcA,gDAGE,yB5BZA,8D4BoBF,4DAEE,oCAIF,iJ5BVE,qC4BoBF,6G5BLE,oBADA,iBACA,sB4BwBJ,0CAIE,cAFA,iBAEA,mXAkBA,uBAoBF,2BACE,2BACA,2BACA,UAEA,iDAEE,sFAGF,gBAEE,sJ5BrFA,4B4BkGF,C5BnGE,yB4BmGF,8G5BjHE,2BACA,C4BgHF,wB5BhHE,wB6BrBF,sBADA,sBACA,yGAIA,uDACA,wFAUF,oBAEE,CALA,qBAKA,0EjCsQI,mBiCpQJ,CjCoQI,oBiCpQJ,qBACA,sBAEA,CAHA,qBACA,CAEA,sBddI,gKAKE,ecaN,sHAYA,4BAJE,4BAIF,yIAcA,wBACA,4DACA,+BACA,0HACA,uDACA,6BACA,gCADA,cACA,WAME,eACA,UADA,+BANF,cAGA,iFAGE,CANF,iEAGA,CAIE,iG7B7CA,uCACA,yB6B+CA,sEAIE,8CAIJ,6CAJI,SAIJ,uCAEE,uCACA,eACA,CADA,mBACA,4DAGF,kDAEE,oD7BhEA,2G6B8EF,yDAIA,+C7B5FE,uG6BkGA,oFAYF,qBAEA,wDAGA,wDAGE,yDAEA,CAVF,sDAUE,qDAEA,uDAEE,CAFF,iBAEE,+DAOF,kDACA,yDAYA,CAhBF,0CAgBE,0BAMF,wBAGE,0BAOF,CAfE,mDAeF,gEACE,sCAWA,sCC1LJ,sBAEE,+CACA,CACA,uDACA,mDACA,CAFA,2CAEA,2CACA,uGAEA,gCACA,0BACA,oEACA,CADA,eADA,eAEA,+DACA,gCACA,gEAGA,iCADA,+CACA,CADA,eACA,yCACA,kFACA,YACA,CADA,YACA,mFACA,kCAIA,aACA,qBACA,aACA,uCACA,yFAMA,iIAGE,8DAsBF,qCACA,sEACA,6DAEA,mEAIA,sCAEE,sCACA,sCAWF,uCAGA,qRAaE,yEAMF,0DAWA,uCAEA,4DAEA,CAGE,kBAaJ,CAbI,4BAaJ,6BAKE,8DAKA,CA1BA,iBA0BA,qIAIA,kBACA,CAFA,YACA,mBACA,4CftIM,kCe2IJ,Cf5IE,0CACE,CALF,8CAIA,CfDF,+CeHE,Ce2IJ,4C9BxIE,C8B6IA,kBAGF,yCAEE,wCACA,sBAMJ,qCACE,+BAGA,4BACA,2CACA,uDAEA,6DAIA,mCvBzHE,CuBsIA,eAEI,CvBxIJ,euBsIA,CvBtIA,cuBwII,yDAGA,mCAGE,2CACE,cAIA,6BADF,sCACE,0DACA,mCAIJ,kBAIA,mBAHE,eAGF,CAHE,WAGF,iBAeE,4BACA,0EAEA,qDAMA,CAXA,4BAEA,CANF,4CAGE,cACA,CAZA,6EAQF,CAeE,8CACE,uCAGF,+BAEE,wBAEA,oBvB5LR,uBuBwII,qDAGA,CAHA,UAFJ,oBAKI,sBAOE,iDACE,wBACA,CADA,4BACA,qBARF,oBAEA,mCAIA,CAJA,WAME,oBAIJ,uCACE,gBAGF,yBACE,kCACA,2BAGF,+BAIA,gEAIE,iBACA,yCAGA,gDAEA,CAHA,iDAGA,sCAKA,oDAIA,sCACE,mCAGA,0CA9CF,yDAIA,CAVF,WACA,sBAEA,CvB3IJ,euBsIA,CAYM,wCACE,CARJ,4BAGE,CALF,qBAHJ,YAaQ,gDACA,0DAIJ,yBACE,kBAGF,CAJA,SAIA,0BACE,kCACA,2BAGF,+BAIA,gEAIE,iBACA,yCAGA,gDAEA,CAHA,iDAGA,sCAKA,oDAIA,sCACE,mCAGA,0CA9CF,yDACE,CAPJ,WACA,sBAEA,CvB3IJ,euBsIA,CAYM,wCACE,CARJ,4BAGE,CALF,qBAHJ,YAaQ,4DACA,8CAIJ,yBACE,kBAGF,CAJA,SAIA,4CACE,gBACA,2BAGF,+BAIA,gEAIE,iBACA,yCAGA,gDAEA,CAHA,iDAGA,sCAKA,oDAIA,uCACE,kCAEA,YACA,8BAhDF,sCAEA,mBACE,CAPJ,YACA,qBAEA,CvB3IJ,euBsIA,CASQ,wBAGF,iBAPF,4BACE,CAHF,qBAHJ,YAYM,gDACE,YACA,8CAIJ,yBACE,kBAGF,CAJA,SAIA,6CACE,gBACA,2BAGF,+BACE,kBAGF,8CAIE,iBACA,yCAGA,gDAEA,CAHA,iDAGA,sCAKA,oDACE,sBAGF,mDAEE,YAEA,8BA9CF,sCAIA,oBATF,YAEA,qBACE,CANN,eAEI,CAUE,wBACE,iBAPF,4BAEA,CALF,oBAEA,CAHA,YAWI,gDACA,0DAKF,wBAGF,mBACE,CADF,SACE,2BACA,mBAGF,2CAIA,gCAGE,kBACA,+CAEA,iBACA,0CAGA,gDAKA,CAPA,iDAOA,uCAIA,qDACE,sBAGA,oDAiBZ,YAGE,+BAGA,sCACA,mBACA,CAJA,YACA,sBAFA,eACA,CAIA,wCACA,CAJA,4BACA,CAFA,oBACA,CADA,YAKA,6DACA,4DClRF,WAEE,mBACA,CADA,SACA,iCACA,2BACA,yFACA,iBACA,sCAGA,gDACA,CAHA,iDAGA,mCACA,gBACA,iCACA,sBACA,gBACA,gCACA,YACA,2BASA,sCACA,mBACA,CATA,YAGA,qBAEA,CANA,gBAUA,wBACA,iBALA,4BAEA,CAPA,oBAGA,CAJA,YAWA,6CAEA,mE/BjBE,+B+BqBF,C/BrBE,S+BsBA,0CAIF,qCAEE,4C/BnBA,6EACA,gE+B0BE,oD/BbF,wR+BmCF,iCACA,2BAGF,gCACE,8BAEA,2BAIA,yBAIA,mCAIA,gCACE,uBAQJ,sCACE,6DAEA,sBACA,yCACA,uEAEA,4B/B7FE,C+BmGF,2B/BnGE,+D+BmGF,C/BnGE,8B+BmGF,qBACA,0BACA,CAFA,kCACA,CACA,oEACA,2CAEA,U/BxGE,oE+BkHJ,C/BlHI,kB+BkHJ,+BACE,yDACA,2DACA,CAFA,kBAEA,8BAKE,4DAKF,CAPA,6DAEE,CAFF,qBAOA,+DACA,wBAUA,2BANF,aACE,wDAKA,aAIF,iC/B9II,2C+B8IJ,gB/BrII,mCACA,C+BuIF,kD/BvIE,sCADA,eACA,kB+B+IJ,oB/BlII,0DACA,cOoBA,sCwB+HA,4EAQE,CAZF,8BxB3HA,CwB2HA,gB/B/IA,iE+B2JE,0BACE,uF/BnKJ,c+B4KM,sCAKA,0EALA,+B/B5KN,iE+BiLM,yBAGE,uF/BtKR,mB+BkLM,gBALA,sGAKA,C/BlLN,mD+BkLM,sEAGE,sCChOV,oBAGA,kDAEA,CAJA,mDAIA,mBAIA,gDpC+QI,CoChRJ,0DACA,CAJA,yBAGA,CAHA,KpCmRI,0CoC7QJ,UACA,yBACA,yDAGA,2DhCJE,4BiCbF,4DACA,CD2BF,6DC3BE,mBACA,kEACA,2CACA,6CACA,yBACA,cADA,aACA,oCACA,4BACA,CADA,yBACA,kGACA,yBACA,qGAEA,iEACA,2BACA,CADA,wBACA,oGAKA,wBACA,uGAQF,2BACE,CACA,mCAEA,oDAEE,2BACA,sBAQJ,iDAGE,CjCxBE,2CACA,CiC2BF,4BAJA,qBACA,mCAEA,wCACA,eAJA,2DACA,CAGA,kBAEA,uBjC9BE,CiC4BF,kBjC3BE,ciCiCF,0CjCpBE,sBACA,0CiCuBF,yFAGE,oDACA,sDAMA,oCACA,sCACA,uDAIF,4DAGE,sDACE,yDACA,wDAYJ,yDACA,CAIE,iHAGE,4CACA,CAIF,gDACE,CALA,YACA,sCAGF,CAHE,cAIA,sBACA,sBADA,oBACA,8CAcA,kCAGE,4CAKA,wCjC1EJ,iFiC+EI,CALA,iCjC9DJ,6FiC8DI,CALA,iBAUA,4DAIA,6DAEE,iCAEA,CAHA,kCAGA,qDAEE,iD1BxFR,C0BuFQ,6D1BvFR,yB0BoEI,qGjCzDJ,CiCqDA,uCAII,CAJJ,SjCrDA,mCAZA,kBiC0EI,0CjC1EJ,kDAYA,CiC8DI,qDjC9DJ,yBiCmEI,uCAIA,oBAJA,UAIA,uFAIE,qDACE,CAHF,6CAEA,sBAFA,SAGE,6CAvBR,sDAII,CAoBI,8CApBJ,gHjCzDJ,4DiC8DI,gGAKA,4BjC/EJ,0DiCgFM,gDAGF,sEAIE,oBAHA,kDAGA,iEAEE,mDAxBR,CAuBQ,sDAvBR,yBACE,0BAGE,2FjCzDJ,4DiC8DI,mGAKA,4BjC/EJ,0DiC+EI,mDAIA,yEAIE,oBAHA,kDAGA,oEAEE,mDAxBR,CAuBQ,sDAvBR,0BACE,0BAGE,2FjCzDJ,4DiC8DI,mGAKA,4BjC/EJ,0DiC+EI,mDAIA,yEAIE,oBAHA,kDAGA,oEAEE,mDAxBR,CAuBQ,sDAvBR,0BACE,0BAGE,2FjCzDJ,4DiC8DI,mGAKA,4BjC/EJ,0DiC+EI,mDAIA,yEAIE,oBAHA,kDAGA,oEAEE,mDjCpIR,CiCmIQ,sDjCnIR,2BiCqJF,0BACE,2FAGE,4DAcF,mGAGA,4BADA,0DACA,mDACA,yEAEA,oBADA,kDACA,oEAEA,mDACA,CAFA,sDAEA,sDAVF,kBACE,0EACA,4DACA,0BACA,0EAEA,4BADA,0DACA,oDACA,0EAEA,oBADA,kDACA,qEARA,mDACA,CAQA,sDARA,uEACA,kDACA,+CACA,oGACA,+CACA,6DACA,4DACA,gEACA,6DATA,iEACA,yDACA,0DACA,oEACA,4BACA,wGACA,+DACA,4DACA,kEACA,CAVF,4DACE,mEAEA,4DACA,4DACA,qEACA,+EACA,+CACA,6DACA,4DACA,gEAVF,6DACE,iEAEA,yDACA,0DACA,oEACA,yEACA,4CACA,0DACA,4DACA,6DAVF,6DACE,8DAEA,uDACA,uHACA,0BACA,qDACA,gDACA,4DACA,4DACA,gEAVF,6DACE,iEAEA,yDACA,0DACA,oEACA,6EACA,8CACA,4DACA,4DACA,+DC5LF,6DACA,gEAEA,wDACA,yDAEA,mEAKA,wBAEA,mDACA,wGlCFE,4DkCSF,8DAGE,6DAKA,+DACA,uDAGF,wDAGE,kEACA,uBAQJ,kDAHE,4CAOF,0DCpDI,4DCAA,2xBADA,+DACA,+BCDA,sCACA,qGADA,uBACA,gFAGE,CAHF,cADA,SAIE,6BAHF,+BAOI,CAJF,iBAIE,0CADA,oBACA,0JAPJ,6CAFF,mBACE,gEACA,uJAGE,sBAHF,aAGE,kBAGE,6EACA,CADA,oBACA,0IARJ,6EACA,CAFF,oBAEE,6MAMI,CANJ,oBAMI,6FACA,CADA,oBACA,+HARJ,0EACA,CAFF,oBAEE,0LAGE,+FAIE,8LARJ,oFACA,gMAGE,iGAIE,gMARJ,mFACA,0LAMI,+FACA,8LARJ,oFACA,iLAMI,4FACA,wLARJ,oFACA,0LAMI,+FACA,8LAQN,oFACA,uLAGE,8FAEE,uCACA,sOCvBJ,oLCCC,CAAD,2LACA,6FAKE,qFxBUE,6EwBAF,oGClBJ,4FAMI,mCAKA,uDAUA,0FADF,kFChBA,CACA,oBAGF,2EAcM,8GAOA,sGALA,qDAIA,6EANA,gHAOA,wGALA,mBAGF,8IALE,CAKF,SAJE,YAKA,mBACA,kCC7BJ,2BAEA,CDsBI,mBAGF,YACE,uFANA,+EAMA,4BC1BJ,gBAKA,iBACA,CANA,aACA,CAGF,UACE,CACA,oCAEA,CAPA,SAOA,uCCRF,8FCME,8DAGA,oCACA,eAIA,WAJA,aACA,mCAGA,2EACE,uBAIF,kFACE,gCCnBF,YACE,KAKA,0BAHA,MACA,CAHA,eACA,OACA,CACA,YCJF,CDME,cEPJ,QDCE,aEHA,MACA,2BFGA,uBELA,iBACA,YAIA,CAHA,eAEA,QACA,yBCmEU,6EAPJ,gBAOI,gCAPJ,QAOI,0BAPJ,oBAOI,yEAPJ,aAOI,kIAPJ,gBAOI,mEAPJ,eAOI,MAPJ,wDAOI,8BAPJ,kBAOI,mDAPJ,KAOI,2EAPJ,cAOI,2BAPJ,4BAOI,mBAPJ,iBAOI,kBAPJ,sBAOI,aAPJ,sHAOI,CAPJ,qBAOI,0BAPJ,CAOI,mBAPJ,CAOI,mBAPJ,6BAOI,sJAPJ,2BAOI,yGAPJ,uBAOI,SAPJ,UAOI,0BAPJ,OAOI,MAPJ,CAOI,wCAPJ,uBAOI,wBAPJ,kBAOI,8BAPJ,CAOI,oBAPJ,eAOI,0DAPJ,iCAOI,YAPJ,2CAOI,iGAPJ,oCAOI,iBAPJ,iCAOI,cAjBJ,oBACE,kEADF,oDACE,sJADF,0BACE,yKADF,mBACE,gFADF,qBACE,wEADF,kBACE,sEASF,kBAOI,yBAPJ,kBAOI,6CAPJ,2BAOI,iDAPJ,oBAOI,0IAPJ,gDAOI,0NAPJ,UAOI,2GAPJ,+BAOI,4PAPJ,8CAOI,wRAPJ,kBAOI,+QAHI,CAGJ,8FAHI,6FAGJ,kBAPJ,yBAOI,8FAHI,iBAGJ,2EAPJ,0BAIQ,uBAGJ,iEAPJ,kBAIQ,gCAGJ,4DAPJ,WAIQ,8BAGJ,wEAPJ,UAIQ,oBAGJ,gFAPJ,oCAOI,kEAPJ,kHAOI,2IAPJ,aAOI,kIAPJ,gBAOI,uIAPJ,eAOI,0FAPJ,iBAOI,uBAPJ,CAOI,iHAjBJ,mBACE,qBADF,oHACE,4EASF,cAOI,8FAPJ,iBAOI,qBAPJ,4EAOI,gBAPJ,qBAOI,uMAPJ,qBAOI,6GAPJ,0EAOI,oCAPJ,2EAOI,uGAPJ,yDAOI,kGAPJ,mDAOI,CAPJ,oGAOI,kNAPJ,0BAOI,0EAPJ,WAOI,qCAPJ,0BAOI,oBAPJ,uBAOI,4CAPJ,oBAOI,uBAPJ,oBAOI,6CAPJ,qBAOI,0BAPJ,0BAOI,2BAPJ,2BAOI,6BAPJ,iCAOI,SAPJ,qBAOI,sCAPJ,OAOI,0EAPJ,6BAOI,8BAPJ,kCAOI,SAPJ,sBAOI,aAPJ,sCAOI,8HAPJ,oCAOI,2EAPJ,qBAOI,mCAPJ,CAOI,sDAPJ,uBAOI,oCAPJ,cAOI,isCAPJ,sBAOI,8EAPJ,cAOI,kBAPJ,UAOI,2BAPJ,iBAOI,iFAPJ,UAOI,gIAPJ,MAOI,2BAPJ,uBAOI,mFAPJ,CAOI,4DAPJ,wBAOI,mGAPJ,CAOI,4BAPJ,iCAOI,4TAPJ,CAOI,2BAPJ,gCAOI,8BAPJ,8BAOI,CAPJ,gEAOI,0BAPJ,OAOI,6DAPJ,8BAOI,41BAPJ,2BAOI,0gBAPJ,OAOI,mCAPJ,0BAOI,UAPJ,0BAOI,yHAPJ,OAOI,6BAPJ,wBAOI,+SAPJ,gEAOI,62BAPJ,6BAOI,oCAPJ,CAOI,2JAPJ,+BAOI,QAPJ,sCAOI,qgBAPJ,CAOI,iCAPJ,wBAOI,sFAPJ,OAOI,icAPJ,wDAOI,iCAPJ,CAOI,uBAPJ,CAOI,qCAPJ,CAOI,4BAPJ,CAOI,MAPJ,+BAOI,2BAPJ,oCAOI,4BAPJ,MAOI,gCAPJ,4BAOI,qCAPJ,0BAOI,uCAPJ,4BAOI,6FAPJ,OAOI,8DAPJ,iCAOI,0CAPJ,0BAOI,0CAPJ,0BAOI,wLAPJ,4BAOI,OAPJ,8BAOI,OAPJ,4BAOI,OAPJ,0BAOI,OAPJ,+BAOI,OAPJ,8BAOI,OAPJ,6BAOI,OAPJ,+BAOI,yZAPJ,QAOI,4BAPJ,mBAOI,0BAPJ,CAOI,4BAPJ,yBAOI,4BAPJ,0BAOI,2CAPJ,wBAOI,oCAPJ,iCAOI,sEAPJ,oCAOI,mGAPJ,eAOI,4DAPJ,eAIQ,+BAGJ,wEAHI,0BAGJ,2EAHI,6CAGJ,yCAPJ,gCAOI,yEAPJ,0BAOI,sEAPJ,2BAIQ,OAGJ,kEAPJ,OAIQ,8BAGJ,wCAHI,wCAGJ,yCAPJ,YAIQ,6BAGJ,yEAHI,qCAGJ,uBAPJ,yBAIQ,CAGJ,6FAPJ,yBAIQ,aAGJ,oCAPJ,0BAOI,yCAPJ,uBAIQ,8BAGJ,4BAPJ,mCAIQ,+BAGJ,sCAHI,iBAGJ,mDAPJ,kCAOI,kBAjBJ,gKAUA,gCAOI,kCAPJ,mEAOI,iBAPJ,mBAOI,uGAPJ,mEAOI,CAPJ,8BAOI,mLAjBJ,mBACE,kEADF,aACE,oBAIA,gEALF,YACE,mBAIA,gEAJA,gCAIA,iEAJA,gCAIA,iEAYE,+BAKF,sEALE,0EAYE,mCAnBN,+BAOI,gBAKF,sDAOI,sBAnBN,mBAIQ,0CAGJ,+KAPJ,2CAIQ,kBAGJ,kNAPJ,CAIQ,0EAGJ,gKAPJ,+CAOI,yMAPJ,CAOI,uLAPJ,qBAIQ,CAGJ,yIAHI,0CAGJ,uHAHI,0CAGJ,iMAPJ,6FAOI,+JAjBJ,+FAMI,yBANJ,6BACE,qGADF,6FAKE,sBACE,6BANJ,kGAMI,0FADF,yBACE,+NAWA,qDAPJ,oGAOI,CAPJ,2FAOI,uBAPJ,6BAOI,8LAHI,sBAGJ,kXAPJ,iGAOI,8FAPJ,CAOI,kGAPJ,kEAOI,iCAhBF,kGADF,kEAUA,gCAOI,2NAPJ,iBAOI,kMAPJ,iBAOI,kgBAPJ,yEAOI,4BAPJ,0EAOI,uGAPJ,iBAOI,mNAPJ,+EAOI,mDAPJ,oBAOI,uEAPJ,iBAOI,iHAPJ,wDAOI,0EAPJ,iBAOI,6HAPJ,mBAOI,0PAPJ,kBAOI,6NAPJ,kCAOI,kGAPJ,UAOI,0eAPJ,oDAOI,sOAPJ,2DAOI,+LAPJ,gBAOI,wHAPJ,gBAOI,iWAPJ,mBAOI,uMAPJ,yDAOI,uDAPJ,mCAOI,gBAPJ,+DAOI,8ZAPJ,CAOI,4DAPJ,gBAOI,gEAPJ,CAOI,6DAPJ,qBAOI,4dAPJ,8DAOI,gkBAPJ,gEAOI,+DAPJ,CAOI,wCAPJ,sFAOI,kFAPJ,2DAOI,yDAPJ,kBAOI,qCAPJ,CAOI,kCAPJ,CAOI,+EAPJ,4DAOI,kBAPJ,2DAOI,2EAPJ,8DAOI,0NAPJ,+DAOI,6DAPJ,uBAOI,iGAPJ,oKAOI,YAPJ,2BAOI,iCAPJ,yBAOI,4CAPJ,yBAOI,yCAPJ,oBAOI,oDAPJ,oBAOI,wBAPJ,+BAOI,6BAPJ,sBAOI,6BAPJ,2BAOI,qBAPJ,4BAOI,0BAPJ,sBAOI,kCAPJ,gCAOI,qBAPJ,4BAOI,2BAPJ,qCAOI,kDAPJ,CAOI,+CAPJ,sBAOI,oFAPJ,iBAOI,2BAPJ,kBAOI,4BAPJ,kCAOI,mBAPJ,6BAOI,kCAPJ,eAOI,uBAPJ,2DAOI,0KAPJ,qBAOI,CAPJ,gBAOI,kFAPJ,sCAOI,wBAPJ,CAOI,4HAPJ,oCAOI,yBAPJ,kCAOI,4BAPJ,gCAOI,kTAPJ,wBAOI,6GAPJ,6BAOI,0OAPJ,CAOI,6DAPJ,2BAOI,mLAPJ,uBAOI,sJAPJ,kBAOI,aAPJ,iBAOI,0FAPJ,aAOI,8BAPJ,iBAOI,gBAPJ,iBAOI,0FAPJ,SAOI,8BAPJ,uBAOI,4FAPJ,YAOI,qBAPJ,UAOI,yJAPJ,CAOI,4BAPJ,oCAOI,oIAPJ,CAOI,2BAPJ,UAOI,0DAPJ,oCAOI,oEAPJ,2BAOI,mCAPJ,CAOI,sBAPJ,wCAOI,sCAPJ,6BAOI,CAPJ,0BAOI,uCAPJ,yBAOI,yCAPJ,2BAOI,uCAPJ,yBAOI,4lBAPJ,4BAOI,+CAPJ,6BAOI,qCAPJ,UAOI,kYAPJ,4BAOI,aAPJ,4BAOI,UAPJ,uBAOI,+NAPJ,UAOI,0BAPJ,aAOI,0BAPJ,UAOI,kCAPJ,uBAOI,kGAPJ,UAOI,kCAPJ,sBAOI,yCAPJ,8BAOI,2GAPJ,CAOI,4BAPJ,wCAOI,qEAPJ,CAOI,4BAPJ,WAOI,iNAPJ,8BAOI,uCAPJ,6BAOI,sCAPJ,+BAOI,wCAPJ,6BAOI,sCAPJ,+BAOI,wCAPJ,6BAOI,kEAPJ,WAOI,kHAPJ,0BAOI,uCAPJ,WAOI,sMAPJ,4BAOI,8KAPJ,wCAOI,+BAPJ,WAOI,+OAPJ,6BAOI,WAPJ,2BAOI,WAPJ,6BAOI,WAPJ,2BAOI,6FAPJ,SAOI,uBAPJ,gCAOI,SAPJ,sBAOI,0EAPJ,wBAOI,kEAPJ,8BAOI,yGAPJ,CAOI,4BAPJ,uCAOI,gCAPJ,SAOI,qOAPJ,uBAOI,UAPJ,sEAOI,8BAPJ,CAOI,2BAPJ,UAOI,6BAPJ,CAOI,0BAPJ,yCAOI,8BAPJ,SAOI,8BAPJ,0BAOI,yKAPJ,UAOI,iEAPJ,UAOI,gEAPJ,UAOI,gEAPJ,UAOI,6DAPJ,wCAOI,uCAPJ,UAOI,oEAPJ,UAOI,oEAPJ,UAOI,4BAPJ,UAOI,0BAPJ,yC1CHJ,wC0CUQ,gRAPJ,UAOI,iEAPJ,UAOI,kEAPJ,uCAOI,qCAPJ,WAOI,0BAPJ,oBAOI,8BAPJ,WAOI,kBAPJ,WAOI,+BAPJ,kBAOI,+BAPJ,WAOI,kBAPJ,eAOI,kCAPJ,wBAOI,eAPJ,uBAOI,eAPJ,sBAOI,qMAPJ,uBAOI,gGAPJ,0DAOI,kBAPJ,wDAOI,kBAPJ,gCAOI,sGAPJ,kDAOI,4BAPJ,kBAOI,8BAPJ,0BAOI,yCAPJ,cAOI,2CAPJ,2BAOI,0CAPJ,oBAOI,oDAPJ,oBAOI,wBAPJ,+BAOI,6BAPJ,sBAOI,6BAPJ,2BAOI,qBAPJ,4BAOI,0BAPJ,sBAOI,kCAPJ,gCAOI,qBAPJ,4BAOI,2BAPJ,qCAOI,kDAPJ,CAOI,+CAPJ,sBAOI,oFAPJ,iBAOI,2BAPJ,kBAOI,4BAPJ,kCAOI,mBAPJ,6BAOI,kCAPJ,eAOI,uBAPJ,2DAOI,0KAPJ,qBAOI,CAPJ,gBAOI,kFAPJ,sCAOI,wBAPJ,CAOI,4HAPJ,oCAOI,yBAPJ,kCAOI,4BAPJ,gCAOI,kTAPJ,wBAOI,6GAPJ,6BAOI,0OAPJ,CAOI,6DAPJ,2BAOI,mLAPJ,uBAOI,sJAPJ,kBAOI,aAPJ,iBAOI,0FAPJ,aAOI,8BAPJ,iBAOI,gBAPJ,iBAOI,0FAPJ,SAOI,8BAPJ,uBAOI,4FAPJ,YAOI,qBAPJ,UAOI,yJAPJ,CAOI,4BAPJ,oCAOI,oIAPJ,CAOI,2BAPJ,UAOI,0DAPJ,oCAOI,oEAPJ,2BAOI,mCAPJ,CAOI,sBAPJ,wCAOI,sCAPJ,6BAOI,CAPJ,0BAOI,uCAPJ,yBAOI,yCAPJ,2BAOI,uCAPJ,yBAOI,4lBAPJ,4BAOI,+CAPJ,6BAOI,qCAPJ,UAOI,kYAPJ,4BAOI,aAPJ,4BAOI,UAPJ,uBAOI,+NAPJ,UAOI,0BAPJ,aAOI,0BAPJ,UAOI,kCAPJ,uBAOI,kGAPJ,UAOI,kCAPJ,sBAOI,yCAPJ,8BAOI,2GAPJ,CAOI,4BAPJ,wCAOI,qEAPJ,CAOI,4BAPJ,WAOI,iNAPJ,8BAOI,uCAPJ,6BAOI,sCAPJ,+BAOI,wCAPJ,6BAOI,sCAPJ,+BAOI,wCAPJ,6BAOI,kEAPJ,WAOI,kHAPJ,0BAOI,uCAPJ,WAOI,sMAPJ,4BAOI,8KAPJ,wCAOI,+BAPJ,WAOI,+OAPJ,6BAOI,WAPJ,2BAOI,WAPJ,6BAOI,WAPJ,2BAOI,6FAPJ,SAOI,uBAPJ,gCAOI,SAPJ,sBAOI,0EAPJ,wBAOI,kEAPJ,8BAOI,yGAPJ,CAOI,4BAPJ,uCAOI,gCAPJ,SAOI,qOAPJ,uBAOI,UAPJ,sEAOI,8BAPJ,CAOI,2BAPJ,UAOI,6BAPJ,CAOI,0BAPJ,yCAOI,8BAPJ,SAOI,8BAPJ,0BAOI,yKAPJ,UAOI,iEAPJ,UAOI,gEAPJ,UAOI,gEAPJ,UAOI,6DAPJ,wCAOI,uCAPJ,UAOI,oEAPJ,UAOI,oEAPJ,UAOI,4BAPJ,UAOI,0BAPJ,yC1CHJ,wC0CUQ,gRAPJ,UAOI,iEAPJ,UAOI,kEAPJ,uCAOI,qCAPJ,WAOI,0BAPJ,oBAOI,8BAPJ,WAOI,kBAPJ,WAOI,+BAPJ,kBAOI,+BAPJ,WAOI,kBAPJ,eAOI,kCAPJ,wBAOI,eAPJ,uBAOI,eAPJ,sBAOI,qMAPJ,uBAOI,gGAPJ,0DAOI,kBAPJ,wDAOI,kBAPJ,gCAOI,sGAPJ,kDAOI,4BAPJ,kBAOI,8BAPJ,0BAOI,yCAPJ,cAOI,2CAPJ,2BAOI,0CAPJ,oBAOI,oDAPJ,oBAOI,wBAPJ,+BAOI,6BAPJ,sBAOI,6BAPJ,2BAOI,qBAPJ,4BAOI,0BAPJ,sBAOI,kCAPJ,gCAOI,qBAPJ,4BAOI,2BAPJ,qCAOI,kDAPJ,CAOI,+CAPJ,sBAOI,oFAPJ,iBAOI,2BAPJ,kBAOI,4BAPJ,kCAOI,mBAPJ,6BAOI,kCAPJ,eAOI,uBAPJ,2DAOI,0KAPJ,qBAOI,CAPJ,gBAOI,kFAPJ,sCAOI,wBAPJ,CAOI,4HAPJ,oCAOI,yBAPJ,kCAOI,4BAPJ,gCAOI,kTAPJ,wBAOI,6GAPJ,6BAOI,0OAPJ,CAOI,6DAPJ,2BAOI,mLAPJ,uBAOI,sJAPJ,kBAOI,aAPJ,iBAOI,0FAPJ,aAOI,8BAPJ,iBAOI,gBAPJ,iBAOI,0FAPJ,SAOI,8BAPJ,uBAOI,4FAPJ,YAOI,qBAPJ,UAOI,yJAPJ,CAOI,4BAPJ,oCAOI,oIAPJ,CAOI,2BAPJ,UAOI,0DAPJ,oCAOI,oEAPJ,2BAOI,mCAPJ,CAOI,sBAPJ,wCAOI,sCAPJ,6BAOI,CAPJ,0BAOI,uCAPJ,yBAOI,yCAPJ,2BAOI,uCAPJ,yBAOI,4lBAPJ,4BAOI,+CAPJ,6BAOI,qCAPJ,UAOI,kYAPJ,4BAOI,aAPJ,4BAOI,UAPJ,uBAOI,+NAPJ,UAOI,0BAPJ,aAOI,0BAPJ,UAOI,kCAPJ,uBAOI,kGAPJ,UAOI,kCAPJ,sBAOI,yCAPJ,8BAOI,2GAPJ,CAOI,4BAPJ,wCAOI,qEAPJ,CAOI,4BAPJ,WAOI,iNAPJ,8BAOI,uCAPJ,6BAOI,sCAPJ,+BAOI,wCAPJ,6BAOI,sCAPJ,+BAOI,wCAPJ,6BAOI,kEAPJ,WAOI,kHAPJ,0BAOI,uCAPJ,WAOI,sMAPJ,4BAOI,8KAPJ,wCAOI,+BAPJ,WAOI,+OAPJ,6BAOI,WAPJ,2BAOI,WAPJ,6BAOI,WAPJ,2BAOI,6FAPJ,SAOI,uBAPJ,gCAOI,SAPJ,sBAOI,0EAPJ,wBAOI,kEAPJ,8BAOI,yGAPJ,CAOI,4BAPJ,uCAOI,gCAPJ,SAOI,qOAPJ,uBAOI,UAPJ,sEAOI,8BAPJ,CAOI,2BAPJ,UAOI,6BAPJ,CAOI,0BAPJ,yCAOI,8BAPJ,SAOI,8BAPJ,0BAOI,yKAPJ,UAOI,iEAPJ,UAOI,gEAPJ,UAOI,gEAPJ,UAOI,6DAPJ,wCAOI,uCAPJ,UAOI,oEAPJ,UAOI,oEAPJ,UAOI,4BAPJ,UAOI,0BAPJ,yC1CHJ,wC0CUQ,gRAPJ,UAOI,iEAPJ,UAOI,kEAPJ,uCAOI,qCAPJ,WAOI,0BAPJ,oBAOI,8BAPJ,WAOI,mBAPJ,8BAOI,WAPJ,kBAOI,+BAPJ,WAOI,kBAPJ,eAOI,kCAPJ,wBAOI,eAPJ,uBAOI,eAPJ,sBAOI,qMAPJ,uBAOI,gGAPJ,0DAOI,kBAPJ,wDAOI,kBAPJ,gCAOI,sGAPJ,kDAOI,4BAPJ,kBAOI,8BAPJ,0BAOI,yCAPJ,wCAOI,iBAPJ,2BAOI,2CAPJ,oBAOI,oDAPJ,oBAOI,wBAPJ,+BAOI,6BAPJ,sBAOI,6BAPJ,2BAOI,qBAPJ,4BAOI,0BAPJ,sBAOI,kCAPJ,gCAOI,qBAPJ,4BAOI,2BAPJ,qCAOI,kDAPJ,CAOI,+CAPJ,sBAOI,oFAPJ,iBAOI,2BAPJ,kBAOI,4BAPJ,kCAOI,mBAPJ,6BAOI,kCAPJ,eAOI,uBAPJ,2DAOI,0KAPJ,qBAOI,CAPJ,gBAOI,kFAPJ,sCAOI,wBAPJ,CAOI,4HAPJ,oCAOI,yBAPJ,kCAOI,4BAPJ,gCAOI,kTAPJ,wBAOI,6GAPJ,6BAOI,0OAPJ,CAOI,6DAPJ,2BAOI,mLAPJ,uBAOI,sJAPJ,kBAOI,aAPJ,iBAOI,0FAPJ,aAOI,8BAPJ,iBAOI,gBAPJ,iBAOI,0FAPJ,SAOI,8BAPJ,uBAOI,4FAPJ,YAOI,qBAPJ,UAOI,yJAPJ,CAOI,4BAPJ,oCAOI,oIAPJ,CAOI,2BAPJ,UAOI,0DAPJ,oCAOI,oEAPJ,2BAOI,mCAPJ,CAOI,sBAPJ,wCAOI,sCAPJ,6BAOI,CAPJ,0BAOI,uCAPJ,yBAOI,yCAPJ,2BAOI,uCAPJ,yBAOI,4lBAPJ,4BAOI,+CAPJ,6BAOI,qCAPJ,UAOI,kYAPJ,4BAOI,aAPJ,4BAOI,UAPJ,uBAOI,+NAPJ,UAOI,0BAPJ,aAOI,0BAPJ,UAOI,kCAPJ,uBAOI,kGAPJ,UAOI,kCAPJ,sBAOI,yCAPJ,8BAOI,2GAPJ,CAOI,4BAPJ,wCAOI,qEAPJ,CAOI,4BAPJ,WAOI,iNAPJ,8BAOI,uCAPJ,6BAOI,sCAPJ,+BAOI,wCAPJ,6BAOI,sCAPJ,+BAOI,wCAPJ,6BAOI,kEAPJ,WAOI,kHAPJ,0BAOI,uCAPJ,WAOI,sMAPJ,4BAOI,8KAPJ,wCAOI,+BAPJ,WAOI,+OAPJ,6BAOI,WAPJ,2BAOI,WAPJ,6BAOI,WAPJ,2BAOI,6FAPJ,SAOI,uBAPJ,gCAOI,SAPJ,sBAOI,0EAPJ,wBAOI,kEAPJ,8BAOI,yGAPJ,CAOI,4BAPJ,uCAOI,gCAPJ,SAOI,qOAPJ,uBAOI,UAPJ,sEAOI,8BAPJ,CAOI,2BAPJ,UAOI,6BAPJ,CAOI,0BAPJ,yCAOI,8BAPJ,SAOI,8BAPJ,0BAOI,yKAPJ,UAOI,iEAPJ,UAOI,gEAPJ,UAOI,gEAPJ,UAOI,6DAPJ,wCAOI,uCAPJ,UAOI,oEAPJ,UAOI,oEAPJ,UAOI,4BAPJ,UAOI,0BAPJ,yC1CHJ,wC0CGI,CAOI,sHAPJ,CAOI,+EAPJ,UAOI,+DAPJ,UAOI,iEAPJ,uCAOI,+CAPJ,6BAOI,gDAPJ,eAOI,+BAPJ,WAOI,8BAPJ,kBAOI,4DAPJ,WAOI,+BAPJ,kBAOI,eAPJ,mBAOI,uCAPJ,CAOI,qCAPJ,eAOI,sBAPJ,eAOI,wBAPJ,eAOI,sBAPJ,eAOI,wBAPJ,eAOI,wCAPJ,2BAOI,uBAPJ,kBAOI,gCAPJ,4BAOI,4EAPJ,kBAOI,8BAPJ,wGAOI,kBAPJ,8BAOI,CAPJ,yBAOI,kDAPJ,4BAOI,kBAPJ,8BAOI,2BAPJ,wCAOI,wCAPJ,iBAOI,sDAPJ,iBAOI,oCAPJ,qBAOI,qCAPJ,yBAOI,+BAPJ,6BAOI,uBAPJ,6BAOI,2BAPJ,sBAOI,gJAPJ,iDAOI,0BAPJ,eAOI,wBAPJ,mDAOI,cAPJ,uBAOI,uDAPJ,6BAOI,cAPJ,uBAOI,4FAPJ,aAOI,sBAPJ,oFAOI,uCAPJ,eAOI,4BAPJ,kBAOI,6KAPJ,qBAOI,kBAPJ,yCAOI,2CAPJ,uBAOI,wCAPJ,kBAOI,kDAPJ,0HAOI,kCAPJ,6BAOI,yTAPJ,8BAOI,8GAPJ,0BAOI,4KAPJ,8BAOI,0OAPJ,uBAOI,oDAPJ,6BAOI,mIAPJ,4BAOI,kBAPJ,kBAOI,cAPJ,iBAOI,6FAPJ,cAOI,iEAPJ,iBAOI,6FAPJ,UAOI,sBAPJ,gCAOI,UAPJ,qBAOI,kGAPJ,kCAOI,oIAPJ,CAOI,4BAPJ,qCAOI,oEAPJ,6BAOI,qCAPJ,CAOI,2BAPJ,uCAOI,8BAPJ,qCAOI,qEAPJ,2BAOI,oCAPJ,CAOI,sBAPJ,yCAOI,qEAPJ,0BAOI,kbAPJ,WAOI,gEAPJ,WAOI,iVAPJ,2BAOI,yCAPJ,qCAOI,wCAPJ,WAOI,oMAPJ,4BAOI,WAPJ,8BAOI,WAPJ,4BAOI,WAPJ,8BAOI,WAPJ,4BAOI,cAPJ,4BAOI,WAPJ,uBAOI,WAPJ,4BAOI,mOAPJ,CAOI,uCAPJ,CAOI,kCAPJ,WAOI,kCAPJ,sBAOI,uGAPJ,WAOI,gEAPJ,8BAOI,6GAPJ,CAOI,4BAPJ,YAOI,6DAPJ,sCAOI,8BAPJ,yCAOI,8BAPJ,YAOI,2BAPJ,CAOI,4BAPJ,YAOI,4KAPJ,0BAOI,4CAPJ,4BAOI,0CAPJ,0BAOI,4CAPJ,4BAOI,0CAPJ,0BAOI,YAPJ,4BAOI,uCAPJ,YAOI,oHAPJ,4BAOI,uCAPJ,WAOI,iZAPJ,YAOI,yPAPJ,2BAOI,YAPJ,6BAOI,YAPJ,2BAOI,YAPJ,6BAOI,YAPJ,2BAOI,UAPJ,mBAOI,mGAPJ,UAOI,kCAPJ,sBAOI,UAPJ,wBAOI,sIAPJ,8BAOI,2GAPJ,CAOI,4BAPJ,wCAOI,gCAPJ,qCAOI,0IAPJ,CAOI,0MAPJ,2BAOI,WAPJ,6BAOI,CAPJ,0BAOI,CAPJ,UAOI,gCAPJ,4BAOI,yCAPJ,0BAOI,0CAPJ,CAOI,4BAPJ,CAOI,UAPJ,8BAOI,0BAPJ,kCAOI,uCAPJ,WAOI,gEAPJ,uCAOI,qCAPJ,uCAOI,qCAPJ,oCAOI,yCAPJ,wCAOI,uCAPJ,yCAOI,uCAPJ,yCAOI,uCAPJ,WAOI,0BAPJ,WAOI,+BAPJ,WAOI,8BCnCZ,WD4BQ,6BAOI,uMAPJ,WAOI,6BAPJ,WAOI,4BAPJ,sCAOI,WAPJ,6BAOI,WAPJ,2BAOI,8EEvEV,YAGF,eACE,YACA,oBAIA,YACA,mBACA,CACA,6BACA,YACA,oBChBF,YACE,kBCAA,yIAWA,qHAXA,uIAME,2BAKF,2EAEE,2BAbF,8HAWA,yGAXA,8HAWA,uGAXA,gIAWA,4GAXA,+HtDsES,CsD3DT,0GAXA,oHAME,eAKF,6EAEE,CAFF,UAEE,eAbF,0GtDsES,WsD3DT,CAXA,UAWA,yuD7BSA,yBACA,uCACA,8BACA,oDACA,oCAEA,qCACA,sDACA,qCACA,wDAEA,CACA,yD6BhCA,wCAWA,4O7BUA,wBACA,mBACA,kDACA,0BACA,0BAEA,oCAEA,gEACA,2B6B9BA,6FAWA,iGAEE,C7BUF,oOACA,UACA,oDACA,8BACA,oDACA,oCACA,qCACA,2BACA,2B6B/BA,6FAWA,iG7BQA,CAIA,4NAEA,2CACA,0CACA,oDACA,qEACA,mDACA,qCACA,wD6B/BA,0FAWA,oO7BWA,yCACA,kDACA,oDACA,oCAEA,gEACA,2BACA,qCAEA,wDACA,6B6BhCA,qEAWA,oN7BUA,UACA,kCACA,kDACA,oDACA,oCAEA,iEACA,2BACA,qCACA,CACA,uDACA,6B6BhCA,qEAWA,4O7BUA,uBACA,mBACA,4EACA,2BACA,mCAEA,8DACA,gEAEA,wDAEA,6B6BhCA,qEAWA,4N7BSA,0BACA,mBACA,kDACA,0BACA,8DAGA,gEACA,2BACA,qCAEA,wD6B/BA,kGDYA,oP5BWA,iEACA,wDACA,0BAEA,oCACA,oCACA,sDAEA,qC6B/BA,kHAWA,wCAXA,kTAWA,2JCXA,2BACA,2BAIA,qCAMA,wDAIA,6BAGF,6BlDRE,uCkDaA,CAMA,4NAIA,iEAEE,8BCpCJ,0BAEE,0BAKE,oCAQA,qCAOF,2BCtBF,2BAGE,qCjD4DE,CiD/DJ,uDjD+DI,CiD/DJ,4BAaI,6BCbJ,uCACE,CAQA,oPASE,UACA,CAoBJ,waASE,oBAEE,2CAGF,CALA,kBAKA,cACE,uBAIJ,aAGE,aAIF,CANE,iBACA,gBAKF,gBACE,eACA,0CClEA,WACA,CDmEA,cCnEA,iCAKA,yCAMA,WCbF,kGpD4EI,gCoD5EJ,+FCIE,iCAGA,mBACA,CAEA,iBAFA,iBACA,WACA,sCAGF,gBACE,WAGF,gBACE,WACA,gBACA,eAGF,eACE,SAMA,cAJA,MAIA,iBANA,4BAEA,CAIA,gG7D8BQ,S6DtBR,6FCrCA,+BCGA,uBACA,0DAHA,gCAEA,CACA,4DAEA,uCAEA,oCACA,yBCTA,YACA,8CxD0EE,oCwDvEA,gBAIJ,2DAME,gBAGF,QACE,mBAGF,eACE,wCAKA,oBAEA,gBACA,sGAOE,eACA,8CAKJ,kBAEE,uBAIA,gDAHA,cACA,kBAEA,uBAGA,aACE,iBAGF,CANA,aAEA,kBAIA,4DAEE,WAGF,CALA,UAKA,kDAGE,eAKF,CANE,aACA,CAHF,oBAQA,kBACE,eACA,0CACA,WACA,gDAQA,mBAJA,iBAEA,CAGA,UACA,CANA,eAIA,aACA,CAHA,UACA,CAGA,2DAOF,CAVE,UAUF,YACE,iBAIJ,0DACE,kBACE,cxDtBA,kBwDsBA,UxDtBA,CwD2BF,gHAeA,mFAIA,OACE,mBAIJ,oBACE,CACA,MCxHF,mBCTA,2BAEE,CDOF,wBAEI,CDsHF,YACA,CCzHF,sBD0HE,6BC1HF,gBD0HE,kHC1HF,CDyHE,UEhIA,wBACA,yGAEA,mBAGF,CAJE,gBAIF,aACE,sFAEA,aACA,cACA,CAJA,iBACA,CADA,gBACA,iBAGA,0CAIA,aACA,YACA,CACA,mBAIF,qBAEE,oBACA,CARA,UAQA,qBAGA,cADA,8BACA,CAGA,eACA,CANA,mBACA,CACA,2DAIA,iCACA,sBAEA,mEAEA,gFAOF,YAJI,UAIJ,sBAIA,kBACE,CACA,iBACA,CAFA,wCACA,CASF,WARE,cAQF,kBARE,WAEA,8BAEE,6BAIJ,CAJI,MAIJ,4BANE,UAMF,4BAGE,2HACA,elELQ,CkEOR,uLAOF,cACE,2BACA,YACA,gBACA,iBACA,CAEA,+BACE,iBACA,CAJF,UAIE,eAGF,aACE,iBAKJ,WACE,MAEA,mBACA,CAHA,iBAGA,uEAUA,sBAPF,EAUI,SAgBF,aACA,CAdE,eACE,CAJF,elElCO,CkEwDX,0BALE,kBACA,CAdI,kHCjHN,CDmIA,iBAWE,YAEA,CACA,qBCjJF,CDgJE,YChJF,cAGA,4BAFA,eAEA,CAFA,cAEA,CACA,6BCQI,kBCXH,mCDUG,0BACA,CANF,eDFF,aCHE,0CAEA,iBAEA,qBACA,CALA,qCCAD,uEAIA,0BACC,CAJA,mBAIA,8BAIF,qBCTE,kBAGF,8BAKC,mEDEA,2BCIC,6ECXA,2FCHA,0BACA,CDCA,aCDA,qKAKA,6BAGA,cADA,aACA,CAFA,iBACA,CAFA,eACA,CACA,sBACA,sBAEA,cADA,oBACA,sBACA,0BACA,eACA,yBADA,UAEA,sCACA,+CACA,2BACA,kCACA,mDACA,sBACA,CACA,cADA,gBACA,CADA,6BACA,gBACA,qCACA,gCAIA,kBACG,CAFL,mBACE,CACG,aAEK,CAJV,eAHE,cAOQ,oCAIR,YACA,yBAIF,QACE,iDACA,OAGA,mBAHA,kBAEA,mBAEA,aAFA,WACA,uBACA,CAFA,UAEA,WAEA,uBACA,CAFA,WACA,CACA,gBAEF,CALE,UAKF,CAME,4GACA,mCACA,oBACA,qBACA,0BACA,2BAEA,sCACA,oBACA,qBAEF,mBACE,2BAEF,mBACE,oEAGF,gCACE,iBACA,+CAEF,6CAGA,+BAIM,+BAEJ,yBAIA,yEAEA,yDACA,0BACA,mDACA,kCAIA,2BACA,4BACA,6DACA,yCACA,0CAKA,CAEI,qCAGN,kCACE,yEAIA,4EAEA,kDACA,sBAGF,iCACE,wCACA,cAMA,6CALA,uCAKA,CCvIF,oCAEE,CDqIA,8BAOF,CCzIE,aDyIF,sCC9IA,CAEE,kCAEA,kBACA,CADA,kBACA,qBACA,aAGF,eACE,6CAGA,CAIF,wCAEE,CAMA,qBAEA,CAdA,+BAIF,CAgBE,cACA,CAfA,+BAEA,CAOA,8CAKA,CANA,iBACA,CAKA,kBAZA,8BAaA,0BACA,4BACA,2BAGA,iEAIA,uBAGF,iBACE,wCAEA,oCAEA,WACA,oCAEA,YACA,sBACA,oBAGF,iGAEE,CAKF,sCAGE,CAGF,gCAEE,CAZA,yCAIF,CAGE,iCAKA,CACA,kBAIF,+CACE,CAJA,aAGF,CAIE,mDAIA,CAPA,qDAGA,CAIA,eACA,kBAGA,kBACA,CAFA,YACA,CACA,eACA,mCAIF,4CAEE,yBAEA,kDAIA,CAEA,2CAEA,CAJA,mBAEC,CAED,yCAKA,CACA,sBACA,+CAGA,CAGF,cAHE,iBAGF,2BACE,yDAEA,+BAGF,2CAQE,wBAGF,uBACE,CAXA,qBAGF,eACE,2BAGA,CARF,iBAYE,oBAGA,cAEA,CAEA,mBAFA,iBACA,CAJA,gBACA,aAIA,iBAGF,kBAQE,qBAGF,CAXA,eAEE,CAIF,oBACE,CAIF,4CALA,SAHE,0BAHF,kBAMA,QAHE,KAoBA,CAZF,kBACE,4BAIF,CALA,2BACE,CAIF,qBACE,CAIF,gCAEE,4BAIF,+BACE,CADF,kBAGE,aACA,YACA,CAEA,eAIF,CALE,cACA,CANA,iBAEA,CAQF,qBANE,UACA,CAKF,mHASE,aACA,SADA,OACA,CACA,mDAKF,yBACE,wBAEA,eACA,gBACA,mBACA,CAFA,UAEA,yCCjNA,4BAEA,CAcQ,aAHR,iBACA,eATA,UAEQ,CALR,WACA,CAQA,SAJQ,cACR,CALA,aACA,CAIA,eAEA,UACA,CACA,mBACA,CATA,iBACA,CAFA,WAOA,UAMQ,iCAEJ,kBACJ,CAEQ,8DAEV,CAFU,4BAEV,gGAFU,iBAUR,CARF,iBAMA,SAFE,OAEF,CAHE,SAKA,wDAIQ,0DAEV,yBACE,sDAIF,kBACE,sBAGF,sBACE,CAHA,iBAEF,QACE,6BAGF,yHAEU,+CAEV,4EAEU,iFAEV,yDAEE,WACA,CADA,MACA,mEAGF,8BACE,4DAIA,UAEF,CAFE,OAEF,4BAHE,UACA,SAEF,8EAKE,OAFF,UAEE,0BAEA,cAGA,YACA,CAHA,UAMF,oCAPE,cACA,kBAEA,CACA,WAGF,iIAKE,qBAOF,eALA,uBAaA,eAEE,CATA,QACA,CAEF,iBACE,CAOF,uGAIE,CARF,sBAPE,cANF,aAOE,cAEF,kBATA,UAKA,UAKE,iBAGF,CAbA,iBAEE,CAWF,0BAXE,iBAGF,CAQA,eAQE,qDAEF,6CAEE,0BAEF,oBACE,gDAEF,oDAGA,4BAGA,aACE,kBACA,oCAMA,iBAEF,sDAEE,aACA,CADA,WACA,oHAMG,yBAEK,CACR,mHAQA,2CAGQ,wFAMR,eACA,CAEA,2BAEF,CAHE,4BAGF,uGAEE,4BAEF,CAJA,WAIA,mEAEE,sDAEF,mCAME,CANF,cAME,QAUF,WAhBA,sCAgBA,4JAgBA,kGAIA,4EAEE,2BAEF,sGAKA,+GAIE,wBAGA,8EAKA,gDAGA,wBAEF,uCAGA,6EAGE,qBAHF,iBAGE,mBAEF,YACE,oCAGA,sBACA,CAWF,MACE,CARA,cAOF,gBALU,iBAEV,CAJE,iBAQA,oHAZA,oBAEA,oBAEA,aAIF,wBACE,uCAiBA,CAdA,gFAWF,eACE,YACA,CAFF,iBACE,CAHA,oBAEF,CACE,MACA,SACA,uHAOA,iGAGA,iBAEF,2HAQE,iIAQA,oGAOA,aACA,qGAKF,YACE,yFAOF,YAFE,UAEF,mGAKE,YACA,CAHF,mBAGE,kBAEF,2EACE,4CAEF,6CACE,iHAMA,uBACA,CAFQ,QAER,CACA,sBAOA,mCAGA,sBACA,CALA,cACA,CAHA,UACA,gBACA,WAHA,mBACA,CAHA,iBACA,mBASA,6BACA,yBACA,8BAEF,yBACE,6BAEF,wFAEE,CAFF,KAEE,qCAKF,yCAEE,CALA,iCACA,mCAEF,CAEE,wCAEA,QACA,sCAEA,iCAEA,mCAEA,uCAEA,QACA,2BAEA,WACA,CAFA,aAEA,gCACA,mBACA,wBACA,0BACA,6BAEF,iDAKE,qBALF,+BAIA,WACE,CADF,WAJA,oBAIA,iCAJA,iBAIA,CACE,iBAEF,yBAHA,SAGA,yCAEE,aAGF,qBACE,CALA,mCACA,CAIA,0BACA,+CAMA,0BAKA,2CAUQ,oBAEV,CAVA,UAIE,WAMF,8DAIE,kCACA,gEAQA,+BAEF,CAEE,wCA2BA,4BAMQ,0BAIA,sBAlCR,sBACA,CAoBA,wBAEQ,CAtBR,qBAQQ,0BACR,CAEF,oBAGA,CAEE,mBACA,CAHF,iBAEE,CACA,eACA,CACA,WACA,CAFA,mBACA,CARF,SAFE,kBAEF,CAWU,sBAWA,+CAGR,SAEF,2GASU,sBACR,CAHA,oBAEQ,CAHR,cACA,CAGA,mBAEA,0DAKA,mBACA,CAWF,qDAXE,sBAEA,YACA,gBACA,sBAIQ,CAGV,8BAHU,4BACR,CAEF,oBAFE,iBAEF,oRAYE,YACA,gEAIF,0BAGA,yFAGE,4BAGF,6jBAkBE,SAEQ,eAIV,uDAGE,kCAEF,8BALA,wCAKA,UAPE,UADA,SACA,gBAEF,CAKA,wBALA,eAKA,6BAGE,2BAEF,oIAMA,qBANA,sBAIU,CAJV,gBAIU,WAEV,kDAFU,eAEV,oCANA,iBAMA,mYAkBE,kBACA,qBACA,CAHA,cACA,UAEA,sBAEF,2EAGE,kBAEF,CAFE,qBAEF,ilBAmCE,kBAIA,CAGA,oBAEF,CALE,eAEQ,WAGV,4GAQE,2BAGA,sGAUF,2BAEE,4MAeF,4BACE,uIAQF,kBACE,wBAEQ,eAER,4CAGA,2OAeF,gDAFE,uBAEF,eAEE,2EAMF,wEAGE,eACA,4CAGA,uBACA,iBACG,2BAEK,cAGA,wBAEV,mDAIE,0BAGF,CAJE,cAIF,4KAyBY,sBAEV,CAGU,YARV,uBAGU,CAGR,cAEQ,CAvBV,cAcF,cACE,CADF,UASY,2BCrxBV,qBACA,CAFF,0BACE,CACA,eACA,uBAGE,qBAGF,CAJA,8BAIA,iBAMA,qBACE,CALA,aACA,CAKA,YACA,CANA,QAGF,kCAJE,UAKA,eACA,CARF,iBASE,uBAGA,qEAGE,4FAGE,kFAGA,wBAEA,6CAGF,oDACE,gCAUF,sDAGE,C3EiHW,oBAxGT,C2EnBJ,+BACE,iBADF,gBAOA,2HANE,iBAWA,sCAKN,8FAKE,eAIA,2HAWA,iBACA,CARA,4EAEE,wBAIJ,uCACE,CAPA,QAQA,kCAGA,2MAIA,kFAEE,Y3EnFe,C2EoFf,gCAIJ,wFAGE,2BAEA,gGAEE,cCpGN,CDmGM,cACA,CAFF,UClGJ,2CAIA,mBACE,CACA,4BAEC,CAHD,iBAGA,iDAIA,gE5E+Nc","sources":["webpack://@adminkit/core/./src/scss/app.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/_root.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/vendor/_rfs.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/_reboot.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/_variables.scss","webpack://@adminkit/core/./src/scss/1-variables/_app.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/mixins/_border-radius.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/_type.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/mixins/_lists.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/_images.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/mixins/_image.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/_containers.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/mixins/_container.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/mixins/_breakpoints.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/_grid.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/mixins/_grid.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/_tables.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/mixins/_table-variants.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/forms/_labels.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/forms/_form-text.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/forms/_form-control.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/mixins/_transition.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/mixins/_gradients.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/forms/_form-select.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/forms/_form-check.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/forms/_form-range.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/forms/_floating-labels.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/forms/_input-group.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/mixins/_forms.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/_buttons.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/mixins/_buttons.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/_transitions.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/_dropdown.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/mixins/_caret.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/_button-group.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/_nav.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/_navbar.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/_card.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/_badge.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/_list-group.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/_close.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/mixins/_clearfix.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/helpers/_color-bg.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/helpers/_colored-links.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/helpers/_focus-ring.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/helpers/_icon-link.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/helpers/_ratio.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/helpers/_position.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/helpers/_stacks.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/helpers/_visually-hidden.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/mixins/_visually-hidden.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/helpers/_stretched-link.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/mixins/_text-truncate.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/helpers/_text-truncation.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/helpers/_vr.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/mixins/_utilities.scss","webpack://@adminkit/core/./node_modules/bootstrap/scss/utilities/_api.scss","webpack://@adminkit/core/./src/scss/3-components/_avatar.scss","webpack://@adminkit/core/./src/scss/3-components/_buttons.scss","webpack://@adminkit/core/./src/scss/2-mixins/_button.scss","webpack://@adminkit/core/./src/scss/3-components/_card.scss","webpack://@adminkit/core/./src/scss/3-components/_chart.scss","webpack://@adminkit/core/./src/scss/3-components/_content.scss","webpack://@adminkit/core/./src/scss/3-components/_dropdown.scss","webpack://@adminkit/core/./src/scss/3-components/_feather.scss","webpack://@adminkit/core/./src/scss/3-components/_footer.scss","webpack://@adminkit/core/./src/scss/3-components/_hamburger.scss","webpack://@adminkit/core/./src/scss/3-components/_list-group.scss","webpack://@adminkit/core/./src/scss/3-components/_main.scss","webpack://@adminkit/core/./src/scss/3-components/_navbar.scss","webpack://@adminkit/core/./src/scss/3-components/_reboot.scss","webpack://@adminkit/core/./src/scss/3-components/_sidebar.scss","webpack://@adminkit/core/./src/scss/3-components/_sizing.scss","webpack://@adminkit/core/./src/scss/3-components/_stat.scss","webpack://@adminkit/core/./src/scss/3-components/_tables.scss","webpack://@adminkit/core/./src/scss/3-components/_type.scss","webpack://@adminkit/core/./src/scss/3-components/_wrapper.scss","webpack://@adminkit/core/./node_modules/jsvectormap/dist/jsvectormap.css","webpack://@adminkit/core/./node_modules/simplebar/dist/simplebar.css","webpack://@adminkit/core/./node_modules/flatpickr/dist/flatpickr.css","webpack://@adminkit/core/./src/scss/5-vendor/_flatpickr.scss","webpack://@adminkit/core/./src/scss/5-vendor/_simplebar.scss"],"sourcesContent":["/*!\r\n * AdminKit v3.5.0 (https://adminkit.io/)\r\n * Copyright 2023 Paul Laros\r\n * Copyright 2023 AdminKit\r\n * Licensed under MIT (https://github.com/adminkit/adminkit/blob/master/LICENSE)\r\n */\r\n\r\n// Variables\r\n@import \"1-variables/app\";\r\n\r\n// Bootstrap\r\n@import \"~bootstrap/scss/functions\";\r\n@import \"~bootstrap/scss/variables\";\r\n@import \"~bootstrap/scss/maps\";\r\n@import \"~bootstrap/scss/mixins\";\r\n@import \"~bootstrap/scss/utilities\";\r\n@import \"~bootstrap/scss/root\";\r\n@import \"~bootstrap/scss/reboot\";\r\n@import \"~bootstrap/scss/type\";\r\n@import \"~bootstrap/scss/images\";\r\n@import \"~bootstrap/scss/containers\";\r\n@import \"~bootstrap/scss/grid\";\r\n@import \"~bootstrap/scss/tables\";\r\n@import \"~bootstrap/scss/forms\";\r\n@import \"~bootstrap/scss/buttons\";\r\n@import \"~bootstrap/scss/transitions\";\r\n@import \"~bootstrap/scss/dropdown\";\r\n@import \"~bootstrap/scss/button-group\";\r\n@import \"~bootstrap/scss/nav\";\r\n@import \"~bootstrap/scss/navbar\";\r\n@import \"~bootstrap/scss/card\";\r\n@import \"~bootstrap/scss/badge\";\r\n@import \"~bootstrap/scss/list-group\";\r\n@import \"~bootstrap/scss/close\";\r\n@import \"~bootstrap/scss/helpers\";\r\n@import \"~bootstrap/scss/utilities/api\";\r\n\r\n// Theme mixins\r\n@import \"2-mixins/button\";\r\n\r\n// Theme components\r\n@import \"3-components/avatar\";\r\n@import \"3-components/buttons\";\r\n@import \"3-components/card\";\r\n@import \"3-components/chart\";\r\n@import \"3-components/content\";\r\n@import \"3-components/dropdown\";\r\n@import \"3-components/feather\";\r\n@import \"3-components/footer\";\r\n@import \"3-components/hamburger\";\r\n@import \"3-components/list-group\";\r\n@import \"3-components/main\";\r\n@import \"3-components/navbar\";\r\n@import \"3-components/reboot\";\r\n@import \"3-components/sidebar\";\r\n@import \"3-components/sizing\";\r\n@import \"3-components/stat\";\r\n@import \"3-components/tables\";\r\n@import \"3-components/type\";\r\n@import \"3-components/wrapper\";\r\n\r\n// Theme utilities\r\n@import \"4-utilities/cursors\";\r\n\r\n// 3rd party plugins\r\n@import \"~jsvectormap/dist/jsvectormap\";\r\n@import \"~simplebar/dist/simplebar\";\r\n@import \"~flatpickr/dist/flatpickr\";\r\n\r\n// 3rd party plugin styles\r\n@import \"5-vendor/flatpickr\";\r\n@import \"5-vendor/simplebar\";\r\n",":root,\n[data-bs-theme=\"light\"] {\n // Note: Custom variable values only support SassScript inside `#{}`.\n\n // Colors\n //\n // Generate palettes for full colors, grays, and theme colors.\n\n @each $color, $value in $colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $grays {\n --#{$prefix}gray-#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors-rgb {\n --#{$prefix}#{$color}-rgb: #{$value};\n }\n\n @each $color, $value in $theme-colors-text {\n --#{$prefix}#{$color}-text-emphasis: #{$value};\n }\n\n @each $color, $value in $theme-colors-bg-subtle {\n --#{$prefix}#{$color}-bg-subtle: #{$value};\n }\n\n @each $color, $value in $theme-colors-border-subtle {\n --#{$prefix}#{$color}-border-subtle: #{$value};\n }\n\n --#{$prefix}white-rgb: #{to-rgb($white)};\n --#{$prefix}black-rgb: #{to-rgb($black)};\n\n // Fonts\n\n // Note: Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --#{$prefix}font-sans-serif: #{inspect($font-family-sans-serif)};\n --#{$prefix}font-monospace: #{inspect($font-family-monospace)};\n --#{$prefix}gradient: #{$gradient};\n\n // Root and body\n // scss-docs-start root-body-variables\n @if $font-size-root != null {\n --#{$prefix}root-font-size: #{$font-size-root};\n }\n --#{$prefix}body-font-family: #{inspect($font-family-base)};\n @include rfs($font-size-base, --#{$prefix}body-font-size);\n --#{$prefix}body-font-weight: #{$font-weight-base};\n --#{$prefix}body-line-height: #{$line-height-base};\n @if $body-text-align != null {\n --#{$prefix}body-text-align: #{$body-text-align};\n }\n\n --#{$prefix}body-color: #{$body-color};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color)};\n --#{$prefix}body-bg: #{$body-bg};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg)};\n\n --#{$prefix}emphasis-color: #{$body-emphasis-color};\n --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color)};\n\n --#{$prefix}secondary-color: #{$body-secondary-color};\n --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color)};\n --#{$prefix}secondary-bg: #{$body-secondary-bg};\n --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg)};\n\n --#{$prefix}tertiary-color: #{$body-tertiary-color};\n --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color)};\n --#{$prefix}tertiary-bg: #{$body-tertiary-bg};\n --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg)};\n // scss-docs-end root-body-variables\n\n --#{$prefix}heading-color: #{$headings-color};\n\n --#{$prefix}link-color: #{$link-color};\n --#{$prefix}link-color-rgb: #{to-rgb($link-color)};\n --#{$prefix}link-decoration: #{$link-decoration};\n\n --#{$prefix}link-hover-color: #{$link-hover-color};\n --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color)};\n\n @if $link-hover-decoration != null {\n --#{$prefix}link-hover-decoration: #{$link-hover-decoration};\n }\n\n --#{$prefix}code-color: #{$code-color};\n --#{$prefix}highlight-color: #{$mark-color};\n --#{$prefix}highlight-bg: #{$mark-bg};\n\n // scss-docs-start root-border-var\n --#{$prefix}border-width: #{$border-width};\n --#{$prefix}border-style: #{$border-style};\n --#{$prefix}border-color: #{$border-color};\n --#{$prefix}border-color-translucent: #{$border-color-translucent};\n\n --#{$prefix}border-radius: #{$border-radius};\n --#{$prefix}border-radius-sm: #{$border-radius-sm};\n --#{$prefix}border-radius-lg: #{$border-radius-lg};\n --#{$prefix}border-radius-xl: #{$border-radius-xl};\n --#{$prefix}border-radius-xxl: #{$border-radius-xxl};\n --#{$prefix}border-radius-2xl: var(--#{$prefix}border-radius-xxl); // Deprecated in v5.3.0 for consistency\n --#{$prefix}border-radius-pill: #{$border-radius-pill};\n // scss-docs-end root-border-var\n\n --#{$prefix}box-shadow: #{$box-shadow};\n --#{$prefix}box-shadow-sm: #{$box-shadow-sm};\n --#{$prefix}box-shadow-lg: #{$box-shadow-lg};\n --#{$prefix}box-shadow-inset: #{$box-shadow-inset};\n\n // Focus styles\n // scss-docs-start root-focus-variables\n --#{$prefix}focus-ring-width: #{$focus-ring-width};\n --#{$prefix}focus-ring-opacity: #{$focus-ring-opacity};\n --#{$prefix}focus-ring-color: #{$focus-ring-color};\n // scss-docs-end root-focus-variables\n\n // scss-docs-start root-form-validation-variables\n --#{$prefix}form-valid-color: #{$form-valid-color};\n --#{$prefix}form-valid-border-color: #{$form-valid-border-color};\n --#{$prefix}form-invalid-color: #{$form-invalid-color};\n --#{$prefix}form-invalid-border-color: #{$form-invalid-border-color};\n // scss-docs-end root-form-validation-variables\n}\n\n@if $enable-dark-mode {\n @include color-mode(dark, true) {\n color-scheme: dark;\n\n // scss-docs-start root-dark-mode-vars\n --#{$prefix}body-color: #{$body-color-dark};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color-dark)};\n --#{$prefix}body-bg: #{$body-bg-dark};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg-dark)};\n\n --#{$prefix}emphasis-color: #{$body-emphasis-color-dark};\n --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color-dark)};\n\n --#{$prefix}secondary-color: #{$body-secondary-color-dark};\n --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color-dark)};\n --#{$prefix}secondary-bg: #{$body-secondary-bg-dark};\n --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg-dark)};\n\n --#{$prefix}tertiary-color: #{$body-tertiary-color-dark};\n --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color-dark)};\n --#{$prefix}tertiary-bg: #{$body-tertiary-bg-dark};\n --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg-dark)};\n\n @each $color, $value in $theme-colors-text-dark {\n --#{$prefix}#{$color}-text-emphasis: #{$value};\n }\n\n @each $color, $value in $theme-colors-bg-subtle-dark {\n --#{$prefix}#{$color}-bg-subtle: #{$value};\n }\n\n @each $color, $value in $theme-colors-border-subtle-dark {\n --#{$prefix}#{$color}-border-subtle: #{$value};\n }\n\n --#{$prefix}heading-color: #{$headings-color-dark};\n\n --#{$prefix}link-color: #{$link-color-dark};\n --#{$prefix}link-hover-color: #{$link-hover-color-dark};\n --#{$prefix}link-color-rgb: #{to-rgb($link-color-dark)};\n --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color-dark)};\n\n --#{$prefix}code-color: #{$code-color-dark};\n --#{$prefix}highlight-color: #{$mark-color-dark};\n --#{$prefix}highlight-bg: #{$mark-bg-dark};\n\n --#{$prefix}border-color: #{$border-color-dark};\n --#{$prefix}border-color-translucent: #{$border-color-translucent-dark};\n\n --#{$prefix}form-valid-color: #{$form-valid-color-dark};\n --#{$prefix}form-valid-border-color: #{$form-valid-border-color-dark};\n --#{$prefix}form-invalid-color: #{$form-invalid-color-dark};\n --#{$prefix}form-invalid-border-color: #{$form-invalid-border-color-dark};\n // scss-docs-end root-dark-mode-vars\n }\n}\n","// stylelint-disable scss/dimension-no-non-numeric-values\n\n// SCSS RFS mixin\n//\n// Automated responsive values for font sizes, paddings, margins and much more\n//\n// Licensed under MIT (https://github.com/twbs/rfs/blob/main/LICENSE)\n\n// Configuration\n\n// Base value\n$rfs-base-value: 1.25rem !default;\n$rfs-unit: rem !default;\n\n@if $rfs-unit != rem and $rfs-unit != px {\n @error \"`#{$rfs-unit}` is not a valid unit for $rfs-unit. Use `px` or `rem`.\";\n}\n\n// Breakpoint at where values start decreasing if screen width is smaller\n$rfs-breakpoint: 1200px !default;\n$rfs-breakpoint-unit: px !default;\n\n@if $rfs-breakpoint-unit != px and $rfs-breakpoint-unit != em and $rfs-breakpoint-unit != rem {\n @error \"`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.\";\n}\n\n// Resize values based on screen height and width\n$rfs-two-dimensional: false !default;\n\n// Factor of decrease\n$rfs-factor: 10 !default;\n\n@if type-of($rfs-factor) != number or $rfs-factor <= 1 {\n @error \"`#{$rfs-factor}` is not a valid $rfs-factor, it must be greater than 1.\";\n}\n\n// Mode. Possibilities: \"min-media-query\", \"max-media-query\"\n$rfs-mode: min-media-query !default;\n\n// Generate enable or disable classes. Possibilities: false, \"enable\" or \"disable\"\n$rfs-class: false !default;\n\n// 1 rem = $rfs-rem-value px\n$rfs-rem-value: 16 !default;\n\n// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14\n$rfs-safari-iframe-resize-bug-fix: false !default;\n\n// Disable RFS by setting $enable-rfs to false\n$enable-rfs: true !default;\n\n// Cache $rfs-base-value unit\n$rfs-base-value-unit: unit($rfs-base-value);\n\n@function divide($dividend, $divisor, $precision: 10) {\n $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);\n $dividend: abs($dividend);\n $divisor: abs($divisor);\n @if $dividend == 0 {\n @return 0;\n }\n @if $divisor == 0 {\n @error \"Cannot divide by 0\";\n }\n $remainder: $dividend;\n $result: 0;\n $factor: 10;\n @while ($remainder > 0 and $precision >= 0) {\n $quotient: 0;\n @while ($remainder >= $divisor) {\n $remainder: $remainder - $divisor;\n $quotient: $quotient + 1;\n }\n $result: $result * 10 + $quotient;\n $factor: $factor * .1;\n $remainder: $remainder * 10;\n $precision: $precision - 1;\n @if ($precision < 0 and $remainder >= $divisor * 5) {\n $result: $result + 1;\n }\n }\n $result: $result * $factor * $sign;\n $dividend-unit: unit($dividend);\n $divisor-unit: unit($divisor);\n $unit-map: (\n \"px\": 1px,\n \"rem\": 1rem,\n \"em\": 1em,\n \"%\": 1%\n );\n @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {\n $result: $result * map-get($unit-map, $dividend-unit);\n }\n @return $result;\n}\n\n// Remove px-unit from $rfs-base-value for calculations\n@if $rfs-base-value-unit == px {\n $rfs-base-value: divide($rfs-base-value, $rfs-base-value * 0 + 1);\n}\n@else if $rfs-base-value-unit == rem {\n $rfs-base-value: divide($rfs-base-value, divide($rfs-base-value * 0 + 1, $rfs-rem-value));\n}\n\n// Cache $rfs-breakpoint unit to prevent multiple calls\n$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);\n\n// Remove unit from $rfs-breakpoint for calculations\n@if $rfs-breakpoint-unit-cache == px {\n $rfs-breakpoint: divide($rfs-breakpoint, $rfs-breakpoint * 0 + 1);\n}\n@else if $rfs-breakpoint-unit-cache == rem or $rfs-breakpoint-unit-cache == \"em\" {\n $rfs-breakpoint: divide($rfs-breakpoint, divide($rfs-breakpoint * 0 + 1, $rfs-rem-value));\n}\n\n// Calculate the media query value\n$rfs-mq-value: if($rfs-breakpoint-unit == px, #{$rfs-breakpoint}px, #{divide($rfs-breakpoint, $rfs-rem-value)}#{$rfs-breakpoint-unit});\n$rfs-mq-property-width: if($rfs-mode == max-media-query, max-width, min-width);\n$rfs-mq-property-height: if($rfs-mode == max-media-query, max-height, min-height);\n\n// Internal mixin used to determine which media query needs to be used\n@mixin _rfs-media-query {\n @if $rfs-two-dimensional {\n @if $rfs-mode == max-media-query {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}), (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n @content;\n }\n }\n @else {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) and (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n @content;\n }\n }\n }\n @else {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) {\n @content;\n }\n }\n}\n\n// Internal mixin that adds disable classes to the selector if needed.\n@mixin _rfs-rule {\n @if $rfs-class == disable and $rfs-mode == max-media-query {\n // Adding an extra class increases specificity, which prevents the media query to override the property\n &,\n .disable-rfs &,\n &.disable-rfs {\n @content;\n }\n }\n @else if $rfs-class == enable and $rfs-mode == min-media-query {\n .enable-rfs &,\n &.enable-rfs {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Internal mixin that adds enable classes to the selector if needed.\n@mixin _rfs-media-query-rule {\n\n @if $rfs-class == enable {\n @if $rfs-mode == min-media-query {\n @content;\n }\n\n @include _rfs-media-query () {\n .enable-rfs &,\n &.enable-rfs {\n @content;\n }\n }\n }\n @else {\n @if $rfs-class == disable and $rfs-mode == min-media-query {\n .disable-rfs &,\n &.disable-rfs {\n @content;\n }\n }\n @include _rfs-media-query () {\n @content;\n }\n }\n}\n\n// Helper function to get the formatted non-responsive value\n@function rfs-value($values) {\n // Convert to list\n $values: if(type-of($values) != list, ($values,), $values);\n\n $val: \"\";\n\n // Loop over each value and calculate value\n @each $value in $values {\n @if $value == 0 {\n $val: $val + \" 0\";\n }\n @else {\n // Cache $value unit\n $unit: if(type-of($value) == \"number\", unit($value), false);\n\n @if $unit == px {\n // Convert to rem if needed\n $val: $val + \" \" + if($rfs-unit == rem, #{divide($value, $value * 0 + $rfs-rem-value)}rem, $value);\n }\n @else if $unit == rem {\n // Convert to px if needed\n $val: $val + \" \" + if($rfs-unit == px, #{divide($value, $value * 0 + 1) * $rfs-rem-value}px, $value);\n } @else {\n // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n $val: $val + \" \" + $value;\n }\n }\n }\n\n // Remove first space\n @return unquote(str-slice($val, 2));\n}\n\n// Helper function to get the responsive value calculated by RFS\n@function rfs-fluid-value($values) {\n // Convert to list\n $values: if(type-of($values) != list, ($values,), $values);\n\n $val: \"\";\n\n // Loop over each value and calculate value\n @each $value in $values {\n @if $value == 0 {\n $val: $val + \" 0\";\n } @else {\n // Cache $value unit\n $unit: if(type-of($value) == \"number\", unit($value), false);\n\n // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n @if not $unit or $unit != px and $unit != rem {\n $val: $val + \" \" + $value;\n } @else {\n // Remove unit from $value for calculations\n $value: divide($value, $value * 0 + if($unit == px, 1, divide(1, $rfs-rem-value)));\n\n // Only add the media query if the value is greater than the minimum value\n @if abs($value) <= $rfs-base-value or not $enable-rfs {\n $val: $val + \" \" + if($rfs-unit == rem, #{divide($value, $rfs-rem-value)}rem, #{$value}px);\n }\n @else {\n // Calculate the minimum value\n $value-min: $rfs-base-value + divide(abs($value) - $rfs-base-value, $rfs-factor);\n\n // Calculate difference between $value and the minimum value\n $value-diff: abs($value) - $value-min;\n\n // Base value formatting\n $min-width: if($rfs-unit == rem, #{divide($value-min, $rfs-rem-value)}rem, #{$value-min}px);\n\n // Use negative value if needed\n $min-width: if($value < 0, -$min-width, $min-width);\n\n // Use `vmin` if two-dimensional is enabled\n $variable-unit: if($rfs-two-dimensional, vmin, vw);\n\n // Calculate the variable width between 0 and $rfs-breakpoint\n $variable-width: #{divide($value-diff * 100, $rfs-breakpoint)}#{$variable-unit};\n\n // Return the calculated value\n $val: $val + \" calc(\" + $min-width + if($value < 0, \" - \", \" + \") + $variable-width + \")\";\n }\n }\n }\n }\n\n // Remove first space\n @return unquote(str-slice($val, 2));\n}\n\n// RFS mixin\n@mixin rfs($values, $property: font-size) {\n @if $values != null {\n $val: rfs-value($values);\n $fluid-val: rfs-fluid-value($values);\n\n // Do not print the media query if responsive & non-responsive values are the same\n @if $val == $fluid-val {\n #{$property}: $val;\n }\n @else {\n @include _rfs-rule () {\n #{$property}: if($rfs-mode == max-media-query, $val, $fluid-val);\n\n // Include safari iframe resize fix if needed\n min-width: if($rfs-safari-iframe-resize-bug-fix, (0 * 1vw), null);\n }\n\n @include _rfs-media-query-rule () {\n #{$property}: if($rfs-mode == max-media-query, $fluid-val, $val);\n }\n }\n }\n}\n\n// Shorthand helper mixins\n@mixin font-size($value) {\n @include rfs($value);\n}\n\n@mixin padding($value) {\n @include rfs($value, padding);\n}\n\n@mixin padding-top($value) {\n @include rfs($value, padding-top);\n}\n\n@mixin padding-right($value) {\n @include rfs($value, padding-right);\n}\n\n@mixin padding-bottom($value) {\n @include rfs($value, padding-bottom);\n}\n\n@mixin padding-left($value) {\n @include rfs($value, padding-left);\n}\n\n@mixin margin($value) {\n @include rfs($value, margin);\n}\n\n@mixin margin-top($value) {\n @include rfs($value, margin-top);\n}\n\n@mixin margin-right($value) {\n @include rfs($value, margin-right);\n}\n\n@mixin margin-bottom($value) {\n @include rfs($value, margin-bottom);\n}\n\n@mixin margin-left($value) {\n @include rfs($value, margin-left);\n}\n","// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n\n// Root\n//\n// Ability to the value of the root font sizes, affecting the value of `rem`.\n// null by default, thus nothing is generated.\n\n:root {\n @if $font-size-root != null {\n @include font-size(var(--#{$prefix}root-font-size));\n }\n\n @if $enable-smooth-scroll {\n @media (prefers-reduced-motion: no-preference) {\n scroll-behavior: smooth;\n }\n }\n}\n\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Prevent adjustments of font size after orientation changes in iOS.\n// 4. Change the default tap highlight to be completely transparent in iOS.\n\n// scss-docs-start reboot-body-rules\nbody {\n margin: 0; // 1\n font-family: var(--#{$prefix}body-font-family);\n @include font-size(var(--#{$prefix}body-font-size));\n font-weight: var(--#{$prefix}body-font-weight);\n line-height: var(--#{$prefix}body-line-height);\n color: var(--#{$prefix}body-color);\n text-align: var(--#{$prefix}body-text-align);\n background-color: var(--#{$prefix}body-bg); // 2\n -webkit-text-size-adjust: 100%; // 3\n -webkit-tap-highlight-color: rgba($black, 0); // 4\n}\n// scss-docs-end reboot-body-rules\n\n\n// Content grouping\n//\n// 1. Reset Firefox's gray color\n\nhr {\n margin: $hr-margin-y 0;\n color: $hr-color; // 1\n border: 0;\n border-top: $hr-border-width solid $hr-border-color;\n opacity: $hr-opacity;\n}\n\n\n// Typography\n//\n// 1. Remove top margins from headings\n// By default, `

    `-`

    ` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\n\n%heading {\n margin-top: 0; // 1\n margin-bottom: $headings-margin-bottom;\n font-family: $headings-font-family;\n font-style: $headings-font-style;\n font-weight: $headings-font-weight;\n line-height: $headings-line-height;\n color: var(--#{$prefix}heading-color);\n}\n\nh1 {\n @extend %heading;\n @include font-size($h1-font-size);\n}\n\nh2 {\n @extend %heading;\n @include font-size($h2-font-size);\n}\n\nh3 {\n @extend %heading;\n @include font-size($h3-font-size);\n}\n\nh4 {\n @extend %heading;\n @include font-size($h4-font-size);\n}\n\nh5 {\n @extend %heading;\n @include font-size($h5-font-size);\n}\n\nh6 {\n @extend %heading;\n @include font-size($h6-font-size);\n}\n\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `

    `s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\n\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n\n// Abbreviations\n//\n// 1. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n// 2. Add explicit cursor to indicate changed behavior.\n// 3. Prevent the text-decoration to be skipped.\n\nabbr[title] {\n text-decoration: underline dotted; // 1\n cursor: help; // 2\n text-decoration-skip-ink: none; // 3\n}\n\n\n// Address\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\n\n// Lists\n\nol,\nul {\n padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\n// 1. Undo browser default\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // 1\n}\n\n\n// Blockquote\n\nblockquote {\n margin: 0 0 1rem;\n}\n\n\n// Strong\n//\n// Add the correct font weight in Chrome, Edge, and Safari\n\nb,\nstrong {\n font-weight: $font-weight-bolder;\n}\n\n\n// Small\n//\n// Add the correct font size in all browsers\n\nsmall {\n @include font-size($small-font-size);\n}\n\n\n// Mark\n\nmark {\n padding: $mark-padding;\n color: var(--#{$prefix}highlight-color);\n background-color: var(--#{$prefix}highlight-bg);\n}\n\n\n// Sub and Sup\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n\nsub,\nsup {\n position: relative;\n @include font-size($sub-sup-font-size);\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n// Links\n\na {\n color: rgba(var(--#{$prefix}link-color-rgb), var(--#{$prefix}link-opacity, 1));\n text-decoration: $link-decoration;\n\n &:hover {\n --#{$prefix}link-color-rgb: var(--#{$prefix}link-hover-color-rgb);\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([class]) {\n &,\n &:hover {\n color: inherit;\n text-decoration: none;\n }\n}\n\n\n// Code\n\npre,\ncode,\nkbd,\nsamp {\n font-family: $font-family-code;\n @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n}\n\n// 1. Remove browser default top margin\n// 2. Reset browser default of `1em` to use `rem`s\n// 3. Don't allow content to break outside\n\npre {\n display: block;\n margin-top: 0; // 1\n margin-bottom: 1rem; // 2\n overflow: auto; // 3\n @include font-size($code-font-size);\n color: $pre-color;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n @include font-size(inherit);\n color: inherit;\n word-break: normal;\n }\n}\n\ncode {\n @include font-size($code-font-size);\n color: var(--#{$prefix}code-color);\n word-wrap: break-word;\n\n // Streamline the style when inside anchors to avoid broken underline and more\n a > & {\n color: inherit;\n }\n}\n\nkbd {\n padding: $kbd-padding-y $kbd-padding-x;\n @include font-size($kbd-font-size);\n color: $kbd-color;\n background-color: $kbd-bg;\n @include border-radius($border-radius-sm);\n\n kbd {\n padding: 0;\n @include font-size(1em);\n font-weight: $nested-kbd-font-weight;\n }\n}\n\n\n// Figures\n//\n// Apply a consistent margin strategy (matches our type styles).\n\nfigure {\n margin: 0 0 1rem;\n}\n\n\n// Images and content\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\n\n// Tables\n//\n// Prevent double borders\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: $table-cell-padding-y;\n padding-bottom: $table-cell-padding-y;\n color: $table-caption-color;\n text-align: left;\n}\n\n// 1. Removes font-weight bold by inheriting\n// 2. Matches default `` alignment by inheriting `text-align`.\n// 3. Fix alignment for Safari\n\nth {\n font-weight: $table-th-font-weight; // 1\n text-align: inherit; // 2\n text-align: -webkit-match-parent; // 3\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n}\n\n\n// Forms\n//\n// 1. Allow labels to use `margin` for spacing.\n\nlabel {\n display: inline-block; // 1\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n// See https://github.com/twbs/bootstrap/issues/24093\n\nbutton {\n // stylelint-disable-next-line property-disallowed-list\n border-radius: 0;\n}\n\n// Explicitly remove focus outline in Chromium when it shouldn't be\n// visible (e.g. as result of mouse click or touch tap). It already\n// should be doing this automatically, but seems to currently be\n// confused and applies its very visible two-tone outline anyway.\n\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\n// 1. Remove the margin in Firefox and Safari\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // 1\n font-family: inherit;\n @include font-size(inherit);\n line-height: inherit;\n}\n\n// Remove the inheritance of text transform in Firefox\nbutton,\nselect {\n text-transform: none;\n}\n// Set the cursor for non-`