commit 1cded9ded0b6e9ff27721aac712e457822f298f3 Author: jianglao Date: Sat Jun 27 18:25:18 2026 +0800 Initial commit: Falcon React v5.1.0 template Co-authored-by: Cursor diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..ee23a40 --- /dev/null +++ b/.env.example @@ -0,0 +1,6 @@ +VITE_ESLINT_NO_DEV_ERRORS=true +VITE_PUBLIC_URL='/' +VITE_SKIP_PREFLIGHT_CHECK=true +VITE_REACT_APP_TINYMCE_APIKEY=your-tinymce-api-key +VITE_REACT_APP_GOOGLE_API_KEY=your-google-api-key +VITE_REACT_APP_MAP_ID=your-map-id diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..b1f9f76 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,2 @@ +/build +/node_modules \ No newline at end of file diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..80c3daa --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,29 @@ +// eslint-disable-next-line no-undef +module.exports = { + env: { + browser: true, + es2021: true + }, + extends: [ + 'eslint:recommended', + 'plugin:react/recommended', + 'plugin:prettier/recommended' + ], + parserOptions: { + ecmaFeatures: { + jsx: true + }, + ecmaVersion: 12, + sourceType: 'module' + }, + plugins: ['react'], + rules: { + 'react/no-unescaped-entities': 'off', + 'react/prop-types': 'error', + 'react/display-name': 'off', + 'prettier/prettier': ['error', { endOfLine: 'auto' }] + }, + globals: { + process: true + } +}; diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a62a43c --- /dev/null +++ b/.gitignore @@ -0,0 +1,29 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# production +/build + +# misc +.DS_Store +.env +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.test + +dist + +public/tinymce \ No newline at end of file diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..2eb100a --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +loglevel=error \ No newline at end of file diff --git a/.prettierrc.js b/.prettierrc.js new file mode 100644 index 0000000..a216db3 --- /dev/null +++ b/.prettierrc.js @@ -0,0 +1,9 @@ +module.exports = { + tabWidth: 2, + semi: true, + singleQuote: true, + bracketSpacing: true, + trailingComma: 'none', + useTabs: false, + arrowParens: 'avoid' +}; diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..1e34273 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,9 @@ +{ + "cSpell.words": ["chartjs", "getformatter"], + "editor.formatOnSave": true, + "scss.format.enable": true, + "scss.format.newlineBetweenRules": true, + "scss.format.newlineBetweenSelectors": true, + "scss.format.preserveNewLines": true, + "scss.format.spaceAroundSelectorSeparator": false +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..4dc496e --- /dev/null +++ b/README.md @@ -0,0 +1,31 @@ +## Falcon, a theme by ThemeWagon team. + +--- + +# Getting Started with Falcon-React + +Welcome to the ReactJS version of the original Falcon theme. This document will guide you on how the Falcon-React theme is organized, the basics of customization, and how to compile it from the source code if needed. + +## Running in Local Environment + +This project is scaffolded using Vite. + +- Install Node.js if you do not already have it installed on your machine. +- Open the Falcon-react-{version}” directory with your cmd or terminal and run npm i +- This command will download all the necessary dependencies for falcon in the node_modules directory. +- Run npm run dev. A local web server will start at http://localhost:3000. + +## Creating a Production Build + +After you've done your customization and are ready to build, follow these steps: + +- Edit homepage in your package.json file to change asset files relative paths. For more information, visit Vite Doc. +- Then Run npm run build command in your project directory to make the Production build. + +This will create an optimized production build by compiling, merging, and minifying all the source files as necessary and will put them in the build/ folder. + +To run the production build locally, run the following commands: + +```shell + npm run preview +``` diff --git a/compile-scss.js b/compile-scss.js new file mode 100644 index 0000000..cfb82ed --- /dev/null +++ b/compile-scss.js @@ -0,0 +1,51 @@ +import path from 'path'; +import fs from 'fs'; +import * as sass from 'sass'; +import rtlcss from 'rtlcss'; + +const compileSCSS = () => ({ + name: 'compile-scss', + configureServer(server) { + const scssWatcher = server.watcher; + const scssGlob = path.resolve(__dirname, 'src/assets/scss/**/*.scss'); + scssWatcher.add(scssGlob); + + const scssFiles = [path.resolve(__dirname, 'src/assets/scss/theme.scss')]; + + const compileSCSSToCSS = async file => { + const result = await sass.compileAsync(file, { style: 'expanded' }); + const fileName = path.basename(file, path.extname(file)); + + // Path for LTR CSS + const cssPath = path.resolve(__dirname, `public/css/${fileName}.css`); + fs.mkdirSync(path.dirname(cssPath), { recursive: true }); + fs.writeFileSync(cssPath, result.css); + + // Generate RTL CSS from LTR CSS + const rtlResult = rtlcss.process(result.css); + const rtlCssPath = path.resolve( + __dirname, + `public/css/${fileName}.rtl.css` + ); + fs.writeFileSync(rtlCssPath, rtlResult); + }; + + scssWatcher.on('change', file => { + + if (file.endsWith('.scss')) { + scssFiles.map(file => { + compileSCSSToCSS(file); + }); + server.hot.send({ + type: 'full-reload' + }); + } + }); + + scssFiles.map(file => { + compileSCSSToCSS(file); + }); + } +}); + +export default compileSCSS; diff --git a/index.html b/index.html new file mode 100644 index 0000000..898abdd --- /dev/null +++ b/index.html @@ -0,0 +1,22 @@ + + + + + + + + + + + Falcon React | ReactJS Dashboard & WebApp Template + + + + +
+ + + diff --git a/jsconfig.json b/jsconfig.json new file mode 100644 index 0000000..965aa63 --- /dev/null +++ b/jsconfig.json @@ -0,0 +1,8 @@ +{ + "compilerOptions": { + "experimentalDecorators": true, + "baseUrl": "src", + "jsx": "react" + }, + "exclude": ["node_modules"] +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..91affbc --- /dev/null +++ b/package-lock.json @@ -0,0 +1,11185 @@ +{ + "name": "falcon-react", + "version": "5.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "falcon-react", + "version": "5.1.0", + "dependencies": { + "@dnd-kit/core": "^6.3.1", + "@dnd-kit/sortable": "^10.0.0", + "@dnd-kit/utilities": "^3.2.2", + "@emotion/styled": "^11.14.1", + "@fortawesome/fontawesome-free": "^6.7.2", + "@fortawesome/fontawesome-svg-core": "^6.7.2", + "@fortawesome/free-brands-svg-icons": "^6.7.2", + "@fortawesome/free-regular-svg-icons": "^6.7.2", + "@fortawesome/free-solid-svg-icons": "^6.7.2", + "@fortawesome/react-fontawesome": "^0.2.2", + "@fullcalendar/bootstrap": "^6.1.19", + "@fullcalendar/daygrid": "^6.1.19", + "@fullcalendar/interaction": "^6.1.19", + "@fullcalendar/list": "^6.1.19", + "@fullcalendar/react": "^6.1.19", + "@fullcalendar/timegrid": "^6.1.19", + "@hookform/resolvers": "^5.2.2", + "@react-leaflet/core": "^3.0.0", + "@tanstack/react-table": "^8.21.3", + "@testing-library/jest-dom": "^6.6.3", + "@testing-library/react": "^16.3.0", + "@testing-library/user-event": "^14.6.1", + "@tinymce/tinymce-react": "^6.3.0", + "@vis.gl/react-google-maps": "^1.7.1", + "bootstrap": "^5.3.8", + "chart.js": "^4.5.1", + "classnames": "^2.5.1", + "d3": "^7.9.0", + "dayjs": "^1.11.19", + "echarts": "^6.0.0", + "echarts-for-react": "^3.0.5", + "emoji-picker-react": "^4.15.1", + "fs-extra": "^11.3.2", + "fuse.js": "^7.1.0", + "imask": "^7.6.1", + "is_js": "^0.9.0", + "leaflet": "^1.9.4", + "leaflet.tilelayer.colorfilter": "^2.0.0", + "lottie-react": "^2.4.1", + "plyr": "^3.8.3", + "prism-react-renderer": "^2.4.1", + "rc-slider": "^11.1.9", + "rc-tooltip": "^6.4.0", + "react-bootstrap": "^2.10.10", + "react-chartjs-2": "^5.3.1", + "react-countup": "^6.5.3", + "react-datepicker": "^8.9.0", + "react-dom": "^19.2.0", + "react-dropzone": "^14.3.8", + "react-error-overlay": "^6.1.0", + "react-hook-form": "^7.66.0", + "react-icons": "^5.5.0", + "react-imask": "^7.6.1", + "react-leaflet": "^5.0.0", + "react-leaflet-markercluster": "^5.0.0-rc.0", + "react-live": "^4.1.8", + "react-player": "^3.4.0", + "react-range": "^1.10.0", + "react-router": "^7.9.6", + "react-router-hash-link": "^2.4.3", + "react-select": "^5.10.2", + "react-simple-star-rating": "^5.1.7", + "react-simple-typewriter": "^5.0.1", + "react-slick": "^0.31.0", + "react-textarea-autosize": "^8.5.9", + "react-toastify": "^11.0.5", + "react-use-scrollspy": "^3.1.1", + "rtlcss": "^4.3.0", + "simplebar-react": "^3.3.2", + "slick-carousel": "^1.8.1", + "tinymce": "^8.2.2", + "uuid": "^13.0.0", + "video.js": "^8.23.4", + "web-vitals": "^5.1.0", + "yet-another-react-lightbox": "^3.25.0", + "yup": "^1.7.1" + }, + "devDependencies": { + "@babel/plugin-transform-react-jsx": "^7.27.1", + "@vitejs/plugin-react": "^5.1.1", + "archiver": "^7.0.1", + "clean-webpack-plugin": "^4.0.0", + "css-loader": "^7.1.2", + "eslint": "^9.39.1", + "eslint-config-prettier": "^10.1.8", + "eslint-plugin-prettier": "^5.5.4", + "eslint-plugin-react": "^7.37.5", + "gh-pages": "^6.3.0", + "mini-css-extract-plugin": "^2.9.4", + "prettier": "^3.6.2", + "sass": "1.70.0", + "sass-loader": "^16.0.5", + "vite": "^7.2.2", + "vite-jsconfig-paths": "^2.0.1" + } + }, + "node_modules/@adobe/css-tools": { + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.4.tgz", + "integrity": "sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==", + "license": "MIT" + }, + "node_modules/@babel/code-frame": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz", + "integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", + "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.5", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.28.3", + "@babel/helpers": "^7.28.4", + "@babel/parser": "^7.28.5", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz", + "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.3" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", + "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.28.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", + "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", + "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.5" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz", + "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.27.1.tgz", + "integrity": "sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", + "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", + "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", + "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/runtime-corejs3": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.28.4.tgz", + "integrity": "sha512-h7iEYiW4HebClDEhtvFObtPmIvrd1SSfpI9EhOeKk4CtIK/ngBWFpuhCzhdmRKtg71ylcue+9I6dv54XYO1epQ==", + "license": "MIT", + "dependencies": { + "core-js-pure": "^3.43.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz", + "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.5", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.5", + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.5", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", + "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@cush/relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@cush/relative/-/relative-1.0.0.tgz", + "integrity": "sha512-RpfLEtTlyIxeNPGKcokS+p3BZII/Q3bYxryFRglh5H3A3T8q9fsLYm72VYAMEOOIBLEa8o93kFLiBDUWKrwXZA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@dnd-kit/accessibility": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@dnd-kit/accessibility/-/accessibility-3.1.1.tgz", + "integrity": "sha512-2P+YgaXF+gRsIihwwY1gCsQSYnu9Zyj2py8kY5fFvUM1qm2WA2u639R6YNVfU4GWr+ZM5mqEsfHZZLoRONbemw==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@dnd-kit/core": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@dnd-kit/core/-/core-6.3.1.tgz", + "integrity": "sha512-xkGBRQQab4RLwgXxoqETICr6S5JlogafbhNsidmrkVv2YRs5MLwpjoF2qpiGjQt8S9AoxtIV603s0GIUpY5eYQ==", + "license": "MIT", + "dependencies": { + "@dnd-kit/accessibility": "^3.1.1", + "@dnd-kit/utilities": "^3.2.2", + "tslib": "^2.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@dnd-kit/sortable": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@dnd-kit/sortable/-/sortable-10.0.0.tgz", + "integrity": "sha512-+xqhmIIzvAYMGfBYYnbKuNicfSsk4RksY2XdmJhT+HAC01nix6fHCztU68jooFiMUB01Ky3F0FyOvhG/BZrWkg==", + "license": "MIT", + "dependencies": { + "@dnd-kit/utilities": "^3.2.2", + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@dnd-kit/core": "^6.3.0", + "react": ">=16.8.0" + } + }, + "node_modules/@dnd-kit/utilities": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@dnd-kit/utilities/-/utilities-3.2.2.tgz", + "integrity": "sha512-+MKAJEOfaBe5SmV6t34p80MMKhjvUz0vRrvVJbPT0WElzaOJ/1xs+D+KDv+tD/NE5ujfrChEcshd4fLn0wpiqg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@emotion/babel-plugin": { + "version": "11.13.5", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.13.5.tgz", + "integrity": "sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/serialize": "^1.3.3", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/babel-plugin/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "license": "MIT" + }, + "node_modules/@emotion/cache": { + "version": "11.14.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.14.0.tgz", + "integrity": "sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==", + "license": "MIT", + "dependencies": { + "@emotion/memoize": "^0.9.0", + "@emotion/sheet": "^1.4.0", + "@emotion/utils": "^1.4.2", + "@emotion/weak-memoize": "^0.4.0", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/hash": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz", + "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==", + "license": "MIT" + }, + "node_modules/@emotion/is-prop-valid": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.4.0.tgz", + "integrity": "sha512-QgD4fyscGcbbKwJmqNvUMSE02OsHUa+lAWKdEUIJKgqe5IwRSKd7+KhibEWdaKwgjLj0DRSHA9biAIqGBk05lw==", + "license": "MIT", + "dependencies": { + "@emotion/memoize": "^0.9.0" + } + }, + "node_modules/@emotion/memoize": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz", + "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==", + "license": "MIT" + }, + "node_modules/@emotion/react": { + "version": "11.14.0", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.14.0.tgz", + "integrity": "sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.13.5", + "@emotion/cache": "^11.14.0", + "@emotion/serialize": "^1.3.3", + "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0", + "@emotion/utils": "^1.4.2", + "@emotion/weak-memoize": "^0.4.0", + "hoist-non-react-statics": "^3.3.1" + }, + "peerDependencies": { + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/serialize": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.3.tgz", + "integrity": "sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==", + "license": "MIT", + "dependencies": { + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/unitless": "^0.10.0", + "@emotion/utils": "^1.4.2", + "csstype": "^3.0.2" + } + }, + "node_modules/@emotion/sheet": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz", + "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==", + "license": "MIT" + }, + "node_modules/@emotion/styled": { + "version": "11.14.1", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.14.1.tgz", + "integrity": "sha512-qEEJt42DuToa3gurlH4Qqc1kVpNq8wO8cJtDzU46TjlzWjDlsVyevtYCRijVq3SrHsROS+gVQ8Fnea108GnKzw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.13.5", + "@emotion/is-prop-valid": "^1.3.0", + "@emotion/serialize": "^1.3.3", + "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0", + "@emotion/utils": "^1.4.2" + }, + "peerDependencies": { + "@emotion/react": "^11.0.0-rc.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/unitless": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz", + "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==", + "license": "MIT" + }, + "node_modules/@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.2.0.tgz", + "integrity": "sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==", + "license": "MIT", + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@emotion/utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.2.tgz", + "integrity": "sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==", + "license": "MIT" + }, + "node_modules/@emotion/weak-memoize": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz", + "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==", + "license": "MIT" + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", + "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", + "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.21.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", + "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.7", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "9.39.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.1.tgz", + "integrity": "sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.3.tgz", + "integrity": "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.10" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.4.tgz", + "integrity": "sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.7.3", + "@floating-ui/utils": "^0.2.10" + } + }, + "node_modules/@floating-ui/react": { + "version": "0.27.16", + "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.27.16.tgz", + "integrity": "sha512-9O8N4SeG2z++TSM8QA/KTeKFBVCNEz/AGS7gWPJf6KFRzmRWixFRnCnkPHRDwSVZW6QPDO6uT0P2SpWNKCc9/g==", + "license": "MIT", + "dependencies": { + "@floating-ui/react-dom": "^2.1.6", + "@floating-ui/utils": "^0.2.10", + "tabbable": "^6.0.0" + }, + "peerDependencies": { + "react": ">=17.0.0", + "react-dom": ">=17.0.0" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.6.tgz", + "integrity": "sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw==", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.7.4" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz", + "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==", + "license": "MIT" + }, + "node_modules/@fortawesome/fontawesome-common-types": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.7.2.tgz", + "integrity": "sha512-Zs+YeHUC5fkt7Mg1l6XTniei3k4bwG/yo3iFUtZWd/pMx9g3fdvkSK9E0FOC+++phXOka78uJcYb8JaFkW52Xg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/fontawesome-free": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.7.2.tgz", + "integrity": "sha512-JUOtgFW6k9u4Y+xeIaEiLr3+cjoUPiAuLXoyKOJSia6Duzb7pq+A76P9ZdPDoAoxHdHzq6gE9/jKBGXlZT8FbA==", + "license": "(CC-BY-4.0 AND OFL-1.1 AND MIT)", + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/fontawesome-svg-core": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.7.2.tgz", + "integrity": "sha512-yxtOBWDrdi5DD5o1pmVdq3WMCvnobT0LU6R8RyyVXPvFRd2o79/0NCuQoCjNTeZz9EzA9xS3JxNWfv54RIHFEA==", + "license": "MIT", + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.7.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-brands-svg-icons": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.7.2.tgz", + "integrity": "sha512-zu0evbcRTgjKfrr77/2XX+bU+kuGfjm0LbajJHVIgBWNIDzrhpRxiCPNT8DW5AdmSsq7Mcf9D1bH0aSeSUSM+Q==", + "license": "(CC-BY-4.0 AND MIT)", + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.7.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-regular-svg-icons": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.7.2.tgz", + "integrity": "sha512-7Z/ur0gvCMW8G93dXIQOkQqHo2M5HLhYrRVC0//fakJXxcF1VmMPsxnG6Ee8qEylA8b8Q3peQXWMNZ62lYF28g==", + "license": "(CC-BY-4.0 AND MIT)", + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.7.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-solid-svg-icons": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.7.2.tgz", + "integrity": "sha512-GsBrnOzU8uj0LECDfD5zomZJIjrPhIlWU82AHwa2s40FKH+kcxQaBvBo3Z4TxyZHIyX8XTDxsyA33/Vx9eFuQA==", + "license": "(CC-BY-4.0 AND MIT)", + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.7.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/react-fontawesome": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.2.6.tgz", + "integrity": "sha512-mtBFIi1UsYQo7rYonYFkjgYKGoL8T+fEH6NGUpvuqtY3ytMsAoDaPo5rk25KuMtKDipY4bGYM/CkmCHA1N3FUg==", + "license": "MIT", + "dependencies": { + "prop-types": "^15.8.1" + }, + "peerDependencies": { + "@fortawesome/fontawesome-svg-core": "~1 || ~6 || ~7", + "react": "^16.3 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@fullcalendar/bootstrap": { + "version": "6.1.19", + "resolved": "https://registry.npmjs.org/@fullcalendar/bootstrap/-/bootstrap-6.1.19.tgz", + "integrity": "sha512-yzhPXP3BKi9Lfp1C5okVNRTucFXYICeRigmisQrHnB408OHuz/D9ZXZGrzLrmpKT9Ok3rt7QuVKv0h8/wZpIPw==", + "license": "MIT", + "peerDependencies": { + "@fullcalendar/core": "~6.1.19" + } + }, + "node_modules/@fullcalendar/core": { + "version": "6.1.19", + "resolved": "https://registry.npmjs.org/@fullcalendar/core/-/core-6.1.19.tgz", + "integrity": "sha512-z0aVlO5e4Wah6p6mouM0UEqtRf1MZZPt4mwzEyU6kusaNL+dlWQgAasF2cK23hwT4cmxkEmr4inULXgpyeExdQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "preact": "~10.12.1" + } + }, + "node_modules/@fullcalendar/daygrid": { + "version": "6.1.19", + "resolved": "https://registry.npmjs.org/@fullcalendar/daygrid/-/daygrid-6.1.19.tgz", + "integrity": "sha512-IAAfnMICnVWPjpT4zi87i3FEw0xxSza0avqY/HedKEz+l5MTBYvCDPOWDATpzXoLut3aACsjktIyw9thvIcRYQ==", + "license": "MIT", + "peerDependencies": { + "@fullcalendar/core": "~6.1.19" + } + }, + "node_modules/@fullcalendar/interaction": { + "version": "6.1.19", + "resolved": "https://registry.npmjs.org/@fullcalendar/interaction/-/interaction-6.1.19.tgz", + "integrity": "sha512-GOciy79xe8JMVp+1evAU3ytdwN/7tv35t5i1vFkifiuWcQMLC/JnLg/RA2s4sYmQwoYhTw/p4GLcP0gO5B3X5w==", + "license": "MIT", + "peerDependencies": { + "@fullcalendar/core": "~6.1.19" + } + }, + "node_modules/@fullcalendar/list": { + "version": "6.1.19", + "resolved": "https://registry.npmjs.org/@fullcalendar/list/-/list-6.1.19.tgz", + "integrity": "sha512-knZHpAVF0LbzZpSJSUmLUUzF0XlU/MRGK+Py2s0/mP93bCtno1k2L3XPs/kzh528hSjehwLm89RgKTSfW1P6cA==", + "license": "MIT", + "peerDependencies": { + "@fullcalendar/core": "~6.1.19" + } + }, + "node_modules/@fullcalendar/react": { + "version": "6.1.19", + "resolved": "https://registry.npmjs.org/@fullcalendar/react/-/react-6.1.19.tgz", + "integrity": "sha512-FP78vnyylaL/btZeHig8LQgfHgfwxLaIG6sKbNkzkPkKEACv11UyyBoTSkaavPsHtXvAkcTED1l7TOunAyPEnA==", + "license": "MIT", + "peerDependencies": { + "@fullcalendar/core": "~6.1.19", + "react": "^16.7.0 || ^17 || ^18 || ^19", + "react-dom": "^16.7.0 || ^17 || ^18 || ^19" + } + }, + "node_modules/@fullcalendar/timegrid": { + "version": "6.1.19", + "resolved": "https://registry.npmjs.org/@fullcalendar/timegrid/-/timegrid-6.1.19.tgz", + "integrity": "sha512-OuzpUueyO9wB5OZ8rs7TWIoqvu4v3yEqdDxZ2VcsMldCpYJRiOe7yHWKr4ap5Tb0fs7Rjbserc/b6Nt7ol6BRg==", + "license": "MIT", + "dependencies": { + "@fullcalendar/daygrid": "~6.1.19" + }, + "peerDependencies": { + "@fullcalendar/core": "~6.1.19" + } + }, + "node_modules/@hookform/resolvers": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-5.2.2.tgz", + "integrity": "sha512-A/IxlMLShx3KjV/HeTcTfaMxdwy690+L/ZADoeaTltLx+CVuzkeVIPuybK3jrRfw7YZnmdKsVVHAlEPIAEUNlA==", + "license": "MIT", + "dependencies": { + "@standard-schema/utils": "^0.3.0" + }, + "peerDependencies": { + "react-hook-form": "^7.55.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.4.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/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "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/@mux/mux-data-google-ima": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@mux/mux-data-google-ima/-/mux-data-google-ima-0.2.8.tgz", + "integrity": "sha512-0ZEkHdcZ6bS8QtcjFcoJeZxJTpX7qRIledf4q1trMWPznugvtajCjCM2kieK/pzkZj1JM6liDRFs1PJSfVUs2A==", + "license": "MIT", + "dependencies": { + "mux-embed": "5.9.0" + } + }, + "node_modules/@mux/mux-player": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/@mux/mux-player/-/mux-player-3.8.0.tgz", + "integrity": "sha512-2KcJdW4BBX8JDcXpclFKaNBsqpebtaEfTzwm5lPP1Lf6y5OMILvf2tqVCOczurREVFyaEoVD71vL0I5Vvqb1dA==", + "license": "MIT", + "dependencies": { + "@mux/mux-video": "0.27.2", + "@mux/playback-core": "0.31.2", + "media-chrome": "~4.15.1", + "player.style": "^0.3.0" + } + }, + "node_modules/@mux/mux-player-react": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/@mux/mux-player-react/-/mux-player-react-3.8.0.tgz", + "integrity": "sha512-c9TKtK9nsSpXOuC1LVLmmHA+Zlpcx4mzgGaA7ZlukrGMfoXWvA90ROSVAAjXRA+UKSHdLIbvNofgG3P6rEE/4Q==", + "license": "MIT", + "dependencies": { + "@mux/mux-player": "3.8.0", + "@mux/playback-core": "0.31.2", + "prop-types": "^15.8.1" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^17.0.0-0 || ^18 || ^18.0.0-0 || ^19 || ^19.0.0-0", + "react": "^17.0.2 || ^17.0.0-0 || ^18 || ^18.0.0-0 || ^19 || ^19.0.0-0", + "react-dom": "^17.0.2 || ^17.0.2-0 || ^18 || ^18.0.0-0 || ^19 || ^19.0.0-0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@mux/mux-video": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@mux/mux-video/-/mux-video-0.27.2.tgz", + "integrity": "sha512-VAqSw/3kS/qBzjyFSX3wClIX5Kdk6eXXlhxIJRWlClYvUKGm9ruhd7HzkwZVOJguvUh5QbGoiGWBEW2xkNIXzw==", + "license": "MIT", + "dependencies": { + "@mux/mux-data-google-ima": "0.2.8", + "@mux/playback-core": "0.31.2", + "castable-video": "~1.1.11", + "custom-media-element": "~1.4.5", + "media-tracks": "~0.3.3" + } + }, + "node_modules/@mux/playback-core": { + "version": "0.31.2", + "resolved": "https://registry.npmjs.org/@mux/playback-core/-/playback-core-0.31.2.tgz", + "integrity": "sha512-bhOVTGAuKCQuDzNOc3XvDq7vsgqy2DAacLP0WdJciUKjfZhs3oA11NbKG7qAN6akPnZVfgn0Jn/sJN8TRjE30A==", + "license": "MIT", + "dependencies": { + "hls.js": "~1.6.13", + "mux-embed": "^5.8.3" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@pkgr/core": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", + "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/pkgr" + } + }, + "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/@rc-component/portal": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@rc-component/portal/-/portal-1.1.2.tgz", + "integrity": "sha512-6f813C0IsasTZms08kfA8kPAGxbbkYToa8ALaiDIGGECU4i9hj8Plgbx0sNJDrey3EtHO30hmdaxtT0138xZcg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.0", + "classnames": "^2.3.2", + "rc-util": "^5.24.4" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/trigger": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@rc-component/trigger/-/trigger-2.3.0.tgz", + "integrity": "sha512-iwaxZyzOuK0D7lS+0AQEtW52zUWxoGqTGkke3dRyb8pYiShmRpCjB/8TzPI4R6YySCH7Vm9BZj/31VPiiQTLBg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.23.2", + "@rc-component/portal": "^1.1.0", + "classnames": "^2.3.2", + "rc-motion": "^2.0.0", + "rc-resize-observer": "^1.3.1", + "rc-util": "^5.44.0" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@react-aria/ssr": { + "version": "3.9.10", + "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.10.tgz", + "integrity": "sha512-hvTm77Pf+pMBhuBm760Li0BVIO38jv1IBws1xFm1NoL26PU+fe+FMW5+VZWyANR6nYL65joaJKZqOdTQMkO9IQ==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-leaflet/core": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@react-leaflet/core/-/core-3.0.0.tgz", + "integrity": "sha512-3EWmekh4Nz+pGcr+xjf0KNyYfC3U2JjnkWsh0zcqaexYqmmB5ZhH37kz41JXGmKzpaMZCnPofBBm64i+YrEvGQ==", + "license": "Hippocratic-2.1", + "peerDependencies": { + "leaflet": "^1.9.0", + "react": "^19.0.0", + "react-dom": "^19.0.0" + } + }, + "node_modules/@restart/hooks": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.4.16.tgz", + "integrity": "sha512-f7aCv7c+nU/3mF7NWLtVVr0Ra80RqsO89hO72r+Y/nvQr5+q0UFGkocElTH6MJApvReVh6JHUFYn2cw1WdHF3w==", + "license": "MIT", + "dependencies": { + "dequal": "^2.0.3" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@restart/ui": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@restart/ui/-/ui-1.9.4.tgz", + "integrity": "sha512-N4C7haUc3vn4LTwVUPlkJN8Ach/+yIMvRuTVIhjilNHqegY60SGLrzud6errOMNJwSnmYFnt1J0H/k8FE3A4KA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.26.0", + "@popperjs/core": "^2.11.8", + "@react-aria/ssr": "^3.5.0", + "@restart/hooks": "^0.5.0", + "@types/warning": "^3.0.3", + "dequal": "^2.0.3", + "dom-helpers": "^5.2.0", + "uncontrollable": "^8.0.4", + "warning": "^4.0.3" + }, + "peerDependencies": { + "react": ">=16.14.0", + "react-dom": ">=16.14.0" + } + }, + "node_modules/@restart/ui/node_modules/@restart/hooks": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.5.1.tgz", + "integrity": "sha512-EMoH04NHS1pbn07iLTjIjgttuqb7qu4+/EyhAx27MHpoENcB2ZdSsLTNxmKD+WEPnZigo62Qc8zjGnNxoSE/5Q==", + "license": "MIT", + "dependencies": { + "dequal": "^2.0.3" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@restart/ui/node_modules/uncontrollable": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-8.0.4.tgz", + "integrity": "sha512-ulRWYWHvscPFc0QQXvyJjY6LIXU56f0h8pQFvhxiKk5V1fcI8gp9Ht9leVAhrVjzqMw0BgjspBINx9r6oyJUvQ==", + "license": "MIT", + "peerDependencies": { + "react": ">=16.14.0" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.47", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.47.tgz", + "integrity": "sha512-8QagwMH3kNCuzD8EWL8R2YPW5e4OrHNSAHRFDdmFqEwEaD/KcNKjVoumo+gP2vW5eKB2UPbM6vTYiGZX0ixLnw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.53.2.tgz", + "integrity": "sha512-yDPzwsgiFO26RJA4nZo8I+xqzh7sJTZIWQOxn+/XOdPE31lAvLIYCKqjV+lNH/vxE2L2iH3plKxDCRK6i+CwhA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.53.2.tgz", + "integrity": "sha512-k8FontTxIE7b0/OGKeSN5B6j25EuppBcWM33Z19JoVT7UTXFSo3D9CdU39wGTeb29NO3XxpMNauh09B+Ibw+9g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.53.2.tgz", + "integrity": "sha512-A6s4gJpomNBtJ2yioj8bflM2oogDwzUiMl2yNJ2v9E7++sHrSrsQ29fOfn5DM/iCzpWcebNYEdXpaK4tr2RhfQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.53.2.tgz", + "integrity": "sha512-e6XqVmXlHrBlG56obu9gDRPW3O3hLxpwHpLsBJvuI8qqnsrtSZ9ERoWUXtPOkY8c78WghyPHZdmPhHLWNdAGEw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.53.2.tgz", + "integrity": "sha512-v0E9lJW8VsrwPux5Qe5CwmH/CF/2mQs6xU1MF3nmUxmZUCHazCjLgYvToOk+YuuUqLQBio1qkkREhxhc656ViA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.53.2.tgz", + "integrity": "sha512-ClAmAPx3ZCHtp6ysl4XEhWU69GUB1D+s7G9YjHGhIGCSrsg00nEGRRZHmINYxkdoJehde8VIsDC5t9C0gb6yqA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.53.2.tgz", + "integrity": "sha512-EPlb95nUsz6Dd9Qy13fI5kUPXNSljaG9FiJ4YUGU1O/Q77i5DYFW5KR8g1OzTcdZUqQQ1KdDqsTohdFVwCwjqg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.53.2.tgz", + "integrity": "sha512-BOmnVW+khAUX+YZvNfa0tGTEMVVEerOxN0pDk2E6N6DsEIa2Ctj48FOMfNDdrwinocKaC7YXUZ1pHlKpnkja/Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.53.2.tgz", + "integrity": "sha512-Xt2byDZ+6OVNuREgBXr4+CZDJtrVso5woFtpKdGPhpTPHcNG7D8YXeQzpNbFRxzTVqJf7kvPMCub/pcGUWgBjA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.53.2.tgz", + "integrity": "sha512-+LdZSldy/I9N8+klim/Y1HsKbJ3BbInHav5qE9Iy77dtHC/pibw1SR/fXlWyAk0ThnpRKoODwnAuSjqxFRDHUQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.53.2.tgz", + "integrity": "sha512-8ms8sjmyc1jWJS6WdNSA23rEfdjWB30LH8Wqj0Cqvv7qSHnvw6kgMMXRdop6hkmGPlyYBdRPkjJnj3KCUHV/uQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.53.2.tgz", + "integrity": "sha512-3HRQLUQbpBDMmzoxPJYd3W6vrVHOo2cVW8RUo87Xz0JPJcBLBr5kZ1pGcQAhdZgX9VV7NbGNipah1omKKe23/g==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.53.2.tgz", + "integrity": "sha512-fMjKi+ojnmIvhk34gZP94vjogXNNUKMEYs+EDaB/5TG/wUkoeua7p7VCHnE6T2Tx+iaghAqQX8teQzcvrYpaQA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.53.2.tgz", + "integrity": "sha512-XuGFGU+VwUUV5kLvoAdi0Wz5Xbh2SrjIxCtZj6Wq8MDp4bflb/+ThZsVxokM7n0pcbkEr2h5/pzqzDYI7cCgLQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.53.2.tgz", + "integrity": "sha512-w6yjZF0P+NGzWR3AXWX9zc0DNEGdtvykB03uhonSHMRa+oWA6novflo2WaJr6JZakG2ucsyb+rvhrKac6NIy+w==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.2.tgz", + "integrity": "sha512-yo8d6tdfdeBArzC7T/PnHd7OypfI9cbuZzPnzLJIyKYFhAQ8SvlkKtKBMbXDxe1h03Rcr7u++nFS7tqXz87Gtw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.53.2.tgz", + "integrity": "sha512-ah59c1YkCxKExPP8O9PwOvs+XRLKwh/mV+3YdKqQ5AMQ0r4M4ZDuOrpWkUaqO7fzAHdINzV9tEVu8vNw48z0lA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.53.2.tgz", + "integrity": "sha512-4VEd19Wmhr+Zy7hbUsFZ6YXEiP48hE//KPLCSVNY5RMGX2/7HZ+QkN55a3atM1C/BZCGIgqN+xrVgtdak2S9+A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.53.2.tgz", + "integrity": "sha512-IlbHFYc/pQCgew/d5fslcy1KEaYVCJ44G8pajugd8VoOEI8ODhtb/j8XMhLpwHCMB3yk2J07ctup10gpw2nyMA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.53.2.tgz", + "integrity": "sha512-lNlPEGgdUfSzdCWU176ku/dQRnA7W+Gp8d+cWv73jYrb8uT7HTVVxq62DUYxjbaByuf1Yk0RIIAbDzp+CnOTFg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.53.2.tgz", + "integrity": "sha512-S6YojNVrHybQis2lYov1sd+uj7K0Q05NxHcGktuMMdIQ2VixGwAfbJ23NnlvvVV1bdpR2m5MsNBViHJKcA4ADw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.53.2.tgz", + "integrity": "sha512-k+/Rkcyx//P6fetPoLMb8pBeqJBNGx81uuf7iljX9++yNBVRDQgD04L+SVXmXmh5ZP4/WOp4mWF0kmi06PW2tA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@standard-schema/utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@standard-schema/utils/-/utils-0.3.0.tgz", + "integrity": "sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==", + "license": "MIT" + }, + "node_modules/@svta/common-media-library": { + "version": "0.12.4", + "resolved": "https://registry.npmjs.org/@svta/common-media-library/-/common-media-library-0.12.4.tgz", + "integrity": "sha512-9EuOoaNmz7JrfGwjsrD9SxF9otU5TNMnbLu1yU4BeLK0W5cDxVXXR58Z89q9u2AnHjIctscjMTYdlqQ1gojTuw==", + "license": "Apache-2.0" + }, + "node_modules/@swc/helpers": { + "version": "0.5.17", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.17.tgz", + "integrity": "sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@tanstack/react-table": { + "version": "8.21.3", + "resolved": "https://registry.npmjs.org/@tanstack/react-table/-/react-table-8.21.3.tgz", + "integrity": "sha512-5nNMTSETP4ykGegmVkhjcS8tTLW6Vl4axfEGQN3v0zdHYbK4UfoqfPChclTrJ4EoK9QynqAu9oUf8VEmrpZ5Ww==", + "license": "MIT", + "dependencies": { + "@tanstack/table-core": "8.21.3" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, + "node_modules/@tanstack/table-core": { + "version": "8.21.3", + "resolved": "https://registry.npmjs.org/@tanstack/table-core/-/table-core-8.21.3.tgz", + "integrity": "sha512-ldZXEhOBb8Is7xLs01fR3YEc3DERiz5silj8tnGkFZytt1abEvl/GhUmCE0PMLaMPTa3Jk4HbKmRlHmu+gCftg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@testing-library/dom": { + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.1.tgz", + "integrity": "sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.3.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "picocolors": "1.1.1", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@testing-library/jest-dom": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.9.1.tgz", + "integrity": "sha512-zIcONa+hVtVSSep9UT3jZ5rizo2BsxgyDYU7WFD5eICBE7no3881HGeb/QkGfsJs6JTkY1aQhT7rIPC7e+0nnA==", + "license": "MIT", + "dependencies": { + "@adobe/css-tools": "^4.4.0", + "aria-query": "^5.0.0", + "css.escape": "^1.5.1", + "dom-accessibility-api": "^0.6.3", + "picocolors": "^1.1.1", + "redent": "^3.0.0" + }, + "engines": { + "node": ">=14", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/dom-accessibility-api": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz", + "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==", + "license": "MIT" + }, + "node_modules/@testing-library/react": { + "version": "16.3.0", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.3.0.tgz", + "integrity": "sha512-kFSyxiEDwv1WLl2fgsq6pPBbw5aWKrsY2/noi1Id0TK0UParSF62oFQFGHXIyaG4pp2tEub/Zlel+fjjZILDsw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@testing-library/dom": "^10.0.0", + "@types/react": "^18.0.0 || ^19.0.0", + "@types/react-dom": "^18.0.0 || ^19.0.0", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@testing-library/user-event": { + "version": "14.6.1", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.6.1.tgz", + "integrity": "sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw==", + "license": "MIT", + "engines": { + "node": ">=12", + "npm": ">=6" + }, + "peerDependencies": { + "@testing-library/dom": ">=7.21.4" + } + }, + "node_modules/@tinymce/tinymce-react": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@tinymce/tinymce-react/-/tinymce-react-6.3.0.tgz", + "integrity": "sha512-E++xnn0XzDzpKr40jno2Kj7umfAE6XfINZULEBBeNjTMvbACWzA6CjiR6V8eTDc9yVmdVhIPqVzV4PqD5TZ/4g==", + "license": "MIT", + "dependencies": { + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": "^19.0.0 || ^18.0.0 || ^17.0.1 || ^16.7.0", + "react-dom": "^19.0.0 || ^18.0.0 || ^17.0.1 || ^16.7.0", + "tinymce": "^8.0.0 || ^7.0.0 || ^6.0.0 || ^5.5.1" + }, + "peerDependenciesMeta": { + "tinymce": { + "optional": true + } + } + }, + "node_modules/@types/aria-query": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", + "license": "MIT", + "peer": true + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, + "node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "node_modules/@types/google.maps": { + "version": "3.58.1", + "resolved": "https://registry.npmjs.org/@types/google.maps/-/google.maps-3.58.1.tgz", + "integrity": "sha512-X9QTSvGJ0nCfMzYOnaVs/k6/4L+7F5uCS+4iUmkLEls6J9S/Phv+m/i3mDeyc49ZBgwab3EFO1HEoBY7k98EGQ==", + "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/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "24.10.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz", + "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~7.16.0" + } + }, + "node_modules/@types/parse-json": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", + "license": "MIT" + }, + "node_modules/@types/prismjs": { + "version": "1.26.5", + "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.5.tgz", + "integrity": "sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ==", + "license": "MIT" + }, + "node_modules/@types/prop-types": { + "version": "15.7.15", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz", + "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==", + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "19.2.5", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.5.tgz", + "integrity": "sha512-keKxkZMqnDicuvFoJbzrhbtdLSPhj/rZThDlKWCDbgXmUg0rEUFtRssDXKYmtXluZlIqiC5VqkCgRwzuyLHKHw==", + "license": "MIT", + "dependencies": { + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-transition-group": { + "version": "4.4.12", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.12.tgz", + "integrity": "sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/warning": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.3.tgz", + "integrity": "sha512-D1XC7WK8K+zZEveUPY+cf4+kgauk8N4eHr/XIHXGlGYkHLud6hK9lYfZk1ry1TNh798cZUCgb6MqGEG8DkJt6Q==", + "license": "MIT" + }, + "node_modules/@videojs/http-streaming": { + "version": "3.17.2", + "resolved": "https://registry.npmjs.org/@videojs/http-streaming/-/http-streaming-3.17.2.tgz", + "integrity": "sha512-VBQ3W4wnKnVKb/limLdtSD2rAd5cmHN70xoMf4OmuDd0t2kfJX04G+sfw6u2j8oOm2BXYM9E1f4acHruqKnM1g==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.12.5", + "@videojs/vhs-utils": "^4.1.1", + "aes-decrypter": "^4.0.2", + "global": "^4.4.0", + "m3u8-parser": "^7.2.0", + "mpd-parser": "^1.3.1", + "mux.js": "7.1.0", + "video.js": "^7 || ^8" + }, + "engines": { + "node": ">=8", + "npm": ">=5" + }, + "peerDependencies": { + "video.js": "^8.19.0" + } + }, + "node_modules/@videojs/vhs-utils": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@videojs/vhs-utils/-/vhs-utils-4.1.1.tgz", + "integrity": "sha512-5iLX6sR2ownbv4Mtejw6Ax+naosGvoT9kY+gcuHzANyUZZ+4NpeNdKMUhb6ag0acYej1Y7cmr/F2+4PrggMiVA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5", + "global": "^4.4.0" + }, + "engines": { + "node": ">=8", + "npm": ">=5" + } + }, + "node_modules/@videojs/xhr": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@videojs/xhr/-/xhr-2.7.0.tgz", + "integrity": "sha512-giab+EVRanChIupZK7gXjHy90y3nncA2phIOyG3Ne5fvpiMJzvqYwiTOnEVW2S4CoYcuKJkomat7bMXA/UoUZQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.5.5", + "global": "~4.4.0", + "is-function": "^1.0.1" + } + }, + "node_modules/@vimeo/player": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/@vimeo/player/-/player-2.29.0.tgz", + "integrity": "sha512-9JjvjeqUndb9otCCFd0/+2ESsLk7VkDE6sxOBy9iy2ukezuQbplVRi+g9g59yAurKofbmTi/KcKxBGO/22zWRw==", + "license": "MIT", + "dependencies": { + "native-promise-only": "0.8.1", + "weakmap-polyfill": "2.0.4" + } + }, + "node_modules/@vis.gl/react-google-maps": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@vis.gl/react-google-maps/-/react-google-maps-1.7.1.tgz", + "integrity": "sha512-F/GJzJyri7Jqf+bkLNxoi2RcH2hCIo1I3//PyiILqQzdzglMoqZVO1DLXlHPifNdebk1/zib6dMJA3i73nwmuQ==", + "license": "MIT", + "dependencies": { + "@types/google.maps": "^3.54.10", + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "react": ">=16.8.0 || ^19.0 || ^19.0.0-rc", + "react-dom": ">=16.8.0 || ^19.0 || ^19.0.0-rc" + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-5.1.1.tgz", + "integrity": "sha512-WQfkSw0QbQ5aJ2CHYw23ZGkqnRwqKHD/KYsMeTkZzPT4Jcf0DcBxBtwMJxnu6E7oxw5+JC6ZAiePgh28uJ1HBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.28.5", + "@babel/plugin-transform-react-jsx-self": "^7.27.1", + "@babel/plugin-transform-react-jsx-source": "^7.27.1", + "@rolldown/pluginutils": "1.0.0-beta.47", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.18.0" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xmldom/xmldom": { + "version": "0.8.11", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.11.tgz", + "integrity": "sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true, + "license": "Apache-2.0", + "peer": true + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, + "license": "MIT", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-phases": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", + "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "acorn": "^8.14.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/aes-decrypter": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/aes-decrypter/-/aes-decrypter-4.0.2.tgz", + "integrity": "sha512-lc+/9s6iJvuaRe5qDlMTpCFjnwpkeOXp8qP3oiZ5jsj1MRg+SBVUmmICrhxHvc8OELSmc+fEyyxAuppY6hrWzw==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.12.5", + "@videojs/vhs-utils": "^4.1.1", + "global": "^4.4.0", + "pkcs7": "^1.0.4" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "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/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/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/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "license": "MIT" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/archiver": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-7.0.1.tgz", + "integrity": "sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "archiver-utils": "^5.0.2", + "async": "^3.2.4", + "buffer-crc32": "^1.0.0", + "readable-stream": "^4.0.0", + "readdir-glob": "^1.1.2", + "tar-stream": "^3.0.0", + "zip-stream": "^6.0.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/archiver-utils": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-5.0.2.tgz", + "integrity": "sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "glob": "^10.0.0", + "graceful-fs": "^4.2.0", + "is-stream": "^2.0.1", + "lazystream": "^1.0.0", + "lodash": "^4.17.15", + "normalize-path": "^3.0.0", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "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/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "license": "Apache-2.0", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", + "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.0", + "es-object-atoms": "^1.1.1", + "get-intrinsic": "^1.3.0", + "is-string": "^1.1.1", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true, + "license": "MIT" + }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/attr-accept": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.5.tgz", + "integrity": "sha512-0bDNnY/u6pPwHDMoF0FieU354oBi0a8rD9FcsLwzcGWbc8KS8KPIi7y+s13OlVY+gMWc/9xEMUgNE6Qm8ZllYQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/b4a": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.7.3.tgz", + "integrity": "sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q==", + "dev": true, + "license": "Apache-2.0", + "peerDependencies": { + "react-native-b4a": "*" + }, + "peerDependenciesMeta": { + "react-native-b4a": { + "optional": true + } + } + }, + "node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/bare-events": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz", + "integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==", + "dev": true, + "license": "Apache-2.0", + "peerDependencies": { + "bare-abort-controller": "*" + }, + "peerDependenciesMeta": { + "bare-abort-controller": { + "optional": true + } + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.8.28", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.28.tgz", + "integrity": "sha512-gYjt7OIqdM0PcttNYP2aVrr2G0bMALkBaoehD4BuRGjAOtipg0b6wHg1yNL+s5zSnLZZrGHOw4IrND8CD+3oIQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, + "node_modules/bcp-47": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/bcp-47/-/bcp-47-2.1.0.tgz", + "integrity": "sha512-9IIS3UPrvIa1Ej+lVDdDwO7zLehjqsaByECw0bu2RRGP73jALm6FYbzI5gWbgHLvNdkvfXB5YrSbocZdOS0c0w==", + "license": "MIT", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/bcp-47-match": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/bcp-47-match/-/bcp-47-match-2.0.3.tgz", + "integrity": "sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/bcp-47-normalize": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/bcp-47-normalize/-/bcp-47-normalize-2.3.0.tgz", + "integrity": "sha512-8I/wfzqQvttUFz7HVJgIZ7+dj3vUaIyIxYXaTRP1YWoSDfzt6TUmxaKZeuXR62qBmYr+nvuWINFRl6pZ5DlN4Q==", + "license": "MIT", + "dependencies": { + "bcp-47": "^2.0.0", + "bcp-47-match": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/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": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.0.tgz", + "integrity": "sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==", + "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.8.25", + "caniuse-lite": "^1.0.30001754", + "electron-to-chromium": "^1.5.249", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.1.4" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/buffer-crc32": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz", + "integrity": "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001755", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001755.tgz", + "integrity": "sha512-44V+Jm6ctPj7R52Na4TLi3Zri4dWUljJd+RDm+j8LtNCc/ihLCT+X1TzoOAkRETEWqjuLnh9581Tl80FvK7jVA==", + "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/castable-video": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/castable-video/-/castable-video-1.1.11.tgz", + "integrity": "sha512-LCRTK6oe7SB1SiUQFzZCo6D6gcEzijqBTVIuj3smKpQdesXM18QTbCVqWgh9MfOeQgTx/i9ji5jGcdqNPeWg2g==", + "license": "MIT", + "dependencies": { + "custom-media-element": "~1.4.5" + } + }, + "node_modules/ce-la-react": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/ce-la-react/-/ce-la-react-0.3.1.tgz", + "integrity": "sha512-g0YwpZDPIwTwFumGTzNHcgJA6VhFfFCJkSNdUdC04br2UfU+56JDrJrJva3FZ7MToB4NDHAFBiPE/PZdNl1mQA==", + "license": "BSD-3-Clause", + "peerDependencies": { + "react": ">=17.0.0" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chart.js": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.5.1.tgz", + "integrity": "sha512-GIjfiT9dbmHRiYi6Nl2yFCq7kkwdkp1W/lp2J99rX0yo9tgJGn3lKQATztIjb5tVtevcBtIdICNWqlq5+E8/Pw==", + "license": "MIT", + "dependencies": { + "@kurkle/color": "^0.3.0" + }, + "engines": { + "pnpm": ">=8" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/classnames": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", + "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==", + "license": "MIT" + }, + "node_modules/clean-webpack-plugin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-4.0.0.tgz", + "integrity": "sha512-WuWE1nyTNAyW5T7oNyys2EN0cfP2fdRxhxnIQWiAp0bMabPdHhoGxM8A6YL2GhqwgrPnnaemVE7nv5XJ2Fhh2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "del": "^4.1.1" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "webpack": ">=4.0.0 <6.0.0" + } + }, + "node_modules/cloudflare-video-element": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/cloudflare-video-element/-/cloudflare-video-element-1.3.4.tgz", + "integrity": "sha512-F9g+tXzGEXI6v6L48qXxr8vnR8+L6yy7IhpJxK++lpzuVekMHTixxH7/dzLuq6OacVGziU4RB5pzZYJ7/LYtJg==", + "license": "MIT" + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/codem-isoboxer": { + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/codem-isoboxer/-/codem-isoboxer-0.3.10.tgz", + "integrity": "sha512-eNk3TRV+xQMJ1PEj0FQGY8KD4m0GPxT487XJ+Iftm7mVa9WpPFDMWqPt+46buiP5j5Wzqe5oMIhqBcAeKfygSA==", + "license": "MIT" + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true, + "license": "MIT" + }, + "node_modules/compress-commons": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-6.0.2.tgz", + "integrity": "sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "crc-32": "^1.2.0", + "crc32-stream": "^6.0.0", + "is-stream": "^2.0.1", + "normalize-path": "^3.0.0", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cookie": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz", + "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/core-js": { + "version": "3.46.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.46.0.tgz", + "integrity": "sha512-vDMm9B0xnqqZ8uSBpZ8sNtRtOdmfShrvT6h2TuQGLs0Is+cR0DYbj/KWP6ALVNbWPpqA/qPLoOuppJN07humpA==", + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-pure": { + "version": "3.46.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.46.0.tgz", + "integrity": "sha512-NMCW30bHNofuhwLhYPt66OLOKTMbOhgTTatKVbaQC3KRHpTCiRIBYvtshr+NBYSnBxwAFhjW/RfJ0XbIjS16rw==", + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "license": "MIT", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cosmiconfig/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, + "node_modules/countup.js": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/countup.js/-/countup.js-2.9.0.tgz", + "integrity": "sha512-llqrvyXztRFPp6+i8jx25phHWcVWhrHO4Nlt0uAOSKHB8778zzQswa4MU3qKBvkXfJKftRYFJuVHez67lyKdHg==", + "license": "MIT" + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/crc32-stream": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-6.0.0.tgz", + "integrity": "sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==", + "dev": true, + "license": "MIT", + "dependencies": { + "crc-32": "^1.2.0", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-loader": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.2.tgz", + "integrity": "sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==", + "dev": true, + "license": "MIT", + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.27.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/css-loader/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", + "license": "MIT" + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.2.tgz", + "integrity": "sha512-D80T+tiqkd/8B0xNlbstWDG4x6aqVfO52+OlSUNIdkTvmNw0uQpJLeos2J/2XvpyidAFuTPmpad+tUxLndwj6g==", + "license": "MIT" + }, + "node_modules/custom-event-polyfill": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/custom-event-polyfill/-/custom-event-polyfill-1.0.7.tgz", + "integrity": "sha512-TDDkd5DkaZxZFM8p+1I3yAlvM3rSr1wbrOliG4yJiwinMZN8z/iGL7BTlDkrJcYTmgUSb4ywVCc3ZaUtOtC76w==", + "license": "MIT" + }, + "node_modules/custom-media-element": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/custom-media-element/-/custom-media-element-1.4.5.tgz", + "integrity": "sha512-cjrsQufETwxjvwZbYbKBCJNvmQ2++G9AvT45zDi7NXL9k2PdVcs2h0jQz96J6G4TMKRCcEsoJ+QTgQD00Igtjw==", + "license": "MIT" + }, + "node_modules/d3": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", + "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", + "license": "ISC", + "dependencies": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "license": "ISC", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "license": "ISC", + "dependencies": { + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-contour": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", + "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "license": "ISC", + "dependencies": { + "d3-array": "^3.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "license": "ISC", + "dependencies": { + "delaunator": "5" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "license": "ISC", + "dependencies": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "bin": { + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "license": "ISC", + "dependencies": { + "d3-dsv": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-geo": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", + "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", + "license": "ISC", + "dependencies": { + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "license": "ISC", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "license": "ISC", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "license": "ISC", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "license": "ISC", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" + } + }, + "node_modules/d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/dash-video-element": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/dash-video-element/-/dash-video-element-0.3.0.tgz", + "integrity": "sha512-Pe+BxG153n+CH++3gmWMApVXEUs767YGxsRebdNZRSZdXjbv7OGbsitYbjNMC4QAjCWBvBjIclAYV4hoc7OWSQ==", + "license": "MIT", + "dependencies": { + "custom-media-element": "^1.4.5", + "dashjs": "^5.0.3", + "media-tracks": "^0.3.4" + } + }, + "node_modules/dashjs": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/dashjs/-/dashjs-5.0.3.tgz", + "integrity": "sha512-TXndNnCUjFjF2nYBxDVba+hWRpVkadkQ8flLp7kHkem+5+wZTfRShJCnVkPUosmjS0YPE9fVNLbYPJxHBeQZvA==", + "license": "BSD-3-Clause", + "dependencies": { + "@svta/common-media-library": "^0.12.4", + "bcp-47-match": "^2.0.3", + "bcp-47-normalize": "^2.3.0", + "codem-isoboxer": "0.3.10", + "fast-deep-equal": "3.1.3", + "html-entities": "^2.5.2", + "imsc": "^1.1.5", + "localforage": "^1.10.0", + "path-browserify": "^1.0.1", + "ua-parser-js": "^1.0.37" + } + }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/date-fns": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz", + "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kossnocorp" + } + }, + "node_modules/dayjs": { + "version": "1.11.19", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz", + "integrity": "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==", + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "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/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/del": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/delaunator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", + "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", + "license": "ISC", + "dependencies": { + "robust-predicates": "^3.0.2" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dom-accessibility-api": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", + "license": "MIT", + "peer": true + }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, + "node_modules/dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "license": "MIT" + }, + "node_modules/echarts": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/echarts/-/echarts-6.0.0.tgz", + "integrity": "sha512-Tte/grDQRiETQP4xz3iZWSvoHrkCQtwqd6hs+mifXcjrCuo2iKWbajFObuLJVBlDIJlOzgQPd1hsaKt/3+OMkQ==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "2.3.0", + "zrender": "6.0.0" + } + }, + "node_modules/echarts-for-react": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/echarts-for-react/-/echarts-for-react-3.0.5.tgz", + "integrity": "sha512-YpEI5Ty7O/2nvCfQ7ybNa+S90DwE8KYZWacGvJW4luUqywP7qStQ+pxDlYOmr4jGDu10mhEkiAuMKcUlT4W5vg==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "size-sensor": "^1.0.1" + }, + "peerDependencies": { + "echarts": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0", + "react": "^15.0.0 || >=16.0.0" + } + }, + "node_modules/echarts/node_modules/tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", + "license": "0BSD" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.254", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.254.tgz", + "integrity": "sha512-DcUsWpVhv9svsKRxnSCZ86SjD+sp32SGidNB37KpqXJncp1mfUgKbHvBomE89WJDbfVKw1mdv5+ikrvd43r+Bg==", + "dev": true, + "license": "ISC" + }, + "node_modules/email-addresses": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-5.0.0.tgz", + "integrity": "sha512-4OIPYlA6JXqtVn8zpHpGiI7vE6EQOAg16aGnDMIAlZVinnoZ8208tW1hAbjWydgN/4PLTT9q+O1K6AH/vALJGw==", + "dev": true, + "license": "MIT" + }, + "node_modules/emoji-picker-react": { + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/emoji-picker-react/-/emoji-picker-react-4.15.1.tgz", + "integrity": "sha512-RYeAgutdYGbKAyLrOHLsSUubGhg6q8sK889k7G8ofWxzqUzeY2i9WR4+Fj8gsP7oPYTfFPFCG7P6/Tl5TWnqOA==", + "license": "MIT", + "dependencies": { + "flairup": "1.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": ">=16" + } + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "license": "MIT" + }, + "node_modules/enhanced-resolve": { + "version": "5.18.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz", + "integrity": "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", + "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.2.1", + "is-set": "^2.0.3", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.1", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.4", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.19" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", + "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.6", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "iterator.prototype": "^1.1.4", + "safe-array-concat": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/esbuild": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.12", + "@esbuild/android-arm": "0.25.12", + "@esbuild/android-arm64": "0.25.12", + "@esbuild/android-x64": "0.25.12", + "@esbuild/darwin-arm64": "0.25.12", + "@esbuild/darwin-x64": "0.25.12", + "@esbuild/freebsd-arm64": "0.25.12", + "@esbuild/freebsd-x64": "0.25.12", + "@esbuild/linux-arm": "0.25.12", + "@esbuild/linux-arm64": "0.25.12", + "@esbuild/linux-ia32": "0.25.12", + "@esbuild/linux-loong64": "0.25.12", + "@esbuild/linux-mips64el": "0.25.12", + "@esbuild/linux-ppc64": "0.25.12", + "@esbuild/linux-riscv64": "0.25.12", + "@esbuild/linux-s390x": "0.25.12", + "@esbuild/linux-x64": "0.25.12", + "@esbuild/netbsd-arm64": "0.25.12", + "@esbuild/netbsd-x64": "0.25.12", + "@esbuild/openbsd-arm64": "0.25.12", + "@esbuild/openbsd-x64": "0.25.12", + "@esbuild/openharmony-arm64": "0.25.12", + "@esbuild/sunos-x64": "0.25.12", + "@esbuild/win32-arm64": "0.25.12", + "@esbuild/win32-ia32": "0.25.12", + "@esbuild/win32-x64": "0.25.12" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "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==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.39.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.1.tgz", + "integrity": "sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.1", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.39.1", + "@eslint/plugin-kit": "^0.4.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "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", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-config-prettier": { + "version": "10.1.8", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz", + "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", + "dev": true, + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "funding": { + "url": "https://opencollective.com/eslint-config-prettier" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.4.tgz", + "integrity": "sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.11.7" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.37.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", + "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.3", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.2.1", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.9", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.1", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.12", + "string.prototype.repeat": "^1.0.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "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/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/events-universal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz", + "integrity": "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bare-events": "^2.7.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==", + "license": "MIT" + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/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.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/file-selector": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-2.1.2.tgz", + "integrity": "sha512-QgXo+mXTe8ljeqUFaX3QVHc5osSItJ/Km+xpocx0aSqWGMSCf6qYs/VnzZgS864Pjn5iceMRFigeAV7AfTlaig==", + "license": "MIT", + "dependencies": { + "tslib": "^2.7.0" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/filename-reserved-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", + "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/filenamify": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz", + "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "filename-reserved-regex": "^2.0.0", + "strip-outer": "^1.0.1", + "trim-repeated": "^1.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "license": "MIT", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "license": "MIT" + }, + "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/flairup": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/flairup/-/flairup-1.0.0.tgz", + "integrity": "sha512-IKlE+pNvL2R+kVL1kEhUYqRxVqeFnjiIvHWDMLFXNaqyUdFXQM2wte44EfMYJNHkW16X991t2Zg8apKkhv7OBA==", + "license": "MIT" + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fs-extra": { + "version": "11.3.2", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", + "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/fuse.js": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-7.1.0.tgz", + "integrity": "sha512-trLf4SzuuUxfusZADLINj+dE8clK1frKdmqiJNb1Es75fmI5oY6X2mxLVUciLLjxqw/xr72Dhy+lER6dGd02FQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=10" + } + }, + "node_modules/generator-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", + "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gh-pages": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/gh-pages/-/gh-pages-6.3.0.tgz", + "integrity": "sha512-Ot5lU6jK0Eb+sszG8pciXdjMXdBJ5wODvgjR+imihTqsUWF2K6dJ9HST55lgqcs8wWcw6o6wAsUzfcYRhJPXbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "async": "^3.2.4", + "commander": "^13.0.0", + "email-addresses": "^5.0.0", + "filenamify": "^4.3.0", + "find-cache-dir": "^3.3.1", + "fs-extra": "^11.1.1", + "globby": "^11.1.0" + }, + "bin": { + "gh-pages": "bin/gh-pages.js", + "gh-pages-clean": "bin/gh-pages-clean.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/gh-pages/node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/gh-pages/node_modules/commander": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", + "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/gh-pages/node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "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/glob-regex": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/glob-regex/-/glob-regex-0.3.2.tgz", + "integrity": "sha512-m5blUd3/OqDTWwzBBtWBPrGlAzatRywHameHeekAZyZrskYouOGdNB8T/q6JucucvJXtOuyHIn0/Yia7iDasDw==", + "dev": true + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true, + "license": "BSD-2-Clause", + "peer": true + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "license": "MIT", + "dependencies": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, + "node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/globby/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/globby/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "dev": true, + "license": "MIT" + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hls-video-element": { + "version": "1.5.9", + "resolved": "https://registry.npmjs.org/hls-video-element/-/hls-video-element-1.5.9.tgz", + "integrity": "sha512-hDXhSI3IpSSODJF8ecNzDHKP5cqsouOuKDMjoTexyFePKr9KpXVCPAnVrXFTTH8VbOim4xkLtPkVJFt7J1Rs6w==", + "license": "MIT", + "dependencies": { + "custom-media-element": "^1.4.5", + "hls.js": "^1.6.5", + "media-tracks": "^0.3.4" + } + }, + "node_modules/hls.js": { + "version": "1.6.14", + "resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.6.14.tgz", + "integrity": "sha512-CSpT2aXsv71HST8C5ETeVo+6YybqCpHBiYrCRQSn3U5QUZuLTSsvtq/bj+zuvjLVADeKxoebzo16OkH8m1+65Q==", + "license": "Apache-2.0" + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "license": "BSD-3-Clause", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/html-entities": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.6.0.tgz", + "integrity": "sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ], + "license": "MIT" + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "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/imask": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/imask/-/imask-7.6.1.tgz", + "integrity": "sha512-sJlIFM7eathUEMChTh9Mrfw/IgiWgJqBKq2VNbyXvBZ7ev/IlO6/KQTKlV/Fm+viQMLrFLG/zCuudrLIwgK2dg==", + "license": "MIT", + "dependencies": { + "@babel/runtime-corejs3": "^7.24.4" + }, + "engines": { + "npm": ">=4.0.0" + } + }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "license": "MIT" + }, + "node_modules/immutable": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", + "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==", + "dev": true, + "license": "MIT" + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "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/imsc": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/imsc/-/imsc-1.1.5.tgz", + "integrity": "sha512-V8je+CGkcvGhgl2C1GlhqFFiUOIEdwXbXLiu1Fcubvvbo+g9inauqT3l0pNYXGoLPBj3jxtZz9t+wCopMkwadQ==", + "license": "BSD-2-Clause", + "dependencies": { + "sax": "1.2.1" + } + }, + "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/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/is_js": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/is_js/-/is_js-0.9.0.tgz", + "integrity": "sha512-8Y5EHSH+TonfUHX2g3pMJljdbGavg55q4jmHzghJCdqYDbdNROC8uw/YFQwIRCRqRJT1EY3pJefz+kglw+o7sg==", + "license": "MIT" + }, + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "license": "MIT", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "license": "MIT" + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==", + "license": "MIT" + }, + "node_modules/is-generator-function": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", + "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.4", + "generator-function": "^2.0.0", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-path-inside": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-is-inside": "^1.0.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/iterator.prototype": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", + "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "get-proto": "^1.0.0", + "has-symbols": "^1.1.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jquery": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", + "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==", + "license": "MIT", + "peer": true + }, + "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==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-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==", + "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/json2mq": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/json2mq/-/json2mq-0.2.0.tgz", + "integrity": "sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA==", + "license": "MIT", + "dependencies": { + "string-convert": "^0.2.0" + } + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 0.6.3" + } + }, + "node_modules/lazystream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lazystream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/lazystream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/lazystream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/leaflet": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.9.4.tgz", + "integrity": "sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==", + "license": "BSD-2-Clause" + }, + "node_modules/leaflet.markercluster": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.3.tgz", + "integrity": "sha512-vPTw/Bndq7eQHjLBVlWpnGeLa3t+3zGiuM7fJwCkiMFq+nmRuG3RI3f7f4N4TDX7T4NpbAXpR2+NTRSEGfCSeA==", + "license": "MIT", + "peerDependencies": { + "leaflet": "^1.3.1" + } + }, + "node_modules/leaflet.tilelayer.colorfilter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/leaflet.tilelayer.colorfilter/-/leaflet.tilelayer.colorfilter-2.0.0.tgz", + "integrity": "sha512-hLgNRQ50n9PoFWDdEAEDUXtHW64LOpCvhV0qyHhpm73TQqWxfNFUFoGOZrw3DrTFIG26TSJRwkO012QdOE0M3g==", + "license": "MIT", + "peerDependencies": { + "leaflet": ">=0.6.0 <3" + } + }, + "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/lie": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", + "integrity": "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==", + "license": "MIT", + "dependencies": { + "immediate": "~3.0.5" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/loader-runner": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz", + "integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/loadjs": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loadjs/-/loadjs-4.3.0.tgz", + "integrity": "sha512-vNX4ZZLJBeDEOBvdr2v/F+0aN5oMuPu7JTqrMwp+DtgK+AryOlpy6Xtm2/HpNr+azEa828oQjOtWsB6iDtSfSQ==", + "license": "MIT" + }, + "node_modules/localforage": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz", + "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==", + "license": "Apache-2.0", + "dependencies": { + "lie": "3.1.1" + } + }, + "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.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "license": "MIT" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lottie-react": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lottie-react/-/lottie-react-2.4.1.tgz", + "integrity": "sha512-LQrH7jlkigIIv++wIyrOYFLHSKQpEY4zehPicL9bQsrt1rnoKRYCYgpCUe5maqylNtacy58/sQDZTkwMcTRxZw==", + "license": "MIT", + "dependencies": { + "lottie-web": "^5.10.2" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/lottie-web": { + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/lottie-web/-/lottie-web-5.13.0.tgz", + "integrity": "sha512-+gfBXl6sxXMPe8tKQm7qzLnUy5DUPJPKIyRHwtpCpyUEYjHYRJC/5gjUvdkuO2c3JllrPtHXH5UJJK8LRYl5yQ==", + "license": "MIT" + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lz-string": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", + "license": "MIT", + "peer": true, + "bin": { + "lz-string": "bin/bin.js" + } + }, + "node_modules/m3u8-parser": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/m3u8-parser/-/m3u8-parser-7.2.0.tgz", + "integrity": "sha512-CRatFqpjVtMiMaKXxNvuI3I++vUumIXVVT/JpCpdU/FynV/ceVw1qpPyyBNindL+JlPMSesx+WX1QJaZEJSaMQ==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.12.5", + "@videojs/vhs-utils": "^4.1.1", + "global": "^4.4.0" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-chrome": { + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/media-chrome/-/media-chrome-4.15.1.tgz", + "integrity": "sha512-Hxqr0qQ67ewmRaLJBqe5ayu53txFX+DODb9xBSHgTbw7j+gITGZ4llbPPEmqMlDnatw7IsF+AUh9rJYbpnn4ZQ==", + "license": "MIT", + "dependencies": { + "ce-la-react": "^0.3.0" + } + }, + "node_modules/media-tracks": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/media-tracks/-/media-tracks-0.3.4.tgz", + "integrity": "sha512-5SUElzGMYXA7bcyZBL1YzLTxH9Iyw1AeYNJxzByqbestrrtB0F3wfiWUr7aROpwodO4fwnxOt78Xjb3o3ONNQg==", + "license": "MIT" + }, + "node_modules/memoize-one": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==", + "license": "MIT" + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/min-document": { + "version": "2.19.2", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.2.tgz", + "integrity": "sha512-8S5I8db/uZN8r9HSLFVWPdJCvYOejMcEC82VIzNUc6Zkklf/d1gg2psfE79/vyhWOj4+J8MtwmoOz3TmvaGu5A==", + "license": "MIT", + "dependencies": { + "dom-walk": "^0.1.0" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.9.4", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.4.tgz", + "integrity": "sha512-ZWYT7ln73Hptxqxk2DxPU9MmapXRhxkJD6tkSR04dnQxm8BGu2hzgKLugK5yySD97u/8yy7Ma7E76k9ZdvtjkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "schema-utils": "^4.0.0", + "tapable": "^2.2.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mpd-parser": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mpd-parser/-/mpd-parser-1.3.1.tgz", + "integrity": "sha512-1FuyEWI5k2HcmhS1HkKnUAQV7yFPfXPht2DnRRGtoiiAAW+ESTbtEXIDpRkwdU+XyrQuwrIym7UkoPKsZ0SyFw==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.12.5", + "@videojs/vhs-utils": "^4.0.0", + "@xmldom/xmldom": "^0.8.3", + "global": "^4.4.0" + }, + "bin": { + "mpd-to-m3u8-json": "bin/parse.js" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/mux-embed": { + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/mux-embed/-/mux-embed-5.9.0.tgz", + "integrity": "sha512-wmunL3uoPhma/tWy8PrDPZkvJpXvSFBwbD3KkC4PG8Ztjfb1X3hRJwGUAQyRz7z99b/ovLm2UTTitrkvStjH4w==", + "license": "MIT" + }, + "node_modules/mux.js": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/mux.js/-/mux.js-7.1.0.tgz", + "integrity": "sha512-NTxawK/BBELJrYsZThEulyUMDVlLizKdxyAsMuzoCD1eFj97BVaA8D/CvKsKu6FOLYkFojN5CbM9h++ZTZtknA==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.11.2", + "global": "^4.4.0" + }, + "bin": { + "muxjs-transmux": "bin/transmux.js" + }, + "engines": { + "node": ">=8", + "npm": ">=5" + } + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "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/native-promise-only": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/native-promise-only/-/native-promise-only-0.8.1.tgz", + "integrity": "sha512-zkVhZUA3y8mbz652WrL5x0fB0ehrBkulWT3TomAQ9iDtyXZvzKeEA6GPxAItBYeNYl5yngKRX612qHOhvMkDeg==", + "license": "MIT" + }, + "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-releases": { + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", + "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/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/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "license": "BlueOak-1.0.0" + }, + "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==", + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "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/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "license": "MIT" + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", + "dev": true, + "license": "(WTFPL OR MIT)" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkcs7": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/pkcs7/-/pkcs7-1.0.4.tgz", + "integrity": "sha512-afRERtHn54AlwaF2/+LFszyAANTCggGilmcmILUzEjvs3XgFZT+xE6+QWQcAGmu4xajy+Xtj7acLOPdx5/eXWQ==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.5.5" + }, + "bin": { + "pkcs7": "bin/cli.js" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/player.style": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/player.style/-/player.style-0.3.0.tgz", + "integrity": "sha512-ny1TbqA2ZsUd6jzN+F034+UMXVK7n5SrwepsrZ2gIqVz00Hn0ohCUbbUdst/2IOFCy0oiTbaOXkSFxRw1RmSlg==", + "license": "MIT", + "workspaces": [ + ".", + "site", + "examples/*", + "scripts/*", + "themes/*" + ], + "dependencies": { + "media-chrome": "~4.14.0" + } + }, + "node_modules/player.style/node_modules/media-chrome": { + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/media-chrome/-/media-chrome-4.14.0.tgz", + "integrity": "sha512-IEdFb4blyF15vLvQzLIn6USJBv7Kf2ne+TfLQKBYI5Z0f9VEBVZz5MKy4Uhi0iA9lStl2S9ENIujJRuJIa5OiA==", + "license": "MIT", + "dependencies": { + "ce-la-react": "^0.3.0" + } + }, + "node_modules/plyr": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/plyr/-/plyr-3.8.3.tgz", + "integrity": "sha512-0+iI5uw0WRvtKBpgPCkmQQv7ucHVQKTEo6UFJjgJ8cy/JZhy0dQqshHQVitHXV6l2O3MzhgnuvQ95VSkWcWeSw==", + "license": "MIT", + "dependencies": { + "core-js": "^3.45.1", + "custom-event-polyfill": "^1.0.7", + "loadjs": "^4.3.0", + "rangetouch": "^2.0.1", + "url-polyfill": "^1.1.13" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "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.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz", + "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^7.0.0", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz", + "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==", + "dev": true, + "license": "ISC", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-selector-parser": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", + "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "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/preact": { + "version": "10.12.1", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.12.1.tgz", + "integrity": "sha512-l8386ixSsBdbreOAkqtrwqHwdvR35ID8c3rKPa8lCWuO86dBi32QWHV4vfsZK1utLLFMvw+Z5Ad4XLkZzchscg==", + "license": "MIT", + "peer": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" + } + }, + "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.6.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", + "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/pretty-format/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "license": "MIT", + "peer": true + }, + "node_modules/prism-react-renderer": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-2.4.1.tgz", + "integrity": "sha512-ey8Ls/+Di31eqzUxC46h8MksNuGx/n0AAC8uKpwFau4RPDYLuE3EXTp8N8G2vX2N7UC/+IXeNUnlWBGGcAG+Ig==", + "license": "MIT", + "dependencies": { + "@types/prismjs": "^1.26.0", + "clsx": "^2.0.0" + }, + "peerDependencies": { + "react": ">=16.0.0" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true, + "license": "MIT" + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types-extra": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/prop-types-extra/-/prop-types-extra-1.1.1.tgz", + "integrity": "sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew==", + "license": "MIT", + "dependencies": { + "react-is": "^16.3.2", + "warning": "^4.0.0" + }, + "peerDependencies": { + "react": ">=0.14.0" + } + }, + "node_modules/property-expr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.6.tgz", + "integrity": "sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==", + "license": "MIT" + }, + "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/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/rangetouch": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/rangetouch/-/rangetouch-2.0.1.tgz", + "integrity": "sha512-sln+pNSc8NGaHoLzwNBssFSf/rSYkqeBXzX1AtJlkJiUaVSJSbRAWJk+4omsXkN+EJalzkZhWQ3th1m0FpR5xA==", + "license": "MIT" + }, + "node_modules/rc-motion": { + "version": "2.9.5", + "resolved": "https://registry.npmjs.org/rc-motion/-/rc-motion-2.9.5.tgz", + "integrity": "sha512-w+XTUrfh7ArbYEd2582uDrEhmBHwK1ZENJiSJVb7uRxdE7qJSYjbO2eksRXmndqyKqKoYPc9ClpPh5242mV1vA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.11.1", + "classnames": "^2.2.1", + "rc-util": "^5.44.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-resize-observer": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/rc-resize-observer/-/rc-resize-observer-1.4.3.tgz", + "integrity": "sha512-YZLjUbyIWox8E9i9C3Tm7ia+W7euPItNWSPX5sCcQTYbnwDb5uNpnLHQCG1f22oZWUhLw4Mv2tFmeWe68CDQRQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.20.7", + "classnames": "^2.2.1", + "rc-util": "^5.44.1", + "resize-observer-polyfill": "^1.5.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-slider": { + "version": "11.1.9", + "resolved": "https://registry.npmjs.org/rc-slider/-/rc-slider-11.1.9.tgz", + "integrity": "sha512-h8IknhzSh3FEM9u8ivkskh+Ef4Yo4JRIY2nj7MrH6GQmrwV6mcpJf5/4KgH5JaVI1H3E52yCdpOlVyGZIeph5A==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.10.1", + "classnames": "^2.2.5", + "rc-util": "^5.36.0" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-tooltip": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rc-tooltip/-/rc-tooltip-6.4.0.tgz", + "integrity": "sha512-kqyivim5cp8I5RkHmpsp1Nn/Wk+1oeloMv9c7LXNgDxUpGm+RbXJGL+OPvDlcRnx9DBeOe4wyOIl4OKUERyH1g==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.11.2", + "@rc-component/trigger": "^2.0.0", + "classnames": "^2.3.1", + "rc-util": "^5.44.3" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-util": { + "version": "5.44.4", + "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.44.4.tgz", + "integrity": "sha512-resueRJzmHG9Q6rI/DfK6Kdv9/Lfls05vzMs1Sk3M2P+3cJa+MakaZyWY8IPfehVuhPJFKrIY1IK4GqbiaiY5w==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.3", + "react-is": "^18.2.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-util/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" + }, + "node_modules/react": { + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.0.tgz", + "integrity": "sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-bootstrap": { + "version": "2.10.10", + "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-2.10.10.tgz", + "integrity": "sha512-gMckKUqn8aK/vCnfwoBpBVFUGT9SVQxwsYrp9yDHt0arXMamxALerliKBxr1TPbntirK/HGrUAHYbAeQTa9GHQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.24.7", + "@restart/hooks": "^0.4.9", + "@restart/ui": "^1.9.4", + "@types/prop-types": "^15.7.12", + "@types/react-transition-group": "^4.4.6", + "classnames": "^2.3.2", + "dom-helpers": "^5.2.1", + "invariant": "^2.2.4", + "prop-types": "^15.8.1", + "prop-types-extra": "^1.1.0", + "react-transition-group": "^4.4.5", + "uncontrollable": "^7.2.1", + "warning": "^4.0.3" + }, + "peerDependencies": { + "@types/react": ">=16.14.8", + "react": ">=16.14.0", + "react-dom": ">=16.14.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-chartjs-2": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/react-chartjs-2/-/react-chartjs-2-5.3.1.tgz", + "integrity": "sha512-h5IPXKg9EXpjoBzUfyWJvllMjG2mQ4EiuHQFhms/AjUm0XSZHhyRy2xVmLXHKrtcdrPO4mnGqRtYoD0vp95A0A==", + "license": "MIT", + "peerDependencies": { + "chart.js": "^4.1.1", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/react-countup": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/react-countup/-/react-countup-6.5.3.tgz", + "integrity": "sha512-udnqVQitxC7QWADSPDOxVWULkLvKUWrDapn5i53HE4DPRVgs+Y5rr4bo25qEl8jSh+0l2cToJgGMx+clxPM3+w==", + "license": "MIT", + "dependencies": { + "countup.js": "^2.8.0" + }, + "peerDependencies": { + "react": ">= 16.3.0" + } + }, + "node_modules/react-datepicker": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/react-datepicker/-/react-datepicker-8.9.0.tgz", + "integrity": "sha512-yoRsGxjqVRjk8iUBssrW9jcinTeyP9mAfTpuzdKvlESOUjdrY0sfDTzIZWJAn38jvNcxW1dnDmW1CinjiFdxYQ==", + "license": "MIT", + "dependencies": { + "@floating-ui/react": "^0.27.15", + "clsx": "^2.1.1", + "date-fns": "^4.1.0" + }, + "peerDependencies": { + "react": "^16.9.0 || ^17 || ^18 || ^19 || ^19.0.0-rc", + "react-dom": "^16.9.0 || ^17 || ^18 || ^19 || ^19.0.0-rc" + } + }, + "node_modules/react-dom": { + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.0.tgz", + "integrity": "sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.0" + } + }, + "node_modules/react-dropzone": { + "version": "14.3.8", + "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.3.8.tgz", + "integrity": "sha512-sBgODnq+lcA4P296DY4wacOZz3JFpD99fp+hb//iBO2HHnyeZU3FwWyXJ6salNpqQdsZrgMrotuko/BdJMV8Ug==", + "license": "MIT", + "dependencies": { + "attr-accept": "^2.2.4", + "file-selector": "^2.1.0", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">= 10.13" + }, + "peerDependencies": { + "react": ">= 16.8 || 18.0.0" + } + }, + "node_modules/react-error-overlay": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.1.0.tgz", + "integrity": "sha512-SN/U6Ytxf1QGkw/9ve5Y+NxBbZM6Ht95tuXNMKs8EJyFa/Vy/+Co3stop3KBHARfn/giv+Lj1uUnTfOJ3moFEQ==", + "license": "MIT" + }, + "node_modules/react-hook-form": { + "version": "7.66.0", + "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.66.0.tgz", + "integrity": "sha512-xXBqsWGKrY46ZqaHDo+ZUYiMUgi8suYu5kdrS20EG8KiL7VRQitEbNjm+UcrDYrNi1YLyfpmAeGjCZYXLT9YBw==", + "license": "MIT", + "engines": { + "node": ">=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/react-hook-form" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17 || ^18 || ^19" + } + }, + "node_modules/react-icons": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.5.0.tgz", + "integrity": "sha512-MEFcXdkP3dLo8uumGI5xN3lDFNsRtrjbOEKDLD7yv76v4wpnEq2Lt2qeHaQOr34I/wPN3s3+N08WkQ+CW37Xiw==", + "license": "MIT", + "peerDependencies": { + "react": "*" + } + }, + "node_modules/react-imask": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/react-imask/-/react-imask-7.6.1.tgz", + "integrity": "sha512-vLNfzcCz62Yzx/GRGh5tiCph9Gbh2cZu+Tz8OiO5it2eNuuhpA0DWhhSlOtVtSJ80+Bx+vFK5De8eQ9AmbkXzA==", + "license": "MIT", + "dependencies": { + "imask": "^7.6.1", + "prop-types": "^15.8.1" + }, + "engines": { + "npm": ">=4.0.0" + }, + "peerDependencies": { + "react": ">=0.14.0" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/react-leaflet": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/react-leaflet/-/react-leaflet-5.0.0.tgz", + "integrity": "sha512-CWbTpr5vcHw5bt9i4zSlPEVQdTVcML390TjeDG0cK59z1ylexpqC6M1PJFjV8jD7CF+ACBFsLIDs6DRMoLEofw==", + "license": "Hippocratic-2.1", + "dependencies": { + "@react-leaflet/core": "^3.0.0" + }, + "peerDependencies": { + "leaflet": "^1.9.0", + "react": "^19.0.0", + "react-dom": "^19.0.0" + } + }, + "node_modules/react-leaflet-markercluster": { + "version": "5.0.0-rc.0", + "resolved": "https://registry.npmjs.org/react-leaflet-markercluster/-/react-leaflet-markercluster-5.0.0-rc.0.tgz", + "integrity": "sha512-jWa4bPD5LfLV3Lid1RWgl+yKUuQtnqeYtJzzLb/fiRjvX+rtwzY8pMoUFuygqyxNrWxMTQlWKBHxkpI7Sxvu4Q==", + "license": "MIT", + "dependencies": { + "@react-leaflet/core": "^3.0.0", + "leaflet": "^1.9.4", + "leaflet.markercluster": "^1.5.3", + "react-leaflet": "^5.0.0" + }, + "peerDependencies": { + "leaflet": "^1.9.4", + "leaflet.markercluster": "^1.5.3", + "react": "^19.0.0", + "react-leaflet": "^5.0.0" + } + }, + "node_modules/react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==", + "license": "MIT" + }, + "node_modules/react-live": { + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/react-live/-/react-live-4.1.8.tgz", + "integrity": "sha512-B2SgNqwPuS2ekqj4lcxi5TibEcjWkdVyYykBEUBshPAPDQ527x2zPEZg560n8egNtAjUpwXFQm7pcXV65aAYmg==", + "license": "MIT", + "dependencies": { + "prism-react-renderer": "^2.4.0", + "sucrase": "^3.35.0", + "use-editable": "^2.3.3" + }, + "engines": { + "node": ">= 0.12.0", + "npm": ">= 2.0.0" + }, + "peerDependencies": { + "react": ">=18.0.0", + "react-dom": ">=18.0.0" + } + }, + "node_modules/react-player": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/react-player/-/react-player-3.4.0.tgz", + "integrity": "sha512-QpQSHXtnMBKjQVNeaCYMtTVcynWQ0DDDhz/FJu1OR9PHLC1Aih94UqNstywzSHbJ6Oc7lI8/7kDDqcIvyTI6zQ==", + "license": "MIT", + "dependencies": { + "@mux/mux-player-react": "^3.8.0", + "cloudflare-video-element": "^1.3.4", + "dash-video-element": "^0.3.0", + "hls-video-element": "^1.5.9", + "spotify-audio-element": "^1.0.3", + "tiktok-video-element": "^0.1.1", + "twitch-video-element": "^0.1.5", + "vimeo-video-element": "^1.6.1", + "wistia-video-element": "^1.3.5", + "youtube-video-element": "^1.8.0" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18 || ^19", + "react": "^17.0.2 || ^18 || ^19", + "react-dom": "^17.0.2 || ^18 || ^19" + } + }, + "node_modules/react-range": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/react-range/-/react-range-1.10.0.tgz", + "integrity": "sha512-kDo0LiBUHIQIP8menx0UoxTnHr7UXBYpIYl/DR9jCaO1o29VwvCLpkP/qOTNQz5hkJadPg1uEM07XJcJ1XGoKw==", + "license": "MIT", + "peerDependencies": { + "react": "*", + "react-dom": "*" + } + }, + "node_modules/react-refresh": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.18.0.tgz", + "integrity": "sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-router": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.9.6.tgz", + "integrity": "sha512-Y1tUp8clYRXpfPITyuifmSoE2vncSME18uVLgaqyxh9H35JWpIfzHo+9y3Fzh5odk/jxPW29IgLgzcdwxGqyNA==", + "license": "MIT", + "dependencies": { + "cookie": "^1.0.1", + "set-cookie-parser": "^2.6.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } + } + }, + "node_modules/react-router-dom": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.9.6.tgz", + "integrity": "sha512-2MkC2XSXq6HjGcihnx1s0DBWQETI4mlis4Ux7YTLvP67xnGxCvq+BcCQSO81qQHVUTM1V53tl4iVVaY5sReCOA==", + "license": "MIT", + "peer": true, + "dependencies": { + "react-router": "7.9.6" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/react-router-hash-link": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/react-router-hash-link/-/react-router-hash-link-2.4.3.tgz", + "integrity": "sha512-NU7GWc265m92xh/aYD79Vr1W+zAIXDWp3L2YZOYP4rCqPnJ6LI6vh3+rKgkidtYijozHclaEQTAHaAaMWPVI4A==", + "license": "MIT", + "dependencies": { + "prop-types": "^15.7.2" + }, + "peerDependencies": { + "react": ">=15", + "react-router-dom": ">=4" + } + }, + "node_modules/react-select": { + "version": "5.10.2", + "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.10.2.tgz", + "integrity": "sha512-Z33nHdEFWq9tfnfVXaiM12rbJmk+QjFEztWLtmXqQhz6Al4UZZ9xc0wiatmGtUOCCnHN0WizL3tCMYRENX4rVQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.0", + "@emotion/cache": "^11.4.0", + "@emotion/react": "^11.8.1", + "@floating-ui/dom": "^1.0.1", + "@types/react-transition-group": "^4.4.0", + "memoize-one": "^6.0.0", + "prop-types": "^15.6.0", + "react-transition-group": "^4.3.0", + "use-isomorphic-layout-effect": "^1.2.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/react-simple-star-rating": { + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/react-simple-star-rating/-/react-simple-star-rating-5.1.7.tgz", + "integrity": "sha512-NTFkW8W3uwvI82Fv7JW5i7gmDjEZKxJmj+Z9vn+BjYIXT6ILdnU9qnSUP2cWrWN/WAUlue81f9SgM4CQcenltQ==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": ">=18.0.0", + "react-dom": ">=18.0.0" + } + }, + "node_modules/react-simple-typewriter": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/react-simple-typewriter/-/react-simple-typewriter-5.0.1.tgz", + "integrity": "sha512-vA5HkABwJKL/DJ4RshSlY/igdr+FiVY4MLsSQYJX6FZG/f1/VwN4y1i3mPXRyfaswrvI8xii1kOVe1dYtO2Row==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": ">=18.0.0", + "react-dom": ">=18.0.0" + } + }, + "node_modules/react-slick": { + "version": "0.31.0", + "resolved": "https://registry.npmjs.org/react-slick/-/react-slick-0.31.0.tgz", + "integrity": "sha512-zo6VLT8wuSBJffg/TFPbzrw2dEnfZ/cUKmYsKByh3AgatRv29m2LoFbq5vRMa3R3A4wp4d8gwbJKO2fWZFaI3g==", + "license": "MIT", + "dependencies": { + "classnames": "^2.2.5", + "json2mq": "^0.2.0", + "lodash.debounce": "^4.0.8", + "resize-observer-polyfill": "^1.5.0" + }, + "peerDependencies": { + "react": "^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/react-textarea-autosize": { + "version": "8.5.9", + "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.5.9.tgz", + "integrity": "sha512-U1DGlIQN5AwgjTyOEnI1oCcMuEr1pv1qOtklB2l4nyMGbHzWrI0eFsYK0zos2YWqAolJyG0IWJaqWmWj5ETh0A==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.20.13", + "use-composed-ref": "^1.3.0", + "use-latest": "^1.2.1" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/react-toastify": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/react-toastify/-/react-toastify-11.0.5.tgz", + "integrity": "sha512-EpqHBGvnSTtHYhCPLxML05NLY2ZX0JURbAdNYa6BUkk+amz4wbKBQvoKQAB0ardvSarUBuY4Q4s1sluAzZwkmA==", + "license": "MIT", + "dependencies": { + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": "^18 || ^19", + "react-dom": "^18 || ^19" + } + }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "license": "BSD-3-Clause", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, + "node_modules/react-use-scrollspy": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/react-use-scrollspy/-/react-use-scrollspy-3.1.1.tgz", + "integrity": "sha512-EXkQoMKqt6VF4fAxcLFsNLZksctXXmtC8LYk1Zb0Cn0MZX1LErikAoAPWWJkel3Ze7NbJRVgpIzwEX4w108tOg==", + "license": "MIT", + "dependencies": { + "lodash": "4.17.21" + }, + "peerDependencies": { + "react": ">=16.8.6" + } + }, + "node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "dev": true, + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/readdir-glob": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", + "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.1.0" + } + }, + "node_modules/readdir-glob/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/readdir-glob/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/recrawl-sync": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/recrawl-sync/-/recrawl-sync-2.2.3.tgz", + "integrity": "sha512-vSaTR9t+cpxlskkdUFrsEpnf67kSmPk66yAGT1fZPrDudxQjoMzPgQhSMImQ0pAw5k0NPirefQfhopSjhdUtpQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@cush/relative": "^1.0.0", + "glob-regex": "^0.3.0", + "slash": "^3.0.0", + "sucrase": "^3.20.3", + "tslib": "^1.9.3" + } + }, + "node_modules/recrawl-sync/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "license": "MIT", + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/resize-observer-polyfill": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==", + "license": "MIT" + }, + "node_modules/resolve": { + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/robust-predicates": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==", + "license": "Unlicense" + }, + "node_modules/rollup": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.53.2.tgz", + "integrity": "sha512-MHngMYwGJVi6Fmnk6ISmnk7JAHRNF0UkuucA0CUW3N3a4KnONPEZz+vUanQP/ZC/iY1Qkf3bwPWzyY84wEks1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.53.2", + "@rollup/rollup-android-arm64": "4.53.2", + "@rollup/rollup-darwin-arm64": "4.53.2", + "@rollup/rollup-darwin-x64": "4.53.2", + "@rollup/rollup-freebsd-arm64": "4.53.2", + "@rollup/rollup-freebsd-x64": "4.53.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.53.2", + "@rollup/rollup-linux-arm-musleabihf": "4.53.2", + "@rollup/rollup-linux-arm64-gnu": "4.53.2", + "@rollup/rollup-linux-arm64-musl": "4.53.2", + "@rollup/rollup-linux-loong64-gnu": "4.53.2", + "@rollup/rollup-linux-ppc64-gnu": "4.53.2", + "@rollup/rollup-linux-riscv64-gnu": "4.53.2", + "@rollup/rollup-linux-riscv64-musl": "4.53.2", + "@rollup/rollup-linux-s390x-gnu": "4.53.2", + "@rollup/rollup-linux-x64-gnu": "4.53.2", + "@rollup/rollup-linux-x64-musl": "4.53.2", + "@rollup/rollup-openharmony-arm64": "4.53.2", + "@rollup/rollup-win32-arm64-msvc": "4.53.2", + "@rollup/rollup-win32-ia32-msvc": "4.53.2", + "@rollup/rollup-win32-x64-gnu": "4.53.2", + "@rollup/rollup-win32-x64-msvc": "4.53.2", + "fsevents": "~2.3.2" + } + }, + "node_modules/rtlcss": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-4.3.0.tgz", + "integrity": "sha512-FI+pHEn7Wc4NqKXMXFM+VAYKEj/mRIcW4h24YVwVtyjI+EqGrLc2Hx/Ny0lrZ21cBWU2goLy36eqMcNj3AQJig==", + "license": "MIT", + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0", + "postcss": "^8.4.21", + "strip-json-comments": "^3.1.1" + }, + "bin": { + "rtlcss": "bin/rtlcss.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", + "license": "BSD-3-Clause" + }, + "node_modules/safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/sass": { + "version": "1.70.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.70.0.tgz", + "integrity": "sha512-uUxNQ3zAHeAx5nRFskBnrWzDUJrrvpCPD5FNAoRvTi0WwremlheES3tg+56PaVtCs5QDRX5CBLxxKMDJMEa1WQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-loader": { + "version": "16.0.6", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-16.0.6.tgz", + "integrity": "sha512-sglGzId5gmlfxNs4gK2U3h7HlVRfx278YK6Ono5lwzuvi1jxig80YiuHkaDBVsYIKFhx8wN7XSCI0M2IDS/3qA==", + "dev": true, + "license": "MIT", + "dependencies": { + "neo-async": "^2.6.2" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", + "sass": "^1.3.0", + "sass-embedded": "*", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/sax": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", + "integrity": "sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==", + "license": "ISC" + }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "license": "MIT" + }, + "node_modules/schema-utils": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/schema-utils/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/schema-utils/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/schema-utils/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/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/set-cookie-parser": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz", + "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==", + "license": "MIT" + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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/simplebar-react": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/simplebar-react/-/simplebar-react-3.3.2.tgz", + "integrity": "sha512-ZsgcQhKLtt5ra0BRIJeApfkTBQCa1vUPA/WXI4HcYReFt+oCEOvdVz6rR/XsGJcKxTlCRPmdGx1uJIUChupo+A==", + "license": "MIT", + "dependencies": { + "simplebar-core": "^1.3.2" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/size-sensor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/size-sensor/-/size-sensor-1.0.2.tgz", + "integrity": "sha512-2NCmWxY7A9pYKGXNBfteo4hy14gWu47rg5692peVMst6lQLPKrVjhY+UTEsPI5ceFRJSl3gVgMYaUi/hKuaiKw==", + "license": "ISC" + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/slick-carousel": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/slick-carousel/-/slick-carousel-1.8.1.tgz", + "integrity": "sha512-XB9Ftrf2EEKfzoQXt3Nitrt/IPbT+f1fgqBdoxO3W/+JYvtEOW6EgxnWfr9GH6nmULv7Y2tPmEX3koxThVmebA==", + "license": "MIT", + "peerDependencies": { + "jquery": ">=1.8.0" + } + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/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", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/spotify-audio-element": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/spotify-audio-element/-/spotify-audio-element-1.0.3.tgz", + "integrity": "sha512-I1/qD8cg/UnTlCIMiKSdZUJTyYfYhaqFK7LIVElc48eOqUUbVCaw1bqL8I6mJzdMJTh3eoNyF/ewvB7NoS/g9A==", + "license": "MIT" + }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/streamx": { + "version": "2.23.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.23.0.tgz", + "integrity": "sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "events-universal": "^1.0.0", + "fast-fifo": "^1.3.2", + "text-decoder": "^1.1.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-convert": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/string-convert/-/string-convert-0.2.1.tgz", + "integrity": "sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A==", + "license": "MIT" + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", + "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.3", + "set-function-name": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "license": "MIT", + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-outer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", + "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-outer/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/stylis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==", + "license": "MIT" + }, + "node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/sucrase/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/super-media-element": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/super-media-element/-/super-media-element-1.4.2.tgz", + "integrity": "sha512-9pP/CVNp4NF2MNlRzLwQkjiTgKKe9WYXrLh9+8QokWmMxz+zt2mf1utkWLco26IuA3AfVcTb//qtlTIjY3VHxA==", + "license": "MIT" + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/synckit": { + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz", + "integrity": "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@pkgr/core": "^0.2.9" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/synckit" + } + }, + "node_modules/tabbable": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.3.0.tgz", + "integrity": "sha512-EIHvdY5bPLuWForiR/AN2Bxngzpuwn1is4asboytXtpTgsArc+WmSJKVLlhdh71u7jFcryDqB2A8lQvj78MkyQ==", + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", + "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/tar-stream": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, + "node_modules/terser": { + "version": "5.44.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.44.1.tgz", + "integrity": "sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.15.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.14", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz", + "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "jest-worker": "^27.4.5", + "schema-utils": "^4.3.0", + "serialize-javascript": "^6.0.2", + "terser": "^5.31.1" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/text-decoder": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz", + "integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "b4a": "^1.6.4" + } + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "license": "MIT", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tiktok-video-element": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/tiktok-video-element/-/tiktok-video-element-0.1.1.tgz", + "integrity": "sha512-BaiVzvNz2UXDKTdSrXzrNf4q6Ecc+/utYUh7zdEu2jzYcJVDoqYbVfUl0bCfMoOeeAqg28vD/yN63Y3E9jOrlA==", + "license": "MIT" + }, + "node_modules/tiny-case": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-case/-/tiny-case-1.0.3.tgz", + "integrity": "sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==", + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "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.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/tinymce": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/tinymce/-/tinymce-8.2.2.tgz", + "integrity": "sha512-CFDSZwciMvFGW2czK/Xig1HcOGpXI0qcQMIqaIcG2F4RuuTdf+LQTreyEZunAJoFTQ9L0KAugOqL7OA5TJkoAA==", + "license": "GPL-2.0-or-later" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toposort": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", + "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==", + "license": "MIT" + }, + "node_modules/trim-repeated": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", + "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/trim-repeated/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "license": "Apache-2.0" + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "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==", + "license": "0BSD" + }, + "node_modules/twitch-video-element": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/twitch-video-element/-/twitch-video-element-0.1.5.tgz", + "integrity": "sha512-3UdWMa5ytWFdpgJAM6XEqqRK/1FvWdJVcKDOw4IHBPt4p52E+4fXT42fBdRZFfoxBPXQNZUDDNHFW8wIopD7Og==", + "license": "MIT" + }, + "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/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ua-parser-js": { + "version": "1.0.41", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.41.tgz", + "integrity": "sha512-LbBDqdIC5s8iROCUjMbW1f5dJQTEFB1+KO9ogbvlb3nm9n4YHa5p4KTvFPWvh2Hs8gZMBuiB1/8+pdfe/tDPug==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + } + ], + "license": "MIT", + "bin": { + "ua-parser-js": "script/cli.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/uncontrollable": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.2.1.tgz", + "integrity": "sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.6.3", + "@types/react": ">=16.9.11", + "invariant": "^2.2.4", + "react-lifecycles-compat": "^3.0.4" + }, + "peerDependencies": { + "react": ">=15.0.0" + } + }, + "node_modules/undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "dev": true, + "license": "MIT" + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.4.tgz", + "integrity": "sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==", + "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/url-polyfill": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/url-polyfill/-/url-polyfill-1.1.14.tgz", + "integrity": "sha512-p4f3TTAG6ADVF3mwbXw7hGw+QJyw5CnNGvYh5fCuQQZIiuKUswqcznyV3pGDP9j0TSmC4UvRKm8kl1QsX1diiQ==", + "license": "MIT" + }, + "node_modules/use-composed-ref": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.4.0.tgz", + "integrity": "sha512-djviaxuOOh7wkj0paeO1Q/4wMZ8Zrnag5H6yBvzN7AKKe8beOaED9SF5/ByLqsku8NP4zQqsvM2u3ew/tJK8/w==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-editable": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/use-editable/-/use-editable-2.3.3.tgz", + "integrity": "sha512-7wVD2JbfAFJ3DK0vITvXBdpd9JAz5BcKAAolsnLBuBn6UDDwBGuCIAGvR3yA2BNKm578vAMVHFCWaOcA+BhhiA==", + "license": "MIT", + "peerDependencies": { + "react": ">= 16.8.0" + } + }, + "node_modules/use-isomorphic-layout-effect": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.2.1.tgz", + "integrity": "sha512-tpZZ+EX0gaghDAiFR37hj5MgY6ZN55kLiPkJsKxBMZ6GZdOSPJXiOzPM984oPYZ5AnehYx5WQp1+ME8I/P/pRA==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-latest": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/use-latest/-/use-latest-1.3.0.tgz", + "integrity": "sha512-mhg3xdm9NaM8q+gLT8KryJPnRFOz1/5XPBhmDEVZK1webPzDjrPk7f/mbpeLqTgB9msytYWANxgALOCJKnLvcQ==", + "license": "MIT", + "dependencies": { + "use-isomorphic-layout-effect": "^1.1.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/uuid": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-13.0.0.tgz", + "integrity": "sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist-node/bin/uuid" + } + }, + "node_modules/video.js": { + "version": "8.23.4", + "resolved": "https://registry.npmjs.org/video.js/-/video.js-8.23.4.tgz", + "integrity": "sha512-qI0VTlYmKzEqRsz1Nppdfcaww4RSxZAq77z2oNSl3cNg2h6do5C8Ffl0KqWQ1OpD8desWXsCrde7tKJ9gGTEyQ==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.12.5", + "@videojs/http-streaming": "^3.17.2", + "@videojs/vhs-utils": "^4.1.1", + "@videojs/xhr": "2.7.0", + "aes-decrypter": "^4.0.2", + "global": "4.4.0", + "m3u8-parser": "^7.2.0", + "mpd-parser": "^1.3.1", + "mux.js": "^7.0.1", + "videojs-contrib-quality-levels": "4.1.0", + "videojs-font": "4.2.0", + "videojs-vtt.js": "0.15.5" + } + }, + "node_modules/videojs-contrib-quality-levels": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/videojs-contrib-quality-levels/-/videojs-contrib-quality-levels-4.1.0.tgz", + "integrity": "sha512-TfrXJJg1Bv4t6TOCMEVMwF/CoS8iENYsWNKip8zfhB5kTcegiFYezEA0eHAJPU64ZC8NQbxQgOwAsYU8VXbOWA==", + "license": "Apache-2.0", + "dependencies": { + "global": "^4.4.0" + }, + "engines": { + "node": ">=16", + "npm": ">=8" + }, + "peerDependencies": { + "video.js": "^8" + } + }, + "node_modules/videojs-font": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/videojs-font/-/videojs-font-4.2.0.tgz", + "integrity": "sha512-YPq+wiKoGy2/M7ccjmlvwi58z2xsykkkfNMyIg4xb7EZQQNwB71hcSsB3o75CqQV7/y5lXkXhI/rsGAS7jfEmQ==", + "license": "Apache-2.0" + }, + "node_modules/videojs-vtt.js": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/videojs-vtt.js/-/videojs-vtt.js-0.15.5.tgz", + "integrity": "sha512-yZbBxvA7QMYn15Lr/ZfhhLPrNpI/RmCSCqgIff57GC2gIrV5YfyzLfLyZMj0NnZSAz8syB4N0nHXpZg9MyrMOQ==", + "license": "Apache-2.0", + "dependencies": { + "global": "^4.3.1" + } + }, + "node_modules/vimeo-video-element": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/vimeo-video-element/-/vimeo-video-element-1.6.1.tgz", + "integrity": "sha512-UwDLzhgg98pct1xb6799I1vRDXIzaAX6rs1TG/QOf6y+VrXpTFrI7mYz2gnj9QCtBcGK68f4z64A+MRYRsLJaQ==", + "license": "MIT", + "dependencies": { + "@vimeo/player": "2.29.0" + } + }, + "node_modules/vite": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.2.2.tgz", + "integrity": "sha512-BxAKBWmIbrDgrokdGZH1IgkIk/5mMHDreLDmCJ0qpyJaAteP8NvMhkwr/ZCQNqNH97bw/dANTE9PDzqwJghfMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "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", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.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 + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "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-jsconfig-paths": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/vite-jsconfig-paths/-/vite-jsconfig-paths-2.0.1.tgz", + "integrity": "sha512-rabcTTfKs0MdAsQWcZjbIMo5fcp6jthZce7uFEPgVPgpSY+RNOwjzIJOPES6cB/GJZLSoLGfHM9kt5HNmJvp7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.1", + "globrex": "^0.1.2", + "recrawl-sync": "^2.0.3", + "tsconfig-paths": "^3.9.0" + }, + "peerDependencies": { + "vite": ">2.0.0-0" + } + }, + "node_modules/vite/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/vite/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/watchpack": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.4.tgz", + "integrity": "sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/weakmap-polyfill": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/weakmap-polyfill/-/weakmap-polyfill-2.0.4.tgz", + "integrity": "sha512-ZzxBf288iALJseijWelmECm/1x7ZwQn3sMYIkDr2VvZp7r6SEKuT8D0O9Wiq6L9Nl5mazrOMcmiZE/2NCenaxw==", + "license": "MIT", + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/web-vitals": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-5.1.0.tgz", + "integrity": "sha512-ArI3kx5jI0atlTtmV0fWU3fjpLmq/nD3Zr1iFFlJLaqa5wLBkUSzINwBPySCX/8jRyjlmy1Volw1kz1g9XE4Jg==", + "license": "Apache-2.0" + }, + "node_modules/webpack": { + "version": "5.102.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.102.1.tgz", + "integrity": "sha512-7h/weGm9d/ywQ6qzJ+Xy+r9n/3qgp/thalBbpOi5i223dPXKi04IBtqPN9nTd+jBc7QKfvDbaBnFipYp4sJAUQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.8", + "@types/json-schema": "^7.0.15", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.15.0", + "acorn-import-phases": "^1.0.3", + "browserslist": "^4.26.3", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.3", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^4.3.3", + "tapable": "^2.3.0", + "terser-webpack-plugin": "^5.3.11", + "watchpack": "^2.4.4", + "webpack-sources": "^3.3.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-sources": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.3.tgz", + "integrity": "sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/webpack/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wistia-video-element": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/wistia-video-element/-/wistia-video-element-1.3.5.tgz", + "integrity": "sha512-aIG0xEtclPb9xfklAkOwHFv/BMiH3Ql0yWWKQ1XyUCoSDaF3sOD+JNLmakOChvn2LLUX7FqH/mYb8bXT4ACnMw==", + "license": "MIT", + "dependencies": { + "super-media-element": "~1.4.2" + } + }, + "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/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/yaml": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.1.tgz", + "integrity": "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==", + "dev": true, + "license": "ISC", + "optional": true, + "peer": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + } + }, + "node_modules/yet-another-react-lightbox": { + "version": "3.25.0", + "resolved": "https://registry.npmjs.org/yet-another-react-lightbox/-/yet-another-react-lightbox-3.25.0.tgz", + "integrity": "sha512-NaCeEXCpdwoTvoOpxNK9gdW8+oHs79yVH+D2YeVQWRjH5i32e5CoXndAAFP2p8awzVYfSonherrE9JMTpfD3EA==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@types/react": "^16 || ^17 || ^18 || ^19", + "@types/react-dom": "^16 || ^17 || ^18 || ^19", + "react": "^16.8.0 || ^17 || ^18 || ^19", + "react-dom": "^16.8.0 || ^17 || ^18 || ^19" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "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" + } + }, + "node_modules/youtube-video-element": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/youtube-video-element/-/youtube-video-element-1.8.0.tgz", + "integrity": "sha512-u3M0MgO+KUtVwIyKJXZXXJ0As0k6d5NflOrh1GjyG8NNOp+liW2nFU29hpXeUcxUWbVKhudIYd39hMVeEgCilQ==", + "license": "MIT" + }, + "node_modules/yup": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/yup/-/yup-1.7.1.tgz", + "integrity": "sha512-GKHFX2nXul2/4Dtfxhozv701jLQHdf6J34YDh2cEkpqoo8le5Mg6/LrdseVLrFarmFygZTlfIhHx/QKfb/QWXw==", + "license": "MIT", + "dependencies": { + "property-expr": "^2.0.5", + "tiny-case": "^1.0.3", + "toposort": "^2.0.2", + "type-fest": "^2.19.0" + } + }, + "node_modules/zip-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-6.0.1.tgz", + "integrity": "sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "archiver-utils": "^5.0.0", + "compress-commons": "^6.0.2", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/zrender": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/zrender/-/zrender-6.0.0.tgz", + "integrity": "sha512-41dFXEEXuJpNecuUQq6JlbybmnHaqqpGlbH1yxnA5V9MMP4SbohSVZsJIwz+zdjQXSSlR1Vc34EgH1zxyTDvhg==", + "license": "BSD-3-Clause", + "dependencies": { + "tslib": "2.3.0" + } + }, + "node_modules/zrender/node_modules/tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", + "license": "0BSD" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..4fc1f2b --- /dev/null +++ b/package.json @@ -0,0 +1,124 @@ +{ + "homepage": "falconreact.prium.me/", + "name": "falcon-react", + "version": "5.1.0", + "private": true, + "type": "module", + "dependencies": { + "@dnd-kit/core": "^6.3.1", + "@dnd-kit/sortable": "^10.0.0", + "@dnd-kit/utilities": "^3.2.2", + "@emotion/styled": "^11.14.1", + "@fortawesome/fontawesome-free": "^6.7.2", + "@fortawesome/fontawesome-svg-core": "^6.7.2", + "@fortawesome/free-brands-svg-icons": "^6.7.2", + "@fortawesome/free-regular-svg-icons": "^6.7.2", + "@fortawesome/free-solid-svg-icons": "^6.7.2", + "@fortawesome/react-fontawesome": "^0.2.2", + "@fullcalendar/bootstrap": "^6.1.19", + "@fullcalendar/daygrid": "^6.1.19", + "@fullcalendar/interaction": "^6.1.19", + "@fullcalendar/list": "^6.1.19", + "@fullcalendar/react": "^6.1.19", + "@fullcalendar/timegrid": "^6.1.19", + "@hookform/resolvers": "^5.2.2", + "@react-leaflet/core": "^3.0.0", + "@tanstack/react-table": "^8.21.3", + "@testing-library/jest-dom": "^6.6.3", + "@testing-library/react": "^16.3.0", + "@testing-library/user-event": "^14.6.1", + "@tinymce/tinymce-react": "^6.3.0", + "@vis.gl/react-google-maps": "^1.7.1", + "bootstrap": "^5.3.8", + "chart.js": "^4.5.1", + "classnames": "^2.5.1", + "d3": "^7.9.0", + "dayjs": "^1.11.19", + "echarts": "^6.0.0", + "echarts-for-react": "^3.0.5", + "emoji-picker-react": "^4.15.1", + "fs-extra": "^11.3.2", + "fuse.js": "^7.1.0", + "imask": "^7.6.1", + "is_js": "^0.9.0", + "leaflet": "^1.9.4", + "leaflet.tilelayer.colorfilter": "^2.0.0", + "lottie-react": "^2.4.1", + "plyr": "^3.8.3", + "prism-react-renderer": "^2.4.1", + "rc-slider": "^11.1.9", + "rc-tooltip": "^6.4.0", + "react-bootstrap": "^2.10.10", + "react-chartjs-2": "^5.3.1", + "react-countup": "^6.5.3", + "react-datepicker": "^8.9.0", + "react-dom": "^19.2.0", + "react-dropzone": "^14.3.8", + "react-error-overlay": "^6.1.0", + "react-hook-form": "^7.66.0", + "react-icons": "^5.5.0", + "react-imask": "^7.6.1", + "react-leaflet": "^5.0.0", + "react-leaflet-markercluster": "^5.0.0-rc.0", + "react-live": "^4.1.8", + "react-player": "^3.4.0", + "react-range": "^1.10.0", + "react-router": "^7.9.6", + "react-router-hash-link": "^2.4.3", + "react-select": "^5.10.2", + "react-simple-star-rating": "^5.1.7", + "react-simple-typewriter": "^5.0.1", + "react-slick": "^0.31.0", + "react-textarea-autosize": "^8.5.9", + "react-toastify": "^11.0.5", + "react-use-scrollspy": "^3.1.1", + "rtlcss": "^4.3.0", + "simplebar-react": "^3.3.2", + "slick-carousel": "^1.8.1", + "tinymce": "^8.2.2", + "uuid": "^13.0.0", + "video.js": "^8.23.4", + "web-vitals": "^5.1.0", + "yet-another-react-lightbox": "^3.25.0", + "yup": "^1.7.1" + }, + "scripts": { + "dev": "vite", + "build": "vite build", + "start": "react-scripts start", + "preview": "vite preview", + "predeploy": "npm run build && cp ./dist/index.html ./dist/404.html", + "predeploy:beta": "npm run build && cp ./dist/index.html ./dist/404.html", + "deploy": "echo https://falconreact.prium.me > ./dist/CNAME && gh-pages -d dist", + "deploy:beta": "echo frlive.prium.me > ./dist/CNAME && gh-pages -d dist -r git@github.com:prium/falcon-react-alpha2.git" + }, + "eslintConfig": { + "extends": [ + "react-app", + "react-app/jest" + ] + }, + "browserslist": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "devDependencies": { + "@babel/plugin-transform-react-jsx": "^7.27.1", + "@vitejs/plugin-react": "^5.1.1", + "archiver": "^7.0.1", + "clean-webpack-plugin": "^4.0.0", + "css-loader": "^7.1.2", + "eslint": "^9.39.1", + "eslint-config-prettier": "^10.1.8", + "eslint-plugin-prettier": "^5.5.4", + "eslint-plugin-react": "^7.37.5", + "gh-pages": "^6.3.0", + "mini-css-extract-plugin": "^2.9.4", + "prettier": "^3.6.2", + "sass": "1.70.0", + "sass-loader": "^16.0.5", + "vite": "^7.2.2", + "vite-jsconfig-paths": "^2.0.1" + } +} diff --git a/postinstall.js b/postinstall.js new file mode 100644 index 0000000..ceeafa8 --- /dev/null +++ b/postinstall.js @@ -0,0 +1,12 @@ +import fse from 'fs-extra'; +import path, { dirname } from 'path'; +// const topDir = import.meta.dirname; +import { fileURLToPath } from 'url'; +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); +fse.emptyDirSync(path.join(__dirname, 'public', 'tinymce')); +fse.copySync( + path.join(__dirname, 'node_modules', 'tinymce'), + path.join(__dirname, 'public', 'tinymce'), + { overwrite: true } +); diff --git a/public/css/theme.css b/public/css/theme.css new file mode 100644 index 0000000..1b8176b --- /dev/null +++ b/public/css/theme.css @@ -0,0 +1,27927 @@ +@charset "UTF-8"; +/* Theme */ +/* -------------------------------------------------------------------------- */ +/* prettier-ignore */ +/* -------------------------------------------------------------------------- */ +/* Falcon Button */ +/* -------------------------------------------------------------------------- */ +/* -------------------------------------------------------------------------- */ +/* Utilities */ +/* -------------------------------------------------------------------------- */ +:root, +[data-bs-theme=light] { + --falcon-blue: #2c7be5; + --falcon-indigo: #727cf5; + --falcon-purple: #6b5eae; + --falcon-pink: #ff679b; + --falcon-red: #e63757; + --falcon-orange: #fd7e14; + --falcon-yellow: #f5803e; + --falcon-green: #00d27a; + --falcon-teal: #02a8b5; + --falcon-cyan: #27bcfd; + --falcon-black: #000; + --falcon-white: #fff; + --falcon-gray: #748194; + --falcon-gray-dark: #4d5969; + --falcon-gray-100: #f9fafd; + --falcon-gray-200: #edf2f9; + --falcon-gray-300: #d8e2ef; + --falcon-gray-400: #b6c1d2; + --falcon-gray-500: #9da9bb; + --falcon-gray-600: #748194; + --falcon-gray-700: #5e6e82; + --falcon-gray-800: #4d5969; + --falcon-gray-900: #344050; + --falcon-gray-1000: #232e3c; + --falcon-gray-1100: #0b1727; + --falcon-primary: #2c7be5; + --falcon-secondary: #748194; + --falcon-success: #00d27a; + --falcon-info: #27bcfd; + --falcon-warning: #f5803e; + --falcon-danger: #e63757; + --falcon-light: #f9fafd; + --falcon-dark: #0b1727; + --falcon-primary-rgb: 44, 123, 229; + --falcon-secondary-rgb: 116, 129, 148; + --falcon-success-rgb: 0, 210, 122; + --falcon-info-rgb: 39, 188, 253; + --falcon-warning-rgb: 245, 128, 62; + --falcon-danger-rgb: 230, 55, 87; + --falcon-light-rgb: 249, 250, 253; + --falcon-dark-rgb: 11, 23, 39; + --falcon-primary-text-emphasis: #215cac; + --falcon-secondary-text-emphasis: #5d6776; + --falcon-success-text-emphasis: #00894f; + --falcon-info-text-emphasis: #197aa4; + --falcon-warning-text-emphasis: #ac5a2b; + --falcon-danger-text-emphasis: #b82c46; + --falcon-light-text-emphasis: #646465; + --falcon-dark-text-emphasis: #91979e; + --falcon-primary-bg-subtle: #d9e7fa; + --falcon-secondary-bg-subtle: #e6e8ec; + --falcon-success-bg-subtle: #d9f8eb; + --falcon-info-bg-subtle: #d8f3ff; + --falcon-warning-bg-subtle: #fde6d8; + --falcon-danger-bg-subtle: #fbdbe1; + --falcon-light-bg-subtle: #fdfefe; + --falcon-dark-bg-subtle: #08101b; + --falcon-primary-border-subtle: #abcaf5; + --falcon-secondary-border-subtle: #c7cdd4; + --falcon-success-border-subtle: #99edca; + --falcon-info-border-subtle: #a9e4fe; + --falcon-warning-border-subtle: #fbccb2; + --falcon-danger-border-subtle: #f5afbc; + --falcon-light-border-subtle: #edf2f9; + --falcon-dark-border-subtle: #9da9bb; + --falcon-white-rgb: 255, 255, 255; + --falcon-black-rgb: 0, 0, 0; + --falcon-font-sans-serif: "Poppins", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + --falcon-font-monospace: "SFMono-Regular", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + --falcon-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0)); + --falcon-body-font-family: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + --falcon-body-font-size: 1rem; + --falcon-body-font-weight: 400; + --falcon-body-line-height: 1.5; + --falcon-body-color: #5e6e82; + --falcon-body-color-rgb: 94, 110, 130; + --falcon-body-bg: #edf2f9; + --falcon-body-bg-rgb: 237, 242, 249; + --falcon-emphasis-color: #000; + --falcon-emphasis-color-rgb: 0, 0, 0; + --falcon-secondary-color: #344050; + --falcon-secondary-color-rgb: 52, 64, 80; + --falcon-secondary-bg: #d8e2ef; + --falcon-secondary-bg-rgb: 216, 226, 239; + --falcon-tertiary-color: #748194; + --falcon-tertiary-color-rgb: 116, 129, 148; + --falcon-tertiary-bg: #f9fafd; + --falcon-tertiary-bg-rgb: 249, 250, 253; + --falcon-heading-color: var(--falcon-secondary-color); + --falcon-link-color: #2c7be5; + --falcon-link-color-rgb: 44, 123, 229; + --falcon-link-decoration: none; + --falcon-link-hover-color: #2362b7; + --falcon-link-hover-color-rgb: 35, 98, 183; + --falcon-link-hover-decoration: underline; + --falcon-code-color: #ff679b; + --falcon-highlight-color: #5e6e82; + --falcon-highlight-bg: #fde6d8; + --falcon-border-width: 1px; + --falcon-border-style: solid; + --falcon-border-color: #d8e2ef; + --falcon-border-color-translucent: rgba(0, 0, 0, 0.175); + --falcon-border-radius: 0.25rem; + --falcon-border-radius-sm: 0.25rem; + --falcon-border-radius-lg: 0.375rem; + --falcon-border-radius-xl: 1rem; + --falcon-border-radius-xxl: 2rem; + --falcon-border-radius-2xl: var(--falcon-border-radius-xxl); + --falcon-border-radius-pill: 50rem; + --falcon-box-shadow: 0 7px 14px 0 rgba(65, 69, 88, 0.1), 0 3px 6px 0 rgba(0, 0, 0, 0.07); + --falcon-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075); + --falcon-box-shadow-lg: 0 1rem 4rem rgba(0, 0, 0, 0.175); + --falcon-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075); + --falcon-focus-ring-width: 0.25rem; + --falcon-focus-ring-opacity: 0.25; + --falcon-focus-ring-color: rgba(44, 123, 229, 0.25); + --falcon-form-valid-color: #00d27a; + --falcon-form-valid-border-color: #00d27a; + --falcon-form-invalid-color: #e63757; + --falcon-form-invalid-border-color: #e63757; +} + +[data-bs-theme=dark] { + color-scheme: dark; + --falcon-body-color: #9da9bb; + --falcon-body-color-rgb: 157, 169, 187; + --falcon-body-bg: #0b1727; + --falcon-body-bg-rgb: 11, 23, 39; + --falcon-emphasis-color: #fff; + --falcon-emphasis-color-rgb: 255, 255, 255; + --falcon-secondary-color: #d8e2ef; + --falcon-secondary-color-rgb: 216, 226, 239; + --falcon-secondary-bg: #344050; + --falcon-secondary-bg-rgb: 52, 64, 80; + --falcon-tertiary-color: #748194; + --falcon-tertiary-color-rgb: 116, 129, 148; + --falcon-tertiary-bg: #162231; + --falcon-tertiary-bg-rgb: 22, 34, 49; + --falcon-primary-text-emphasis: #abcaf5; + --falcon-secondary-text-emphasis: #c7cdd4; + --falcon-success-text-emphasis: #73e6b6; + --falcon-info-text-emphasis: #93defe; + --falcon-warning-text-emphasis: #fbc6a8; + --falcon-danger-text-emphasis: #f4a5b3; + --falcon-light-text-emphasis: #646465; + --falcon-dark-text-emphasis: #91979e; + --falcon-primary-bg-subtle: #0f2b50; + --falcon-secondary-bg-subtle: #292d34; + --falcon-success-bg-subtle: #003f25; + --falcon-info-bg-subtle: #0c384c; + --falcon-warning-bg-subtle: #562d16; + --falcon-danger-bg-subtle: #5c1623; + --falcon-light-bg-subtle: #fdfefe; + --falcon-dark-bg-subtle: #08101b; + --falcon-primary-border-subtle: #163e73; + --falcon-secondary-border-subtle: #3a414a; + --falcon-success-border-subtle: #00693d; + --falcon-info-border-subtle: #145e7f; + --falcon-warning-border-subtle: #7b401f; + --falcon-danger-border-subtle: #731c2c; + --falcon-light-border-subtle: #5e6e82; + --falcon-dark-border-subtle: #4d5969; + --falcon-heading-color: var(--falcon-secondary-color); + --falcon-link-color: #2c7be5; + --falcon-link-hover-color: #2362b7; + --falcon-link-color-rgb: 44, 123, 229; + --falcon-link-hover-color-rgb: 35, 98, 183; + --falcon-code-color: #ff679b; + --falcon-highlight-color: #9da9bb; + --falcon-highlight-bg: #623319; + --falcon-border-color: rgba(255, 255, 255, 0.05); + --falcon-border-color-translucent: rgba(0, 0, 0, 0.175); + --falcon-form-valid-color: #66e4af; + --falcon-form-valid-border-color: #00d27a; + --falcon-form-invalid-color: #f0879a; + --falcon-form-invalid-border-color: #e63757; +} + +:root, +[data-bs-theme=light] { + --falcon-facebook: #3c5a99; + --falcon-google-plus: #dd4b39; + --falcon-twitter: #1da1f2; + --falcon-linkedin: #0077b5; + --falcon-youtube: #ff0001; + --falcon-github: #333333; + --falcon-gray-100-rgb: 249, 250, 253; + --falcon-gray-200-rgb: 237, 242, 249; + --falcon-gray-300-rgb: 216, 226, 239; + --falcon-gray-400-rgb: 182, 193, 210; + --falcon-gray-500-rgb: 157, 169, 187; + --falcon-gray-600-rgb: 116, 129, 148; + --falcon-gray-700-rgb: 94, 110, 130; + --falcon-gray-800-rgb: 77, 89, 105; + --falcon-gray-900-rgb: 52, 64, 80; + --falcon-gray-1000-rgb: 35, 46, 60; + --falcon-gray-1100-rgb: 11, 23, 39; + --falcon-facebook-rgb: 60, 90, 153; + --falcon-google-plus-rgb: 221, 75, 57; + --falcon-twitter-rgb: 29, 161, 242; + --falcon-linkedin-rgb: 0, 119, 181; + --falcon-youtube-rgb: 255, 0, 1; + --falcon-github-rgb: 51, 51, 51; + --falcon-gray-link-hover-100: RGBA(250, 251, 253, var(--falcon-link-opacity, 1)) !important; + --falcon-gray-link-hover-200: RGBA(241, 245, 250, var(--falcon-link-opacity, 1)) !important; + --falcon-gray-link-hover-300: RGBA(224, 232, 242, var(--falcon-link-opacity, 1)) !important; + --falcon-gray-link-hover-400: RGBA(197, 205, 219, var(--falcon-link-opacity, 1)) !important; + --falcon-gray-link-hover-500: RGBA(126, 135, 150, var(--falcon-link-opacity, 1)) !important; + --falcon-gray-link-hover-600: RGBA(93, 103, 118, var(--falcon-link-opacity, 1)) !important; + --falcon-gray-link-hover-700: RGBA(75, 88, 104, var(--falcon-link-opacity, 1)) !important; + --falcon-gray-link-hover-800: RGBA(62, 71, 84, var(--falcon-link-opacity, 1)) !important; + --falcon-gray-link-hover-900: RGBA(42, 51, 64, var(--falcon-link-opacity, 1)) !important; + --falcon-gray-link-hover-1000: RGBA(28, 37, 48, var(--falcon-link-opacity, 1)) !important; + --falcon-gray-link-hover-1100: RGBA(9, 18, 31, var(--falcon-link-opacity, 1)) !important; + --em-rgb-background: var(--falcon-tertiary-bg); + --falcon-quaternary-bg: #fff; + --falcon-quaternary-bg-rgb: 255, 255, 255; + --falcon-emphasis-bg: #fff; + --falcon-emphasis-bg-rgb: 255, 255, 255; + --falcon-blockquote-footer-color: #748194; + --falcon-hr-opacity: 1; + --falcon-mark-bg: #fcf8e3; + --falcon-font-base: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + --falcon-btn-disabled-border-color: transparent; + --falcon-btn-reveal-color: #748194; + --falcon-btn-reveal-hover-color: #5e6e82; + --falcon-btn-reveal-focus-bg: #e6e6e6; + --falcon-btn-reveal-hover-shadow: 0 0 0 1px rgba(43, 45, 80, 0.1), + 0 2px 5px 0 rgba(43, 45, 80, 0.08), 0 1px 1.5px 0 rgba(0, 0, 0, 0.07), + 0 1px 2px 0 rgba(0, 0, 0, 0.08); + --falcon-btn-reveal-focus-border-color: #dfdfdf; + --falcon-btn-falcon-background: var(--falcon-quaternary-bg); + --falcon-btn-disabled-color: #4d5969; + --falcon-btn-falcon-box-shadow: 0 0 0 1px rgba(43, 45, 80, 0.1), 0 2px 5px 0 rgba(43, 45, 80, 0.08), 0 1px 1.5px 0 rgba(0, 0, 0, 0.07), 0 1px 2px 0 rgba(0, 0, 0, 0.08); + --falcon-btn-falcon-hover-box-shadow: 0 0 0 1px rgba(43, 45, 80, 0.1), 0 2px 5px 0 rgba(43, 45, 80, 0.1), 0 3px 9px 0 rgba(43, 45, 80, 0.08), 0 1px 1.5px 0 rgba(0, 0, 0, 0.08), 0 1px 2px 0 rgba(0, 0, 0, 0.08); + --falcon-btn-falcon-default-color: var(--falcon-gray-800); + --falcon-btn-falcon-default-hover-color: #404a57; + --falcon-btn-falcon-default-active-background: #e6e6e6; + --falcon-btn-falcon-default-active-border: #404a57; + --falcon-btn-active-border-color: transparent; + --falcon-btn-falcon-primary-color: var(--falcon-primary); + --falcon-btn-falcon-primary-hover-color: #2566be; + --falcon-btn-falcon-primary-active-background: #d5e5fa; + --falcon-btn-falcon-primary-active-color: #2566be; + --falcon-btn-falcon-secondary-color: var(--falcon-secondary); + --falcon-btn-falcon-secondary-hover-color: #606b7b; + --falcon-btn-falcon-secondary-active-background: #e3e6ea; + --falcon-btn-falcon-secondary-active-color: #606b7b; + --falcon-btn-falcon-success-color: var(--falcon-success); + --falcon-btn-falcon-success-hover-color: #00ae65; + --falcon-btn-falcon-success-active-background: #ccf6e4; + --falcon-btn-falcon-success-active-color: #00ae65; + --falcon-btn-falcon-info-color: var(--falcon-info); + --falcon-btn-falcon-info-hover-color: #209cd2; + --falcon-btn-falcon-info-active-background: #d4f2ff; + --falcon-btn-falcon-info-active-color: #209cd2; + --falcon-btn-falcon-warning-color: var(--falcon-warning); + --falcon-btn-falcon-warning-hover-color: #cb6a33; + --falcon-btn-falcon-warning-active-background: #fde6d8; + --falcon-btn-falcon-warning-active-color: #cb6a33; + --falcon-btn-falcon-danger-color: var(--falcon-danger); + --falcon-btn-falcon-danger-hover-color: #bf2e48; + --falcon-btn-falcon-danger-active-background: #fad7dd; + --falcon-btn-falcon-danger-active-color: #bf2e48; + --falcon-btn-falcon-light-color: var(--falcon-light); + --falcon-btn-falcon-light-hover-color: #cfd0d2; + --falcon-btn-falcon-light-active-background: #fefeff; + --falcon-btn-falcon-light-active-color: #cfd0d2; + --falcon-btn-falcon-dark-color: var(--falcon-dark); + --falcon-btn-falcon-dark-hover-color: #091320; + --falcon-btn-falcon-dark-active-background: #ced1d4; + --falcon-btn-falcon-dark-active-color: #091320; + --falcon-input-btn-focus-color: rgba(44, 123, 229, 0.25); + --falcon-btn-link-color: var(--falcon-link-color); + --falcon-btn-link-hover-color: #2362b7; + --falcon-btn-disabled-color: #748194; + --falcon-input-focus-border-color-global: #96bdf2; + --falcon-input-placeholder-color-global: var(--falcon-gray-400); + --falcon-bg-navbar-glass: rgba(237, 242, 249, 0.96); + --falcon-navbar-vertical-default-bg-color: var(--falcon-bg-navbar-glass); + --falcon-navbar-vertical-default-link-color: #5e6e82; + --falcon-navbar-vertical-default-link-hover-color: #232e3c; + --falcon-navbar-vertical-default-link-active-color: #2c7be5; + --falcon-navbar-vertical-default-link-disable-color: #b6c1d2; + --falcon-navbar-vertical-default-hr-color: rgba(0, 0, 0, 0.08); + --falcon-navbar-vertical-default-scrollbar-color: rgba(116, 129, 148, 0.3); + --falcon-navbar-vertical-default-label-color: var(--falcon-gray-500); + --falcon-navbar-vertical-inverted-bg-color: #232e3c; + --falcon-navbar-vertical-inverted-link-color: #9da9bb; + --falcon-navbar-vertical-inverted-link-hover-color: #edf2f9; + --falcon-navbar-vertical-inverted-link-active-color: #edf2f9; + --falcon-navbar-vertical-inverted-link-disable-color: #5e6e82; + --falcon-navbar-vertical-inverted-hr-color: rgba(255, 255, 255, 0.08); + --falcon-navbar-vertical-inverted-scrollbar-color: #b6c1d2; + --falcon-navbar-vertical-inverted-label-color: #5e6e82; + --falcon-navbar-vertical-vibrant-bg-image: linear-gradient(-45deg, rgba(0, 160, 255, 0.86), #0048a2), url(../img/generic/bg-navbar.png); + --falcon-navbar-vertical-vibrant-link-color: rgba(255, 255, 255, 0.75); + --falcon-navbar-vertical-vibrant-link-hover-color: #fff; + --falcon-navbar-vertical-vibrant-link-active-color: #fff; + --falcon-navbar-vertical-vibrant-link-disable-color: rgba(255, 255, 255, 0.45); + --falcon-navbar-vertical-vibrant-hr-color: rgba(255, 255, 255, 0.2); + --falcon-navbar-vertical-vibrant-scrollbar-color: #b6c1d2; + --falcon-navbar-vertical-vibrant-label-color: rgba(255, 255, 255, 0.4); + --falcon-navbar-vertical-card-bg-color: #fff; + --falcon-navbar-vertical-card-link-color: var(--falcon-gray-700); + --falcon-navbar-vertical-card-link-hover-color: var(--falcon-gray-900); + --falcon-navbar-vertical-card-link-active-color: var(--falcon-primary); + --falcon-navbar-vertical-card-link-disable-color: var(--falcon-gray-400); + --falcon-navbar-vertical-card-hr-color: rgba(0, 0, 0, 0.08); + --falcon-navbar-vertical-card-scrollbar-color: rgba(116, 129, 148, 0.3); + --falcon-navbar-vertical-card-label-color: var(--falcon-gray-500); + --falcon-avatar-status-border-color: var(--falcon-quaternary-bg); + --falcon-avatar-name-bg: #344050; + --falcon-avatar-button-bg: var(--falcon-gray-400); + --falcon-avatar-button-hover-bg: var(--falcon-gray-500); + --falcon-notification-bg: var(--falcon-emphasis-bg); + --falcon-notification-title-bg: #f9fafd; + --falcon-notification-unread-bg: var(--falcon-gray-200); + --falcon-notification-unread-hover-bg: #dae4f3; + --falcon-notification-indicator-border-color: var(--falcon-body-bg); + --falcon-kanban-bg: #f9fafd; + --falcon-kanban-header-bg: var(--falcon-kanban-bg); + --falcon-kanban-item-bg: #fff; + --falcon-kanban-item-color: var(--falcon-gray-900); + --falcon-kanban-btn-add-hover-bg: var(--falcon-gray-200); + --falcon-kanban-draggable-source-dragging-bg: var(--falcon-body-bg); + --falcon-kanban-bg-attachment-bg: var(--falcon-gray-300); + --falcon-kanban-footer-color: var(--falcon-gray-600); + --falcon-kanban-nav-link-card-details-color: var(--falcon-gray-700); + --falcon-kanban-nav-link-card-details-hover-bg: #edf2f9; + --falcon-bg-shape-bg: #4695ff; + --falcon-bg-shape-bg-ltd: linear-gradient(-45deg, #4695ff, #1970e2); + --falcon-bg-shape-bg-dtl: linear-gradient(-45deg, #1970e2, #4695ff); + --falcon-line-chart-gradient: linear-gradient(-45deg, #014ba7, #0183d0); + --falcon-card-gradient: linear-gradient(-45deg, #1970e2, #4695ff); + --falcon-progress-gradient: linear-gradient(-45deg, #1970e2, #4695ff); + --falcon-bg-circle-shape: none; + --falcon-bg-circle-shape-bg: #4695ff; + --falcon-modal-shape-header: linear-gradient(-45deg, #1970e2, #4695ff); + --falcon-modal-shape-header-bg: #4494ff; + --fc-button-bg-color: #344050; + --fc-button-border-color: #344050; + --fc-button-hover-bg-color: #0b1727; + --fc-button-hover-border-color: #0b1727; + --fc-button-active-bg-color: #0b1727; + --fc-button-active-border-color: #0b1727; + --fc-button-list-day-cushion: var(--falcon-quaternary-bg); + --fc-highlight-color: rgba(var(--falcon-primary-rgb), 0.1); + --falcon-flatpickr-calendar-bg: var(--falcon-quaternary-bg); + --falcon-leaflet-bar-bg: #fff; + --falcon-leaflet-popup-content-wrapper-bg: var(--falcon-quaternary-bg); + --falcon-choices-item-selectable-highlighted-bg: #fff; + --falcon-choices-item-has-no-choices-bg: var(--falcon-quaternary-bg); + --falcon-bg-choices-close-button: #edf2f9; + --falcon-thumbnail-bg-global: #fff; + --falcon-thumbnail-bg-global: #fff; + --falcon-chat-contact-bg: var(--falcon-emphasis-bg); + --falcon-tinymce-bg: var(--falcon-quaternary-bg); + --falcon-slick-arrow-bg: rgba(255, 255, 255, 0.8); + --falcon-react-datepicker-bg: #fff; + --falcon-react-datepicker-header-bg: #edf2f9; + --falcon-star-rating-bg-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFdElEQVR4nO2aXWxURRTH/2dut58Imho1SgStuit+vBo0BkgkRjDog+VBiJEXqJhKK21x+7EdUu5u2W1Uqi8Qo4YQY6gQDQlRn9RENGoMD0a7RCzGRCJGBLRF9mOOD+waKHe7e2f23mt0f4/zceY/Z2fmzJm7QI0aNWr8j6EgBu3sHG9oXHC2gxQvJ/CUhbpUPD5wMggtwv8hmZrmn3mHmF8G4XEm6s5R/kinlPP91xKAA7YN2A8CeHRW8eLmrOjwWwsQgAMYqs+xnLGls3O8wW89vjqgp1/eDWC1YyXhxqYFvz/ppx7AZwcIsnrmbMDUK6X0V5NfA/VJuRDgdWWa3Tmds1b5IqiAf97OUReAunLNCOx4RniFL/eALimvrs+KnwDMq6yHWJq0Bz/3VFRxJD8GabgY4iqcPABWvd6puRzPV4CUsnEmK6YA3OCiG1tKRRIJecwrXUU8XwHTGbEe7iYPAJQXYqsXeq4YyEvjUkoxkxXfAbhDo/uFOrYWxeMDv1Rb16V4ugJmctYa6E0eABpyItdZTT1OeLwFDEMa02YpZeWHpwaeOaBncOQhMJYamrnmvMdJUtXOgI0bd4daW0+25S0rAoV7iLiHgWqkuDkChjik9ibl8EmAuAo2/8G1A7ZKea24IMJkcQRAmJkiBIQBtAGwqiluNgScU4w0EU2CkWZSk8ycnleP76WUf2nadCYajbfmrfwDxIWJgiMAhQG06k7AQxSAEwAmiTnNRJMEMWkxpePx/lNzrRpHB7wwOLJcMR+Cm9vbv5cZAK81h1S3lFLNrnQ8BBVjF/4bkweAZgDPnc+IJ5wqS0QBDnsoKBAYdLtTubMDCF95qiYAhMUfOpY7FSqlOgCc9lSRjzDR86MjsS+d6hwdMBaX3zCrlQDOeKrMBwiIpnYMvVSqvuRNMBWXXwPiYQB/eKLMBxgY3mnHRudqM+dVOGkPfsEKjwCYrqoyHyAgnrKHRipoV57CveAwgCZjZT7AwFjKHuqr5Npc8VW4r3/7ShAdAuD7xwuXjCftoa5KcwZXuUDv4MgqYn4XQEhLmscw8+5UPPaMm4TJVTqc2jF0GERrAeRcq/MceqOlnje7zRa10uHege3tBHobgXxdvhIm7DuRjjw9MbE277av1gRS9vAEwE8BqGpurgVhf0ud2qAz+YvdDegb3L4BTK+b2DCBgffO/np9+549m7K6NoweMD795KOj9y9bcRsB95rY0SRTp+qW7drV/aeJEeM9TMzvm9rQg48mEv2/mVoxP8RYLDa2oYWor4oVYwuEu6qgQwOOtLfvN36DrEIY4yXmNrRobGv79hZTI0YOKPwCEVMRurBFxqvPyAGLw+lbEWBuoBCwAwhB7f/i+GS8/YwcwBzY/i8S7AoILgIUMY8EZluAzZegIY2Fc0gbbQdc9DwHFgGKCFZGP4K2AwoxuFGz+xkCehFSNxHzKoCO6uowjQRl/7dXCs0YnCXmVwWH7Evu8T9LKT+Yzoj1BNggLHRl0fAc0ncAiyVuHl8INKEI0aQdOz67rvDRcm9394sToabpLhBHAVxVkV02c4D2e0DfwMi+Cv76CoCPKEU9Y4nYZ5Xa7pHyOpEVwwA2oXzKfmHqWKRF90FEewVUkAMcZ/C2lB076PadbkzKUwCejUblK3kSO0FYM0fzhkXh9M0AptyMUcQkDJY6AE8D2NIcUktS9vABk7+0JBJyMhmPPcYKywEu9cGWQ3nrnO4Y2g5gYN+sogyIU5mQakvasXEpZUbX9mxSidjHzSG+jxjrAPx4eS29afIwor0FWkJq9HzOOsvMq5n5B0vx2OioPKFrrxyFg/ItKeXBmazoAGMFQEea6/MlP3zWqFGjRo0y/A3lxcMNXfCjjAAAAABJRU5ErkJggg=="); + --falcon-theme-wizard-nav-item-circle-bg: var(--falcon-quaternary-bg); + --falcon-toast-bg-global: rgba(255, 255, 255, 0.85); + --falcon-toast-header-bg-global: rgba(255, 255, 255, 0.85); + --falcon-card-span-img-bg: var(--falcon-quaternary-bg); + --falcon-card-span-img-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075); + --falcon-card-span-img-hover-box-shadow: 0 1rem 4rem rgba(0, 0, 0, 0.175); + --falcon-setting-toggle-shadow: 0 -7px 14px 0 rgba(65, 69, 88, 0.1), 0 3px 6px 0 rgba(0, 0, 0, 0.07); + --falcon-scrollbar-bg: rgba(182, 193, 210, 0.55); + --falcon-simplebar-bg: #b6c1d2; + --falcon-nav-pills-falcon-active-bg-color: var(--falcon-quaternary-bg); + --falcon-btn-disabled-custom-background: rgba(249, 250, 253, 0.55); + --falcon-btn-disabled-custom-color: rgba(11, 23, 39, 0.3); + --falcon-dropdown-bg-global: #fff; + --falcon-dropdown-link-hover-color-global: #2a3441; + --falcon-dropdown-link-hover-bg-global: #f9fafd; + --falcon-popover-header-bg-global: #f9fafd; + --falcon-toast-bg-global: rgba(255, 255, 255, 0.85); + --falcon-toast-header-bg-global: rgba(255, 255, 255, 0.85); + --falcon-list-group-bg-global: var(--falcon-emphasis-bg); + --falcon-accordion-btn-color-global: #5e6e82; + --falcon-alert-link-color: #2c7be5; +} +:root [class^=btn-falcon-].show, +[data-bs-theme=light] [class^=btn-falcon-].show { + --falcon-btn-active-shadow: var(--falcon-btn-falcon-box-shadow); +} +:root .table-primary, +[data-bs-theme=light] .table-primary { + --falcon-table-bg: #d5e5fa; + --falcon-table-color: #4d5969; + --falcon-table-hover-bg: #cbdbef; + --falcon-table-hover-color: #4d5969; + --falcon-table-striped-bg: #cedef3; + --falcon-table-striped-color: #4d5969; + --falcon-table-active-bg: #c7d7ec; + --falcon-table-active-color: #4d5969; + --falcon-table-border-color: rgba(186, 201, 221, 0.05); +} +:root .table-secondary, +[data-bs-theme=light] .table-secondary { + --falcon-table-bg: #e3e6ea; + --falcon-table-color: #4d5969; + --falcon-table-hover-bg: #d8dbe0; + --falcon-table-hover-color: #4d5969; + --falcon-table-striped-bg: #dcdfe4; + --falcon-table-striped-color: #4d5969; + --falcon-table-active-bg: #d4d8dd; + --falcon-table-active-color: #4d5969; + --falcon-table-border-color: rgba(197, 202, 208, 0.05); +} +:root .table-success, +[data-bs-theme=light] .table-success { + --falcon-table-bg: #ccf6e4; + --falcon-table-color: #4d5969; + --falcon-table-hover-bg: #c2eadb; + --falcon-table-hover-color: #4d5969; + --falcon-table-striped-bg: #c6eede; + --falcon-table-striped-color: #4d5969; + --falcon-table-active-bg: #bfe6d8; + --falcon-table-active-color: #4d5969; + --falcon-table-border-color: rgba(179, 215, 203, 0.05); +} +:root .table-info, +[data-bs-theme=light] .table-info { + --falcon-table-bg: #d4f2ff; + --falcon-table-color: #4d5969; + --falcon-table-hover-bg: #cae7f4; + --falcon-table-hover-color: #4d5969; + --falcon-table-striped-bg: #cdeaf8; + --falcon-table-striped-color: #4d5969; + --falcon-table-active-bg: #c7e3f0; + --falcon-table-active-color: #4d5969; + --falcon-table-border-color: rgba(185, 211, 225, 0.05); +} +:root .table-warning, +[data-bs-theme=light] .table-warning { + --falcon-table-bg: #fde6d8; + --falcon-table-color: #4d5969; + --falcon-table-hover-bg: #f0dbd0; + --falcon-table-hover-color: #4d5969; + --falcon-table-striped-bg: #f4dfd2; + --falcon-table-striped-color: #4d5969; + --falcon-table-active-bg: #ebd8cd; + --falcon-table-active-color: #4d5969; + --falcon-table-border-color: rgba(218, 202, 194, 0.05); +} +:root .table-danger, +[data-bs-theme=light] .table-danger { + --falcon-table-bg: #fad7dd; + --falcon-table-color: #4d5969; + --falcon-table-hover-bg: #edced4; + --falcon-table-hover-color: #4d5969; + --falcon-table-striped-bg: #f1d1d7; + --falcon-table-striped-color: #4d5969; + --falcon-table-active-bg: #e9cad1; + --falcon-table-active-color: #4d5969; + --falcon-table-border-color: rgba(215, 190, 198, 0.05); +} +:root .table-light, +[data-bs-theme=light] .table-light { + --falcon-table-bg: #f9fafd; + --falcon-table-color: #4d5969; + --falcon-table-hover-bg: #eceef2; + --falcon-table-hover-color: #4d5969; + --falcon-table-striped-bg: #f0f2f6; + --falcon-table-striped-color: #4d5969; + --falcon-table-active-bg: #e8eaee; + --falcon-table-active-color: #4d5969; + --falcon-table-border-color: rgba(215, 218, 223, 0.05); +} +:root .table-dark, +[data-bs-theme=light] .table-dark { + --falcon-table-bg: #0b1727; + --falcon-table-color: #fff; + --falcon-table-hover-bg: #1d2837; + --falcon-table-hover-color: #fff; + --falcon-table-striped-bg: #172332; + --falcon-table-striped-color: #fff; + --falcon-table-active-bg: #232e3d; + --falcon-table-active-color: #fff; + --falcon-table-border-color: rgba(60, 69, 82, 0.05); +} + +[data-bs-theme=dark] { + --falcon-gray-100: #0b1727; + --falcon-gray-link-hover-100: RGBA(9, 18, 31, var(--falcon-link-opacity, 1)) !important; + --falcon-gray-200: #232e3c; + --falcon-gray-link-hover-200: RGBA(28, 37, 48, var(--falcon-link-opacity, 1)) !important; + --falcon-gray-300: #344050; + --falcon-gray-link-hover-300: RGBA(42, 51, 64, var(--falcon-link-opacity, 1)) !important; + --falcon-gray-400: #4d5969; + --falcon-gray-link-hover-400: RGBA(62, 71, 84, var(--falcon-link-opacity, 1)) !important; + --falcon-gray-500: #5e6e82; + --falcon-gray-link-hover-500: RGBA(75, 88, 104, var(--falcon-link-opacity, 1)) !important; + --falcon-gray-600: #748194; + --falcon-gray-link-hover-600: RGBA(93, 103, 118, var(--falcon-link-opacity, 1)) !important; + --falcon-gray-700: #9da9bb; + --falcon-gray-link-hover-700: RGBA(126, 135, 150, var(--falcon-link-opacity, 1)) !important; + --falcon-gray-800: #b6c1d2; + --falcon-gray-link-hover-800: RGBA(197, 205, 219, var(--falcon-link-opacity, 1)) !important; + --falcon-gray-900: #d8e2ef; + --falcon-gray-link-hover-900: RGBA(224, 232, 242, var(--falcon-link-opacity, 1)) !important; + --falcon-gray-1000: #edf2f9; + --falcon-gray-link-hover-1000: RGBA(241, 245, 250, var(--falcon-link-opacity, 1)) !important; + --falcon-gray-1100: #f9fafd; + --falcon-gray-link-hover-1100: RGBA(250, 251, 253, var(--falcon-link-opacity, 1)) !important; + --falcon-gray-100-rgb: 11, 23, 39; + --falcon-gray-200-rgb: 35, 46, 60; + --falcon-gray-300-rgb: 52, 64, 80; + --falcon-gray-400-rgb: 77, 89, 105; + --falcon-gray-500-rgb: 94, 110, 130; + --falcon-gray-600-rgb: 116, 129, 148; + --falcon-gray-700-rgb: 157, 169, 187; + --falcon-gray-800-rgb: 182, 193, 210; + --falcon-gray-900-rgb: 216, 226, 239; + --falcon-gray-1000-rgb: 237, 242, 249; + --falcon-gray-1100-rgb: 249, 250, 253; + --falcon-primary-rgb: 44, 123, 229; + --falcon-secondary-rgb: 116, 129, 148; + --falcon-success-rgb: 0, 210, 122; + --falcon-info-rgb: 39, 188, 253; + --falcon-warning-rgb: 245, 128, 62; + --falcon-danger-rgb: 230, 55, 87; + --falcon-light-rgb: 249, 250, 253; + --falcon-dark-rgb: 35, 46, 60; + --falcon-dark: rgba(35, 46, 60, 0.25); + --falcon-dark-rgb: 35, 46, 60; + --falcon-light-rgb: 249, 250, 253; + --falcon-btn-falcon-primary-color: var(--falcon-primary); + --falcon-btn-falcon-primary-hover-color: #5091e9; + --falcon-btn-falcon-primary-active-background: #070e17; + --falcon-btn-falcon-primary-active-color: #5091e9; + --falcon-btn-falcon-secondary-color: var(--falcon-secondary); + --falcon-btn-falcon-secondary-hover-color: #8c96a6; + --falcon-btn-falcon-secondary-active-background: #070e17; + --falcon-btn-falcon-secondary-active-color: #8c96a6; + --falcon-btn-falcon-success-color: var(--falcon-success); + --falcon-btn-falcon-success-hover-color: #2bda91; + --falcon-btn-falcon-success-active-background: #070e17; + --falcon-btn-falcon-success-active-color: #2bda91; + --falcon-btn-falcon-info-color: var(--falcon-info); + --falcon-btn-falcon-info-hover-color: #4cc7fd; + --falcon-btn-falcon-info-active-background: #070e17; + --falcon-btn-falcon-info-active-color: #4cc7fd; + --falcon-btn-falcon-warning-color: var(--falcon-warning); + --falcon-btn-falcon-warning-hover-color: #f7965f; + --falcon-btn-falcon-warning-active-background: #070e17; + --falcon-btn-falcon-warning-active-color: #f7965f; + --falcon-btn-falcon-danger-color: var(--falcon-danger); + --falcon-btn-falcon-danger-hover-color: #ea5974; + --falcon-btn-falcon-danger-active-background: #070e17; + --falcon-btn-falcon-danger-active-color: #ea5974; + --falcon-btn-falcon-light-color: var(--falcon-light); + --falcon-btn-falcon-light-hover-color: #fafbfd; + --falcon-btn-falcon-light-active-background: #070e17; + --falcon-btn-falcon-light-active-color: #fafbfd; + --falcon-btn-falcon-dark-color: var(--falcon-dark); + --falcon-btn-falcon-dark-hover-color: rgba(165, 169, 175, 0.3775); + --falcon-btn-falcon-dark-active-background: #070e17; + --falcon-btn-falcon-dark-active-color: rgba(165, 169, 175, 0.3775); + --falcon-body-color: #9da9bb; + --falcon-body-bg: #0b1727; + --falcon-quaternary-bg: #0b1727; + --falcon-quaternary-bg-rgb: 11, 23, 39; + --falcon-emphasis-bg: #121e2d; + --falcon-emphasis-bg-rgb: 18, 30, 45; + --falcon-box-shadow: 0 7px 14px 0 rgba(3, 12, 51, 0.15), + 0 3px 6px 0 rgba(0, 0, 0, 0.2); + --falcon-box-shadow-sm: 0 0.125rem 0.25rem rgba($black, 0.075); + --falcon-box-shadow-lg: 0 1rem 4rem rgba($black, 0.175); + --falcon-box-shadow-inset: inset 0 1px 2px rgba($black, 0.075); + --falcon-input-focus-border-color-global: #163e73; + --falcon-bg-navbar-glass: rgba(11, 23, 39, 0.96); + --falcon-navbar-vertical-default-link-color: #9da9bb; + --falcon-navbar-vertical-default-link-hover-color: #edf2f9; + --falcon-navbar-vertical-default-link-active-color: #2c7be5; + --falcon-navbar-vertical-default-link-disable-color: #4d5969; + --falcon-navbar-vertical-default-hr-color: rgba(255, 255, 255, 0.08); + --falcon-navbar-vertical-default-scrollbar-color: rgba(116, 129, 148, 0.3); + --falcon-navbar-vertical-card-hr-color: rgba(255, 255, 255, 0.08); + --falcon-navbar-vertical-card-bg-color: #121e2d; + --falcon-btn-reveal-focus-bg: #0a1523; + --falcon-btn-reveal-hover-shadow: 0px 1px 2px 0px rgba(0, 0, 0, 0.8), + 0px 1px 1.5px 0px rgba(0, 0, 0, 0.7), + 0px 2px 5px 0px rgba(43, 45, 80, 0.4), + 0px 0px 0px 1px rgba(255, 255, 255, 0.06); + --falcon-btn-reveal-focus-border-color: #0a1422; + --falcon-btn-falcon-box-shadow: 0 0 0 1px rgba(0, 8, 19, 0.3), + 0 2px 5px 0 rgba(0, 13, 33, 0.5), 0 1px 1.5px 0 rgba(0, 8, 1, 0.48), + 0 1px 2px 0 rgba(0, 8, 1, 0.4); + --falcon-btn-falcon-hover-box-shadow: 0 0 0 1px rgba(0, 8, 19, 0.3), + 0 3px 7px 0 rgba(0, 13, 33, 0.8), 0 1px 1.5px 0 #000801, + 0 1px 2px 0 #000801; + --falcon-btn-falcon-default-hover-color: #c2ccda; + --falcon-btn-falcon-default-active-background: #0a1523; + --falcon-btn-falcon-default-active-border: #c2ccda; + --falcon-avatar-name-bg: #4d5969; + --falcon-notification-title-bg: #344050; + --falcon-notification-unread-hover-bg: #1a222c; + --falcon-kanban-bg: rgba(35, 46, 60, 0.25); + --falcon-kanban-item-bg: #232e3c; + --falcon-kanban-nav-link-card-details-hover-bg: #344050; + --falcon-bg-shape-bg: #01224b; + --falcon-bg-shape-bg-ltd: linear-gradient( + -45deg, + rgba(20, 58, 101, 0.41), + #053571 + ); + --falcon-bg-shape-bg-dtl: linear-gradient( + -45deg, + #0a3b79, + rgba(9, 25, 43, 0.41) + ); + --falcon-line-chart-gradient: linear-gradient(45deg, #012552, #001835); + --falcon-card-gradient: linear-gradient(45deg, #012552, #001835); + --falcon-bg-circle-shape: linear-gradient( + -45deg, + rgba(9, 25, 43, 0.41), + #0a3b79 + ); + --falcon-bg-circle-shape-bg: #4695ff; + --falcon-modal-shape-header: linear-gradient(-45deg, #012552, #001835); + --falcon-modal-shape-header-after: linear-gradient( + -45deg, + rgba(20, 58, 101, 0.41), + #053571 + ); + --falcon-modal-shape-header-bg: #01224b; + --fc-page-bg-color: #0b1727; + --fc-neutral-bg-color: #232e3c; + --falcon-slick-arrow-bg: rgba(11, 23, 39, 0.8); + --falcon-react-datepicker-bg: #0b1727; + --falcon-react-datepicker-header-bg: #344050; + --falcon-leaflet-bar-bg: #344050; + --falcon-bg-choices-close-button: #4d5969; + --falcon-thumbnail-bg-global: #232e3c; + --falcon-card-span-img-hover-box-shadow: var(--falcon-box-shadow); + --falcon-setting-toggle-shadow: 0 -7px 14px 0 rgba(3, 12, 51, 0.15), + 0 3px 6px 0 rgba(0, 0, 0, 0.2); + --falcon-scrollbar-bg: rgba(52, 64, 80, 0.6); + --falcon-btn-disabled-custom-background: rgba(11, 23, 39, 0.65); + --falcon-btn-disabled-custom-color: rgba(255, 255, 255, 0.2); + --falcon-dropdown-bg-global: #232e3c; + --falcon-dropdown-link-hover-color-global: #eaeff6; + --falcon-dropdown-link-hover-bg-global: rgba(11, 23, 39, 0.4); + --falcon-popover-header-bg-global: rgba(35, 46, 60, 0.25); + --falcon-toast-bg-global: rgba(52, 64, 80, 0.3); + --falcon-toast-header-bg-global: rgba(52, 64, 80, 0.3); +} +[data-bs-theme=dark] .table-primary { + --falcon-table-bg: #09192e; + --falcon-table-color: #fff; + --falcon-table-hover-bg: #1b2a3e; + --falcon-table-hover-color: #fff; + --falcon-table-striped-bg: #152538; + --falcon-table-striped-color: #fff; + --falcon-table-active-bg: #223043; + --falcon-table-active-color: #fff; + --falcon-table-border-color: rgba(58, 71, 88, 0.05); +} +[data-bs-theme=dark] .table-secondary { + --falcon-table-bg: #171a1e; + --falcon-table-color: #fff; + --falcon-table-hover-bg: #282b2f; + --falcon-table-hover-color: #fff; + --falcon-table-striped-bg: #232529; + --falcon-table-striped-color: #fff; + --falcon-table-active-bg: #2e3135; + --falcon-table-active-color: #fff; + --falcon-table-border-color: rgba(69, 72, 75, 0.05); +} +[data-bs-theme=dark] .table-success { + --falcon-table-bg: #002a18; + --falcon-table-color: #fff; + --falcon-table-hover-bg: #133a29; + --falcon-table-hover-color: #fff; + --falcon-table-striped-bg: #0d3524; + --falcon-table-striped-color: #fff; + --falcon-table-active-bg: #1a3f2f; + --falcon-table-active-color: #fff; + --falcon-table-border-color: rgba(51, 85, 70, 0.05); +} +[data-bs-theme=dark] .table-info { + --falcon-table-bg: #082633; + --falcon-table-color: #fff; + --falcon-table-hover-bg: #1b3642; + --falcon-table-hover-color: #fff; + --falcon-table-striped-bg: #14313d; + --falcon-table-striped-color: #fff; + --falcon-table-active-bg: #213c47; + --falcon-table-active-color: #fff; + --falcon-table-border-color: rgba(57, 81, 92, 0.05); +} +[data-bs-theme=dark] .table-warning { + --falcon-table-bg: #311a0c; + --falcon-table-color: #fff; + --falcon-table-hover-bg: #402b1e; + --falcon-table-hover-color: #fff; + --falcon-table-striped-bg: #3b2518; + --falcon-table-striped-color: #fff; + --falcon-table-active-bg: #463124; + --falcon-table-active-color: #fff; + --falcon-table-border-color: rgba(90, 72, 61, 0.05); +} +[data-bs-theme=dark] .table-danger { + --falcon-table-bg: #2e0b11; + --falcon-table-color: #fff; + --falcon-table-hover-bg: #3e1d23; + --falcon-table-hover-color: #fff; + --falcon-table-striped-bg: #38171d; + --falcon-table-striped-color: #fff; + --falcon-table-active-bg: #432329; + --falcon-table-active-color: #fff; + --falcon-table-border-color: rgba(88, 60, 65, 0.05); +} +[data-bs-theme=dark] .table-light { + --falcon-table-bg: #323233; + --falcon-table-color: #fff; + --falcon-table-hover-bg: #414142; + --falcon-table-hover-color: #fff; + --falcon-table-striped-bg: #3c3c3d; + --falcon-table-striped-color: #fff; + --falcon-table-active-bg: #474747; + --falcon-table-active-color: #fff; + --falcon-table-border-color: rgba(91, 91, 92, 0.05); +} +[data-bs-theme=dark] .table-dark { + --falcon-table-bg: #020508; + --falcon-table-color: #fff; + --falcon-table-hover-bg: #15181b; + --falcon-table-hover-color: #fff; + --falcon-table-striped-bg: #0f1214; + --falcon-table-striped-color: #fff; + --falcon-table-active-bg: #1b1e21; + --falcon-table-active-color: #fff; + --falcon-table-border-color: rgba(53, 55, 57, 0.05); +} + +/*----------------------------------------------- +| Bootstrap Styles +-----------------------------------------------*/ +*, +*::before, +*::after { + box-sizing: border-box; +} + +@media (prefers-reduced-motion: no-preference) { + :root { + scroll-behavior: smooth; + } +} + +body { + margin: 0; + font-family: var(--falcon-body-font-family); + font-size: var(--falcon-body-font-size); + font-weight: var(--falcon-body-font-weight); + line-height: var(--falcon-body-line-height); + color: var(--falcon-body-color); + text-align: var(--falcon-body-text-align); + background-color: var(--falcon-body-bg); + -webkit-text-size-adjust: 100%; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +hr { + margin: 1rem 0; + color: var(--falcon-border-color); + border: 0; + border-top: var(--falcon-border-width) solid; + opacity: var(--falcon-hr-opacity); +} + +h6, .h6, h5, .h5, h4, .h4, h3, .h3, h2, .h2, h1, .h1 { + margin-top: 0; + margin-bottom: 0.5rem; + font-family: var(--falcon-font-sans-serif); + font-weight: 500; + line-height: 1.2; + color: var(--falcon-heading-color); +} + +h1, .h1 { + font-size: calc(1.373832rem + 1.485984vw); +} +@media (min-width: 1200px) { + h1, .h1 { + font-size: 2.48832rem; + } +} + +h2, .h2 { + font-size: calc(1.33236rem + 0.98832vw); +} +@media (min-width: 1200px) { + h2, .h2 { + font-size: 2.0736rem; + } +} + +h3, .h3 { + font-size: calc(1.2978rem + 0.5736vw); +} +@media (min-width: 1200px) { + h3, .h3 { + font-size: 1.728rem; + } +} + +h4, .h4 { + font-size: calc(1.269rem + 0.228vw); +} +@media (min-width: 1200px) { + h4, .h4 { + font-size: 1.44rem; + } +} + +h5, .h5 { + font-size: 1.2rem; +} + +h6, .h6 { + font-size: 0.8333333333rem; +} + +p { + margin-top: 0; + margin-bottom: 1rem; +} + +abbr[title] { + text-decoration: underline dotted; + cursor: help; + text-decoration-skip-ink: none; +} + +address { + margin-bottom: 1rem; + font-style: normal; + line-height: inherit; +} + +ol, +ul { + padding-left: 2rem; +} + +ol, +ul, +dl { + margin-top: 0; + margin-bottom: 1rem; +} + +ol ol, +ul ul, +ol ul, +ul ol { + margin-bottom: 0; +} + +dt { + font-weight: 700; +} + +dd { + margin-bottom: 0.5rem; + margin-left: 0; +} + +blockquote { + margin: 0 0 1rem; +} + +b, +strong { + font-weight: 800; +} + +small, .small { + font-size: 75%; +} + +mark, .mark { + padding: 0.1875em; + color: var(--falcon-highlight-color); + background-color: var(--falcon-highlight-bg); +} + +sub, +sup { + position: relative; + font-size: 0.75em; + line-height: 0; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +a { + color: rgba(var(--falcon-link-color-rgb), var(--falcon-link-opacity, 1)); + text-decoration: none; +} +a:hover { + --falcon-link-color-rgb: var(--falcon-link-hover-color-rgb); + text-decoration: underline; +} + +a:not([href]):not([class]), a:not([href]):not([class]):hover { + color: inherit; + text-decoration: none; +} + +pre, +code, +kbd, +samp { + font-family: var(--falcon-font-monospace); + font-size: 1em; +} + +pre { + display: block; + margin-top: 0; + margin-bottom: 1rem; + overflow: auto; + font-size: 75%; +} +pre code { + font-size: inherit; + color: inherit; + word-break: normal; +} + +code { + font-size: 75%; + color: var(--falcon-code-color); + word-wrap: break-word; +} +a > code { + color: inherit; +} + +kbd { + padding: 0.1875rem 0.375rem; + font-size: 75%; + color: var(--falcon-body-bg); + background-color: var(--falcon-body-color); + border-radius: 0.25rem; +} +kbd kbd { + padding: 0; + font-size: 1em; +} + +figure { + margin: 0 0 1rem; +} + +img, +svg { + vertical-align: middle; +} + +table { + caption-side: bottom; + border-collapse: collapse; +} + +caption { + padding-top: 0.75rem; + padding-bottom: 0.75rem; + color: #9da9bb; + text-align: left; +} + +th { + text-align: inherit; + text-align: -webkit-match-parent; +} + +thead, +tbody, +tfoot, +tr, +td, +th { + border-color: inherit; + border-style: solid; + border-width: 0; +} + +label { + display: inline-block; +} + +button { + border-radius: 0; +} + +button:focus:not(:focus-visible) { + outline: 0; +} + +input, +button, +select, +optgroup, +textarea { + margin: 0; + font-family: inherit; + font-size: inherit; + line-height: inherit; +} + +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; +} + +button, +[type=button], +[type=reset], +[type=submit] { + -webkit-appearance: button; +} +button:not(:disabled), +[type=button]:not(:disabled), +[type=reset]:not(:disabled), +[type=submit]:not(:disabled) { + cursor: pointer; +} + +::-moz-focus-inner { + padding: 0; + border-style: none; +} + +textarea { + resize: vertical; +} + +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; +} + +legend { + float: left; + width: 100%; + padding: 0; + margin-bottom: 0.5rem; + line-height: inherit; + font-size: calc(1.275rem + 0.3vw); +} +@media (min-width: 1200px) { + legend { + font-size: 1.5rem; + } +} +legend + * { + clear: left; +} + +::-webkit-datetime-edit-fields-wrapper, +::-webkit-datetime-edit-text, +::-webkit-datetime-edit-minute, +::-webkit-datetime-edit-hour-field, +::-webkit-datetime-edit-day-field, +::-webkit-datetime-edit-month-field, +::-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); +} + +/* rtl:raw: +[type="tel"], +[type="url"], +[type="email"], +[type="number"] { + direction: ltr; +} +*/ +::-webkit-search-decoration { + -webkit-appearance: none; +} + +::-webkit-color-swatch-wrapper { + padding: 0; +} + +::file-selector-button { + font: inherit; + -webkit-appearance: button; +} + +output { + display: inline-block; +} + +iframe { + border: 0; +} + +summary { + display: list-item; + cursor: pointer; +} + +progress { + vertical-align: baseline; +} + +[hidden] { + display: none !important; +} + +.lead { + font-size: 1.2rem; + font-weight: 400; +} + +.display-1 { + font-weight: 900; + line-height: 1; + font-size: calc(1.554981696rem + 3.659780352vw); +} +@media (min-width: 1200px) { + .display-1 { + font-size: 4.29981696rem; + } +} + +.display-2 { + font-weight: 900; + line-height: 1; + font-size: calc(1.48331808rem + 2.79981696vw); +} +@media (min-width: 1200px) { + .display-2 { + font-size: 3.5831808rem; + } +} + +.display-3 { + font-weight: 900; + line-height: 1; + font-size: calc(1.4235984rem + 2.0831808vw); +} +@media (min-width: 1200px) { + .display-3 { + font-size: 2.985984rem; + } +} + +.display-4 { + font-weight: 900; + line-height: 1; + font-size: calc(1.373832rem + 1.485984vw); +} +@media (min-width: 1200px) { + .display-4 { + font-size: 2.48832rem; + } +} + +.display-5 { + font-weight: 900; + line-height: 1; + font-size: calc(1.33236rem + 0.98832vw); +} +@media (min-width: 1200px) { + .display-5 { + font-size: 2.0736rem; + } +} + +.display-6 { + font-weight: 900; + line-height: 1; + font-size: calc(1.2978rem + 0.5736vw); +} +@media (min-width: 1200px) { + .display-6 { + font-size: 1.728rem; + } +} + +.list-unstyled { + padding-left: 0; + list-style: none; +} + +.list-inline { + padding-left: 0; + list-style: none; +} + +.list-inline-item { + display: inline-block; +} +.list-inline-item:not(:last-child) { + margin-right: 0.5rem; +} + +.initialism { + font-size: 75%; + text-transform: uppercase; +} + +.blockquote { + margin-bottom: 1rem; + font-size: 1.2rem; +} +.blockquote > :last-child { + margin-bottom: 0; +} + +.blockquote-footer { + margin-top: -1rem; + margin-bottom: 1rem; + font-size: 75%; + color: #748194; +} +.blockquote-footer::before { + content: "— "; +} + +.img-fluid { + max-width: 100%; + height: auto; +} + +.img-thumbnail { + padding: 0.25rem; + background-color: var(--falcon-thumbnail-bg-global); + border: 3px solid var(--falcon-thumbnail-bg-global); + border-radius: var(--falcon-border-radius); + box-shadow: var(--falcon-box-shadow-sm); + max-width: 100%; + height: auto; +} + +.figure { + display: inline-block; +} + +.figure-img { + margin-bottom: 0.5rem; + line-height: 1; +} + +.figure-caption { + font-size: 75%; + color: var(--falcon-gray-600); +} + +.container, +.container-fluid, +.container-xxl, +.container-xl, +.container-lg, +.container-md, +.container-sm { + --falcon-gutter-x: 2rem; + --falcon-gutter-y: 0; + width: 100%; + padding-right: calc(var(--falcon-gutter-x) * 0.5); + padding-left: calc(var(--falcon-gutter-x) * 0.5); + margin-right: auto; + margin-left: auto; +} + +@media (min-width: 576px) { + .container-sm, .container { + max-width: 540px; + } +} +@media (min-width: 768px) { + .container-md, .container-sm, .container { + max-width: 720px; + } +} +@media (min-width: 992px) { + .container-lg, .container-md, .container-sm, .container { + max-width: 960px; + } +} +@media (min-width: 1200px) { + .container-xl, .container-lg, .container-md, .container-sm, .container { + max-width: 1140px; + } +} +@media (min-width: 1540px) { + .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container { + max-width: 1480px; + } +} +:root { + --falcon-breakpoint-xs: 0; + --falcon-breakpoint-sm: 576px; + --falcon-breakpoint-md: 768px; + --falcon-breakpoint-lg: 992px; + --falcon-breakpoint-xl: 1200px; + --falcon-breakpoint-xxl: 1540px; +} + +.row { + --falcon-gutter-x: 2rem; + --falcon-gutter-y: 0; + display: flex; + flex-wrap: wrap; + margin-top: calc(-1 * var(--falcon-gutter-y)); + margin-right: calc(-0.5 * var(--falcon-gutter-x)); + margin-left: calc(-0.5 * var(--falcon-gutter-x)); +} +.row > * { + flex-shrink: 0; + width: 100%; + max-width: 100%; + padding-right: calc(var(--falcon-gutter-x) * 0.5); + padding-left: calc(var(--falcon-gutter-x) * 0.5); + margin-top: var(--falcon-gutter-y); +} + +.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, +.timeline-zigzag .timeline-item, +.timeline-vertical .timeline-item, +.timeline-simple .timeline-item { + --falcon-gutter-x: 0; +} + +.g-0, +.gy-0 { + --falcon-gutter-y: 0; +} + +.g-1, +.gx-1 { + --falcon-gutter-x: 0.25rem; +} + +.g-1, +.gy-1 { + --falcon-gutter-y: 0.25rem; +} + +.g-2, +.gx-2 { + --falcon-gutter-x: 0.5rem; +} + +.g-2, +.gy-2 { + --falcon-gutter-y: 0.5rem; +} + +.g-3, +.gx-3 { + --falcon-gutter-x: 1rem; +} + +.g-3, +.gy-3 { + --falcon-gutter-y: 1rem; +} + +.g-4, +.gx-4 { + --falcon-gutter-x: 1.8rem; +} + +.g-4, +.gy-4 { + --falcon-gutter-y: 1.8rem; +} + +.g-5, +.gx-5 { + --falcon-gutter-x: 3rem; +} + +.g-5, +.gy-5 { + --falcon-gutter-y: 3rem; +} + +.g-6, +.gx-6 { + --falcon-gutter-x: 4rem; +} + +.g-6, +.gy-6 { + --falcon-gutter-y: 4rem; +} + +.g-7, +.gx-7 { + --falcon-gutter-x: 5rem; +} + +.g-7, +.gy-7 { + --falcon-gutter-y: 5rem; +} + +.g-8, +.gx-8 { + --falcon-gutter-x: 7.5rem; +} + +.g-8, +.gy-8 { + --falcon-gutter-y: 7.5rem; +} + +.g-9, +.gx-9 { + --falcon-gutter-x: 10rem; +} + +.g-9, +.gy-9 { + --falcon-gutter-y: 10rem; +} + +.g-10, +.gx-10 { + --falcon-gutter-x: 12.5rem; +} + +.g-10, +.gy-10 { + --falcon-gutter-y: 12.5rem; +} + +.g-11, +.gx-11 { + --falcon-gutter-x: 15rem; +} + +.g-11, +.gy-11 { + --falcon-gutter-y: 15rem; +} + +.g-x1, +.gx-x1 { + --falcon-gutter-x: 1.25rem; +} + +.g-x1, +.gy-x1 { + --falcon-gutter-y: 1.25rem; +} + +.g-card, +.gx-card { + --falcon-gutter-x: 2.5rem; +} + +.g-card, +.gy-card { + --falcon-gutter-y: 2.5rem; +} + +@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 { + --falcon-gutter-x: 0; + } + .g-sm-0, + .gy-sm-0 { + --falcon-gutter-y: 0; + } + .g-sm-1, + .gx-sm-1 { + --falcon-gutter-x: 0.25rem; + } + .g-sm-1, + .gy-sm-1 { + --falcon-gutter-y: 0.25rem; + } + .g-sm-2, + .gx-sm-2 { + --falcon-gutter-x: 0.5rem; + } + .g-sm-2, + .gy-sm-2 { + --falcon-gutter-y: 0.5rem; + } + .g-sm-3, + .gx-sm-3 { + --falcon-gutter-x: 1rem; + } + .g-sm-3, + .gy-sm-3 { + --falcon-gutter-y: 1rem; + } + .g-sm-4, + .gx-sm-4 { + --falcon-gutter-x: 1.8rem; + } + .g-sm-4, + .gy-sm-4 { + --falcon-gutter-y: 1.8rem; + } + .g-sm-5, + .gx-sm-5 { + --falcon-gutter-x: 3rem; + } + .g-sm-5, + .gy-sm-5 { + --falcon-gutter-y: 3rem; + } + .g-sm-6, + .gx-sm-6 { + --falcon-gutter-x: 4rem; + } + .g-sm-6, + .gy-sm-6 { + --falcon-gutter-y: 4rem; + } + .g-sm-7, + .gx-sm-7 { + --falcon-gutter-x: 5rem; + } + .g-sm-7, + .gy-sm-7 { + --falcon-gutter-y: 5rem; + } + .g-sm-8, + .gx-sm-8 { + --falcon-gutter-x: 7.5rem; + } + .g-sm-8, + .gy-sm-8 { + --falcon-gutter-y: 7.5rem; + } + .g-sm-9, + .gx-sm-9 { + --falcon-gutter-x: 10rem; + } + .g-sm-9, + .gy-sm-9 { + --falcon-gutter-y: 10rem; + } + .g-sm-10, + .gx-sm-10 { + --falcon-gutter-x: 12.5rem; + } + .g-sm-10, + .gy-sm-10 { + --falcon-gutter-y: 12.5rem; + } + .g-sm-11, + .gx-sm-11 { + --falcon-gutter-x: 15rem; + } + .g-sm-11, + .gy-sm-11 { + --falcon-gutter-y: 15rem; + } + .g-sm-x1, + .gx-sm-x1 { + --falcon-gutter-x: 1.25rem; + } + .g-sm-x1, + .gy-sm-x1 { + --falcon-gutter-y: 1.25rem; + } + .g-sm-card, + .gx-sm-card { + --falcon-gutter-x: 2.5rem; + } + .g-sm-card, + .gy-sm-card { + --falcon-gutter-y: 2.5rem; + } +} +@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 { + --falcon-gutter-x: 0; + } + .g-md-0, + .gy-md-0 { + --falcon-gutter-y: 0; + } + .g-md-1, + .gx-md-1 { + --falcon-gutter-x: 0.25rem; + } + .g-md-1, + .gy-md-1 { + --falcon-gutter-y: 0.25rem; + } + .g-md-2, + .gx-md-2 { + --falcon-gutter-x: 0.5rem; + } + .g-md-2, + .gy-md-2 { + --falcon-gutter-y: 0.5rem; + } + .g-md-3, + .gx-md-3 { + --falcon-gutter-x: 1rem; + } + .g-md-3, + .gy-md-3 { + --falcon-gutter-y: 1rem; + } + .g-md-4, + .gx-md-4 { + --falcon-gutter-x: 1.8rem; + } + .g-md-4, + .gy-md-4 { + --falcon-gutter-y: 1.8rem; + } + .g-md-5, + .gx-md-5 { + --falcon-gutter-x: 3rem; + } + .g-md-5, + .gy-md-5 { + --falcon-gutter-y: 3rem; + } + .g-md-6, + .gx-md-6 { + --falcon-gutter-x: 4rem; + } + .g-md-6, + .gy-md-6 { + --falcon-gutter-y: 4rem; + } + .g-md-7, + .gx-md-7 { + --falcon-gutter-x: 5rem; + } + .g-md-7, + .gy-md-7 { + --falcon-gutter-y: 5rem; + } + .g-md-8, + .gx-md-8 { + --falcon-gutter-x: 7.5rem; + } + .g-md-8, + .gy-md-8 { + --falcon-gutter-y: 7.5rem; + } + .g-md-9, + .gx-md-9 { + --falcon-gutter-x: 10rem; + } + .g-md-9, + .gy-md-9 { + --falcon-gutter-y: 10rem; + } + .g-md-10, + .gx-md-10 { + --falcon-gutter-x: 12.5rem; + } + .g-md-10, + .gy-md-10 { + --falcon-gutter-y: 12.5rem; + } + .g-md-11, + .gx-md-11 { + --falcon-gutter-x: 15rem; + } + .g-md-11, + .gy-md-11 { + --falcon-gutter-y: 15rem; + } + .g-md-x1, + .gx-md-x1 { + --falcon-gutter-x: 1.25rem; + } + .g-md-x1, + .gy-md-x1 { + --falcon-gutter-y: 1.25rem; + } + .g-md-card, + .gx-md-card { + --falcon-gutter-x: 2.5rem; + } + .g-md-card, + .gy-md-card { + --falcon-gutter-y: 2.5rem; + } +} +@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 { + --falcon-gutter-x: 0; + } + .g-lg-0, + .gy-lg-0 { + --falcon-gutter-y: 0; + } + .g-lg-1, + .gx-lg-1 { + --falcon-gutter-x: 0.25rem; + } + .g-lg-1, + .gy-lg-1 { + --falcon-gutter-y: 0.25rem; + } + .g-lg-2, + .gx-lg-2 { + --falcon-gutter-x: 0.5rem; + } + .g-lg-2, + .gy-lg-2 { + --falcon-gutter-y: 0.5rem; + } + .g-lg-3, + .gx-lg-3 { + --falcon-gutter-x: 1rem; + } + .g-lg-3, + .gy-lg-3 { + --falcon-gutter-y: 1rem; + } + .g-lg-4, + .gx-lg-4 { + --falcon-gutter-x: 1.8rem; + } + .g-lg-4, + .gy-lg-4 { + --falcon-gutter-y: 1.8rem; + } + .g-lg-5, + .gx-lg-5 { + --falcon-gutter-x: 3rem; + } + .g-lg-5, + .gy-lg-5 { + --falcon-gutter-y: 3rem; + } + .g-lg-6, + .gx-lg-6 { + --falcon-gutter-x: 4rem; + } + .g-lg-6, + .gy-lg-6 { + --falcon-gutter-y: 4rem; + } + .g-lg-7, + .gx-lg-7 { + --falcon-gutter-x: 5rem; + } + .g-lg-7, + .gy-lg-7 { + --falcon-gutter-y: 5rem; + } + .g-lg-8, + .gx-lg-8 { + --falcon-gutter-x: 7.5rem; + } + .g-lg-8, + .gy-lg-8 { + --falcon-gutter-y: 7.5rem; + } + .g-lg-9, + .gx-lg-9 { + --falcon-gutter-x: 10rem; + } + .g-lg-9, + .gy-lg-9 { + --falcon-gutter-y: 10rem; + } + .g-lg-10, + .gx-lg-10 { + --falcon-gutter-x: 12.5rem; + } + .g-lg-10, + .gy-lg-10 { + --falcon-gutter-y: 12.5rem; + } + .g-lg-11, + .gx-lg-11 { + --falcon-gutter-x: 15rem; + } + .g-lg-11, + .gy-lg-11 { + --falcon-gutter-y: 15rem; + } + .g-lg-x1, + .gx-lg-x1 { + --falcon-gutter-x: 1.25rem; + } + .g-lg-x1, + .gy-lg-x1 { + --falcon-gutter-y: 1.25rem; + } + .g-lg-card, + .gx-lg-card { + --falcon-gutter-x: 2.5rem; + } + .g-lg-card, + .gy-lg-card { + --falcon-gutter-y: 2.5rem; + } +} +@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 { + --falcon-gutter-x: 0; + } + .g-xl-0, + .gy-xl-0 { + --falcon-gutter-y: 0; + } + .g-xl-1, + .gx-xl-1 { + --falcon-gutter-x: 0.25rem; + } + .g-xl-1, + .gy-xl-1 { + --falcon-gutter-y: 0.25rem; + } + .g-xl-2, + .gx-xl-2 { + --falcon-gutter-x: 0.5rem; + } + .g-xl-2, + .gy-xl-2 { + --falcon-gutter-y: 0.5rem; + } + .g-xl-3, + .gx-xl-3 { + --falcon-gutter-x: 1rem; + } + .g-xl-3, + .gy-xl-3 { + --falcon-gutter-y: 1rem; + } + .g-xl-4, + .gx-xl-4 { + --falcon-gutter-x: 1.8rem; + } + .g-xl-4, + .gy-xl-4 { + --falcon-gutter-y: 1.8rem; + } + .g-xl-5, + .gx-xl-5 { + --falcon-gutter-x: 3rem; + } + .g-xl-5, + .gy-xl-5 { + --falcon-gutter-y: 3rem; + } + .g-xl-6, + .gx-xl-6 { + --falcon-gutter-x: 4rem; + } + .g-xl-6, + .gy-xl-6 { + --falcon-gutter-y: 4rem; + } + .g-xl-7, + .gx-xl-7 { + --falcon-gutter-x: 5rem; + } + .g-xl-7, + .gy-xl-7 { + --falcon-gutter-y: 5rem; + } + .g-xl-8, + .gx-xl-8 { + --falcon-gutter-x: 7.5rem; + } + .g-xl-8, + .gy-xl-8 { + --falcon-gutter-y: 7.5rem; + } + .g-xl-9, + .gx-xl-9 { + --falcon-gutter-x: 10rem; + } + .g-xl-9, + .gy-xl-9 { + --falcon-gutter-y: 10rem; + } + .g-xl-10, + .gx-xl-10 { + --falcon-gutter-x: 12.5rem; + } + .g-xl-10, + .gy-xl-10 { + --falcon-gutter-y: 12.5rem; + } + .g-xl-11, + .gx-xl-11 { + --falcon-gutter-x: 15rem; + } + .g-xl-11, + .gy-xl-11 { + --falcon-gutter-y: 15rem; + } + .g-xl-x1, + .gx-xl-x1 { + --falcon-gutter-x: 1.25rem; + } + .g-xl-x1, + .gy-xl-x1 { + --falcon-gutter-y: 1.25rem; + } + .g-xl-card, + .gx-xl-card { + --falcon-gutter-x: 2.5rem; + } + .g-xl-card, + .gy-xl-card { + --falcon-gutter-y: 2.5rem; + } +} +@media (min-width: 1540px) { + .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 { + --falcon-gutter-x: 0; + } + .g-xxl-0, + .gy-xxl-0 { + --falcon-gutter-y: 0; + } + .g-xxl-1, + .gx-xxl-1 { + --falcon-gutter-x: 0.25rem; + } + .g-xxl-1, + .gy-xxl-1 { + --falcon-gutter-y: 0.25rem; + } + .g-xxl-2, + .gx-xxl-2 { + --falcon-gutter-x: 0.5rem; + } + .g-xxl-2, + .gy-xxl-2 { + --falcon-gutter-y: 0.5rem; + } + .g-xxl-3, + .gx-xxl-3 { + --falcon-gutter-x: 1rem; + } + .g-xxl-3, + .gy-xxl-3 { + --falcon-gutter-y: 1rem; + } + .g-xxl-4, + .gx-xxl-4 { + --falcon-gutter-x: 1.8rem; + } + .g-xxl-4, + .gy-xxl-4 { + --falcon-gutter-y: 1.8rem; + } + .g-xxl-5, + .gx-xxl-5 { + --falcon-gutter-x: 3rem; + } + .g-xxl-5, + .gy-xxl-5 { + --falcon-gutter-y: 3rem; + } + .g-xxl-6, + .gx-xxl-6 { + --falcon-gutter-x: 4rem; + } + .g-xxl-6, + .gy-xxl-6 { + --falcon-gutter-y: 4rem; + } + .g-xxl-7, + .gx-xxl-7 { + --falcon-gutter-x: 5rem; + } + .g-xxl-7, + .gy-xxl-7 { + --falcon-gutter-y: 5rem; + } + .g-xxl-8, + .gx-xxl-8 { + --falcon-gutter-x: 7.5rem; + } + .g-xxl-8, + .gy-xxl-8 { + --falcon-gutter-y: 7.5rem; + } + .g-xxl-9, + .gx-xxl-9 { + --falcon-gutter-x: 10rem; + } + .g-xxl-9, + .gy-xxl-9 { + --falcon-gutter-y: 10rem; + } + .g-xxl-10, + .gx-xxl-10 { + --falcon-gutter-x: 12.5rem; + } + .g-xxl-10, + .gy-xxl-10 { + --falcon-gutter-y: 12.5rem; + } + .g-xxl-11, + .gx-xxl-11 { + --falcon-gutter-x: 15rem; + } + .g-xxl-11, + .gy-xxl-11 { + --falcon-gutter-y: 15rem; + } + .g-xxl-x1, + .gx-xxl-x1 { + --falcon-gutter-x: 1.25rem; + } + .g-xxl-x1, + .gy-xxl-x1 { + --falcon-gutter-y: 1.25rem; + } + .g-xxl-card, + .gx-xxl-card { + --falcon-gutter-x: 2.5rem; + } + .g-xxl-card, + .gy-xxl-card { + --falcon-gutter-y: 2.5rem; + } +} +.table { + --falcon-table-color-type: initial; + --falcon-table-bg-type: initial; + --falcon-table-color-state: initial; + --falcon-table-bg-state: initial; + --falcon-table-color: #5e6e82; + --falcon-table-bg: transparent; + --falcon-table-border-color: var(--falcon-body-bg); + --falcon-table-accent-bg: transparent; + --falcon-table-striped-color: #5e6e82; + --falcon-table-striped-bg: var(--falcon-gray-100); + --falcon-table-active-color: var(--falcon-body-color); + --falcon-table-active-bg: rgba(var(--falcon-emphasis-color-rgb), 0.1); + --falcon-table-hover-color: var(--falcon-body-color); + --falcon-table-hover-bg: rgba(var(--falcon-emphasis-color-rgb), 0.075); + width: 100%; + margin-bottom: 1rem; + vertical-align: top; + border-color: var(--falcon-table-border-color); +} +.table > :not(caption) > * > * { + padding: 0.75rem 0.75rem; + color: var(--falcon-table-color-state, var(--falcon-table-color-type, var(--falcon-table-color))); + background-color: var(--falcon-table-bg); + border-bottom-width: var(--falcon-border-width); + box-shadow: inset 0 0 0 9999px var(--falcon-table-bg-state, var(--falcon-table-bg-type, var(--falcon-table-accent-bg))); +} +.table > tbody { + vertical-align: inherit; +} +.table > thead { + vertical-align: bottom; +} + +.table-group-divider { + border-top: calc(var(--falcon-border-width) * 2) solid inherit; +} + +.caption-top { + caption-side: top; +} + +.table-sm > :not(caption) > * > * { + padding: 0.25rem 0.25rem; +} + +.table-bordered > :not(caption) > * { + border-width: var(--falcon-border-width) 0; +} +.table-bordered > :not(caption) > * > * { + border-width: 0 var(--falcon-border-width); +} + +.table-borderless > :not(caption) > * > * { + border-bottom-width: 0; +} +.table-borderless > :not(:first-child) { + border-top-width: 0; +} + +.table-striped > tbody > tr:nth-of-type(even) > * { + --falcon-table-color-type: var(--falcon-table-striped-color); + --falcon-table-bg-type: var(--falcon-table-striped-bg); +} + +.table-striped-columns > :not(caption) > tr > :nth-child(even) { + --falcon-table-color-type: var(--falcon-table-striped-color); + --falcon-table-bg-type: var(--falcon-table-striped-bg); +} + +.table-active { + --falcon-table-color-state: var(--falcon-table-active-color); + --falcon-table-bg-state: var(--falcon-table-active-bg); +} + +.table-hover > tbody > tr:hover > * { + --falcon-table-color-state: var(--falcon-table-hover-color); + --falcon-table-bg-state: var(--falcon-table-hover-bg); +} + +.table-primary { + --falcon-table-color: #4d5969; + --falcon-table-bg: #d5e5fa; + --falcon-table-border-color: #bac9dd; + --falcon-table-striped-bg: #cedef3; + --falcon-table-striped-color: #4d5969; + --falcon-table-active-bg: #c7d7ec; + --falcon-table-active-color: #4d5969; + --falcon-table-hover-bg: #cbdbef; + --falcon-table-hover-color: #4d5969; + color: var(--falcon-table-color); + border-color: var(--falcon-table-border-color); +} + +.table-secondary { + --falcon-table-color: #4d5969; + --falcon-table-bg: #e3e6ea; + --falcon-table-border-color: #c5cad0; + --falcon-table-striped-bg: #dcdfe4; + --falcon-table-striped-color: #4d5969; + --falcon-table-active-bg: #d4d8dd; + --falcon-table-active-color: #4d5969; + --falcon-table-hover-bg: #d8dbe0; + --falcon-table-hover-color: #4d5969; + color: var(--falcon-table-color); + border-color: var(--falcon-table-border-color); +} + +.table-success { + --falcon-table-color: #4d5969; + --falcon-table-bg: #ccf6e4; + --falcon-table-border-color: #b3d7cb; + --falcon-table-striped-bg: #c6eede; + --falcon-table-striped-color: #4d5969; + --falcon-table-active-bg: #bfe6d8; + --falcon-table-active-color: #4d5969; + --falcon-table-hover-bg: #c2eadb; + --falcon-table-hover-color: #4d5969; + color: var(--falcon-table-color); + border-color: var(--falcon-table-border-color); +} + +.table-info { + --falcon-table-color: #4d5969; + --falcon-table-bg: #d4f2ff; + --falcon-table-border-color: #b9d3e1; + --falcon-table-striped-bg: #cdeaf8; + --falcon-table-striped-color: #4d5969; + --falcon-table-active-bg: #c7e3f0; + --falcon-table-active-color: #4d5969; + --falcon-table-hover-bg: #cae7f4; + --falcon-table-hover-color: #4d5969; + color: var(--falcon-table-color); + border-color: var(--falcon-table-border-color); +} + +.table-warning { + --falcon-table-color: #4d5969; + --falcon-table-bg: #fde6d8; + --falcon-table-border-color: #dacac2; + --falcon-table-striped-bg: #f4dfd2; + --falcon-table-striped-color: #4d5969; + --falcon-table-active-bg: #ebd8cd; + --falcon-table-active-color: #4d5969; + --falcon-table-hover-bg: #f0dbd0; + --falcon-table-hover-color: #4d5969; + color: var(--falcon-table-color); + border-color: var(--falcon-table-border-color); +} + +.table-danger { + --falcon-table-color: #4d5969; + --falcon-table-bg: #fad7dd; + --falcon-table-border-color: #d7bec6; + --falcon-table-striped-bg: #f1d1d7; + --falcon-table-striped-color: #4d5969; + --falcon-table-active-bg: #e9cad1; + --falcon-table-active-color: #4d5969; + --falcon-table-hover-bg: #edced4; + --falcon-table-hover-color: #4d5969; + color: var(--falcon-table-color); + border-color: var(--falcon-table-border-color); +} + +.table-light { + --falcon-table-color: #4d5969; + --falcon-table-bg: #f9fafd; + --falcon-table-border-color: #d7dadf; + --falcon-table-striped-bg: #f0f2f6; + --falcon-table-striped-color: #4d5969; + --falcon-table-active-bg: #e8eaee; + --falcon-table-active-color: #4d5969; + --falcon-table-hover-bg: #eceef2; + --falcon-table-hover-color: #4d5969; + color: var(--falcon-table-color); + border-color: var(--falcon-table-border-color); +} + +.table-dark { + --falcon-table-color: #fff; + --falcon-table-bg: #0b1727; + --falcon-table-border-color: #3c4552; + --falcon-table-striped-bg: #172332; + --falcon-table-striped-color: #fff; + --falcon-table-active-bg: #232e3d; + --falcon-table-active-color: #fff; + --falcon-table-hover-bg: #1d2837; + --falcon-table-hover-color: #fff; + color: var(--falcon-table-color); + border-color: var(--falcon-table-border-color); +} + +.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: 1539.98px) { + .table-responsive-xxl { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +.form-label { + margin-bottom: 0.5rem; + font-size: 0.8333333333rem; + font-weight: 500; +} + +.col-form-label { + padding-top: calc(0.3125rem + var(--falcon-border-width)); + padding-bottom: calc(0.3125rem + var(--falcon-border-width)); + margin-bottom: 0; + font-size: inherit; + font-weight: 500; + line-height: 1.5; +} + +.col-form-label-lg { + padding-top: calc(0.375rem + var(--falcon-border-width)); + padding-bottom: calc(0.375rem + var(--falcon-border-width)); + font-size: 1.2rem; +} + +.col-form-label-sm { + padding-top: calc(0.1875rem + var(--falcon-border-width)); + padding-bottom: calc(0.1875rem + var(--falcon-border-width)); + font-size: 0.875rem; +} + +.form-text { + margin-top: 0.25rem; + font-size: 75%; + color: #9da9bb; +} + +.form-control, .dropzone-area.is-invalid { + display: block; + width: 100%; + padding: 0.3125rem 1rem; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: var(--falcon-gray-900); + appearance: none; + background-color: var(--falcon-quaternary-bg); + background-clip: padding-box; + border: var(--falcon-border-width) solid var(--falcon-gray-300); + border-radius: var(--falcon-border-radius); + box-shadow: var(--falcon-box-shadow-inset); + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-control, .dropzone-area.is-invalid { + transition: none; + } +} +.form-control[type=file], [type=file].dropzone-area.is-invalid { + overflow: hidden; +} +.form-control[type=file]:not(:disabled):not([readonly]), [type=file].dropzone-area.is-invalid:not(:disabled):not([readonly]) { + cursor: pointer; +} +.form-control:focus, .dropzone-area.is-invalid:focus { + color: var(--falcon-gray-900); + background-color: var(--falcon-quaternary-bg); + border-color: var(--falcon-input-focus-border-color-global); + outline: 0; + box-shadow: var(--falcon-box-shadow-inset), 0 0 0 0.25rem rgba(44, 123, 229, 0.25); +} +.form-control::-webkit-date-and-time-value, .dropzone-area.is-invalid::-webkit-date-and-time-value { + min-width: 85px; + height: 1.5em; + margin: 0; +} +.form-control::-webkit-datetime-edit, .dropzone-area.is-invalid::-webkit-datetime-edit { + display: block; + padding: 0; +} +.form-control::placeholder, .dropzone-area.is-invalid::placeholder { + color: var(--falcon-input-placeholder-color-global); + opacity: 1; +} +.form-control:disabled, .dropzone-area.is-invalid:disabled { + background-color: var(--falcon-gray-200); + opacity: 1; +} +.form-control::file-selector-button, .dropzone-area.is-invalid::file-selector-button { + padding: 0.3125rem 1rem; + margin: -0.3125rem -1rem; + margin-inline-end: 1rem; + color: #d8e2ef; + background-color: #344050; + pointer-events: none; + border-color: inherit; + border-style: solid; + border-width: 0; + border-inline-end-width: var(--falcon-border-width); + border-radius: 0; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-control::file-selector-button, .dropzone-area.is-invalid::file-selector-button { + transition: none; + } +} +.form-control:hover:not(:disabled):not([readonly])::file-selector-button, .dropzone-area.is-invalid:hover:not(:disabled):not([readonly])::file-selector-button { + background-color: #344050; +} + +.form-control-plaintext { + display: block; + width: 100%; + padding: 0.3125rem 0; + margin-bottom: 0; + line-height: 1.5; + color: #5e6e82; + background-color: transparent; + border: solid transparent; + border-width: var(--falcon-border-width) 0; +} +.form-control-plaintext:focus { + outline: 0; +} +.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg { + padding-right: 0; + padding-left: 0; +} + +.form-control-sm { + min-height: calc(1.5em + 0.375rem + calc(var(--falcon-border-width) * 2)); + padding: 0.1875rem 0.75rem; + font-size: 0.875rem; + border-radius: var(--falcon-border-radius-sm); +} +.form-control-sm::file-selector-button { + padding: 0.1875rem 0.75rem; + margin: -0.1875rem -0.75rem; + margin-inline-end: 0.75rem; +} + +.form-control-lg { + min-height: calc(1.5em + 0.75rem + calc(var(--falcon-border-width) * 2)); + padding: 0.375rem 1.25rem; + font-size: 1.2rem; + border-radius: var(--falcon-border-radius-lg); +} +.form-control-lg::file-selector-button { + padding: 0.375rem 1.25rem; + margin: -0.375rem -1.25rem; + margin-inline-end: 1.25rem; +} + +textarea.form-control, textarea.dropzone-area.is-invalid { + min-height: calc(1.5em + 0.625rem + calc(var(--falcon-border-width) * 2)); +} +textarea.form-control-sm { + min-height: calc(1.5em + 0.375rem + calc(var(--falcon-border-width) * 2)); +} +textarea.form-control-lg { + min-height: calc(1.5em + 0.75rem + calc(var(--falcon-border-width) * 2)); +} + +.form-control-color { + width: 3rem; + height: calc(1.5em + 0.625rem + calc(var(--falcon-border-width) * 2)); + padding: 0.3125rem; +} +.form-control-color:not(:disabled):not([readonly]) { + cursor: pointer; +} +.form-control-color::-moz-color-swatch { + border: 0 !important; + border-radius: var(--falcon-border-radius); +} +.form-control-color::-webkit-color-swatch { + border: 0 !important; + border-radius: var(--falcon-border-radius); +} +.form-control-color.form-control-sm { + height: calc(1.5em + 0.375rem + calc(var(--falcon-border-width) * 2)); +} +.form-control-color.form-control-lg { + height: calc(1.5em + 0.75rem + calc(var(--falcon-border-width) * 2)); +} + +.form-select { + --falcon-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%234d5969' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"); + display: block; + width: 100%; + padding: 0.3125rem 3rem 0.3125rem 1rem; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: var(--falcon-gray-900); + appearance: none; + background-color: var(--falcon-quaternary-bg); + background-image: var(--falcon-form-select-bg-img), var(--falcon-form-select-bg-icon, none); + background-repeat: no-repeat; + background-position: right 1rem center; + background-size: 16px 12px; + border: var(--falcon-border-width) solid var(--falcon-gray-300); + border-radius: var(--falcon-border-radius); + box-shadow: var(--falcon-box-shadow-inset); + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-select { + transition: none; + } +} +.form-select:focus { + border-color: var(--falcon-input-focus-border-color-global); + outline: 0; + box-shadow: var(--falcon-box-shadow-inset), 0 0 0 0.25rem rgba(44, 123, 229, 0.25); +} +.form-select[multiple], .form-select[size]:not([size="1"]) { + padding-right: 1rem; + background-image: none; +} +.form-select:disabled { + background-color: var(--falcon-gray-200); +} +.form-select:-moz-focusring { + color: transparent; + text-shadow: 0 0 0 var(--falcon-gray-900); +} + +.form-select-sm { + padding-top: 0.1875rem; + padding-bottom: 0.1875rem; + padding-left: 0.75rem; + font-size: 0.875rem; + border-radius: var(--falcon-border-radius-sm); +} + +.form-select-lg { + padding-top: 0.375rem; + padding-bottom: 0.375rem; + padding-left: 1.25rem; + font-size: 1.2rem; + border-radius: var(--falcon-border-radius-lg); +} + +[data-bs-theme=dark] .form-select { + --falcon-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%234d5969' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"); +} + +.form-check { + display: block; + min-height: 1.5rem; + padding-left: 1.5em; + margin-bottom: 0.34375rem; +} +.form-check .form-check-input { + float: left; + margin-left: -1.5em; +} + +.form-check-reverse { + padding-right: 1.5em; + padding-left: 0; + text-align: right; +} +.form-check-reverse .form-check-input { + float: right; + margin-right: -1.5em; + margin-left: 0; +} + +.form-check-input { + --falcon-form-check-bg: transparent; + flex-shrink: 0; + width: 1em; + height: 1em; + margin-top: 0.25em; + vertical-align: top; + appearance: none; + background-color: var(--falcon-form-check-bg); + background-image: var(--falcon-form-check-bg-image); + background-repeat: no-repeat; + background-position: center; + background-size: contain; + border: 1px solid var(--falcon-gray-400); + print-color-adjust: exact; +} +.form-check-input[type=checkbox] { + border-radius: 0.25em; +} +.form-check-input[type=radio] { + border-radius: 50%; +} +.form-check-input:active { + filter: brightness(90%); +} +.form-check-input:focus { + border-color: var(--falcon-input-focus-border-color-global); + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(44, 123, 229, 0.25); +} +.form-check-input:checked { + background-color: #2c7be5; + border-color: #2c7be5; +} +.form-check-input:checked[type=checkbox] { + --falcon-form-check-bg-image: url("data:image/svg+xml,%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] { + --falcon-form-check-bg-image: url("data:image/svg+xml,%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: #2c7be5; + border-color: #2c7be5; + --falcon-form-check-bg-image: url("data:image/svg+xml,%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 { + pointer-events: none; + filter: none; + opacity: 0.5; +} +.form-check-input[disabled] ~ .form-check-label, .form-check-input:disabled ~ .form-check-label { + cursor: default; + opacity: 0.5; +} + +.form-switch { + padding-left: 2.5em; +} +.form-switch .form-check-input { + --falcon-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%239da9bb'/%3e%3c/svg%3e"); + width: 2em; + margin-left: -2.5em; + background-image: var(--falcon-form-switch-bg); + background-position: left center; + border-radius: 2em; + transition: background-position 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-switch .form-check-input { + transition: none; + } +} +.form-switch .form-check-input:focus { + --falcon-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2396bdf2'/%3e%3c/svg%3e"); +} +.form-switch .form-check-input:checked { + background-position: right center; + --falcon-form-switch-bg: url("data:image/svg+xml,%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-right: 2.5em; + padding-left: 0; +} +.form-switch.form-check-reverse .form-check-input { + margin-right: -2.5em; + margin-left: 0; +} + +.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, .tox .tox-menu__footer .btn-check[disabled] + .tox-button:last-child, +.tox .tox-dialog__footer .btn-check[disabled] + .tox-button:last-child, .tox .tox-menu__footer .btn-check[disabled] + .tox-button--secondary, +.tox .tox-dialog__footer .btn-check[disabled] + .tox-button--secondary, .btn-check:disabled + .btn, .tox .tox-menu__footer .btn-check:disabled + .tox-button:last-child, +.tox .tox-dialog__footer .btn-check:disabled + .tox-button:last-child, .tox .tox-menu__footer .btn-check:disabled + .tox-button--secondary, +.tox .tox-dialog__footer .btn-check:disabled + .tox-button--secondary { + pointer-events: none; + filter: none; + opacity: 0.5; +} + +[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus) { + --falcon-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%239da9bb'/%3e%3c/svg%3e"); +} + +.form-range { + width: 100%; + height: 1.5rem; + padding: 0; + appearance: none; + background-color: transparent; +} +.form-range:focus { + outline: 0; +} +.form-range:focus::-webkit-slider-thumb { + box-shadow: 0 0 0 1px #edf2f9, 0 0 0 0.25rem rgba(44, 123, 229, 0.25); +} +.form-range:focus::-moz-range-thumb { + box-shadow: 0 0 0 1px #edf2f9, 0 0 0 0.25rem rgba(44, 123, 229, 0.25); +} +.form-range::-moz-focus-outer { + border: 0; +} +.form-range::-webkit-slider-thumb { + width: 1rem; + height: 1rem; + margin-top: -0.25rem; + appearance: none; + background-color: #2c7be5; + border: 0; + border-radius: 1rem; + box-shadow: 0 0.1rem 0.25rem rgba(0, 0, 0, 0.1); + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-range::-webkit-slider-thumb { + transition: none; + } +} +.form-range::-webkit-slider-thumb:active { + background-color: #cbdef9; +} +.form-range::-webkit-slider-runnable-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: var(--falcon-gray-300); + border-color: transparent; + border-radius: 1rem; + box-shadow: var(--falcon-box-shadow-inset); +} +.form-range::-moz-range-thumb { + width: 1rem; + height: 1rem; + appearance: none; + background-color: #2c7be5; + border: 0; + border-radius: 1rem; + box-shadow: 0 0.1rem 0.25rem rgba(0, 0, 0, 0.1); + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-range::-moz-range-thumb { + transition: none; + } +} +.form-range::-moz-range-thumb:active { + background-color: #cbdef9; +} +.form-range::-moz-range-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: var(--falcon-gray-300); + border-color: transparent; + border-radius: 1rem; + box-shadow: var(--falcon-box-shadow-inset); +} +.form-range:disabled { + pointer-events: none; +} +.form-range:disabled::-webkit-slider-thumb { + background-color: #9da9bb; +} +.form-range:disabled::-moz-range-thumb { + background-color: #9da9bb; +} + +.form-floating { + position: relative; +} +.form-floating > .form-control, .form-floating > .dropzone-area.is-invalid, +.form-floating > .form-control-plaintext, +.form-floating > .form-select { + height: calc(3.5rem + calc(var(--falcon-border-width) * 2)); + min-height: calc(3.5rem + calc(var(--falcon-border-width) * 2)); + line-height: 1.25; +} +.form-floating > label { + position: absolute; + top: 0; + left: 0; + z-index: 2; + max-width: 100%; + height: 100%; + padding: 1rem 1rem; + overflow: hidden; + color: rgba(var(--falcon-body-color-rgb), 0.65); + text-align: start; + text-overflow: ellipsis; + white-space: nowrap; + pointer-events: none; + border: var(--falcon-border-width) solid transparent; + transform-origin: 0 0; + transition: opacity 0.1s ease-in-out, transform 0.1s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-floating > label { + transition: none; + } +} +.form-floating > .form-control, .form-floating > .dropzone-area.is-invalid, +.form-floating > .form-control-plaintext { + padding: 1rem 1rem; +} +.form-floating > .form-control::placeholder, .form-floating > .dropzone-area.is-invalid::placeholder, +.form-floating > .form-control-plaintext::placeholder { + color: transparent; +} +.form-floating > .form-control:focus, .form-floating > .dropzone-area.is-invalid:focus, .form-floating > .form-control:not(:placeholder-shown), .form-floating > .dropzone-area.is-invalid:not(:placeholder-shown), +.form-floating > .form-control-plaintext:focus, +.form-floating > .form-control-plaintext:not(:placeholder-shown) { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-control:-webkit-autofill, .form-floating > .dropzone-area.is-invalid:-webkit-autofill, +.form-floating > .form-control-plaintext:-webkit-autofill { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-select { + padding-top: 1.625rem; + padding-bottom: 0.625rem; + padding-left: 1rem; +} +.form-floating > .form-control:focus ~ label, .form-floating > .dropzone-area.is-invalid:focus ~ label, +.form-floating > .form-control:not(:placeholder-shown) ~ label, +.form-floating > .dropzone-area.is-invalid:not(:placeholder-shown) ~ label, +.form-floating > .form-control-plaintext ~ label, +.form-floating > .form-select ~ label { + transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); +} +.form-floating > .form-control:-webkit-autofill ~ label, .form-floating > .dropzone-area.is-invalid:-webkit-autofill ~ label { + transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); +} +.form-floating > textarea:focus ~ label::after, +.form-floating > textarea:not(:placeholder-shown) ~ label::after { + position: absolute; + inset: 1rem 0.5rem; + z-index: -1; + height: 1.5em; + content: ""; + background-color: var(--falcon-quaternary-bg); + border-radius: var(--falcon-border-radius); +} +.form-floating > textarea:disabled ~ label::after { + background-color: var(--falcon-gray-200); +} +.form-floating > .form-control-plaintext ~ label { + border-width: var(--falcon-border-width) 0; +} +.form-floating > :disabled ~ label, +.form-floating > .form-control:disabled ~ label { + color: #748194; +} + +.input-group { + position: relative; + display: flex; + flex-wrap: wrap; + align-items: stretch; + width: 100%; +} +.input-group > .form-control, .input-group > .dropzone-area.is-invalid, +.input-group > .form-select, +.input-group > .form-floating { + position: relative; + flex: 1 1 auto; + width: 1%; + min-width: 0; +} +.input-group > .form-control:focus, .input-group > .dropzone-area.is-invalid:focus, +.input-group > .form-select:focus, +.input-group > .form-floating:focus-within { + z-index: 5; +} +.input-group .btn, .input-group .tox .tox-menu__footer .tox-button:last-child, .tox .tox-menu__footer .input-group .tox-button:last-child, +.input-group .tox .tox-dialog__footer .tox-button:last-child, +.tox .tox-dialog__footer .input-group .tox-button:last-child, .input-group .tox .tox-menu__footer .tox-button--secondary, .tox .tox-menu__footer .input-group .tox-button--secondary, +.input-group .tox .tox-dialog__footer .tox-button--secondary, +.tox .tox-dialog__footer .input-group .tox-button--secondary { + position: relative; + z-index: 2; +} +.input-group .btn:focus, .input-group .tox .tox-menu__footer .tox-button:focus:last-child, .tox .tox-menu__footer .input-group .tox-button:focus:last-child, +.input-group .tox .tox-dialog__footer .tox-button:focus:last-child, +.tox .tox-dialog__footer .input-group .tox-button:focus:last-child, .input-group .tox .tox-menu__footer .tox-button--secondary:focus, .tox .tox-menu__footer .input-group .tox-button--secondary:focus, +.input-group .tox .tox-dialog__footer .tox-button--secondary:focus, +.tox .tox-dialog__footer .input-group .tox-button--secondary:focus { + z-index: 5; +} + +.input-group-text { + display: flex; + align-items: center; + padding: 0.3125rem 1rem; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: var(--falcon-gray-900); + text-align: center; + white-space: nowrap; + background-color: var(--falcon-gray-200); + border: var(--falcon-border-width) solid var(--falcon-gray-300); + border-radius: var(--falcon-border-radius); +} + +.input-group-lg > .form-control, .input-group-lg > .dropzone-area.is-invalid, +.input-group-lg > .form-select, +.input-group-lg > .input-group-text, +.input-group-lg > .btn, +.tox .tox-menu__footer .input-group-lg > .tox-button:last-child, +.tox .tox-dialog__footer .input-group-lg > .tox-button:last-child, +.tox .tox-menu__footer .input-group-lg > .tox-button--secondary, +.tox .tox-dialog__footer .input-group-lg > .tox-button--secondary { + padding: 0.375rem 1.25rem; + font-size: 1.2rem; + border-radius: var(--falcon-border-radius-lg); +} + +.input-group-sm > .form-control, .input-group-sm > .dropzone-area.is-invalid, +.input-group-sm > .form-select, +.input-group-sm > .input-group-text, +.input-group-sm > .btn, +.tox .tox-menu__footer .input-group-sm > .tox-button:last-child, +.tox .tox-dialog__footer .input-group-sm > .tox-button:last-child, +.tox .tox-menu__footer .input-group-sm > .tox-button--secondary, +.tox .tox-dialog__footer .input-group-sm > .tox-button--secondary { + padding: 0.1875rem 0.75rem; + font-size: 0.875rem; + border-radius: var(--falcon-border-radius-sm); +} + +.input-group-lg > .form-select, +.input-group-sm > .form-select { + padding-right: 4rem; +} + +.input-group:not(.has-validation) > :not(:last-child):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) > .dropzone-area.is-invalid, +.input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-select { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.input-group.has-validation > :nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating), +.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) > .dropzone-area.is-invalid, +.input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-select { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.input-group > :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback) { + margin-left: calc(-1 * var(--falcon-border-width)); + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.input-group > .form-floating:not(:first-child) > .form-control, .input-group > .form-floating:not(:first-child) > .dropzone-area.is-invalid, +.input-group > .form-floating:not(:first-child) > .form-select { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.valid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 75%; + color: var(--falcon-form-valid-color); +} + +.valid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: 0.5rem 0.5rem; + margin-top: 0.1rem; + font-size: 0.8333333333rem; + color: #fff; + background-color: var(--falcon-success); + border-radius: var(--falcon-border-radius); +} + +.was-validated :valid ~ .valid-feedback, +.was-validated :valid ~ .valid-tooltip, +.is-valid ~ .valid-feedback, +.is-valid ~ .valid-tooltip { + display: block; +} + +.was-validated .form-control:valid, .was-validated .dropzone-area.is-invalid:valid, .form-control.is-valid, .is-valid.dropzone-area.is-invalid { + border-color: var(--falcon-form-valid-border-color); + padding-right: calc(1.5em + 0.625rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2300d27a' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: right calc(0.375em + 0.15625rem) center; + background-size: calc(0.75em + 0.3125rem) calc(0.75em + 0.3125rem); +} +.was-validated .form-control:valid:focus, .was-validated .dropzone-area.is-invalid:valid:focus, .form-control.is-valid:focus, .is-valid.dropzone-area.is-invalid:focus { + border-color: var(--falcon-form-valid-border-color); + box-shadow: var(--falcon-box-shadow-inset), 0 0 0 0.25rem rgba(var(--falcon-success-rgb), 0.25); +} + +.was-validated textarea.form-control:valid, .was-validated textarea.dropzone-area.is-invalid:valid, textarea.form-control.is-valid, textarea.is-valid.dropzone-area.is-invalid { + padding-right: calc(1.5em + 0.625rem); + background-position: top calc(0.375em + 0.15625rem) right calc(0.375em + 0.15625rem); +} + +.was-validated .form-select:valid, .form-select.is-valid { + border-color: var(--falcon-form-valid-border-color); +} +.was-validated .form-select:valid:not([multiple]):not([size]), .was-validated .form-select:valid:not([multiple])[size="1"], .form-select.is-valid:not([multiple]):not([size]), .form-select.is-valid:not([multiple])[size="1"] { + --falcon-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2300d27a' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1'/%3e%3c/svg%3e"); + padding-right: 5.5rem; + background-position: right 1rem center, center right 3rem; + background-size: 16px 12px, calc(0.75em + 0.3125rem) calc(0.75em + 0.3125rem); +} +.was-validated .form-select:valid:focus, .form-select.is-valid:focus { + border-color: var(--falcon-form-valid-border-color); + box-shadow: var(--falcon-box-shadow-inset), 0 0 0 0.25rem rgba(var(--falcon-success-rgb), 0.25); +} + +.was-validated .form-control-color:valid, .form-control-color.is-valid { + width: calc(3rem + calc(1.5em + 0.625rem)); +} + +.was-validated .form-check-input:valid, .form-check-input.is-valid { + border-color: var(--falcon-form-valid-border-color); +} +.was-validated .form-check-input:valid:checked, .form-check-input.is-valid:checked { + background-color: var(--falcon-form-valid-color); +} +.was-validated .form-check-input:valid:focus, .form-check-input.is-valid:focus { + box-shadow: 0 0 0 0.25rem rgba(var(--falcon-success-rgb), 0.25); +} +.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label { + color: var(--falcon-form-valid-color); +} + +.form-check-inline .form-check-input ~ .valid-feedback { + margin-left: 0.5em; +} + +.was-validated .input-group > .form-control:not(:focus):valid, .was-validated .input-group > .dropzone-area.is-invalid:not(:focus):valid, .input-group > .form-control:not(:focus).is-valid, .input-group > .dropzone-area.is-invalid:not(:focus).is-valid, +.was-validated .input-group > .form-select:not(:focus):valid, +.input-group > .form-select:not(:focus).is-valid, +.was-validated .input-group > .form-floating:not(:focus-within):valid, +.input-group > .form-floating:not(:focus-within).is-valid { + z-index: 3; +} + +.invalid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 75%; + color: var(--falcon-form-invalid-color); +} + +.invalid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: 0.5rem 0.5rem; + margin-top: 0.1rem; + font-size: 0.8333333333rem; + color: #fff; + background-color: var(--falcon-danger); + border-radius: var(--falcon-border-radius); +} + +.was-validated :invalid ~ .invalid-feedback, +.was-validated :invalid ~ .invalid-tooltip, +.is-invalid ~ .invalid-feedback, +.is-invalid ~ .invalid-tooltip { + display: block; +} + +.was-validated .form-control:invalid, .form-control.is-invalid, .is-invalid.dropzone-area { + border-color: var(--falcon-form-invalid-border-color); + padding-right: calc(1.5em + 0.625rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23e63757'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23e63757' stroke='none'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: right calc(0.375em + 0.15625rem) center; + background-size: calc(0.75em + 0.3125rem) calc(0.75em + 0.3125rem); +} +.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus, .is-invalid.dropzone-area:focus { + border-color: var(--falcon-form-invalid-border-color); + box-shadow: var(--falcon-box-shadow-inset), 0 0 0 0.25rem rgba(var(--falcon-danger-rgb), 0.25); +} + +.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid, textarea.is-invalid.dropzone-area { + padding-right: calc(1.5em + 0.625rem); + background-position: top calc(0.375em + 0.15625rem) right calc(0.375em + 0.15625rem); +} + +.was-validated .form-select:invalid, .form-select.is-invalid { + border-color: var(--falcon-form-invalid-border-color); +} +.was-validated .form-select:invalid:not([multiple]):not([size]), .was-validated .form-select:invalid:not([multiple])[size="1"], .form-select.is-invalid:not([multiple]):not([size]), .form-select.is-invalid:not([multiple])[size="1"] { + --falcon-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23e63757'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23e63757' stroke='none'/%3e%3c/svg%3e"); + padding-right: 5.5rem; + background-position: right 1rem center, center right 3rem; + background-size: 16px 12px, calc(0.75em + 0.3125rem) calc(0.75em + 0.3125rem); +} +.was-validated .form-select:invalid:focus, .form-select.is-invalid:focus { + border-color: var(--falcon-form-invalid-border-color); + box-shadow: var(--falcon-box-shadow-inset), 0 0 0 0.25rem rgba(var(--falcon-danger-rgb), 0.25); +} + +.was-validated .form-control-color:invalid, .form-control-color.is-invalid { + width: calc(3rem + calc(1.5em + 0.625rem)); +} + +.was-validated .form-check-input:invalid, .form-check-input.is-invalid { + border-color: var(--falcon-form-invalid-border-color); +} +.was-validated .form-check-input:invalid:checked, .form-check-input.is-invalid:checked { + background-color: var(--falcon-form-invalid-color); +} +.was-validated .form-check-input:invalid:focus, .form-check-input.is-invalid:focus { + box-shadow: 0 0 0 0.25rem rgba(var(--falcon-danger-rgb), 0.25); +} +.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label { + color: var(--falcon-form-invalid-color); +} + +.form-check-inline .form-check-input ~ .invalid-feedback { + margin-left: 0.5em; +} + +.was-validated .input-group > .form-control:not(:focus):invalid, .input-group > .form-control:not(:focus).is-invalid, .input-group > .dropzone-area:not(:focus).is-invalid, +.was-validated .input-group > .form-select:not(:focus):invalid, +.input-group > .form-select:not(:focus).is-invalid, +.was-validated .input-group > .form-floating:not(:focus-within):invalid, +.input-group > .form-floating:not(:focus-within).is-invalid { + z-index: 4; +} + +.btn, .tox .tox-menu__footer .tox-button:last-child, +.tox .tox-dialog__footer .tox-button:last-child, .tox .tox-menu__footer .tox-button--secondary, +.tox .tox-dialog__footer .tox-button--secondary { + --falcon-btn-padding-x: 1rem; + --falcon-btn-padding-y: 0.3125rem; + --falcon-btn-font-family: ; + --falcon-btn-font-size: 1rem; + --falcon-btn-font-weight: 500; + --falcon-btn-line-height: 1.5; + --falcon-btn-color: #5e6e82; + --falcon-btn-bg: transparent; + --falcon-btn-border-width: var(--falcon-border-width); + --falcon-btn-border-color: transparent; + --falcon-btn-border-radius: var(--falcon-border-radius); + --falcon-btn-hover-border-color: transparent; + --falcon-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075); + --falcon-btn-disabled-opacity: 0.5; + --falcon-btn-focus-box-shadow: 0 0 0 0 rgba(var(--falcon-btn-focus-shadow-rgb), .5); + display: inline-block; + padding: var(--falcon-btn-padding-y) var(--falcon-btn-padding-x); + font-family: var(--falcon-btn-font-family); + font-size: var(--falcon-btn-font-size); + font-weight: var(--falcon-btn-font-weight); + line-height: var(--falcon-btn-line-height); + color: var(--falcon-btn-color); + text-align: center; + vertical-align: middle; + cursor: pointer; + user-select: none; + border: var(--falcon-btn-border-width) solid var(--falcon-btn-border-color); + border-radius: var(--falcon-btn-border-radius); + background-color: var(--falcon-btn-bg); + box-shadow: var(--falcon-btn-box-shadow); + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .btn, .tox .tox-menu__footer .tox-button:last-child, + .tox .tox-dialog__footer .tox-button:last-child, .tox .tox-menu__footer .tox-button--secondary, + .tox .tox-dialog__footer .tox-button--secondary { + transition: none; + } +} +.btn:hover, .tox .tox-menu__footer .tox-button:hover:last-child, +.tox .tox-dialog__footer .tox-button:hover:last-child, .tox .tox-menu__footer .tox-button--secondary:hover, +.tox .tox-dialog__footer .tox-button--secondary:hover { + color: var(--falcon-btn-hover-color); + text-decoration: none; + background-color: var(--falcon-btn-hover-bg); + border-color: var(--falcon-btn-hover-border-color); +} +.btn-check + .btn:hover, .tox .tox-menu__footer .btn-check + .tox-button:hover:last-child, +.tox .tox-dialog__footer .btn-check + .tox-button:hover:last-child, .tox .tox-menu__footer .btn-check + .tox-button--secondary:hover, +.tox .tox-dialog__footer .btn-check + .tox-button--secondary:hover { + color: var(--falcon-btn-color); + background-color: var(--falcon-btn-bg); + border-color: var(--falcon-btn-border-color); +} +.btn:focus-visible, .tox .tox-menu__footer .tox-button:focus-visible:last-child, +.tox .tox-dialog__footer .tox-button:focus-visible:last-child, .tox .tox-menu__footer .tox-button--secondary:focus-visible, +.tox .tox-dialog__footer .tox-button--secondary:focus-visible { + color: var(--falcon-btn-hover-color); + background-color: var(--falcon-btn-hover-bg); + border-color: var(--falcon-btn-hover-border-color); + outline: 0; + box-shadow: var(--falcon-btn-box-shadow), var(--falcon-btn-focus-box-shadow); +} +.btn-check:focus-visible + .btn, .tox .tox-menu__footer .btn-check:focus-visible + .tox-button:last-child, +.tox .tox-dialog__footer .btn-check:focus-visible + .tox-button:last-child, .tox .tox-menu__footer .btn-check:focus-visible + .tox-button--secondary, +.tox .tox-dialog__footer .btn-check:focus-visible + .tox-button--secondary { + border-color: var(--falcon-btn-hover-border-color); + outline: 0; + box-shadow: var(--falcon-btn-box-shadow), var(--falcon-btn-focus-box-shadow); +} +.btn-check:checked + .btn, .tox .tox-menu__footer .btn-check:checked + .tox-button:last-child, +.tox .tox-dialog__footer .btn-check:checked + .tox-button:last-child, .tox .tox-menu__footer .btn-check:checked + .tox-button--secondary, +.tox .tox-dialog__footer .btn-check:checked + .tox-button--secondary, :not(.btn-check) + .btn:active, .tox .tox-menu__footer :not(.btn-check) + .tox-button:active:last-child, +.tox .tox-dialog__footer :not(.btn-check) + .tox-button:active:last-child, .tox .tox-menu__footer :not(.btn-check) + .tox-button--secondary:active, +.tox .tox-dialog__footer :not(.btn-check) + .tox-button--secondary:active, .btn:first-child:active, .tox .tox-menu__footer .tox-button:first-child:active:last-child, +.tox .tox-dialog__footer .tox-button:first-child:active:last-child, .tox .tox-menu__footer .tox-button--secondary:first-child:active, +.tox .tox-dialog__footer .tox-button--secondary:first-child:active, .btn.active, .tox .tox-menu__footer .active.tox-button:last-child, +.tox .tox-dialog__footer .active.tox-button:last-child, .tox .tox-menu__footer .active.tox-button--secondary, +.tox .tox-dialog__footer .active.tox-button--secondary, .btn.show, .tox .tox-menu__footer .show.tox-button:last-child, +.tox .tox-dialog__footer .show.tox-button:last-child, .tox .tox-menu__footer .show.tox-button--secondary, +.tox .tox-dialog__footer .show.tox-button--secondary { + color: var(--falcon-btn-active-color); + background-color: var(--falcon-btn-active-bg); + border-color: var(--falcon-btn-active-border-color); + box-shadow: var(--falcon-btn-active-shadow); +} +.btn-check:checked + .btn:focus-visible, .tox .tox-menu__footer .btn-check:checked + .tox-button:focus-visible:last-child, +.tox .tox-dialog__footer .btn-check:checked + .tox-button:focus-visible:last-child, .tox .tox-menu__footer .btn-check:checked + .tox-button--secondary:focus-visible, +.tox .tox-dialog__footer .btn-check:checked + .tox-button--secondary:focus-visible, :not(.btn-check) + .btn:active:focus-visible, .tox .tox-menu__footer :not(.btn-check) + .tox-button:active:focus-visible:last-child, +.tox .tox-dialog__footer :not(.btn-check) + .tox-button:active:focus-visible:last-child, .tox .tox-menu__footer :not(.btn-check) + .tox-button--secondary:active:focus-visible, +.tox .tox-dialog__footer :not(.btn-check) + .tox-button--secondary:active:focus-visible, .btn:first-child:active:focus-visible, .tox .tox-menu__footer .tox-button:first-child:active:focus-visible:last-child, +.tox .tox-dialog__footer .tox-button:first-child:active:focus-visible:last-child, .tox .tox-menu__footer .tox-button--secondary:first-child:active:focus-visible, +.tox .tox-dialog__footer .tox-button--secondary:first-child:active:focus-visible, .btn.active:focus-visible, .tox .tox-menu__footer .active.tox-button:focus-visible:last-child, +.tox .tox-dialog__footer .active.tox-button:focus-visible:last-child, .tox .tox-menu__footer .active.tox-button--secondary:focus-visible, +.tox .tox-dialog__footer .active.tox-button--secondary:focus-visible, .btn.show:focus-visible, .tox .tox-menu__footer .show.tox-button:focus-visible:last-child, +.tox .tox-dialog__footer .show.tox-button:focus-visible:last-child, .tox .tox-menu__footer .show.tox-button--secondary:focus-visible, +.tox .tox-dialog__footer .show.tox-button--secondary:focus-visible { + box-shadow: var(--falcon-btn-active-shadow), var(--falcon-btn-focus-box-shadow); +} +.btn-check:checked:focus-visible + .btn, .tox .tox-menu__footer .btn-check:checked:focus-visible + .tox-button:last-child, +.tox .tox-dialog__footer .btn-check:checked:focus-visible + .tox-button:last-child, .tox .tox-menu__footer .btn-check:checked:focus-visible + .tox-button--secondary, +.tox .tox-dialog__footer .btn-check:checked:focus-visible + .tox-button--secondary { + box-shadow: var(--falcon-btn-active-shadow), var(--falcon-btn-focus-box-shadow); +} +.btn:disabled, .tox .tox-menu__footer .tox-button:disabled:last-child, +.tox .tox-dialog__footer .tox-button:disabled:last-child, .tox .tox-menu__footer .tox-button--secondary:disabled, +.tox .tox-dialog__footer .tox-button--secondary:disabled, .btn.disabled, .tox .tox-menu__footer .disabled.tox-button:last-child, +.tox .tox-dialog__footer .disabled.tox-button:last-child, .tox .tox-menu__footer .disabled.tox-button--secondary, +.tox .tox-dialog__footer .disabled.tox-button--secondary, fieldset:disabled .btn, fieldset:disabled .tox .tox-menu__footer .tox-button:last-child, .tox .tox-menu__footer fieldset:disabled .tox-button:last-child, +fieldset:disabled .tox .tox-dialog__footer .tox-button:last-child, +.tox .tox-dialog__footer fieldset:disabled .tox-button:last-child, fieldset:disabled .tox .tox-menu__footer .tox-button--secondary, .tox .tox-menu__footer fieldset:disabled .tox-button--secondary, +fieldset:disabled .tox .tox-dialog__footer .tox-button--secondary, +.tox .tox-dialog__footer fieldset:disabled .tox-button--secondary { + color: var(--falcon-btn-disabled-color); + pointer-events: none; + background-color: var(--falcon-btn-disabled-bg); + border-color: var(--falcon-btn-disabled-border-color); + opacity: var(--falcon-btn-disabled-opacity); + box-shadow: none; +} + +.btn-primary, .tox .tox-menu__footer .tox-button:last-child, +.tox .tox-dialog__footer .tox-button:last-child { + --falcon-btn-color: #fff; + --falcon-btn-bg: #2c7be5; + --falcon-btn-border-color: #2c7be5; + --falcon-btn-hover-color: #fff; + --falcon-btn-hover-bg: #2569c3; + --falcon-btn-hover-border-color: #2362b7; + --falcon-btn-focus-shadow-rgb: 76, 143, 233; + --falcon-btn-active-color: #fff; + --falcon-btn-active-bg: #2362b7; + --falcon-btn-active-border-color: #215cac; + --falcon-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --falcon-btn-disabled-color: #fff; + --falcon-btn-disabled-bg: #2c7be5; + --falcon-btn-disabled-border-color: #2c7be5; +} + +.btn-secondary { + --falcon-btn-color: #fff; + --falcon-btn-bg: #748194; + --falcon-btn-border-color: #748194; + --falcon-btn-hover-color: #fff; + --falcon-btn-hover-bg: #636e7e; + --falcon-btn-hover-border-color: #5d6776; + --falcon-btn-focus-shadow-rgb: 137, 148, 164; + --falcon-btn-active-color: #fff; + --falcon-btn-active-bg: #5d6776; + --falcon-btn-active-border-color: #57616f; + --falcon-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --falcon-btn-disabled-color: #fff; + --falcon-btn-disabled-bg: #748194; + --falcon-btn-disabled-border-color: #748194; +} + +.btn-success { + --falcon-btn-color: #fff; + --falcon-btn-bg: #00d27a; + --falcon-btn-border-color: #00d27a; + --falcon-btn-hover-color: #fff; + --falcon-btn-hover-bg: #00b368; + --falcon-btn-hover-border-color: #00a862; + --falcon-btn-focus-shadow-rgb: 38, 217, 142; + --falcon-btn-active-color: #fff; + --falcon-btn-active-bg: #00a862; + --falcon-btn-active-border-color: #009e5c; + --falcon-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --falcon-btn-disabled-color: #fff; + --falcon-btn-disabled-bg: #00d27a; + --falcon-btn-disabled-border-color: #00d27a; +} + +.btn-info { + --falcon-btn-color: #fff; + --falcon-btn-bg: #27bcfd; + --falcon-btn-border-color: #27bcfd; + --falcon-btn-hover-color: #fff; + --falcon-btn-hover-bg: #21a0d7; + --falcon-btn-hover-border-color: #1f96ca; + --falcon-btn-focus-shadow-rgb: 71, 198, 253; + --falcon-btn-active-color: #fff; + --falcon-btn-active-bg: #1f96ca; + --falcon-btn-active-border-color: #1d8dbe; + --falcon-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --falcon-btn-disabled-color: #fff; + --falcon-btn-disabled-bg: #27bcfd; + --falcon-btn-disabled-border-color: #27bcfd; +} + +.btn-warning { + --falcon-btn-color: #fff; + --falcon-btn-bg: #f5803e; + --falcon-btn-border-color: #f5803e; + --falcon-btn-hover-color: #fff; + --falcon-btn-hover-bg: #d06d35; + --falcon-btn-hover-border-color: #c46632; + --falcon-btn-focus-shadow-rgb: 247, 147, 91; + --falcon-btn-active-color: #fff; + --falcon-btn-active-bg: #c46632; + --falcon-btn-active-border-color: #b8602f; + --falcon-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --falcon-btn-disabled-color: #fff; + --falcon-btn-disabled-bg: #f5803e; + --falcon-btn-disabled-border-color: #f5803e; +} + +.btn-danger { + --falcon-btn-color: #fff; + --falcon-btn-bg: #e63757; + --falcon-btn-border-color: #e63757; + --falcon-btn-hover-color: #fff; + --falcon-btn-hover-bg: #c42f4a; + --falcon-btn-hover-border-color: #b82c46; + --falcon-btn-focus-shadow-rgb: 234, 85, 112; + --falcon-btn-active-color: #fff; + --falcon-btn-active-bg: #b82c46; + --falcon-btn-active-border-color: #ad2941; + --falcon-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --falcon-btn-disabled-color: #fff; + --falcon-btn-disabled-bg: #e63757; + --falcon-btn-disabled-border-color: #e63757; +} + +.btn-light, .btn-tertiary, .tox .tox-menu__footer .tox-button--secondary, +.tox .tox-dialog__footer .tox-button--secondary { + --falcon-btn-color: #4d5969; + --falcon-btn-bg: #f9fafd; + --falcon-btn-border-color: #f9fafd; + --falcon-btn-hover-color: #4d5969; + --falcon-btn-hover-bg: #d4d5d7; + --falcon-btn-hover-border-color: #c7c8ca; + --falcon-btn-focus-shadow-rgb: 223, 226, 231; + --falcon-btn-active-color: #4d5969; + --falcon-btn-active-bg: #c7c8ca; + --falcon-btn-active-border-color: #bbbcbe; + --falcon-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --falcon-btn-disabled-color: #4d5969; + --falcon-btn-disabled-bg: #f9fafd; + --falcon-btn-disabled-border-color: #f9fafd; +} + +.btn-dark, [data-bs-theme=dark] .btn-tertiary, [data-bs-theme=dark] .tox .tox-menu__footer .tox-button--secondary, .tox .tox-menu__footer [data-bs-theme=dark] .tox-button--secondary, +[data-bs-theme=dark] .tox .tox-dialog__footer .tox-button--secondary, +.tox .tox-dialog__footer [data-bs-theme=dark] .tox-button--secondary { + --falcon-btn-color: #fff; + --falcon-btn-bg: #0b1727; + --falcon-btn-border-color: #0b1727; + --falcon-btn-hover-color: #fff; + --falcon-btn-hover-bg: #303a47; + --falcon-btn-hover-border-color: #232e3d; + --falcon-btn-focus-shadow-rgb: 48, 58, 71; + --falcon-btn-active-color: #fff; + --falcon-btn-active-bg: #3c4552; + --falcon-btn-active-border-color: #232e3d; + --falcon-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --falcon-btn-disabled-color: #fff; + --falcon-btn-disabled-bg: #0b1727; + --falcon-btn-disabled-border-color: #0b1727; +} + +.btn-outline-primary { + --falcon-btn-color: #2c7be5; + --falcon-btn-border-color: #2c7be5; + --falcon-btn-hover-color: #fff; + --falcon-btn-hover-bg: #2c7be5; + --falcon-btn-hover-border-color: #2c7be5; + --falcon-btn-focus-shadow-rgb: 44, 123, 229; + --falcon-btn-active-color: #fff; + --falcon-btn-active-bg: #2c7be5; + --falcon-btn-active-border-color: #2c7be5; + --falcon-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --falcon-btn-disabled-color: #2c7be5; + --falcon-btn-disabled-bg: transparent; + --falcon-btn-disabled-border-color: #2c7be5; + --falcon-gradient: none; +} + +.btn-outline-secondary { + --falcon-btn-color: #748194; + --falcon-btn-border-color: #748194; + --falcon-btn-hover-color: #fff; + --falcon-btn-hover-bg: #748194; + --falcon-btn-hover-border-color: #748194; + --falcon-btn-focus-shadow-rgb: 116, 129, 148; + --falcon-btn-active-color: #fff; + --falcon-btn-active-bg: #748194; + --falcon-btn-active-border-color: #748194; + --falcon-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --falcon-btn-disabled-color: #748194; + --falcon-btn-disabled-bg: transparent; + --falcon-btn-disabled-border-color: #748194; + --falcon-gradient: none; +} + +.btn-outline-success { + --falcon-btn-color: #00d27a; + --falcon-btn-border-color: #00d27a; + --falcon-btn-hover-color: #fff; + --falcon-btn-hover-bg: #00d27a; + --falcon-btn-hover-border-color: #00d27a; + --falcon-btn-focus-shadow-rgb: 0, 210, 122; + --falcon-btn-active-color: #fff; + --falcon-btn-active-bg: #00d27a; + --falcon-btn-active-border-color: #00d27a; + --falcon-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --falcon-btn-disabled-color: #00d27a; + --falcon-btn-disabled-bg: transparent; + --falcon-btn-disabled-border-color: #00d27a; + --falcon-gradient: none; +} + +.btn-outline-info { + --falcon-btn-color: #27bcfd; + --falcon-btn-border-color: #27bcfd; + --falcon-btn-hover-color: #fff; + --falcon-btn-hover-bg: #27bcfd; + --falcon-btn-hover-border-color: #27bcfd; + --falcon-btn-focus-shadow-rgb: 39, 188, 253; + --falcon-btn-active-color: #fff; + --falcon-btn-active-bg: #27bcfd; + --falcon-btn-active-border-color: #27bcfd; + --falcon-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --falcon-btn-disabled-color: #27bcfd; + --falcon-btn-disabled-bg: transparent; + --falcon-btn-disabled-border-color: #27bcfd; + --falcon-gradient: none; +} + +.btn-outline-warning { + --falcon-btn-color: #f5803e; + --falcon-btn-border-color: #f5803e; + --falcon-btn-hover-color: #fff; + --falcon-btn-hover-bg: #f5803e; + --falcon-btn-hover-border-color: #f5803e; + --falcon-btn-focus-shadow-rgb: 245, 128, 62; + --falcon-btn-active-color: #fff; + --falcon-btn-active-bg: #f5803e; + --falcon-btn-active-border-color: #f5803e; + --falcon-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --falcon-btn-disabled-color: #f5803e; + --falcon-btn-disabled-bg: transparent; + --falcon-btn-disabled-border-color: #f5803e; + --falcon-gradient: none; +} + +.btn-outline-danger { + --falcon-btn-color: #e63757; + --falcon-btn-border-color: #e63757; + --falcon-btn-hover-color: #fff; + --falcon-btn-hover-bg: #e63757; + --falcon-btn-hover-border-color: #e63757; + --falcon-btn-focus-shadow-rgb: 230, 55, 87; + --falcon-btn-active-color: #fff; + --falcon-btn-active-bg: #e63757; + --falcon-btn-active-border-color: #e63757; + --falcon-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --falcon-btn-disabled-color: #e63757; + --falcon-btn-disabled-bg: transparent; + --falcon-btn-disabled-border-color: #e63757; + --falcon-gradient: none; +} + +.btn-outline-light { + --falcon-btn-color: #f9fafd; + --falcon-btn-border-color: #f9fafd; + --falcon-btn-hover-color: #4d5969; + --falcon-btn-hover-bg: #f9fafd; + --falcon-btn-hover-border-color: #f9fafd; + --falcon-btn-focus-shadow-rgb: 249, 250, 253; + --falcon-btn-active-color: #4d5969; + --falcon-btn-active-bg: #f9fafd; + --falcon-btn-active-border-color: #f9fafd; + --falcon-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --falcon-btn-disabled-color: #f9fafd; + --falcon-btn-disabled-bg: transparent; + --falcon-btn-disabled-border-color: #f9fafd; + --falcon-gradient: none; +} + +.btn-outline-dark { + --falcon-btn-color: #0b1727; + --falcon-btn-border-color: #0b1727; + --falcon-btn-hover-color: #fff; + --falcon-btn-hover-bg: #0b1727; + --falcon-btn-hover-border-color: #0b1727; + --falcon-btn-focus-shadow-rgb: 11, 23, 39; + --falcon-btn-active-color: #fff; + --falcon-btn-active-bg: #0b1727; + --falcon-btn-active-border-color: #0b1727; + --falcon-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --falcon-btn-disabled-color: #0b1727; + --falcon-btn-disabled-bg: transparent; + --falcon-btn-disabled-border-color: #0b1727; + --falcon-gradient: none; +} + +.btn-link { + --falcon-btn-font-weight: 400; + --falcon-btn-color: var(--falcon-link-color); + --falcon-btn-bg: transparent; + --falcon-btn-border-color: transparent; + --falcon-btn-hover-color: var(--falcon-link-hover-color); + --falcon-btn-hover-border-color: transparent; + --falcon-btn-active-color: var(--falcon-link-hover-color); + --falcon-btn-active-border-color: transparent; + --falcon-btn-disabled-color: #748194; + --falcon-btn-disabled-border-color: transparent; + --falcon-btn-box-shadow: 0 0 0 #000; + --falcon-btn-focus-shadow-rgb: 76, 143, 233; + text-decoration: none; +} +.btn-link:hover, .btn-link:focus-visible { + text-decoration: underline; +} +.btn-link:focus-visible { + color: var(--falcon-btn-color); +} +.btn-link:hover { + color: var(--falcon-btn-hover-color); +} + +.btn-lg, .btn-group-lg > .btn, .tox .tox-menu__footer .btn-group-lg > .tox-button:last-child, +.tox .tox-dialog__footer .btn-group-lg > .tox-button:last-child, .tox .tox-menu__footer .btn-group-lg > .tox-button--secondary, +.tox .tox-dialog__footer .btn-group-lg > .tox-button--secondary { + --falcon-btn-padding-y: 0.375rem; + --falcon-btn-padding-x: 1.25rem; + --falcon-btn-font-size: 1.2rem; + --falcon-btn-border-radius: var(--falcon-border-radius-lg); +} + +.btn-sm, .btn-group-sm > .btn, .tox .tox-menu__footer .btn-group-sm > .tox-button:last-child, +.tox .tox-dialog__footer .btn-group-sm > .tox-button:last-child, .tox .tox-menu__footer .btn-group-sm > .tox-button--secondary, +.tox .tox-dialog__footer .btn-group-sm > .tox-button--secondary { + --falcon-btn-padding-y: 0.1875rem; + --falcon-btn-padding-x: 0.75rem; + --falcon-btn-font-size: 0.875rem; + --falcon-btn-border-radius: var(--falcon-border-radius-sm); +} + +.fade { + transition: opacity 0.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 0.35s ease; +} +@media (prefers-reduced-motion: reduce) { + .collapsing { + transition: none; + } +} +.collapsing.collapse-horizontal { + width: 0; + height: auto; + transition: width 0.35s ease; +} +@media (prefers-reduced-motion: reduce) { + .collapsing.collapse-horizontal { + transition: none; + } +} + +.dropup, +.dropend, +.dropdown, +.dropstart, +.dropup-center, +.dropdown-center { + position: relative; +} + +.dropdown-toggle { + white-space: nowrap; +} +.dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid; + border-right: 0.3em solid transparent; + border-bottom: 0; + border-left: 0.3em solid transparent; +} +.dropdown-toggle:empty::after { + margin-left: 0; +} + +.dropdown-menu { + --falcon-dropdown-zindex: 1000; + --falcon-dropdown-min-width: 10rem; + --falcon-dropdown-padding-x: 0; + --falcon-dropdown-padding-y: 1rem; + --falcon-dropdown-spacer: 0.125rem; + --falcon-dropdown-font-size: 0.8333333333rem; + --falcon-dropdown-color: var(--falcon-gray-300); + --falcon-dropdown-bg: var(--falcon-dropdown-bg-global); + --falcon-dropdown-border-color: var(--falcon-border-color); + --falcon-dropdown-border-radius: var(--falcon-border-radius); + --falcon-dropdown-border-width: var(--falcon-border-width); + --falcon-dropdown-inner-border-radius: calc(var(--falcon-border-radius) - var(--falcon-border-width)); + --falcon-dropdown-divider-bg: var(--falcon-border-color); + --falcon-dropdown-divider-margin-y: 0.5rem; + --falcon-dropdown-box-shadow: var(--falcon-box-shadow); + --falcon-dropdown-link-color: var(--falcon-gray-900); + --falcon-dropdown-link-hover-color: var(--falcon-dropdown-link-hover-color-global); + --falcon-dropdown-link-hover-bg: var(--falcon-dropdown-link-hover-bg-global); + --falcon-dropdown-link-active-color: #fff; + --falcon-dropdown-link-active-bg: #2c7be5; + --falcon-dropdown-link-disabled-color: var(--falcon-gray-600); + --falcon-dropdown-item-padding-x: 1rem; + --falcon-dropdown-item-padding-y: 0.25rem; + --falcon-dropdown-header-color: var(--falcon-gray-600); + --falcon-dropdown-header-padding-x: 1rem; + --falcon-dropdown-header-padding-y: 1rem; + position: absolute; + z-index: var(--falcon-dropdown-zindex); + display: none; + min-width: var(--falcon-dropdown-min-width); + padding: var(--falcon-dropdown-padding-y) var(--falcon-dropdown-padding-x); + margin: 0; + font-size: var(--falcon-dropdown-font-size); + color: var(--falcon-dropdown-color); + text-align: left; + list-style: none; + background-color: var(--falcon-dropdown-bg); + background-clip: padding-box; + border: var(--falcon-dropdown-border-width) solid var(--falcon-dropdown-border-color); + border-radius: var(--falcon-dropdown-border-radius); + box-shadow: var(--falcon-dropdown-box-shadow); +} +.dropdown-menu[data-bs-popper] { + top: 100%; + left: 0; + margin-top: var(--falcon-dropdown-spacer); +} + +.dropdown-menu-start { + --bs-position: start; +} +.dropdown-menu-start[data-bs-popper] { + right: auto; + left: 0; +} + +.dropdown-menu-end { + --bs-position: end; +} +.dropdown-menu-end[data-bs-popper] { + right: 0; + left: auto; +} + +@media (min-width: 576px) { + .dropdown-menu-sm-start { + --bs-position: start; + } + .dropdown-menu-sm-start[data-bs-popper] { + right: auto; + left: 0; + } + .dropdown-menu-sm-end { + --bs-position: end; + } + .dropdown-menu-sm-end[data-bs-popper] { + right: 0; + left: auto; + } +} +@media (min-width: 768px) { + .dropdown-menu-md-start { + --bs-position: start; + } + .dropdown-menu-md-start[data-bs-popper] { + right: auto; + left: 0; + } + .dropdown-menu-md-end { + --bs-position: end; + } + .dropdown-menu-md-end[data-bs-popper] { + right: 0; + left: auto; + } +} +@media (min-width: 992px) { + .dropdown-menu-lg-start { + --bs-position: start; + } + .dropdown-menu-lg-start[data-bs-popper] { + right: auto; + left: 0; + } + .dropdown-menu-lg-end { + --bs-position: end; + } + .dropdown-menu-lg-end[data-bs-popper] { + right: 0; + left: auto; + } +} +@media (min-width: 1200px) { + .dropdown-menu-xl-start { + --bs-position: start; + } + .dropdown-menu-xl-start[data-bs-popper] { + right: auto; + left: 0; + } + .dropdown-menu-xl-end { + --bs-position: end; + } + .dropdown-menu-xl-end[data-bs-popper] { + right: 0; + left: auto; + } +} +@media (min-width: 1540px) { + .dropdown-menu-xxl-start { + --bs-position: start; + } + .dropdown-menu-xxl-start[data-bs-popper] { + right: auto; + left: 0; + } + .dropdown-menu-xxl-end { + --bs-position: end; + } + .dropdown-menu-xxl-end[data-bs-popper] { + right: 0; + left: auto; + } +} +.dropup .dropdown-menu[data-bs-popper] { + top: auto; + bottom: 100%; + margin-top: 0; + margin-bottom: var(--falcon-dropdown-spacer); +} +.dropup .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0; + border-right: 0.3em solid transparent; + border-bottom: 0.3em solid; + border-left: 0.3em solid transparent; +} +.dropup .dropdown-toggle:empty::after { + margin-left: 0; +} + +.dropend .dropdown-menu[data-bs-popper] { + top: 0; + right: auto; + left: 100%; + margin-top: 0; + margin-left: var(--falcon-dropdown-spacer); +} +.dropend .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-right: 0; + border-bottom: 0.3em solid transparent; + border-left: 0.3em solid; +} +.dropend .dropdown-toggle:empty::after { + margin-left: 0; +} +.dropend .dropdown-toggle::after { + vertical-align: 0; +} + +.dropstart .dropdown-menu[data-bs-popper] { + top: 0; + right: 100%; + left: auto; + margin-top: 0; + margin-right: var(--falcon-dropdown-spacer); +} +.dropstart .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; +} +.dropstart .dropdown-toggle::after { + display: none; +} +.dropstart .dropdown-toggle::before { + display: inline-block; + margin-right: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-right: 0.3em solid; + border-bottom: 0.3em solid transparent; +} +.dropstart .dropdown-toggle:empty::after { + margin-left: 0; +} +.dropstart .dropdown-toggle::before { + vertical-align: 0; +} + +.dropdown-divider { + height: 0; + margin: var(--falcon-dropdown-divider-margin-y) 0; + overflow: hidden; + border-top: 1px solid var(--falcon-dropdown-divider-bg); + opacity: 1; +} + +.dropdown-item { + display: block; + width: 100%; + padding: var(--falcon-dropdown-item-padding-y) var(--falcon-dropdown-item-padding-x); + clear: both; + font-weight: 400; + color: var(--falcon-dropdown-link-color); + text-align: inherit; + white-space: nowrap; + background-color: transparent; + border: 0; + border-radius: var(--falcon-dropdown-item-border-radius, 0); +} +.dropdown-item:hover, .dropdown-item:focus { + color: var(--falcon-dropdown-link-hover-color); + text-decoration: none; + background-color: var(--falcon-dropdown-link-hover-bg); +} +.dropdown-item.active, .dropdown-item:active { + color: var(--falcon-dropdown-link-active-color); + text-decoration: none; + background-color: var(--falcon-dropdown-link-active-bg); +} +.dropdown-item.disabled, .dropdown-item:disabled { + color: var(--falcon-dropdown-link-disabled-color); + pointer-events: none; + background-color: transparent; +} + +.dropdown-menu.show { + display: block; +} + +.dropdown-header { + display: block; + padding: var(--falcon-dropdown-header-padding-y) var(--falcon-dropdown-header-padding-x); + margin-bottom: 0; + font-size: 0.875rem; + color: var(--falcon-dropdown-header-color); + white-space: nowrap; +} + +.dropdown-item-text { + display: block; + padding: var(--falcon-dropdown-item-padding-y) var(--falcon-dropdown-item-padding-x); + color: var(--falcon-dropdown-link-color); +} + +.dropdown-menu-dark { + --falcon-dropdown-color: #d8e2ef; + --falcon-dropdown-bg: #4d5969; + --falcon-dropdown-border-color: var(--falcon-border-color); + --falcon-dropdown-box-shadow: ; + --falcon-dropdown-link-color: #d8e2ef; + --falcon-dropdown-link-hover-color: #fff; + --falcon-dropdown-divider-bg: var(--falcon-border-color); + --falcon-dropdown-link-hover-bg: rgba(255, 255, 255, 0.15); + --falcon-dropdown-link-active-color: #fff; + --falcon-dropdown-link-active-bg: #2c7be5; + --falcon-dropdown-link-disabled-color: #9da9bb; + --falcon-dropdown-header-color: #9da9bb; +} + +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-flex; + vertical-align: middle; +} +.btn-group > .btn, .tox .tox-menu__footer .btn-group > .tox-button:last-child, +.tox .tox-dialog__footer .btn-group > .tox-button:last-child, .tox .tox-menu__footer .btn-group > .tox-button--secondary, +.tox .tox-dialog__footer .btn-group > .tox-button--secondary, +.btn-group-vertical > .btn, +.tox .tox-menu__footer .btn-group-vertical > .tox-button:last-child, +.tox .tox-dialog__footer .btn-group-vertical > .tox-button:last-child, +.tox .tox-menu__footer .btn-group-vertical > .tox-button--secondary, +.tox .tox-dialog__footer .btn-group-vertical > .tox-button--secondary { + position: relative; + flex: 1 1 auto; +} +.btn-group > .btn-check:checked + .btn, .tox .tox-menu__footer .btn-group > .btn-check:checked + .tox-button:last-child, +.tox .tox-dialog__footer .btn-group > .btn-check:checked + .tox-button:last-child, .tox .tox-menu__footer .btn-group > .btn-check:checked + .tox-button--secondary, +.tox .tox-dialog__footer .btn-group > .btn-check:checked + .tox-button--secondary, +.btn-group > .btn-check:focus + .btn, +.tox .tox-menu__footer .btn-group > .btn-check:focus + .tox-button:last-child, +.tox .tox-dialog__footer .btn-group > .btn-check:focus + .tox-button:last-child, +.tox .tox-menu__footer .btn-group > .btn-check:focus + .tox-button--secondary, +.tox .tox-dialog__footer .btn-group > .btn-check:focus + .tox-button--secondary, +.btn-group > .btn:hover, +.tox .tox-menu__footer .btn-group > .tox-button:hover:last-child, +.tox .tox-dialog__footer .btn-group > .tox-button:hover:last-child, +.tox .tox-menu__footer .btn-group > .tox-button--secondary:hover, +.tox .tox-dialog__footer .btn-group > .tox-button--secondary:hover, +.btn-group > .btn:focus, +.tox .tox-menu__footer .btn-group > .tox-button:focus:last-child, +.tox .tox-dialog__footer .btn-group > .tox-button:focus:last-child, +.tox .tox-menu__footer .btn-group > .tox-button--secondary:focus, +.tox .tox-dialog__footer .btn-group > .tox-button--secondary:focus, +.btn-group > .btn:active, +.tox .tox-menu__footer .btn-group > .tox-button:active:last-child, +.tox .tox-dialog__footer .btn-group > .tox-button:active:last-child, +.tox .tox-menu__footer .btn-group > .tox-button--secondary:active, +.tox .tox-dialog__footer .btn-group > .tox-button--secondary:active, +.btn-group > .btn.active, +.tox .tox-menu__footer .btn-group > .active.tox-button:last-child, +.tox .tox-dialog__footer .btn-group > .active.tox-button:last-child, +.tox .tox-menu__footer .btn-group > .active.tox-button--secondary, +.tox .tox-dialog__footer .btn-group > .active.tox-button--secondary, +.btn-group-vertical > .btn-check:checked + .btn, +.tox .tox-menu__footer .btn-group-vertical > .btn-check:checked + .tox-button:last-child, +.tox .tox-dialog__footer .btn-group-vertical > .btn-check:checked + .tox-button:last-child, +.tox .tox-menu__footer .btn-group-vertical > .btn-check:checked + .tox-button--secondary, +.tox .tox-dialog__footer .btn-group-vertical > .btn-check:checked + .tox-button--secondary, +.btn-group-vertical > .btn-check:focus + .btn, +.tox .tox-menu__footer .btn-group-vertical > .btn-check:focus + .tox-button:last-child, +.tox .tox-dialog__footer .btn-group-vertical > .btn-check:focus + .tox-button:last-child, +.tox .tox-menu__footer .btn-group-vertical > .btn-check:focus + .tox-button--secondary, +.tox .tox-dialog__footer .btn-group-vertical > .btn-check:focus + .tox-button--secondary, +.btn-group-vertical > .btn:hover, +.tox .tox-menu__footer .btn-group-vertical > .tox-button:hover:last-child, +.tox .tox-dialog__footer .btn-group-vertical > .tox-button:hover:last-child, +.tox .tox-menu__footer .btn-group-vertical > .tox-button--secondary:hover, +.tox .tox-dialog__footer .btn-group-vertical > .tox-button--secondary:hover, +.btn-group-vertical > .btn:focus, +.tox .tox-menu__footer .btn-group-vertical > .tox-button:focus:last-child, +.tox .tox-dialog__footer .btn-group-vertical > .tox-button:focus:last-child, +.tox .tox-menu__footer .btn-group-vertical > .tox-button--secondary:focus, +.tox .tox-dialog__footer .btn-group-vertical > .tox-button--secondary:focus, +.btn-group-vertical > .btn:active, +.tox .tox-menu__footer .btn-group-vertical > .tox-button:active:last-child, +.tox .tox-dialog__footer .btn-group-vertical > .tox-button:active:last-child, +.tox .tox-menu__footer .btn-group-vertical > .tox-button--secondary:active, +.tox .tox-dialog__footer .btn-group-vertical > .tox-button--secondary:active, +.btn-group-vertical > .btn.active, +.tox .tox-menu__footer .btn-group-vertical > .active.tox-button:last-child, +.tox .tox-dialog__footer .btn-group-vertical > .active.tox-button:last-child, +.tox .tox-menu__footer .btn-group-vertical > .active.tox-button--secondary, +.tox .tox-dialog__footer .btn-group-vertical > .active.tox-button--secondary { + 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(--falcon-border-radius); +} +.btn-group > :not(.btn-check:first-child) + .btn, .tox .tox-menu__footer .btn-group > :not(.btn-check:first-child) + .tox-button:last-child, +.tox .tox-dialog__footer .btn-group > :not(.btn-check:first-child) + .tox-button:last-child, .tox .tox-menu__footer .btn-group > :not(.btn-check:first-child) + .tox-button--secondary, +.tox .tox-dialog__footer .btn-group > :not(.btn-check:first-child) + .tox-button--secondary, +.btn-group > .btn-group:not(:first-child) { + margin-left: calc(-1 * var(--falcon-border-width)); +} +.btn-group > .btn:not(:last-child):not(.dropdown-toggle), .tox .tox-menu__footer .btn-group > .tox-button:not(:last-child):not(.dropdown-toggle):last-child, +.tox .tox-dialog__footer .btn-group > .tox-button:not(:last-child):not(.dropdown-toggle):last-child, .tox .tox-menu__footer .btn-group > .tox-button--secondary:not(:last-child):not(.dropdown-toggle), +.tox .tox-dialog__footer .btn-group > .tox-button--secondary:not(:last-child):not(.dropdown-toggle), +.btn-group > .btn.dropdown-toggle-split:first-child, +.tox .tox-menu__footer .btn-group > .dropdown-toggle-split.tox-button:first-child:last-child, +.tox .tox-dialog__footer .btn-group > .dropdown-toggle-split.tox-button:first-child:last-child, +.tox .tox-menu__footer .btn-group > .dropdown-toggle-split.tox-button--secondary:first-child, +.tox .tox-dialog__footer .btn-group > .dropdown-toggle-split.tox-button--secondary:first-child, +.btn-group > .btn-group:not(:last-child) > .btn, +.tox .tox-menu__footer .btn-group > .btn-group:not(:last-child) > .tox-button:last-child, +.tox .tox-dialog__footer .btn-group > .btn-group:not(:last-child) > .tox-button:last-child, +.tox .tox-menu__footer .btn-group > .btn-group:not(:last-child) > .tox-button--secondary, +.tox .tox-dialog__footer .btn-group > .btn-group:not(:last-child) > .tox-button--secondary { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.btn-group > .btn:nth-child(n+3), .tox .tox-menu__footer .btn-group > .tox-button:nth-child(n+3):last-child, +.tox .tox-dialog__footer .btn-group > .tox-button:nth-child(n+3):last-child, .tox .tox-menu__footer .btn-group > .tox-button--secondary:nth-child(n+3), +.tox .tox-dialog__footer .btn-group > .tox-button--secondary:nth-child(n+3), +.btn-group > :not(.btn-check) + .btn, +.tox .tox-menu__footer .btn-group > :not(.btn-check) + .tox-button:last-child, +.tox .tox-dialog__footer .btn-group > :not(.btn-check) + .tox-button:last-child, +.tox .tox-menu__footer .btn-group > :not(.btn-check) + .tox-button--secondary, +.tox .tox-dialog__footer .btn-group > :not(.btn-check) + .tox-button--secondary, +.btn-group > .btn-group:not(:first-child) > .btn, +.tox .tox-menu__footer .btn-group > .btn-group:not(:first-child) > .tox-button:last-child, +.tox .tox-dialog__footer .btn-group > .btn-group:not(:first-child) > .tox-button:last-child, +.tox .tox-menu__footer .btn-group > .btn-group:not(:first-child) > .tox-button--secondary, +.tox .tox-dialog__footer .btn-group > .btn-group:not(:first-child) > .tox-button--secondary { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.dropdown-toggle-split { + padding-right: 0.75rem; + padding-left: 0.75rem; +} +.dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropend .dropdown-toggle-split::after { + margin-left: 0; +} +.dropstart .dropdown-toggle-split::before { + margin-right: 0; +} + +.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split, .tox .tox-menu__footer .btn-group-sm > .tox-button:last-child + .dropdown-toggle-split, +.tox .tox-dialog__footer .btn-group-sm > .tox-button:last-child + .dropdown-toggle-split, .tox .tox-menu__footer .btn-group-sm > .tox-button--secondary + .dropdown-toggle-split, +.tox .tox-dialog__footer .btn-group-sm > .tox-button--secondary + .dropdown-toggle-split { + padding-right: 0.5625rem; + padding-left: 0.5625rem; +} + +.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split, .tox .tox-menu__footer .btn-group-lg > .tox-button:last-child + .dropdown-toggle-split, +.tox .tox-dialog__footer .btn-group-lg > .tox-button:last-child + .dropdown-toggle-split, .tox .tox-menu__footer .btn-group-lg > .tox-button--secondary + .dropdown-toggle-split, +.tox .tox-dialog__footer .btn-group-lg > .tox-button--secondary + .dropdown-toggle-split { + padding-right: 0.9375rem; + padding-left: 0.9375rem; +} + +.btn-group.show .dropdown-toggle { + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} +.btn-group.show .dropdown-toggle.btn-link { + box-shadow: none; +} + +.btn-group-vertical { + flex-direction: column; + align-items: flex-start; + justify-content: center; +} +.btn-group-vertical > .btn, .tox .tox-menu__footer .btn-group-vertical > .tox-button:last-child, +.tox .tox-dialog__footer .btn-group-vertical > .tox-button:last-child, .tox .tox-menu__footer .btn-group-vertical > .tox-button--secondary, +.tox .tox-dialog__footer .btn-group-vertical > .tox-button--secondary, +.btn-group-vertical > .btn-group { + width: 100%; +} +.btn-group-vertical > .btn:not(:first-child), .tox .tox-menu__footer .btn-group-vertical > .tox-button:not(:first-child):last-child, +.tox .tox-dialog__footer .btn-group-vertical > .tox-button:not(:first-child):last-child, .tox .tox-menu__footer .btn-group-vertical > .tox-button--secondary:not(:first-child), +.tox .tox-dialog__footer .btn-group-vertical > .tox-button--secondary:not(:first-child), +.btn-group-vertical > .btn-group:not(:first-child) { + margin-top: calc(-1 * var(--falcon-border-width)); +} +.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle), .tox .tox-menu__footer .btn-group-vertical > .tox-button:not(:last-child):not(.dropdown-toggle):last-child, +.tox .tox-dialog__footer .btn-group-vertical > .tox-button:not(:last-child):not(.dropdown-toggle):last-child, .tox .tox-menu__footer .btn-group-vertical > .tox-button--secondary:not(:last-child):not(.dropdown-toggle), +.tox .tox-dialog__footer .btn-group-vertical > .tox-button--secondary:not(:last-child):not(.dropdown-toggle), +.btn-group-vertical > .btn-group:not(:last-child) > .btn, +.tox .tox-menu__footer .btn-group-vertical > .btn-group:not(:last-child) > .tox-button:last-child, +.tox .tox-dialog__footer .btn-group-vertical > .btn-group:not(:last-child) > .tox-button:last-child, +.tox .tox-menu__footer .btn-group-vertical > .btn-group:not(:last-child) > .tox-button--secondary, +.tox .tox-dialog__footer .btn-group-vertical > .btn-group:not(:last-child) > .tox-button--secondary { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn:nth-child(n+3), .tox .tox-menu__footer .btn-group-vertical > .tox-button:nth-child(n+3):last-child, +.tox .tox-dialog__footer .btn-group-vertical > .tox-button:nth-child(n+3):last-child, .tox .tox-menu__footer .btn-group-vertical > .tox-button--secondary:nth-child(n+3), +.tox .tox-dialog__footer .btn-group-vertical > .tox-button--secondary:nth-child(n+3), +.btn-group-vertical > :not(.btn-check) + .btn, +.tox .tox-menu__footer .btn-group-vertical > :not(.btn-check) + .tox-button:last-child, +.tox .tox-dialog__footer .btn-group-vertical > :not(.btn-check) + .tox-button:last-child, +.tox .tox-menu__footer .btn-group-vertical > :not(.btn-check) + .tox-button--secondary, +.tox .tox-dialog__footer .btn-group-vertical > :not(.btn-check) + .tox-button--secondary, +.btn-group-vertical > .btn-group:not(:first-child) > .btn, +.tox .tox-menu__footer .btn-group-vertical > .btn-group:not(:first-child) > .tox-button:last-child, +.tox .tox-dialog__footer .btn-group-vertical > .btn-group:not(:first-child) > .tox-button:last-child, +.tox .tox-menu__footer .btn-group-vertical > .btn-group:not(:first-child) > .tox-button--secondary, +.tox .tox-dialog__footer .btn-group-vertical > .btn-group:not(:first-child) > .tox-button--secondary { + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.nav { + --falcon-nav-link-padding-x: 1rem; + --falcon-nav-link-padding-y: 0.5rem; + --falcon-nav-link-font-weight: ; + --falcon-nav-link-color: var(--falcon-link-color); + --falcon-nav-link-hover-color: var(--falcon-link-hover-color); + --falcon-nav-link-disabled-color: var(--falcon-gray-600); + display: flex; + flex-wrap: wrap; + padding-left: 0; + margin-bottom: 0; + list-style: none; +} + +.nav-link { + display: block; + padding: var(--falcon-nav-link-padding-y) var(--falcon-nav-link-padding-x); + font-size: var(--falcon-nav-link-font-size); + font-weight: var(--falcon-nav-link-font-weight); + color: var(--falcon-nav-link-color); + background: none; + border: 0; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .nav-link { + transition: none; + } +} +.nav-link:hover, .nav-link:focus { + color: var(--falcon-nav-link-hover-color); + text-decoration: none; +} +.nav-link:focus-visible { + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(44, 123, 229, 0.25); +} +.nav-link.disabled, .nav-link:disabled { + color: var(--falcon-nav-link-disabled-color); + pointer-events: none; + cursor: default; +} + +.nav-tabs { + --falcon-nav-tabs-border-width: var(--falcon-border-width); + --falcon-nav-tabs-border-color: var(--falcon-border-color); + --falcon-nav-tabs-border-radius: var(--falcon-border-radius); + --falcon-nav-tabs-link-hover-border-color: #edf2f9 #edf2f9 var(--falcon-border-color); + --falcon-nav-tabs-link-active-color: var(--falcon-emphasis-color); + --falcon-nav-tabs-link-active-bg: var(--falcon-body-bg); + --falcon-nav-tabs-link-active-border-color: var(--falcon-border-color) var(--falcon-border-color) var(--falcon-body-bg); + border-bottom: var(--falcon-nav-tabs-border-width) solid var(--falcon-nav-tabs-border-color); +} +.nav-tabs .nav-link { + margin-bottom: calc(-1 * var(--falcon-nav-tabs-border-width)); + border: var(--falcon-nav-tabs-border-width) solid transparent; + border-top-left-radius: var(--falcon-nav-tabs-border-radius); + border-top-right-radius: var(--falcon-nav-tabs-border-radius); +} +.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus { + isolation: isolate; + border-color: var(--falcon-nav-tabs-link-hover-border-color); +} +.nav-tabs .nav-link.active, +.nav-tabs .nav-item.show .nav-link { + color: var(--falcon-nav-tabs-link-active-color); + background-color: var(--falcon-nav-tabs-link-active-bg); + border-color: var(--falcon-nav-tabs-link-active-border-color); +} +.nav-tabs .dropdown-menu { + margin-top: calc(-1 * var(--falcon-nav-tabs-border-width)); + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.nav-pills { + --falcon-nav-pills-border-radius: var(--falcon-border-radius); + --falcon-nav-pills-link-active-color: #fff; + --falcon-nav-pills-link-active-bg: #2c7be5; +} +.nav-pills .nav-link { + border-radius: var(--falcon-nav-pills-border-radius); +} +.nav-pills .nav-link.active, +.nav-pills .show > .nav-link { + color: var(--falcon-nav-pills-link-active-color); + background-color: var(--falcon-nav-pills-link-active-bg); +} + +.nav-underline { + --falcon-nav-underline-gap: 1rem; + --falcon-nav-underline-border-width: 0.125rem; + --falcon-nav-underline-link-active-color: var(--falcon-emphasis-color); + gap: var(--falcon-nav-underline-gap); +} +.nav-underline .nav-link { + padding-right: 0; + padding-left: 0; + border-bottom: var(--falcon-nav-underline-border-width) solid transparent; +} +.nav-underline .nav-link:hover, .nav-underline .nav-link:focus { + border-bottom-color: currentcolor; +} +.nav-underline .nav-link.active, +.nav-underline .show > .nav-link { + font-weight: 700; + color: var(--falcon-nav-underline-link-active-color); + border-bottom-color: currentcolor; +} + +.nav-fill > .nav-link, +.nav-fill .nav-item { + flex: 1 1 auto; + text-align: center; +} + +.nav-justified > .nav-link, +.nav-justified .nav-item { + flex-grow: 1; + flex-basis: 0; + 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 { + --falcon-navbar-padding-x: 1rem; + --falcon-navbar-padding-y: 0.5rem; + --falcon-navbar-color: rgba(var(--falcon-emphasis-color-rgb), 0.55); + --falcon-navbar-hover-color: rgba(var(--falcon-emphasis-color-rgb), 0.7); + --falcon-navbar-disabled-color: rgba(var(--falcon-emphasis-color-rgb), 0.3); + --falcon-navbar-active-color: rgba(var(--falcon-emphasis-color-rgb), 0.9); + --falcon-navbar-brand-padding-y: -0.046rem; + --falcon-navbar-brand-margin-end: 1rem; + --falcon-navbar-brand-font-size: 1.728rem; + --falcon-navbar-brand-color: rgba(var(--falcon-emphasis-color-rgb), 0.9); + --falcon-navbar-brand-hover-color: rgba(var(--falcon-emphasis-color-rgb), 0.9); + --falcon-navbar-nav-link-padding-x: 0.5rem; + --falcon-navbar-toggler-padding-y: 0.25rem; + --falcon-navbar-toggler-padding-x: 0.75rem; + --falcon-navbar-toggler-font-size: 1.2rem; + --falcon-navbar-toggler-icon-bg: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='%239da9bb' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M0 6h30M0 14h30M0 22h30'/%3E%3C/svg%3E"); + --falcon-navbar-toggler-border-color: rgba(var(--falcon-emphasis-color-rgb), 0.1); + --falcon-navbar-toggler-border-radius: var(--falcon-border-radius); + --falcon-navbar-toggler-focus-width: 0; + --falcon-navbar-toggler-transition: box-shadow 0.15s ease-in-out; + position: relative; + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: space-between; + padding: var(--falcon-navbar-padding-y) var(--falcon-navbar-padding-x); +} +.navbar > .container, +.navbar > .container-fluid, +.navbar > .container-sm, +.navbar > .container-md, +.navbar > .container-lg, +.navbar > .container-xl, +.navbar > .container-xxl { + display: flex; + flex-wrap: inherit; + align-items: center; + justify-content: space-between; +} +.navbar-brand { + padding-top: var(--falcon-navbar-brand-padding-y); + padding-bottom: var(--falcon-navbar-brand-padding-y); + margin-right: var(--falcon-navbar-brand-margin-end); + font-size: var(--falcon-navbar-brand-font-size); + color: var(--falcon-navbar-brand-color); + white-space: nowrap; +} +.navbar-brand:hover, .navbar-brand:focus { + color: var(--falcon-navbar-brand-hover-color); + text-decoration: none; +} + +.navbar-nav { + --falcon-nav-link-padding-x: 0; + --falcon-nav-link-padding-y: 0.5rem; + --falcon-nav-link-font-weight: ; + --falcon-nav-link-color: var(--falcon-navbar-color); + --falcon-nav-link-hover-color: var(--falcon-navbar-hover-color); + --falcon-nav-link-disabled-color: var(--falcon-navbar-disabled-color); + display: flex; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; + list-style: none; +} +.navbar-nav .nav-link.active, .navbar-nav .nav-link.show { + color: var(--falcon-navbar-active-color); +} +.navbar-nav .dropdown-menu { + position: static; +} + +.navbar-text { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + color: var(--falcon-navbar-color); +} +.navbar-text a, +.navbar-text a:hover, +.navbar-text a:focus { + color: var(--falcon-navbar-active-color); +} + +.navbar-collapse { + flex-grow: 1; + flex-basis: 100%; + align-items: center; +} + +.navbar-toggler { + padding: var(--falcon-navbar-toggler-padding-y) var(--falcon-navbar-toggler-padding-x); + font-size: var(--falcon-navbar-toggler-font-size); + line-height: 1; + color: var(--falcon-navbar-color); + background-color: transparent; + border: var(--falcon-border-width) solid var(--falcon-navbar-toggler-border-color); + border-radius: var(--falcon-navbar-toggler-border-radius); + transition: var(--falcon-navbar-toggler-transition); +} +@media (prefers-reduced-motion: reduce) { + .navbar-toggler { + transition: none; + } +} +.navbar-toggler:hover { + text-decoration: none; +} +.navbar-toggler:focus { + text-decoration: none; + outline: 0; + box-shadow: 0 0 0 var(--falcon-navbar-toggler-focus-width); +} + +.navbar-toggler-icon { + display: inline-block; + width: 1.5em; + height: 1.5em; + vertical-align: middle; + background-image: var(--falcon-navbar-toggler-icon-bg); + background-repeat: no-repeat; + background-position: center; + background-size: 100%; +} + +.navbar-nav-scroll { + max-height: var(--falcon-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-right: var(--falcon-navbar-nav-link-padding-x); + padding-left: var(--falcon-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 { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + box-shadow: none; + transition: none; + } + .navbar-expand-sm .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-sm .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@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-right: var(--falcon-navbar-nav-link-padding-x); + padding-left: var(--falcon-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 { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + box-shadow: none; + transition: none; + } + .navbar-expand-md .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-md .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@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-right: var(--falcon-navbar-nav-link-padding-x); + padding-left: var(--falcon-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 { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + box-shadow: none; + transition: none; + } + .navbar-expand-lg .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-lg .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@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-right: var(--falcon-navbar-nav-link-padding-x); + padding-left: var(--falcon-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 { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + box-shadow: none; + transition: none; + } + .navbar-expand-xl .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-xl .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@media (min-width: 1540px) { + .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-right: var(--falcon-navbar-nav-link-padding-x); + padding-left: var(--falcon-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 { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + box-shadow: none; + transition: none; + } + .navbar-expand-xxl .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-xxl .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +.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-right: var(--falcon-navbar-nav-link-padding-x); + padding-left: var(--falcon-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 { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + box-shadow: none; + transition: none; +} +.navbar-expand .offcanvas .offcanvas-header { + display: none; +} +.navbar-expand .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; +} + +.navbar-dark, +.navbar[data-bs-theme=dark] { + --falcon-navbar-color: rgba(255, 255, 255, 0.55); + --falcon-navbar-hover-color: rgba(255, 255, 255, 0.75); + --falcon-navbar-disabled-color: rgba(255, 255, 255, 0.25); + --falcon-navbar-active-color: #fff; + --falcon-navbar-brand-color: #fff; + --falcon-navbar-brand-hover-color: #fff; + --falcon-navbar-toggler-border-color: rgba(255, 255, 255, 0.1); + --falcon-navbar-toggler-icon-bg: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='%239da9bb' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M0 6h30M0 14h30M0 22h30'/%3E%3C/svg%3E"); +} + +[data-bs-theme=dark] .navbar-toggler-icon { + --falcon-navbar-toggler-icon-bg: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='%239da9bb' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M0 6h30M0 14h30M0 22h30'/%3E%3C/svg%3E"); +} + +.card { + --falcon-card-spacer-y: 1.25rem; + --falcon-card-spacer-x: 1.25rem; + --falcon-card-title-spacer-y: 0.5rem; + --falcon-card-title-color: var(--falcon-secondary-color); + --falcon-card-subtitle-color: ; + --falcon-card-border-width: 0px; + --falcon-card-border-color: rgba(var(--falcon-emphasis-color-rgb), 0.125); + --falcon-card-border-radius: 0.375rem; + --falcon-card-box-shadow: ; + --falcon-card-inner-border-radius: calc(0.375rem - 0px); + --falcon-card-cap-padding-y: 1rem; + --falcon-card-cap-padding-x: 1.25rem; + --falcon-card-cap-bg: rgba(0, 0, 0, 0); + --falcon-card-cap-color: ; + --falcon-card-height: ; + --falcon-card-color: ; + --falcon-card-bg: #fff; + --falcon-card-img-overlay-padding: 1rem; + --falcon-card-group-margin: 1rem; + position: relative; + display: flex; + flex-direction: column; + min-width: 0; + height: var(--falcon-card-height); + color: var(--falcon-body-color); + word-wrap: break-word; + background-color: var(--falcon-card-bg); + background-clip: border-box; + border: var(--falcon-card-border-width) solid var(--falcon-card-border-color); + border-radius: var(--falcon-card-border-radius); + box-shadow: var(--falcon-card-box-shadow); +} +.card > hr { + margin-right: 0; + margin-left: 0; +} +.card > .list-group { + border-top: inherit; + border-bottom: inherit; +} +.card > .list-group:first-child { + border-top-width: 0; + border-top-left-radius: var(--falcon-card-inner-border-radius); + border-top-right-radius: var(--falcon-card-inner-border-radius); +} +.card > .list-group:last-child { + border-bottom-width: 0; + border-bottom-right-radius: var(--falcon-card-inner-border-radius); + border-bottom-left-radius: var(--falcon-card-inner-border-radius); +} +.card > .card-header + .list-group, +.card > .list-group + .card-footer { + border-top: 0; +} + +.card-body { + flex: 1 1 auto; + padding: var(--falcon-card-spacer-y) var(--falcon-card-spacer-x); + color: var(--falcon-card-color); +} + +.card-title { + margin-bottom: var(--falcon-card-title-spacer-y); + color: var(--falcon-card-title-color); +} + +.card-subtitle { + margin-top: calc(-0.5 * var(--falcon-card-title-spacer-y)); + margin-bottom: 0; + color: var(--falcon-card-subtitle-color); +} + +.card-text:last-child { + margin-bottom: 0; +} + +.card-link:hover { + text-decoration: none; +} +.card-link + .card-link { + margin-left: var(--falcon-card-spacer-x); +} + +.card-header { + padding: var(--falcon-card-cap-padding-y) var(--falcon-card-cap-padding-x); + margin-bottom: 0; + color: var(--falcon-card-cap-color); + background-color: var(--falcon-card-cap-bg); + border-bottom: var(--falcon-card-border-width) solid var(--falcon-card-border-color); +} +.card-header:first-child { + border-radius: var(--falcon-card-inner-border-radius) var(--falcon-card-inner-border-radius) 0 0; +} + +.card-footer { + padding: var(--falcon-card-cap-padding-y) var(--falcon-card-cap-padding-x); + color: var(--falcon-card-cap-color); + background-color: var(--falcon-card-cap-bg); + border-top: var(--falcon-card-border-width) solid var(--falcon-card-border-color); +} +.card-footer:last-child { + border-radius: 0 0 var(--falcon-card-inner-border-radius) var(--falcon-card-inner-border-radius); +} + +.card-header-tabs { + margin-right: calc(-0.5 * var(--falcon-card-cap-padding-x)); + margin-bottom: calc(-1 * var(--falcon-card-cap-padding-y)); + margin-left: calc(-0.5 * var(--falcon-card-cap-padding-x)); + border-bottom: 0; +} +.card-header-tabs .nav-link.active { + background-color: var(--falcon-card-bg); + border-bottom-color: var(--falcon-card-bg); +} + +.card-header-pills { + margin-right: calc(-0.5 * var(--falcon-card-cap-padding-x)); + margin-left: calc(-0.5 * var(--falcon-card-cap-padding-x)); +} + +.card-img-overlay { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + padding: var(--falcon-card-img-overlay-padding); + border-radius: var(--falcon-card-inner-border-radius); +} + +.card-img, +.card-img-top, +.card-img-bottom { + width: 100%; +} + +.card-img, +.card-img-top { + border-top-left-radius: var(--falcon-card-inner-border-radius); + border-top-right-radius: var(--falcon-card-inner-border-radius); +} + +.card-img, +.card-img-bottom { + border-bottom-right-radius: var(--falcon-card-inner-border-radius); + border-bottom-left-radius: var(--falcon-card-inner-border-radius); +} + +.card-group > .card { + margin-bottom: var(--falcon-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 { + margin-left: 0; + border-left: 0; + } + .card-group > .card:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + .card-group > .card:not(:last-child) > .card-img-top, + .card-group > .card:not(:last-child) > .card-header { + border-top-right-radius: 0; + } + .card-group > .card:not(:last-child) > .card-img-bottom, + .card-group > .card:not(:last-child) > .card-footer { + border-bottom-right-radius: 0; + } + .card-group > .card:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + .card-group > .card:not(:first-child) > .card-img-top, + .card-group > .card:not(:first-child) > .card-header { + border-top-left-radius: 0; + } + .card-group > .card:not(:first-child) > .card-img-bottom, + .card-group > .card:not(:first-child) > .card-footer { + border-bottom-left-radius: 0; + } +} + +.accordion { + --falcon-accordion-color: var(--falcon-body-color); + --falcon-accordion-bg: var(--falcon-emphasis-bg); + --falcon-accordion-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease; + --falcon-accordion-border-color: rgba(var(--falcon-emphasis-color-rgb), 0.125); + --falcon-accordion-border-width: var(--falcon-border-width); + --falcon-accordion-border-radius: var(--falcon-border-radius); + --falcon-accordion-inner-border-radius: calc(var(--falcon-border-radius) - (var(--falcon-border-width))); + --falcon-accordion-btn-padding-x: 1.25rem; + --falcon-accordion-btn-padding-y: 1rem; + --falcon-accordion-btn-color: var(--falcon-accordion-btn-color-global); + --falcon-accordion-btn-bg: var(--falcon-accordion-bg); + --falcon-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%235e6e82' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='m2 5 6 6 6-6'/%3e%3c/svg%3e"); + --falcon-accordion-btn-icon-width: 1.25rem; + --falcon-accordion-btn-icon-transform: rotate(-180deg); + --falcon-accordion-btn-icon-transition: transform 0.2s ease-in-out; + --falcon-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%235e6e82' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='m2 5 6 6 6-6'/%3e%3c/svg%3e"); + --falcon-accordion-btn-focus-box-shadow: 0 0 0 0.25rem rgba(44, 123, 229, 0.25); + --falcon-accordion-body-padding-x: 1.25rem; + --falcon-accordion-body-padding-y: 1rem; + --falcon-accordion-active-color: #286fce; + --falcon-accordion-active-bg: var(--falcon-emphasis-bg); +} + +.accordion-button { + position: relative; + display: flex; + align-items: center; + width: 100%; + padding: var(--falcon-accordion-btn-padding-y) var(--falcon-accordion-btn-padding-x); + font-size: 1rem; + color: var(--falcon-accordion-btn-color); + text-align: left; + background-color: var(--falcon-accordion-btn-bg); + border: 0; + border-radius: 0; + overflow-anchor: none; + transition: var(--falcon-accordion-transition); +} +@media (prefers-reduced-motion: reduce) { + .accordion-button { + transition: none; + } +} +.accordion-button:not(.collapsed) { + color: var(--falcon-accordion-active-color); + background-color: var(--falcon-accordion-active-bg); + box-shadow: inset 0 calc(-1 * var(--falcon-accordion-border-width)) 0 var(--falcon-accordion-border-color); +} +.accordion-button:not(.collapsed)::after { + background-image: var(--falcon-accordion-btn-active-icon); + transform: var(--falcon-accordion-btn-icon-transform); +} +.accordion-button::after { + flex-shrink: 0; + width: var(--falcon-accordion-btn-icon-width); + height: var(--falcon-accordion-btn-icon-width); + margin-left: auto; + content: ""; + background-image: var(--falcon-accordion-btn-icon); + background-repeat: no-repeat; + background-size: var(--falcon-accordion-btn-icon-width); + transition: var(--falcon-accordion-btn-icon-transition); +} +@media (prefers-reduced-motion: reduce) { + .accordion-button::after { + transition: none; + } +} +.accordion-button:hover { + z-index: 2; +} +.accordion-button:focus { + z-index: 3; + outline: 0; + box-shadow: var(--falcon-accordion-btn-focus-box-shadow); +} + +.accordion-header { + margin-bottom: 0; +} + +.accordion-item { + color: var(--falcon-accordion-color); + background-color: var(--falcon-accordion-bg); + border: var(--falcon-accordion-border-width) solid var(--falcon-accordion-border-color); +} +.accordion-item:first-of-type { + border-top-left-radius: var(--falcon-accordion-border-radius); + border-top-right-radius: var(--falcon-accordion-border-radius); +} +.accordion-item:first-of-type > .accordion-header .accordion-button { + border-top-left-radius: var(--falcon-accordion-inner-border-radius); + border-top-right-radius: var(--falcon-accordion-inner-border-radius); +} +.accordion-item:not(:first-of-type) { + border-top: 0; +} +.accordion-item:last-of-type { + border-bottom-right-radius: var(--falcon-accordion-border-radius); + border-bottom-left-radius: var(--falcon-accordion-border-radius); +} +.accordion-item:last-of-type > .accordion-header .accordion-button.collapsed { + border-bottom-right-radius: var(--falcon-accordion-inner-border-radius); + border-bottom-left-radius: var(--falcon-accordion-inner-border-radius); +} +.accordion-item:last-of-type > .accordion-collapse { + border-bottom-right-radius: var(--falcon-accordion-border-radius); + border-bottom-left-radius: var(--falcon-accordion-border-radius); +} + +.accordion-body { + padding: var(--falcon-accordion-body-padding-y) var(--falcon-accordion-body-padding-x); +} + +.accordion-flush > .accordion-item { + border-right: 0; + border-left: 0; + border-radius: 0; +} +.accordion-flush > .accordion-item:first-child { + border-top: 0; +} +.accordion-flush > .accordion-item:last-child { + border-bottom: 0; +} +.accordion-flush > .accordion-item > .accordion-collapse, +.accordion-flush > .accordion-item > .accordion-header .accordion-button, +.accordion-flush > .accordion-item > .accordion-header .accordion-button.collapsed { + border-radius: 0; +} + +[data-bs-theme=dark] .accordion-button::after { + --falcon-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%235e6e82'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); + --falcon-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%235e6e82'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); +} + +.breadcrumb { + --falcon-breadcrumb-padding-x: 0; + --falcon-breadcrumb-padding-y: 0; + --falcon-breadcrumb-margin-bottom: 0; + --falcon-breadcrumb-bg: transparent; + --falcon-breadcrumb-border-radius: ; + --falcon-breadcrumb-divider-color: #748194; + --falcon-breadcrumb-item-padding-x: 0.5rem; + --falcon-breadcrumb-item-active-color: #748194; + display: flex; + flex-wrap: wrap; + padding: var(--falcon-breadcrumb-padding-y) var(--falcon-breadcrumb-padding-x); + margin-bottom: var(--falcon-breadcrumb-margin-bottom); + font-size: var(--falcon-breadcrumb-font-size); + list-style: none; + background-color: var(--falcon-breadcrumb-bg); + border-radius: var(--falcon-breadcrumb-border-radius); +} + +.breadcrumb-item + .breadcrumb-item { + padding-left: var(--falcon-breadcrumb-item-padding-x); +} +.breadcrumb-item + .breadcrumb-item::before { + float: left; + padding-right: var(--falcon-breadcrumb-item-padding-x); + color: var(--falcon-breadcrumb-divider-color); + content: var(--falcon-breadcrumb-divider, "/") /* rtl: var(--falcon-breadcrumb-divider, "/") */; +} +.breadcrumb-item.active { + color: var(--falcon-breadcrumb-item-active-color); +} + +.pagination { + --falcon-pagination-padding-x: 0.75rem; + --falcon-pagination-padding-y: 0.5rem; + --falcon-pagination-font-size: 1rem; + --falcon-pagination-color: var(--falcon-emphasis-color); + --falcon-pagination-bg: var(--falcon-quaternary-bg); + --falcon-pagination-border-width: var(--falcon-border-width); + --falcon-pagination-border-color: var(--falcon-gray-200); + --falcon-pagination-border-radius: var(--falcon-border-radius); + --falcon-pagination-hover-color: #fff; + --falcon-pagination-hover-bg: #2c7be5; + --falcon-pagination-hover-border-color: #2c7be5; + --falcon-pagination-focus-color: var(--falcon-gray-700); + --falcon-pagination-focus-bg: var(--falcon-gray-100); + --falcon-pagination-focus-box-shadow: none; + --falcon-pagination-active-color: #fff; + --falcon-pagination-active-bg: #2c7be5; + --falcon-pagination-active-border-color: #2c7be5; + --falcon-pagination-disabled-color: var(--falcon-gray-700); + --falcon-pagination-disabled-bg: var(--falcon-gray-100); + --falcon-pagination-disabled-border-color: var(--falcon-gray-200); + display: flex; + padding-left: 0; + list-style: none; +} + +.page-link { + position: relative; + display: block; + padding: var(--falcon-pagination-padding-y) var(--falcon-pagination-padding-x); + font-size: var(--falcon-pagination-font-size); + color: var(--falcon-pagination-color); + background-color: var(--falcon-pagination-bg); + border: var(--falcon-pagination-border-width) solid var(--falcon-pagination-border-color); + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .page-link { + transition: none; + } +} +.page-link:hover { + z-index: 2; + color: var(--falcon-pagination-hover-color); + text-decoration: none; + background-color: var(--falcon-pagination-hover-bg); + border-color: var(--falcon-pagination-hover-border-color); +} +.page-link:focus { + z-index: 3; + color: var(--falcon-pagination-focus-color); + background-color: var(--falcon-pagination-focus-bg); + outline: 0; + box-shadow: var(--falcon-pagination-focus-box-shadow); +} +.page-link.active, .active > .page-link { + z-index: 3; + color: var(--falcon-pagination-active-color); + background-color: var(--falcon-pagination-active-bg); + border-color: var(--falcon-pagination-active-border-color); +} +.page-link.disabled, .disabled > .page-link { + color: var(--falcon-pagination-disabled-color); + pointer-events: none; + background-color: var(--falcon-pagination-disabled-bg); + border-color: var(--falcon-pagination-disabled-border-color); +} + +.page-item:not(:first-child) .page-link { + margin-left: calc(-1 * var(--falcon-border-width)); +} +.page-item:first-child .page-link { + border-top-left-radius: var(--falcon-pagination-border-radius); + border-bottom-left-radius: var(--falcon-pagination-border-radius); +} +.page-item:last-child .page-link { + border-top-right-radius: var(--falcon-pagination-border-radius); + border-bottom-right-radius: var(--falcon-pagination-border-radius); +} + +.pagination-lg { + --falcon-pagination-padding-x: 1.5rem; + --falcon-pagination-padding-y: 0.75rem; + --falcon-pagination-font-size: 1.2rem; + --falcon-pagination-border-radius: var(--falcon-border-radius-lg); +} + +.pagination-sm { + --falcon-pagination-padding-x: 0.5rem; + --falcon-pagination-padding-y: 0.25rem; + --falcon-pagination-font-size: 0.875rem; + --falcon-pagination-border-radius: var(--falcon-border-radius-sm); +} + +.badge { + --falcon-badge-padding-x: 0.711111em; + --falcon-badge-padding-y: 0.355555em; + --falcon-badge-font-size: 0.75em; + --falcon-badge-font-weight: 600; + --falcon-badge-color: #fff; + --falcon-badge-border-radius: var(--falcon-border-radius); + display: inline-block; + padding: var(--falcon-badge-padding-y) var(--falcon-badge-padding-x); + font-size: var(--falcon-badge-font-size); + font-weight: var(--falcon-badge-font-weight); + line-height: 1; + color: var(--falcon-badge-color); + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: var(--falcon-badge-border-radius); +} +.badge:empty { + display: none; +} + +.btn .badge, .tox .tox-menu__footer .tox-button:last-child .badge, +.tox .tox-dialog__footer .tox-button:last-child .badge, .tox .tox-menu__footer .tox-button--secondary .badge, +.tox .tox-dialog__footer .tox-button--secondary .badge { + position: relative; + top: -1px; +} + +.alert { + --falcon-alert-bg: transparent; + --falcon-alert-padding-x: 1rem; + --falcon-alert-padding-y: 1rem; + --falcon-alert-margin-bottom: 1rem; + --falcon-alert-color: inherit; + --falcon-alert-border-color: transparent; + --falcon-alert-border: var(--falcon-border-width) solid var(--falcon-alert-border-color); + --falcon-alert-border-radius: var(--falcon-border-radius); + --falcon-alert-link-color: inherit; + position: relative; + padding: var(--falcon-alert-padding-y) var(--falcon-alert-padding-x); + margin-bottom: var(--falcon-alert-margin-bottom); + color: var(--falcon-alert-color); + background-color: var(--falcon-alert-bg); + border: var(--falcon-alert-border); + border-radius: var(--falcon-alert-border-radius); +} + +.alert-heading { + color: inherit; +} + +.alert-link { + font-weight: 700; + color: var(--falcon-alert-link-color); +} + +.alert-dismissible { + padding-right: 3rem; +} +.alert-dismissible .btn-close { + position: absolute; + top: 0; + right: 0; + z-index: 2; + padding: 1.25rem 1rem; +} + +.alert-primary { + --falcon-alert-color: var(--falcon-primary-text-emphasis); + --falcon-alert-bg: var(--falcon-primary-bg-subtle); + --falcon-alert-border-color: var(--falcon-primary-border-subtle); + --falcon-alert-link-color: var(--falcon-primary-text-emphasis); +} + +.alert-secondary { + --falcon-alert-color: var(--falcon-secondary-text-emphasis); + --falcon-alert-bg: var(--falcon-secondary-bg-subtle); + --falcon-alert-border-color: var(--falcon-secondary-border-subtle); + --falcon-alert-link-color: var(--falcon-secondary-text-emphasis); +} + +.alert-success { + --falcon-alert-color: var(--falcon-success-text-emphasis); + --falcon-alert-bg: var(--falcon-success-bg-subtle); + --falcon-alert-border-color: var(--falcon-success-border-subtle); + --falcon-alert-link-color: var(--falcon-success-text-emphasis); +} + +.alert-info { + --falcon-alert-color: var(--falcon-info-text-emphasis); + --falcon-alert-bg: var(--falcon-info-bg-subtle); + --falcon-alert-border-color: var(--falcon-info-border-subtle); + --falcon-alert-link-color: var(--falcon-info-text-emphasis); +} + +.alert-warning { + --falcon-alert-color: var(--falcon-warning-text-emphasis); + --falcon-alert-bg: var(--falcon-warning-bg-subtle); + --falcon-alert-border-color: var(--falcon-warning-border-subtle); + --falcon-alert-link-color: var(--falcon-warning-text-emphasis); +} + +.alert-danger { + --falcon-alert-color: var(--falcon-danger-text-emphasis); + --falcon-alert-bg: var(--falcon-danger-bg-subtle); + --falcon-alert-border-color: var(--falcon-danger-border-subtle); + --falcon-alert-link-color: var(--falcon-danger-text-emphasis); +} + +.alert-light { + --falcon-alert-color: var(--falcon-light-text-emphasis); + --falcon-alert-bg: var(--falcon-light-bg-subtle); + --falcon-alert-border-color: var(--falcon-light-border-subtle); + --falcon-alert-link-color: var(--falcon-light-text-emphasis); +} + +.alert-dark { + --falcon-alert-color: var(--falcon-dark-text-emphasis); + --falcon-alert-bg: var(--falcon-dark-bg-subtle); + --falcon-alert-border-color: var(--falcon-dark-border-subtle); + --falcon-alert-link-color: var(--falcon-dark-text-emphasis); +} + +@keyframes progress-bar-stripes { + 0% { + background-position-x: var(--falcon-progress-height); + } +} +.progress, +.progress-stacked { + --falcon-progress-height: 1rem; + --falcon-progress-font-size: 0.75rem; + --falcon-progress-bg: var(--falcon-gray-200); + --falcon-progress-border-radius: var(--falcon-border-radius); + --falcon-progress-box-shadow: var(--falcon-box-shadow-inset); + --falcon-progress-bar-color: #fff; + --falcon-progress-bar-bg: #2c7be5; + --falcon-progress-bar-transition: width 0.6s ease; + display: flex; + height: var(--falcon-progress-height); + overflow: hidden; + font-size: var(--falcon-progress-font-size); + background-color: var(--falcon-progress-bg); + border-radius: var(--falcon-progress-border-radius); + box-shadow: var(--falcon-progress-box-shadow); +} + +.progress-bar { + display: flex; + flex-direction: column; + justify-content: center; + overflow: hidden; + color: var(--falcon-progress-bar-color); + text-align: center; + white-space: nowrap; + background-color: var(--falcon-progress-bar-bg); + transition: var(--falcon-progress-bar-transition); +} +@media (prefers-reduced-motion: reduce) { + .progress-bar { + transition: none; + } +} + +.progress-bar-striped { + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: var(--falcon-progress-height) var(--falcon-progress-height); +} + +.progress-stacked > .progress { + overflow: visible; +} + +.progress-stacked > .progress > .progress-bar { + width: 100%; +} + +.progress-bar-animated { + animation: 1s linear infinite progress-bar-stripes; +} +@media (prefers-reduced-motion: reduce) { + .progress-bar-animated { + animation: none; + } +} + +.list-group { + --falcon-list-group-color: var(--falcon-gray-800); + --falcon-list-group-bg: var(--falcon-list-group-bg-global); + --falcon-list-group-border-color: var(--falcon-border-color); + --falcon-list-group-border-width: var(--falcon-border-width); + --falcon-list-group-border-radius: var(--falcon-border-radius); + --falcon-list-group-item-padding-x: 1rem; + --falcon-list-group-item-padding-y: 0.5rem; + --falcon-list-group-action-color: var(--falcon-secondary-color); + --falcon-list-group-action-hover-color: var(--falcon-gray-700); + --falcon-list-group-action-hover-bg: var(--falcon-body-bg); + --falcon-list-group-action-active-color: var(--falcon-body-color); + --falcon-list-group-action-active-bg: var(--falcon-gray-200); + --falcon-list-group-disabled-color: var(--falcon-gray-600); + --falcon-list-group-disabled-bg: var(--falcon-card-cap-bg); + --falcon-list-group-active-color: #fff; + --falcon-list-group-active-bg: #2c7be5; + --falcon-list-group-active-border-color: #2c7be5; + display: flex; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; + border-radius: var(--falcon-list-group-border-radius); +} + +.list-group-numbered { + list-style-type: none; + counter-reset: section; +} +.list-group-numbered > .list-group-item::before { + content: counters(section, ".") ". "; + counter-increment: section; +} + +.list-group-item { + position: relative; + display: block; + padding: var(--falcon-list-group-item-padding-y) var(--falcon-list-group-item-padding-x); + color: var(--falcon-list-group-color); + background-color: var(--falcon-list-group-bg); + border: var(--falcon-list-group-border-width) solid var(--falcon-list-group-border-color); +} +.list-group-item:first-child { + border-top-left-radius: inherit; + border-top-right-radius: inherit; +} +.list-group-item:last-child { + border-bottom-right-radius: inherit; + border-bottom-left-radius: inherit; +} +.list-group-item.disabled, .list-group-item:disabled { + color: var(--falcon-list-group-disabled-color); + pointer-events: none; + background-color: var(--falcon-list-group-disabled-bg); +} +.list-group-item.active { + z-index: 2; + color: var(--falcon-list-group-active-color); + background-color: var(--falcon-list-group-active-bg); + border-color: var(--falcon-list-group-active-border-color); +} +.list-group-item + .list-group-item { + border-top-width: 0; +} +.list-group-item + .list-group-item.active { + margin-top: calc(-1 * var(--falcon-list-group-border-width)); + border-top-width: var(--falcon-list-group-border-width); +} + +.list-group-item-action { + width: 100%; + color: var(--falcon-list-group-action-color); + text-align: inherit; +} +.list-group-item-action:not(.active):hover, .list-group-item-action:not(.active):focus { + z-index: 1; + color: var(--falcon-list-group-action-hover-color); + text-decoration: none; + background-color: var(--falcon-list-group-action-hover-bg); +} +.list-group-item-action:not(.active):active { + color: var(--falcon-list-group-action-active-color); + background-color: var(--falcon-list-group-action-active-bg); +} + +.list-group-horizontal { + flex-direction: row; +} +.list-group-horizontal > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--falcon-list-group-border-radius); + border-top-right-radius: 0; +} +.list-group-horizontal > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--falcon-list-group-border-radius); + border-bottom-left-radius: 0; +} +.list-group-horizontal > .list-group-item.active { + margin-top: 0; +} +.list-group-horizontal > .list-group-item + .list-group-item { + border-top-width: var(--falcon-list-group-border-width); + border-left-width: 0; +} +.list-group-horizontal > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--falcon-list-group-border-width)); + border-left-width: var(--falcon-list-group-border-width); +} + +@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(--falcon-list-group-border-radius); + border-top-right-radius: 0; + } + .list-group-horizontal-sm > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--falcon-list-group-border-radius); + border-bottom-left-radius: 0; + } + .list-group-horizontal-sm > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-sm > .list-group-item + .list-group-item { + border-top-width: var(--falcon-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-sm > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--falcon-list-group-border-width)); + border-left-width: var(--falcon-list-group-border-width); + } +} +@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(--falcon-list-group-border-radius); + border-top-right-radius: 0; + } + .list-group-horizontal-md > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--falcon-list-group-border-radius); + border-bottom-left-radius: 0; + } + .list-group-horizontal-md > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-md > .list-group-item + .list-group-item { + border-top-width: var(--falcon-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-md > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--falcon-list-group-border-width)); + border-left-width: var(--falcon-list-group-border-width); + } +} +@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(--falcon-list-group-border-radius); + border-top-right-radius: 0; + } + .list-group-horizontal-lg > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--falcon-list-group-border-radius); + border-bottom-left-radius: 0; + } + .list-group-horizontal-lg > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-lg > .list-group-item + .list-group-item { + border-top-width: var(--falcon-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-lg > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--falcon-list-group-border-width)); + border-left-width: var(--falcon-list-group-border-width); + } +} +@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(--falcon-list-group-border-radius); + border-top-right-radius: 0; + } + .list-group-horizontal-xl > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--falcon-list-group-border-radius); + border-bottom-left-radius: 0; + } + .list-group-horizontal-xl > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-xl > .list-group-item + .list-group-item { + border-top-width: var(--falcon-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-xl > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--falcon-list-group-border-width)); + border-left-width: var(--falcon-list-group-border-width); + } +} +@media (min-width: 1540px) { + .list-group-horizontal-xxl { + flex-direction: row; + } + .list-group-horizontal-xxl > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--falcon-list-group-border-radius); + border-top-right-radius: 0; + } + .list-group-horizontal-xxl > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--falcon-list-group-border-radius); + border-bottom-left-radius: 0; + } + .list-group-horizontal-xxl > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-xxl > .list-group-item + .list-group-item { + border-top-width: var(--falcon-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-xxl > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--falcon-list-group-border-width)); + border-left-width: var(--falcon-list-group-border-width); + } +} +.list-group-flush { + border-radius: 0; +} +.list-group-flush > .list-group-item { + border-width: 0 0 var(--falcon-list-group-border-width); +} +.list-group-flush > .list-group-item:last-child { + border-bottom-width: 0; +} + +.list-group-item-primary { + --falcon-list-group-color: var(--falcon-primary-text-emphasis); + --falcon-list-group-bg: var(--falcon-primary-bg-subtle); + --falcon-list-group-border-color: var(--falcon-primary-border-subtle); + --falcon-list-group-action-hover-color: var(--falcon-emphasis-color); + --falcon-list-group-action-hover-bg: var(--falcon-primary-border-subtle); + --falcon-list-group-action-active-color: var(--falcon-emphasis-color); + --falcon-list-group-action-active-bg: var(--falcon-primary-border-subtle); + --falcon-list-group-active-color: var(--falcon-primary-bg-subtle); + --falcon-list-group-active-bg: var(--falcon-primary-text-emphasis); + --falcon-list-group-active-border-color: var(--falcon-primary-text-emphasis); +} + +.list-group-item-secondary { + --falcon-list-group-color: var(--falcon-secondary-text-emphasis); + --falcon-list-group-bg: var(--falcon-secondary-bg-subtle); + --falcon-list-group-border-color: var(--falcon-secondary-border-subtle); + --falcon-list-group-action-hover-color: var(--falcon-emphasis-color); + --falcon-list-group-action-hover-bg: var(--falcon-secondary-border-subtle); + --falcon-list-group-action-active-color: var(--falcon-emphasis-color); + --falcon-list-group-action-active-bg: var(--falcon-secondary-border-subtle); + --falcon-list-group-active-color: var(--falcon-secondary-bg-subtle); + --falcon-list-group-active-bg: var(--falcon-secondary-text-emphasis); + --falcon-list-group-active-border-color: var(--falcon-secondary-text-emphasis); +} + +.list-group-item-success { + --falcon-list-group-color: var(--falcon-success-text-emphasis); + --falcon-list-group-bg: var(--falcon-success-bg-subtle); + --falcon-list-group-border-color: var(--falcon-success-border-subtle); + --falcon-list-group-action-hover-color: var(--falcon-emphasis-color); + --falcon-list-group-action-hover-bg: var(--falcon-success-border-subtle); + --falcon-list-group-action-active-color: var(--falcon-emphasis-color); + --falcon-list-group-action-active-bg: var(--falcon-success-border-subtle); + --falcon-list-group-active-color: var(--falcon-success-bg-subtle); + --falcon-list-group-active-bg: var(--falcon-success-text-emphasis); + --falcon-list-group-active-border-color: var(--falcon-success-text-emphasis); +} + +.list-group-item-info { + --falcon-list-group-color: var(--falcon-info-text-emphasis); + --falcon-list-group-bg: var(--falcon-info-bg-subtle); + --falcon-list-group-border-color: var(--falcon-info-border-subtle); + --falcon-list-group-action-hover-color: var(--falcon-emphasis-color); + --falcon-list-group-action-hover-bg: var(--falcon-info-border-subtle); + --falcon-list-group-action-active-color: var(--falcon-emphasis-color); + --falcon-list-group-action-active-bg: var(--falcon-info-border-subtle); + --falcon-list-group-active-color: var(--falcon-info-bg-subtle); + --falcon-list-group-active-bg: var(--falcon-info-text-emphasis); + --falcon-list-group-active-border-color: var(--falcon-info-text-emphasis); +} + +.list-group-item-warning { + --falcon-list-group-color: var(--falcon-warning-text-emphasis); + --falcon-list-group-bg: var(--falcon-warning-bg-subtle); + --falcon-list-group-border-color: var(--falcon-warning-border-subtle); + --falcon-list-group-action-hover-color: var(--falcon-emphasis-color); + --falcon-list-group-action-hover-bg: var(--falcon-warning-border-subtle); + --falcon-list-group-action-active-color: var(--falcon-emphasis-color); + --falcon-list-group-action-active-bg: var(--falcon-warning-border-subtle); + --falcon-list-group-active-color: var(--falcon-warning-bg-subtle); + --falcon-list-group-active-bg: var(--falcon-warning-text-emphasis); + --falcon-list-group-active-border-color: var(--falcon-warning-text-emphasis); +} + +.list-group-item-danger { + --falcon-list-group-color: var(--falcon-danger-text-emphasis); + --falcon-list-group-bg: var(--falcon-danger-bg-subtle); + --falcon-list-group-border-color: var(--falcon-danger-border-subtle); + --falcon-list-group-action-hover-color: var(--falcon-emphasis-color); + --falcon-list-group-action-hover-bg: var(--falcon-danger-border-subtle); + --falcon-list-group-action-active-color: var(--falcon-emphasis-color); + --falcon-list-group-action-active-bg: var(--falcon-danger-border-subtle); + --falcon-list-group-active-color: var(--falcon-danger-bg-subtle); + --falcon-list-group-active-bg: var(--falcon-danger-text-emphasis); + --falcon-list-group-active-border-color: var(--falcon-danger-text-emphasis); +} + +.list-group-item-light { + --falcon-list-group-color: var(--falcon-light-text-emphasis); + --falcon-list-group-bg: var(--falcon-light-bg-subtle); + --falcon-list-group-border-color: var(--falcon-light-border-subtle); + --falcon-list-group-action-hover-color: var(--falcon-emphasis-color); + --falcon-list-group-action-hover-bg: var(--falcon-light-border-subtle); + --falcon-list-group-action-active-color: var(--falcon-emphasis-color); + --falcon-list-group-action-active-bg: var(--falcon-light-border-subtle); + --falcon-list-group-active-color: var(--falcon-light-bg-subtle); + --falcon-list-group-active-bg: var(--falcon-light-text-emphasis); + --falcon-list-group-active-border-color: var(--falcon-light-text-emphasis); +} + +.list-group-item-dark { + --falcon-list-group-color: var(--falcon-dark-text-emphasis); + --falcon-list-group-bg: var(--falcon-dark-bg-subtle); + --falcon-list-group-border-color: var(--falcon-dark-border-subtle); + --falcon-list-group-action-hover-color: var(--falcon-emphasis-color); + --falcon-list-group-action-hover-bg: var(--falcon-dark-border-subtle); + --falcon-list-group-action-active-color: var(--falcon-emphasis-color); + --falcon-list-group-action-active-bg: var(--falcon-dark-border-subtle); + --falcon-list-group-active-color: var(--falcon-dark-bg-subtle); + --falcon-list-group-active-bg: var(--falcon-dark-text-emphasis); + --falcon-list-group-active-border-color: var(--falcon-dark-text-emphasis); +} + +.btn-close { + --falcon-btn-close-color: #000; + --falcon-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%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"); + --falcon-btn-close-opacity: 0.5; + --falcon-btn-close-hover-opacity: 0.75; + --falcon-btn-close-focus-shadow: 0 0 0 0.25rem rgba(44, 123, 229, 0.25); + --falcon-btn-close-focus-opacity: 1; + --falcon-btn-close-disabled-opacity: 0.25; + box-sizing: content-box; + width: 1em; + height: 1em; + padding: 0.25em 0.25em; + color: var(--falcon-btn-close-color); + background: transparent var(--falcon-btn-close-bg) center/1em auto no-repeat; + filter: var(--falcon-btn-close-filter); + border: 0; + border-radius: 0.25rem; + opacity: var(--falcon-btn-close-opacity); +} +.btn-close:hover { + color: var(--falcon-btn-close-color); + text-decoration: none; + opacity: var(--falcon-btn-close-hover-opacity); +} +.btn-close:focus { + outline: 0; + box-shadow: var(--falcon-btn-close-focus-shadow); + opacity: var(--falcon-btn-close-focus-opacity); +} +.btn-close:disabled, .btn-close.disabled { + pointer-events: none; + user-select: none; + opacity: var(--falcon-btn-close-disabled-opacity); +} + +.btn-close-white { + --falcon-btn-close-filter: invert(1) grayscale(100%) brightness(200%); +} + +:root, +[data-bs-theme=light] { + --falcon-btn-close-filter: ; +} + +[data-bs-theme=dark] { + --falcon-btn-close-filter: invert(1) grayscale(100%) brightness(200%); +} + +.toast { + --falcon-toast-zindex: 1090; + --falcon-toast-padding-x: 0.75rem; + --falcon-toast-padding-y: 0.5rem; + --falcon-toast-spacing: 2rem; + --falcon-toast-max-width: 350px; + --falcon-toast-font-size: 0.875rem; + --falcon-toast-color: var(--falcon-gray-600); + --falcon-toast-bg: var(--falcon-toast-bg-global); + --falcon-toast-border-width: var(--falcon-border-width); + --falcon-toast-border-color: var(--falcon-border-color); + --falcon-toast-border-radius: var(--falcon-border-radius); + --falcon-toast-box-shadow: var(--falcon-box-shadow); + --falcon-toast-header-color: var(--falcon-gray-600); + --falcon-toast-header-bg: var(--falcon-toast-bg-global); + --falcon-toast-header-border-color: rgba(0, 0, 0, 0.05); + width: var(--falcon-toast-max-width); + max-width: 100%; + font-size: var(--falcon-toast-font-size); + color: var(--falcon-toast-color); + pointer-events: auto; + background-color: var(--falcon-toast-bg); + background-clip: padding-box; + border: var(--falcon-toast-border-width) solid var(--falcon-toast-border-color); + box-shadow: var(--falcon-toast-box-shadow); + border-radius: var(--falcon-toast-border-radius); +} +.toast.showing { + opacity: 0; +} +.toast:not(.show) { + display: none; +} + +.toast-container { + --falcon-toast-zindex: 1090; + position: absolute; + z-index: var(--falcon-toast-zindex); + width: max-content; + max-width: 100%; + pointer-events: none; +} +.toast-container > :not(:last-child) { + margin-bottom: var(--falcon-toast-spacing); +} + +.toast-header { + display: flex; + align-items: center; + padding: var(--falcon-toast-padding-y) var(--falcon-toast-padding-x); + color: var(--falcon-toast-header-color); + background-color: var(--falcon-toast-header-bg); + background-clip: padding-box; + border-bottom: var(--falcon-toast-border-width) solid var(--falcon-toast-header-border-color); + border-top-left-radius: calc(var(--falcon-toast-border-radius) - var(--falcon-toast-border-width)); + border-top-right-radius: calc(var(--falcon-toast-border-radius) - var(--falcon-toast-border-width)); +} +.toast-header .btn-close { + margin-right: calc(-0.5 * var(--falcon-toast-padding-x)); + margin-left: var(--falcon-toast-padding-x); +} + +.toast-body { + padding: var(--falcon-toast-padding-x); + word-wrap: break-word; +} + +.modal { + --falcon-modal-zindex: 1055; + --falcon-modal-width: 500px; + --falcon-modal-padding: 1rem; + --falcon-modal-margin: 0.5rem; + --falcon-modal-color: var(--falcon-body-color); + --falcon-modal-bg: var(--falcon-emphasis-bg); + --falcon-modal-border-color: var(--falcon-border-color-translucent); + --falcon-modal-border-width: var(--falcon-border-width); + --falcon-modal-border-radius: 0.375rem; + --falcon-modal-box-shadow: var(--falcon-box-shadow-sm); + --falcon-modal-inner-border-radius: calc(0.375rem - (var(--falcon-border-width))); + --falcon-modal-header-padding-x: 1rem; + --falcon-modal-header-padding-y: 1rem; + --falcon-modal-header-padding: 1rem 1rem; + --falcon-modal-header-border-color: var(--falcon-border-color); + --falcon-modal-header-border-width: var(--falcon-border-width); + --falcon-modal-title-line-height: 1.5; + --falcon-modal-footer-gap: 0.5rem; + --falcon-modal-footer-bg: ; + --falcon-modal-footer-border-color: var(--falcon-border-color); + --falcon-modal-footer-border-width: var(--falcon-border-width); + position: fixed; + top: 0; + left: 0; + z-index: var(--falcon-modal-zindex); + display: none; + width: 100%; + height: 100%; + overflow-x: hidden; + overflow-y: auto; + outline: 0; +} + +.modal-dialog { + position: relative; + width: auto; + margin: var(--falcon-modal-margin); + pointer-events: none; +} +.modal.fade .modal-dialog { + transform: translate(0, -50px); + transition: transform 0.3s ease-out; +} +@media (prefers-reduced-motion: reduce) { + .modal.fade .modal-dialog { + transition: none; + } +} +.modal.show .modal-dialog { + transform: none; +} +.modal.modal-static .modal-dialog { + transform: scale(1.02); +} + +.modal-dialog-scrollable { + height: calc(100% - var(--falcon-modal-margin) * 2); +} +.modal-dialog-scrollable .modal-content { + max-height: 100%; + overflow: hidden; +} +.modal-dialog-scrollable .modal-body { + overflow-y: auto; +} + +.modal-dialog-centered { + display: flex; + align-items: center; + min-height: calc(100% - var(--falcon-modal-margin) * 2); +} + +.modal-content { + position: relative; + display: flex; + flex-direction: column; + width: 100%; + color: var(--falcon-modal-color); + pointer-events: auto; + background-color: var(--falcon-modal-bg); + background-clip: padding-box; + border: var(--falcon-modal-border-width) solid var(--falcon-modal-border-color); + border-radius: var(--falcon-modal-border-radius); + box-shadow: var(--falcon-modal-box-shadow); + outline: 0; +} + +.modal-backdrop { + --falcon-backdrop-zindex: 1050; + --falcon-backdrop-bg: #000; + --falcon-backdrop-opacity: 0.5; + position: fixed; + top: 0; + left: 0; + z-index: var(--falcon-backdrop-zindex); + width: 100vw; + height: 100vh; + background-color: var(--falcon-backdrop-bg); +} +.modal-backdrop.fade { + opacity: 0; +} +.modal-backdrop.show { + opacity: var(--falcon-backdrop-opacity); +} + +.modal-header { + display: flex; + flex-shrink: 0; + align-items: center; + padding: var(--falcon-modal-header-padding); + border-bottom: var(--falcon-modal-header-border-width) solid var(--falcon-modal-header-border-color); + border-top-left-radius: var(--falcon-modal-inner-border-radius); + border-top-right-radius: var(--falcon-modal-inner-border-radius); +} +.modal-header .btn-close { + padding: calc(var(--falcon-modal-header-padding-y) * 0.5) calc(var(--falcon-modal-header-padding-x) * 0.5); + margin-top: calc(-0.5 * var(--falcon-modal-header-padding-y)); + margin-right: calc(-0.5 * var(--falcon-modal-header-padding-x)); + margin-bottom: calc(-0.5 * var(--falcon-modal-header-padding-y)); + margin-left: auto; +} + +.modal-title { + margin-bottom: 0; + line-height: var(--falcon-modal-title-line-height); +} + +.modal-body { + position: relative; + flex: 1 1 auto; + padding: var(--falcon-modal-padding); +} + +.modal-footer { + display: flex; + flex-shrink: 0; + flex-wrap: wrap; + align-items: center; + justify-content: flex-end; + padding: calc(var(--falcon-modal-padding) - var(--falcon-modal-footer-gap) * 0.5); + background-color: var(--falcon-modal-footer-bg); + border-top: var(--falcon-modal-footer-border-width) solid var(--falcon-modal-footer-border-color); + border-bottom-right-radius: var(--falcon-modal-inner-border-radius); + border-bottom-left-radius: var(--falcon-modal-inner-border-radius); +} +.modal-footer > * { + margin: calc(var(--falcon-modal-footer-gap) * 0.5); +} + +@media (min-width: 576px) { + .modal { + --falcon-modal-margin: 1.75rem; + --falcon-modal-box-shadow: var(--falcon-box-shadow); + } + .modal-dialog { + max-width: var(--falcon-modal-width); + margin-right: auto; + margin-left: auto; + } + .modal-sm { + --falcon-modal-width: 300px; + } +} +@media (min-width: 992px) { + .modal-lg, + .modal-xl { + --falcon-modal-width: 800px; + } +} +@media (min-width: 1200px) { + .modal-xl { + --falcon-modal-width: 1140px; + } +} +.modal-fullscreen { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; +} +.modal-fullscreen .modal-content { + height: 100%; + border: 0; + border-radius: 0; +} +.modal-fullscreen .modal-header, +.modal-fullscreen .modal-footer { + border-radius: 0; +} +.modal-fullscreen .modal-body { + overflow-y: auto; +} + +@media (max-width: 575.98px) { + .modal-fullscreen-sm-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-sm-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-sm-down .modal-header, + .modal-fullscreen-sm-down .modal-footer { + border-radius: 0; + } + .modal-fullscreen-sm-down .modal-body { + overflow-y: auto; + } +} +@media (max-width: 767.98px) { + .modal-fullscreen-md-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-md-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-md-down .modal-header, + .modal-fullscreen-md-down .modal-footer { + border-radius: 0; + } + .modal-fullscreen-md-down .modal-body { + overflow-y: auto; + } +} +@media (max-width: 991.98px) { + .modal-fullscreen-lg-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-lg-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-lg-down .modal-header, + .modal-fullscreen-lg-down .modal-footer { + border-radius: 0; + } + .modal-fullscreen-lg-down .modal-body { + overflow-y: auto; + } +} +@media (max-width: 1199.98px) { + .modal-fullscreen-xl-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-xl-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-xl-down .modal-header, + .modal-fullscreen-xl-down .modal-footer { + border-radius: 0; + } + .modal-fullscreen-xl-down .modal-body { + overflow-y: auto; + } +} +@media (max-width: 1539.98px) { + .modal-fullscreen-xxl-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-xxl-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-xxl-down .modal-header, + .modal-fullscreen-xxl-down .modal-footer { + border-radius: 0; + } + .modal-fullscreen-xxl-down .modal-body { + overflow-y: auto; + } +} +.tooltip { + --falcon-tooltip-zindex: 1080; + --falcon-tooltip-max-width: 200px; + --falcon-tooltip-padding-x: 0.5rem; + --falcon-tooltip-padding-y: 0.5rem; + --falcon-tooltip-margin: ; + --falcon-tooltip-font-size: 0.8333333333rem; + --falcon-tooltip-color: #fff; + --falcon-tooltip-bg: #000; + --falcon-tooltip-border-radius: var(--falcon-border-radius); + --falcon-tooltip-opacity: 0.9; + --falcon-tooltip-arrow-width: 0.8rem; + --falcon-tooltip-arrow-height: 0.4rem; + z-index: var(--falcon-tooltip-zindex); + display: block; + margin: var(--falcon-tooltip-margin); + font-family: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + white-space: normal; + word-spacing: normal; + line-break: auto; + font-size: var(--falcon-tooltip-font-size); + word-wrap: break-word; + opacity: 0; +} +.tooltip.show { + opacity: var(--falcon-tooltip-opacity); +} +.tooltip .tooltip-arrow { + display: block; + width: var(--falcon-tooltip-arrow-width); + height: var(--falcon-tooltip-arrow-height); +} +.tooltip .tooltip-arrow::before { + position: absolute; + content: ""; + border-color: transparent; + border-style: solid; +} + +.bs-tooltip-top .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow { + bottom: calc(-1 * var(--falcon-tooltip-arrow-height)); +} +.bs-tooltip-top .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before { + top: -1px; + border-width: var(--falcon-tooltip-arrow-height) calc(var(--falcon-tooltip-arrow-width) * 0.5) 0; + border-top-color: var(--falcon-tooltip-bg); +} + +/* rtl:begin:ignore */ +.bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow { + left: calc(-1 * var(--falcon-tooltip-arrow-height)); + width: var(--falcon-tooltip-arrow-height); + height: var(--falcon-tooltip-arrow-width); +} +.bs-tooltip-end .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before { + right: -1px; + border-width: calc(var(--falcon-tooltip-arrow-width) * 0.5) var(--falcon-tooltip-arrow-height) calc(var(--falcon-tooltip-arrow-width) * 0.5) 0; + border-right-color: var(--falcon-tooltip-bg); +} + +/* rtl:end:ignore */ +.bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow { + top: calc(-1 * var(--falcon-tooltip-arrow-height)); +} +.bs-tooltip-bottom .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before { + bottom: -1px; + border-width: 0 calc(var(--falcon-tooltip-arrow-width) * 0.5) var(--falcon-tooltip-arrow-height); + border-bottom-color: var(--falcon-tooltip-bg); +} + +/* rtl:begin:ignore */ +.bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow { + right: calc(-1 * var(--falcon-tooltip-arrow-height)); + width: var(--falcon-tooltip-arrow-height); + height: var(--falcon-tooltip-arrow-width); +} +.bs-tooltip-start .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before { + left: -1px; + border-width: calc(var(--falcon-tooltip-arrow-width) * 0.5) 0 calc(var(--falcon-tooltip-arrow-width) * 0.5) var(--falcon-tooltip-arrow-height); + border-left-color: var(--falcon-tooltip-bg); +} + +/* rtl:end:ignore */ +.tooltip-inner { + max-width: var(--falcon-tooltip-max-width); + padding: var(--falcon-tooltip-padding-y) var(--falcon-tooltip-padding-x); + color: var(--falcon-tooltip-color); + text-align: center; + background-color: var(--falcon-tooltip-bg); + border-radius: var(--falcon-tooltip-border-radius); +} + +.popover { + --falcon-popover-zindex: 1070; + --falcon-popover-max-width: 276px; + --falcon-popover-font-size: 0.875rem; + --falcon-popover-bg: var(--falcon-quaternary-bg); + --falcon-popover-border-width: var(--falcon-border-width); + --falcon-popover-border-color: var(--falcon-border-color); + --falcon-popover-border-radius: var(--falcon-border-radius-lg); + --falcon-popover-inner-border-radius: calc(var(--falcon-border-radius-lg) - var(--falcon-border-width)); + --falcon-popover-box-shadow: var(--falcon-box-shadow); + --falcon-popover-header-padding-x: 1rem; + --falcon-popover-header-padding-y: 0.5rem; + --falcon-popover-header-font-size: 1rem; + --falcon-popover-header-color: var(--falcon-secondary-color); + --falcon-popover-header-bg: var(--falcon-popover-header-bg-global); + --falcon-popover-body-padding-x: 1rem; + --falcon-popover-body-padding-y: 1rem; + --falcon-popover-body-color: #5e6e82; + --falcon-popover-arrow-width: 1rem; + --falcon-popover-arrow-height: 0.5rem; + --falcon-popover-arrow-border: var(--falcon-popover-border-color); + z-index: var(--falcon-popover-zindex); + display: block; + max-width: var(--falcon-popover-max-width); + font-family: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + white-space: normal; + word-spacing: normal; + line-break: auto; + font-size: var(--falcon-popover-font-size); + word-wrap: break-word; + background-color: var(--falcon-popover-bg); + background-clip: padding-box; + border: var(--falcon-popover-border-width) solid var(--falcon-popover-border-color); + border-radius: var(--falcon-popover-border-radius); + box-shadow: var(--falcon-popover-box-shadow); +} +.popover .popover-arrow { + display: block; + width: var(--falcon-popover-arrow-width); + height: var(--falcon-popover-arrow-height); +} +.popover .popover-arrow::before, .popover .popover-arrow::after { + position: absolute; + display: block; + content: ""; + border-color: transparent; + border-style: solid; + border-width: 0; +} + +.bs-popover-top > .popover-arrow, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow { + bottom: calc(-1 * (var(--falcon-popover-arrow-height)) - var(--falcon-popover-border-width)); +} +.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before, .bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after { + border-width: var(--falcon-popover-arrow-height) calc(var(--falcon-popover-arrow-width) * 0.5) 0; +} +.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before { + bottom: 0; + border-top-color: var(--falcon-popover-arrow-border); +} +.bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after { + bottom: var(--falcon-popover-border-width); + border-top-color: var(--falcon-popover-bg); +} + +/* rtl:begin:ignore */ +.bs-popover-end > .popover-arrow, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow { + left: calc(-1 * (var(--falcon-popover-arrow-height)) - var(--falcon-popover-border-width)); + width: var(--falcon-popover-arrow-height); + height: var(--falcon-popover-arrow-width); +} +.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before, .bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after { + border-width: calc(var(--falcon-popover-arrow-width) * 0.5) var(--falcon-popover-arrow-height) calc(var(--falcon-popover-arrow-width) * 0.5) 0; +} +.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before { + left: 0; + border-right-color: var(--falcon-popover-arrow-border); +} +.bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after { + left: var(--falcon-popover-border-width); + border-right-color: var(--falcon-popover-bg); +} + +/* rtl:end:ignore */ +.bs-popover-bottom > .popover-arrow, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow { + top: calc(-1 * (var(--falcon-popover-arrow-height)) - var(--falcon-popover-border-width)); +} +.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before, .bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after { + border-width: 0 calc(var(--falcon-popover-arrow-width) * 0.5) var(--falcon-popover-arrow-height); +} +.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before { + top: 0; + border-bottom-color: var(--falcon-popover-arrow-border); +} +.bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after { + top: var(--falcon-popover-border-width); + border-bottom-color: var(--falcon-popover-bg); +} +.bs-popover-bottom .popover-header::before, .bs-popover-auto[data-popper-placement^=bottom] .popover-header::before { + position: absolute; + top: 0; + left: 50%; + display: block; + width: var(--falcon-popover-arrow-width); + margin-left: calc(-0.5 * var(--falcon-popover-arrow-width)); + content: ""; + border-bottom: var(--falcon-popover-border-width) solid var(--falcon-popover-header-bg); +} + +/* rtl:begin:ignore */ +.bs-popover-start > .popover-arrow, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow { + right: calc(-1 * (var(--falcon-popover-arrow-height)) - var(--falcon-popover-border-width)); + width: var(--falcon-popover-arrow-height); + height: var(--falcon-popover-arrow-width); +} +.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before, .bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after { + border-width: calc(var(--falcon-popover-arrow-width) * 0.5) 0 calc(var(--falcon-popover-arrow-width) * 0.5) var(--falcon-popover-arrow-height); +} +.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before { + right: 0; + border-left-color: var(--falcon-popover-arrow-border); +} +.bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after { + right: var(--falcon-popover-border-width); + border-left-color: var(--falcon-popover-bg); +} + +/* rtl:end:ignore */ +.popover-header { + padding: var(--falcon-popover-header-padding-y) var(--falcon-popover-header-padding-x); + margin-bottom: 0; + font-size: var(--falcon-popover-header-font-size); + color: var(--falcon-popover-header-color); + background-color: var(--falcon-popover-header-bg); + border-bottom: var(--falcon-popover-border-width) solid var(--falcon-popover-border-color); + border-top-left-radius: var(--falcon-popover-inner-border-radius); + border-top-right-radius: var(--falcon-popover-inner-border-radius); +} +.popover-header:empty { + display: none; +} + +.popover-body { + padding: var(--falcon-popover-body-padding-y) var(--falcon-popover-body-padding-x); + color: var(--falcon-popover-body-color); +} + +.carousel { + position: relative; +} + +.carousel.pointer-event { + touch-action: pan-y; +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} +.carousel-inner::after { + display: block; + clear: both; + content: ""; +} + +.carousel-item { + position: relative; + display: none; + float: left; + width: 100%; + margin-right: -100%; + backface-visibility: hidden; + transition: transform 0.8s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .carousel-item { + transition: none; + } +} + +.carousel-item.active, +.carousel-item-next, +.carousel-item-prev { + display: block; +} + +.carousel-item-next:not(.carousel-item-start), +.active.carousel-item-end { + transform: translateX(100%); +} + +.carousel-item-prev:not(.carousel-item-end), +.active.carousel-item-start { + transform: translateX(-100%); +} + +.carousel-fade .carousel-item { + opacity: 0; + transition-property: opacity; + transform: none; +} +.carousel-fade .carousel-item.active, +.carousel-fade .carousel-item-next.carousel-item-start, +.carousel-fade .carousel-item-prev.carousel-item-end { + z-index: 1; + opacity: 1; +} +.carousel-fade .active.carousel-item-start, +.carousel-fade .active.carousel-item-end { + z-index: 0; + opacity: 0; + transition: opacity 0s 0.8s; +} +@media (prefers-reduced-motion: reduce) { + .carousel-fade .active.carousel-item-start, + .carousel-fade .active.carousel-item-end { + transition: none; + } +} + +.carousel-control-prev, +.carousel-control-next { + position: absolute; + top: 0; + bottom: 0; + z-index: 1; + display: flex; + align-items: center; + justify-content: center; + width: 15%; + padding: 0; + color: #fff; + text-align: center; + background: none; + filter: var(--falcon-carousel-control-icon-filter); + border: 0; + opacity: 0.5; + transition: opacity 0.15s ease; +} +@media (prefers-reduced-motion: reduce) { + .carousel-control-prev, + .carousel-control-next { + transition: none; + } +} +.carousel-control-prev:hover, .carousel-control-prev:focus, +.carousel-control-next:hover, +.carousel-control-next:focus { + color: #fff; + text-decoration: none; + outline: 0; + opacity: 0.9; +} + +.carousel-control-prev { + left: 0; +} + +.carousel-control-next { + right: 0; +} + +.carousel-control-prev-icon, +.carousel-control-next-icon { + display: inline-block; + width: 2rem; + height: 2rem; + background-repeat: no-repeat; + background-position: 50%; + background-size: 100% 100%; +} + +.carousel-control-prev-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0'/%3e%3c/svg%3e") /*rtl:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708'/%3e%3c/svg%3e")*/; +} + +.carousel-control-next-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708'/%3e%3c/svg%3e") /*rtl:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0'/%3e%3c/svg%3e")*/; +} + +.carousel-indicators { + position: absolute; + right: 0; + bottom: 0; + left: 0; + z-index: 2; + display: flex; + justify-content: center; + padding: 0; + margin-right: 15%; + margin-bottom: 1rem; + margin-left: 15%; +} +.carousel-indicators [data-bs-target] { + box-sizing: content-box; + flex: 0 1 auto; + width: 30px; + height: 3px; + padding: 0; + margin-right: 3px; + margin-left: 3px; + text-indent: -999px; + cursor: pointer; + background-color: var(--falcon-carousel-indicator-active-bg); + background-clip: padding-box; + border: 0; + border-top: 10px solid transparent; + border-bottom: 10px solid transparent; + opacity: 0.5; + transition: opacity 0.6s ease; +} +@media (prefers-reduced-motion: reduce) { + .carousel-indicators [data-bs-target] { + transition: none; + } +} +.carousel-indicators .active { + opacity: 1; +} + +.carousel-caption { + position: absolute; + right: 15%; + bottom: 1.25rem; + left: 15%; + padding-top: 1.25rem; + padding-bottom: 1.25rem; + color: var(--falcon-carousel-caption-color); + text-align: center; +} + +.carousel-dark { + --falcon-carousel-indicator-active-bg: #000; + --falcon-carousel-caption-color: #000; + --falcon-carousel-control-icon-filter: invert(1) grayscale(100); +} + +:root, +[data-bs-theme=light] { + --falcon-carousel-indicator-active-bg: #fff; + --falcon-carousel-caption-color: #fff; + --falcon-carousel-control-icon-filter: ; +} + +[data-bs-theme=dark] { + --falcon-carousel-indicator-active-bg: #000; + --falcon-carousel-caption-color: #000; + --falcon-carousel-control-icon-filter: invert(1) grayscale(100); +} + +.spinner-grow, +.spinner-border { + display: inline-block; + flex-shrink: 0; + width: var(--falcon-spinner-width); + height: var(--falcon-spinner-height); + vertical-align: var(--falcon-spinner-vertical-align); + border-radius: 50%; + animation: var(--falcon-spinner-animation-speed) linear infinite var(--falcon-spinner-animation-name); +} + +@keyframes spinner-border { + to { + transform: rotate(360deg) /* rtl:ignore */; + } +} +.spinner-border { + --falcon-spinner-width: 2rem; + --falcon-spinner-height: 2rem; + --falcon-spinner-vertical-align: -0.125em; + --falcon-spinner-border-width: 0.25em; + --falcon-spinner-animation-speed: 0.75s; + --falcon-spinner-animation-name: spinner-border; + border: var(--falcon-spinner-border-width) solid currentcolor; + border-right-color: transparent; +} + +.spinner-border-sm { + --falcon-spinner-width: 1.35rem; + --falcon-spinner-height: 1.35rem; + --falcon-spinner-border-width: 0.2em; +} + +@keyframes spinner-grow { + 0% { + transform: scale(0); + } + 50% { + opacity: 1; + transform: none; + } +} +.spinner-grow { + --falcon-spinner-width: 2rem; + --falcon-spinner-height: 2rem; + --falcon-spinner-vertical-align: -0.125em; + --falcon-spinner-animation-speed: 0.75s; + --falcon-spinner-animation-name: spinner-grow; + background-color: currentcolor; + opacity: 0; +} + +.spinner-grow-sm { + --falcon-spinner-width: 1.35rem; + --falcon-spinner-height: 1.35rem; +} + +@media (prefers-reduced-motion: reduce) { + .spinner-border, + .spinner-grow { + --falcon-spinner-animation-speed: 1.5s; + } +} +.offcanvas, .offcanvas-xxl, .offcanvas-xl, .offcanvas-lg, .offcanvas-md, .offcanvas-sm { + --falcon-offcanvas-zindex: 1045; + --falcon-offcanvas-width: 400px; + --falcon-offcanvas-height: 30vh; + --falcon-offcanvas-padding-x: 1rem; + --falcon-offcanvas-padding-y: 1rem; + --falcon-offcanvas-color: var(--falcon-body-color); + --falcon-offcanvas-bg: var(--falcon-quaternary-bg); + --falcon-offcanvas-border-width: var(--falcon-border-width); + --falcon-offcanvas-border-color: var(--falcon-border-color); + --falcon-offcanvas-box-shadow: var(--falcon-box-shadow-sm); + --falcon-offcanvas-transition: transform 0.3s ease-in-out; + --falcon-offcanvas-title-line-height: 1.5; +} + +@media (max-width: 575.98px) { + .offcanvas-sm { + position: fixed; + bottom: 0; + z-index: var(--falcon-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--falcon-offcanvas-color); + visibility: hidden; + background-color: var(--falcon-offcanvas-bg); + background-clip: padding-box; + outline: 0; + box-shadow: var(--falcon-offcanvas-box-shadow); + transition: var(--falcon-offcanvas-transition); + } +} +@media (max-width: 575.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-sm { + transition: none; + } +} +@media (max-width: 575.98px) { + .offcanvas-sm.offcanvas-start { + top: 0; + left: 0; + width: var(--falcon-offcanvas-width); + border-right: var(--falcon-offcanvas-border-width) solid var(--falcon-offcanvas-border-color); + transform: translateX(-100%); + } + .offcanvas-sm.offcanvas-end { + top: 0; + right: 0; + width: var(--falcon-offcanvas-width); + border-left: var(--falcon-offcanvas-border-width) solid var(--falcon-offcanvas-border-color); + transform: translateX(100%); + } + .offcanvas-sm.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--falcon-offcanvas-height); + max-height: 100%; + border-bottom: var(--falcon-offcanvas-border-width) solid var(--falcon-offcanvas-border-color); + transform: translateY(-100%); + } + .offcanvas-sm.offcanvas-bottom { + right: 0; + left: 0; + height: var(--falcon-offcanvas-height); + max-height: 100%; + border-top: var(--falcon-offcanvas-border-width) solid var(--falcon-offcanvas-border-color); + transform: translateY(100%); + } + .offcanvas-sm.showing, .offcanvas-sm.show:not(.hiding) { + transform: none; + } + .offcanvas-sm.showing, .offcanvas-sm.hiding, .offcanvas-sm.show { + visibility: visible; + } +} +@media (min-width: 576px) { + .offcanvas-sm { + --falcon-offcanvas-height: auto; + --falcon-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-sm .offcanvas-header { + display: none; + } + .offcanvas-sm .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} + +@media (max-width: 767.98px) { + .offcanvas-md { + position: fixed; + bottom: 0; + z-index: var(--falcon-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--falcon-offcanvas-color); + visibility: hidden; + background-color: var(--falcon-offcanvas-bg); + background-clip: padding-box; + outline: 0; + box-shadow: var(--falcon-offcanvas-box-shadow); + transition: var(--falcon-offcanvas-transition); + } +} +@media (max-width: 767.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-md { + transition: none; + } +} +@media (max-width: 767.98px) { + .offcanvas-md.offcanvas-start { + top: 0; + left: 0; + width: var(--falcon-offcanvas-width); + border-right: var(--falcon-offcanvas-border-width) solid var(--falcon-offcanvas-border-color); + transform: translateX(-100%); + } + .offcanvas-md.offcanvas-end { + top: 0; + right: 0; + width: var(--falcon-offcanvas-width); + border-left: var(--falcon-offcanvas-border-width) solid var(--falcon-offcanvas-border-color); + transform: translateX(100%); + } + .offcanvas-md.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--falcon-offcanvas-height); + max-height: 100%; + border-bottom: var(--falcon-offcanvas-border-width) solid var(--falcon-offcanvas-border-color); + transform: translateY(-100%); + } + .offcanvas-md.offcanvas-bottom { + right: 0; + left: 0; + height: var(--falcon-offcanvas-height); + max-height: 100%; + border-top: var(--falcon-offcanvas-border-width) solid var(--falcon-offcanvas-border-color); + transform: translateY(100%); + } + .offcanvas-md.showing, .offcanvas-md.show:not(.hiding) { + transform: none; + } + .offcanvas-md.showing, .offcanvas-md.hiding, .offcanvas-md.show { + visibility: visible; + } +} +@media (min-width: 768px) { + .offcanvas-md { + --falcon-offcanvas-height: auto; + --falcon-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-md .offcanvas-header { + display: none; + } + .offcanvas-md .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} + +@media (max-width: 991.98px) { + .offcanvas-lg { + position: fixed; + bottom: 0; + z-index: var(--falcon-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--falcon-offcanvas-color); + visibility: hidden; + background-color: var(--falcon-offcanvas-bg); + background-clip: padding-box; + outline: 0; + box-shadow: var(--falcon-offcanvas-box-shadow); + transition: var(--falcon-offcanvas-transition); + } +} +@media (max-width: 991.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-lg { + transition: none; + } +} +@media (max-width: 991.98px) { + .offcanvas-lg.offcanvas-start { + top: 0; + left: 0; + width: var(--falcon-offcanvas-width); + border-right: var(--falcon-offcanvas-border-width) solid var(--falcon-offcanvas-border-color); + transform: translateX(-100%); + } + .offcanvas-lg.offcanvas-end { + top: 0; + right: 0; + width: var(--falcon-offcanvas-width); + border-left: var(--falcon-offcanvas-border-width) solid var(--falcon-offcanvas-border-color); + transform: translateX(100%); + } + .offcanvas-lg.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--falcon-offcanvas-height); + max-height: 100%; + border-bottom: var(--falcon-offcanvas-border-width) solid var(--falcon-offcanvas-border-color); + transform: translateY(-100%); + } + .offcanvas-lg.offcanvas-bottom { + right: 0; + left: 0; + height: var(--falcon-offcanvas-height); + max-height: 100%; + border-top: var(--falcon-offcanvas-border-width) solid var(--falcon-offcanvas-border-color); + transform: translateY(100%); + } + .offcanvas-lg.showing, .offcanvas-lg.show:not(.hiding) { + transform: none; + } + .offcanvas-lg.showing, .offcanvas-lg.hiding, .offcanvas-lg.show { + visibility: visible; + } +} +@media (min-width: 992px) { + .offcanvas-lg { + --falcon-offcanvas-height: auto; + --falcon-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-lg .offcanvas-header { + display: none; + } + .offcanvas-lg .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} + +@media (max-width: 1199.98px) { + .offcanvas-xl { + position: fixed; + bottom: 0; + z-index: var(--falcon-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--falcon-offcanvas-color); + visibility: hidden; + background-color: var(--falcon-offcanvas-bg); + background-clip: padding-box; + outline: 0; + box-shadow: var(--falcon-offcanvas-box-shadow); + transition: var(--falcon-offcanvas-transition); + } +} +@media (max-width: 1199.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-xl { + transition: none; + } +} +@media (max-width: 1199.98px) { + .offcanvas-xl.offcanvas-start { + top: 0; + left: 0; + width: var(--falcon-offcanvas-width); + border-right: var(--falcon-offcanvas-border-width) solid var(--falcon-offcanvas-border-color); + transform: translateX(-100%); + } + .offcanvas-xl.offcanvas-end { + top: 0; + right: 0; + width: var(--falcon-offcanvas-width); + border-left: var(--falcon-offcanvas-border-width) solid var(--falcon-offcanvas-border-color); + transform: translateX(100%); + } + .offcanvas-xl.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--falcon-offcanvas-height); + max-height: 100%; + border-bottom: var(--falcon-offcanvas-border-width) solid var(--falcon-offcanvas-border-color); + transform: translateY(-100%); + } + .offcanvas-xl.offcanvas-bottom { + right: 0; + left: 0; + height: var(--falcon-offcanvas-height); + max-height: 100%; + border-top: var(--falcon-offcanvas-border-width) solid var(--falcon-offcanvas-border-color); + transform: translateY(100%); + } + .offcanvas-xl.showing, .offcanvas-xl.show:not(.hiding) { + transform: none; + } + .offcanvas-xl.showing, .offcanvas-xl.hiding, .offcanvas-xl.show { + visibility: visible; + } +} +@media (min-width: 1200px) { + .offcanvas-xl { + --falcon-offcanvas-height: auto; + --falcon-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-xl .offcanvas-header { + display: none; + } + .offcanvas-xl .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} + +@media (max-width: 1539.98px) { + .offcanvas-xxl { + position: fixed; + bottom: 0; + z-index: var(--falcon-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--falcon-offcanvas-color); + visibility: hidden; + background-color: var(--falcon-offcanvas-bg); + background-clip: padding-box; + outline: 0; + box-shadow: var(--falcon-offcanvas-box-shadow); + transition: var(--falcon-offcanvas-transition); + } +} +@media (max-width: 1539.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-xxl { + transition: none; + } +} +@media (max-width: 1539.98px) { + .offcanvas-xxl.offcanvas-start { + top: 0; + left: 0; + width: var(--falcon-offcanvas-width); + border-right: var(--falcon-offcanvas-border-width) solid var(--falcon-offcanvas-border-color); + transform: translateX(-100%); + } + .offcanvas-xxl.offcanvas-end { + top: 0; + right: 0; + width: var(--falcon-offcanvas-width); + border-left: var(--falcon-offcanvas-border-width) solid var(--falcon-offcanvas-border-color); + transform: translateX(100%); + } + .offcanvas-xxl.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--falcon-offcanvas-height); + max-height: 100%; + border-bottom: var(--falcon-offcanvas-border-width) solid var(--falcon-offcanvas-border-color); + transform: translateY(-100%); + } + .offcanvas-xxl.offcanvas-bottom { + right: 0; + left: 0; + height: var(--falcon-offcanvas-height); + max-height: 100%; + border-top: var(--falcon-offcanvas-border-width) solid var(--falcon-offcanvas-border-color); + transform: translateY(100%); + } + .offcanvas-xxl.showing, .offcanvas-xxl.show:not(.hiding) { + transform: none; + } + .offcanvas-xxl.showing, .offcanvas-xxl.hiding, .offcanvas-xxl.show { + visibility: visible; + } +} +@media (min-width: 1540px) { + .offcanvas-xxl { + --falcon-offcanvas-height: auto; + --falcon-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-xxl .offcanvas-header { + display: none; + } + .offcanvas-xxl .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} + +.offcanvas { + position: fixed; + bottom: 0; + z-index: var(--falcon-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--falcon-offcanvas-color); + visibility: hidden; + background-color: var(--falcon-offcanvas-bg); + background-clip: padding-box; + outline: 0; + box-shadow: var(--falcon-offcanvas-box-shadow); + transition: var(--falcon-offcanvas-transition); +} +@media (prefers-reduced-motion: reduce) { + .offcanvas { + transition: none; + } +} +.offcanvas.offcanvas-start { + top: 0; + left: 0; + width: var(--falcon-offcanvas-width); + border-right: var(--falcon-offcanvas-border-width) solid var(--falcon-offcanvas-border-color); + transform: translateX(-100%); +} +.offcanvas.offcanvas-end { + top: 0; + right: 0; + width: var(--falcon-offcanvas-width); + border-left: var(--falcon-offcanvas-border-width) solid var(--falcon-offcanvas-border-color); + transform: translateX(100%); +} +.offcanvas.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--falcon-offcanvas-height); + max-height: 100%; + border-bottom: var(--falcon-offcanvas-border-width) solid var(--falcon-offcanvas-border-color); + transform: translateY(-100%); +} +.offcanvas.offcanvas-bottom { + right: 0; + left: 0; + height: var(--falcon-offcanvas-height); + max-height: 100%; + border-top: var(--falcon-offcanvas-border-width) solid var(--falcon-offcanvas-border-color); + transform: translateY(100%); +} +.offcanvas.showing, .offcanvas.show:not(.hiding) { + transform: none; +} +.offcanvas.showing, .offcanvas.hiding, .offcanvas.show { + visibility: visible; +} + +.offcanvas-backdrop { + position: fixed; + top: 0; + left: 0; + z-index: 1040; + width: 100vw; + height: 100vh; + background-color: #000; +} +.offcanvas-backdrop.fade { + opacity: 0; +} +.offcanvas-backdrop.show { + opacity: 0.5; +} + +.offcanvas-header { + display: flex; + align-items: center; + padding: var(--falcon-offcanvas-padding-y) var(--falcon-offcanvas-padding-x); +} +.offcanvas-header .btn-close { + padding: calc(var(--falcon-offcanvas-padding-y) * 0.5) calc(var(--falcon-offcanvas-padding-x) * 0.5); + margin-top: calc(-0.5 * var(--falcon-offcanvas-padding-y)); + margin-right: calc(-0.5 * var(--falcon-offcanvas-padding-x)); + margin-bottom: calc(-0.5 * var(--falcon-offcanvas-padding-y)); + margin-left: auto; +} + +.offcanvas-title { + margin-bottom: 0; + line-height: var(--falcon-offcanvas-title-line-height); +} + +.offcanvas-body { + flex-grow: 1; + padding: var(--falcon-offcanvas-padding-y) var(--falcon-offcanvas-padding-x); + overflow-y: auto; +} + +.placeholder { + display: inline-block; + min-height: 1em; + vertical-align: middle; + cursor: wait; + background-color: currentcolor; + opacity: 0.5; +} +.placeholder.btn::before, .tox .tox-menu__footer .placeholder.tox-button:last-child::before, +.tox .tox-dialog__footer .placeholder.tox-button:last-child::before, .tox .tox-menu__footer .placeholder.tox-button--secondary::before, +.tox .tox-dialog__footer .placeholder.tox-button--secondary::before { + display: inline-block; + content: ""; +} + +.placeholder-xs { + min-height: 0.6em; +} + +.placeholder-sm { + min-height: 0.8em; +} + +.placeholder-lg { + min-height: 1.2em; +} + +.placeholder-glow .placeholder { + animation: placeholder-glow 2s ease-in-out infinite; +} + +@keyframes placeholder-glow { + 50% { + opacity: 0.2; + } +} +.placeholder-wave { + mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%); + mask-size: 200% 100%; + animation: placeholder-wave 2s linear infinite; +} + +@keyframes placeholder-wave { + 100% { + mask-position: -200% 0%; + } +} +.clearfix::after { + display: block; + clear: both; + content: ""; +} + +.text-bg-primary { + color: #fff !important; + background-color: RGBA(var(--falcon-primary-rgb), var(--falcon-bg-opacity, 1)) !important; +} + +.text-bg-secondary { + color: #fff !important; + background-color: RGBA(var(--falcon-secondary-rgb), var(--falcon-bg-opacity, 1)) !important; +} + +.text-bg-success { + color: #fff !important; + background-color: RGBA(var(--falcon-success-rgb), var(--falcon-bg-opacity, 1)) !important; +} + +.text-bg-info { + color: #fff !important; + background-color: RGBA(var(--falcon-info-rgb), var(--falcon-bg-opacity, 1)) !important; +} + +.text-bg-warning { + color: #fff !important; + background-color: RGBA(var(--falcon-warning-rgb), var(--falcon-bg-opacity, 1)) !important; +} + +.text-bg-danger { + color: #fff !important; + background-color: RGBA(var(--falcon-danger-rgb), var(--falcon-bg-opacity, 1)) !important; +} + +.text-bg-light { + color: #4d5969 !important; + background-color: RGBA(var(--falcon-light-rgb), var(--falcon-bg-opacity, 1)) !important; +} + +.text-bg-dark { + color: #fff !important; + background-color: RGBA(var(--falcon-dark-rgb), var(--falcon-bg-opacity, 1)) !important; +} + +.link-primary { + color: RGBA(var(--falcon-primary-rgb), var(--falcon-link-opacity, 1)) !important; + text-decoration-color: RGBA(var(--falcon-primary-rgb), var(--falcon-link-underline-opacity, 1)) !important; +} +.link-primary:hover, .link-primary:focus { + color: RGBA(35, 98, 183, var(--falcon-link-opacity, 1)) !important; + text-decoration-color: RGBA(35, 98, 183, var(--falcon-link-underline-opacity, 1)) !important; +} + +.link-secondary { + color: RGBA(var(--falcon-secondary-rgb), var(--falcon-link-opacity, 1)) !important; + text-decoration-color: RGBA(var(--falcon-secondary-rgb), var(--falcon-link-underline-opacity, 1)) !important; +} +.link-secondary:hover, .link-secondary:focus { + color: RGBA(93, 103, 118, var(--falcon-link-opacity, 1)) !important; + text-decoration-color: RGBA(93, 103, 118, var(--falcon-link-underline-opacity, 1)) !important; +} + +.link-success { + color: RGBA(var(--falcon-success-rgb), var(--falcon-link-opacity, 1)) !important; + text-decoration-color: RGBA(var(--falcon-success-rgb), var(--falcon-link-underline-opacity, 1)) !important; +} +.link-success:hover, .link-success:focus { + color: RGBA(0, 168, 98, var(--falcon-link-opacity, 1)) !important; + text-decoration-color: RGBA(0, 168, 98, var(--falcon-link-underline-opacity, 1)) !important; +} + +.link-info { + color: RGBA(var(--falcon-info-rgb), var(--falcon-link-opacity, 1)) !important; + text-decoration-color: RGBA(var(--falcon-info-rgb), var(--falcon-link-underline-opacity, 1)) !important; +} +.link-info:hover, .link-info:focus { + color: RGBA(31, 150, 202, var(--falcon-link-opacity, 1)) !important; + text-decoration-color: RGBA(31, 150, 202, var(--falcon-link-underline-opacity, 1)) !important; +} + +.link-warning { + color: RGBA(var(--falcon-warning-rgb), var(--falcon-link-opacity, 1)) !important; + text-decoration-color: RGBA(var(--falcon-warning-rgb), var(--falcon-link-underline-opacity, 1)) !important; +} +.link-warning:hover, .link-warning:focus { + color: RGBA(196, 102, 50, var(--falcon-link-opacity, 1)) !important; + text-decoration-color: RGBA(196, 102, 50, var(--falcon-link-underline-opacity, 1)) !important; +} + +.link-danger { + color: RGBA(var(--falcon-danger-rgb), var(--falcon-link-opacity, 1)) !important; + text-decoration-color: RGBA(var(--falcon-danger-rgb), var(--falcon-link-underline-opacity, 1)) !important; +} +.link-danger:hover, .link-danger:focus { + color: RGBA(184, 44, 70, var(--falcon-link-opacity, 1)) !important; + text-decoration-color: RGBA(184, 44, 70, var(--falcon-link-underline-opacity, 1)) !important; +} + +.link-light { + color: RGBA(var(--falcon-light-rgb), var(--falcon-link-opacity, 1)) !important; + text-decoration-color: RGBA(var(--falcon-light-rgb), var(--falcon-link-underline-opacity, 1)) !important; +} +.link-light:hover, .link-light:focus { + color: RGBA(250, 251, 253, var(--falcon-link-opacity, 1)) !important; + text-decoration-color: RGBA(250, 251, 253, var(--falcon-link-underline-opacity, 1)) !important; +} + +.link-dark { + color: RGBA(var(--falcon-dark-rgb), var(--falcon-link-opacity, 1)) !important; + text-decoration-color: RGBA(var(--falcon-dark-rgb), var(--falcon-link-underline-opacity, 1)) !important; +} +.link-dark:hover, .link-dark:focus { + color: RGBA(9, 18, 31, var(--falcon-link-opacity, 1)) !important; + text-decoration-color: RGBA(9, 18, 31, var(--falcon-link-underline-opacity, 1)) !important; +} + +.link-body-emphasis { + color: RGBA(var(--falcon-emphasis-color-rgb), var(--falcon-link-opacity, 1)) !important; + text-decoration-color: RGBA(var(--falcon-emphasis-color-rgb), var(--falcon-link-underline-opacity, 1)) !important; +} +.link-body-emphasis:hover, .link-body-emphasis:focus { + color: RGBA(var(--falcon-emphasis-color-rgb), var(--falcon-link-opacity, 0.75)) !important; + text-decoration-color: RGBA(var(--falcon-emphasis-color-rgb), var(--falcon-link-underline-opacity, 0.75)) !important; +} + +.focus-ring:focus { + outline: 0; + box-shadow: var(--falcon-focus-ring-x, 0) var(--falcon-focus-ring-y, 0) var(--falcon-focus-ring-blur, 0) var(--falcon-focus-ring-width) var(--falcon-focus-ring-color); +} + +.icon-link { + display: inline-flex; + gap: 0.375rem; + align-items: center; + text-decoration-color: rgba(var(--falcon-link-color-rgb), var(--falcon-link-opacity, 0.5)); + text-underline-offset: 0.25em; + backface-visibility: hidden; +} +.icon-link > .bi { + flex-shrink: 0; + width: 1em; + height: 1em; + fill: currentcolor; + transition: 0.2s ease-in-out transform; +} +@media (prefers-reduced-motion: reduce) { + .icon-link > .bi { + transition: none; + } +} + +.icon-link-hover:hover > .bi, .icon-link-hover:focus-visible > .bi { + transform: var(--falcon-icon-link-transform, translate3d(0.25em, 0, 0)); +} + +.ratio { + position: relative; + width: 100%; +} +.ratio::before { + display: block; + padding-top: var(--falcon-aspect-ratio); + content: ""; +} +.ratio > * { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +.ratio-1x1 { + --falcon-aspect-ratio: 100%; +} + +.ratio-4x3 { + --falcon-aspect-ratio: 75%; +} + +.ratio-16x9 { + --falcon-aspect-ratio: 56.25%; +} + +.ratio-21x9 { + --falcon-aspect-ratio: 42.8571428571%; +} + +.fixed-top { + position: fixed; + top: 0; + right: 0; + left: 0; + z-index: 1030; +} + +.fixed-bottom, .bottom-bar { + position: fixed; + right: 0; + bottom: 0; + left: 0; + z-index: 1030; +} + +.sticky-top { + position: sticky; + top: 0; + z-index: 1015; +} + +.sticky-bottom { + position: sticky; + bottom: 0; + z-index: 1015; +} + +@media (min-width: 576px) { + .sticky-sm-top { + position: sticky; + top: 0; + z-index: 1015; + } + .sticky-sm-bottom { + position: sticky; + bottom: 0; + z-index: 1015; + } +} +@media (min-width: 768px) { + .sticky-md-top { + position: sticky; + top: 0; + z-index: 1015; + } + .sticky-md-bottom { + position: sticky; + bottom: 0; + z-index: 1015; + } +} +@media (min-width: 992px) { + .sticky-lg-top { + position: sticky; + top: 0; + z-index: 1015; + } + .sticky-lg-bottom { + position: sticky; + bottom: 0; + z-index: 1015; + } +} +@media (min-width: 1200px) { + .sticky-xl-top { + position: sticky; + top: 0; + z-index: 1015; + } + .sticky-xl-bottom { + position: sticky; + bottom: 0; + z-index: 1015; + } +} +@media (min-width: 1540px) { + .sticky-xxl-top { + position: sticky; + top: 0; + z-index: 1015; + } + .sticky-xxl-bottom { + position: sticky; + bottom: 0; + z-index: 1015; + } +} +.hstack { + display: flex; + flex-direction: row; + align-items: center; + align-self: stretch; +} + +.vstack { + display: flex; + flex: 1 1 auto; + flex-direction: column; + align-self: stretch; +} + +.visually-hidden, +.visually-hidden-focusable:not(:focus):not(:focus-within) { + width: 1px !important; + height: 1px !important; + padding: 0 !important; + margin: -1px !important; + overflow: hidden !important; + clip: rect(0, 0, 0, 0) !important; + white-space: nowrap !important; + border: 0 !important; +} +.visually-hidden:not(caption), +.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption) { + position: absolute !important; +} +.visually-hidden *, +.visually-hidden-focusable:not(:focus):not(:focus-within) * { + overflow: hidden !important; +} + +.stretched-link::after { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1; + content: ""; +} + +.text-truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.vr { + display: inline-block; + align-self: stretch; + width: var(--falcon-border-width); + min-height: 1em; + background-color: currentcolor; + opacity: var(--falcon-hr-opacity); +} + +.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 { + object-fit: contain !important; +} + +.object-fit-cover { + object-fit: cover !important; +} + +.object-fit-fill { + object-fit: fill !important; +} + +.object-fit-scale { + object-fit: scale-down !important; +} + +.object-fit-none { + object-fit: none !important; +} + +.opacity-0 { + opacity: 0 !important; +} + +.opacity-25 { + opacity: 0.25 !important; +} + +.opacity-50 { + opacity: 0.5 !important; +} + +.opacity-75 { + opacity: 0.75 !important; +} + +.opacity-85 { + opacity: 0.85 !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(--falcon-box-shadow) !important; +} + +.shadow-sm { + box-shadow: var(--falcon-box-shadow-sm) !important; +} + +.shadow-lg { + box-shadow: var(--falcon-box-shadow-lg) !important; +} + +.shadow-none { + box-shadow: none !important; +} + +.focus-ring-primary { + --falcon-focus-ring-color: rgba(var(--falcon-primary-rgb), var(--falcon-focus-ring-opacity)); +} + +.focus-ring-secondary { + --falcon-focus-ring-color: rgba(var(--falcon-secondary-rgb), var(--falcon-focus-ring-opacity)); +} + +.focus-ring-success { + --falcon-focus-ring-color: rgba(var(--falcon-success-rgb), var(--falcon-focus-ring-opacity)); +} + +.focus-ring-info { + --falcon-focus-ring-color: rgba(var(--falcon-info-rgb), var(--falcon-focus-ring-opacity)); +} + +.focus-ring-warning { + --falcon-focus-ring-color: rgba(var(--falcon-warning-rgb), var(--falcon-focus-ring-opacity)); +} + +.focus-ring-danger { + --falcon-focus-ring-color: rgba(var(--falcon-danger-rgb), var(--falcon-focus-ring-opacity)); +} + +.focus-ring-light { + --falcon-focus-ring-color: rgba(var(--falcon-light-rgb), var(--falcon-focus-ring-opacity)); +} + +.focus-ring-dark { + --falcon-focus-ring-color: rgba(var(--falcon-dark-rgb), var(--falcon-focus-ring-opacity)); +} + +.position-static { + position: static !important; +} + +.position-absolute { + position: absolute !important; +} + +.position-relative { + position: relative !important; +} + +.position-fixed { + position: fixed !important; +} + +.position-sticky { + 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: translateX(-50%) translateY(-50%) !important; +} + +.translate-middle-x { + transform: translateX(-50%) !important; +} + +.translate-middle-y { + transform: translateY(-50%) !important; +} + +.border { + border: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; +} + +.border-0 { + border: 0 !important; +} + +.border-top { + border-top: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; +} + +.border-top-0 { + border-top: 0 !important; +} + +.border-end { + border-right: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; +} + +.border-end-0 { + border-right: 0 !important; +} + +.border-bottom { + border-bottom: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; +} + +.border-bottom-0 { + border-bottom: 0 !important; +} + +.border-start { + border-left: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; +} + +.border-start-0 { + border-left: 0 !important; +} + +.border-primary-subtle { + border-color: var(--falcon-primary-border-subtle) !important; +} + +.border-secondary-subtle { + border-color: var(--falcon-secondary-border-subtle) !important; +} + +.border-success-subtle { + border-color: var(--falcon-success-border-subtle) !important; +} + +.border-info-subtle { + border-color: var(--falcon-info-border-subtle) !important; +} + +.border-warning-subtle { + border-color: var(--falcon-warning-border-subtle) !important; +} + +.border-danger-subtle { + border-color: var(--falcon-danger-border-subtle) !important; +} + +.border-light-subtle { + border-color: var(--falcon-light-border-subtle) !important; +} + +.border-dark-subtle { + border-color: var(--falcon-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 { + --falcon-border-opacity: 0.1; +} + +.border-opacity-25 { + --falcon-border-opacity: 0.25; +} + +.border-opacity-50 { + --falcon-border-opacity: 0.5; +} + +.border-opacity-75 { + --falcon-border-opacity: 0.75; +} + +.border-opacity-100 { + --falcon-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-25 { + width: 25vw !important; +} + +.vw-50 { + width: 50vw !important; +} + +.vw-75 { + width: 75vw !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-25 { + height: 25vh !important; +} + +.vh-50 { + height: 50vh !important; +} + +.vh-75 { + height: 75vh !important; +} + +.vh-100 { + height: 100vh !important; +} + +.min-vh-25 { + min-height: 25vh !important; +} + +.min-vh-50 { + min-height: 50vh !important; +} + +.min-vh-75 { + min-height: 75vh !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: 0.25rem !important; +} + +.m-2 { + margin: 0.5rem !important; +} + +.m-3 { + margin: 1rem !important; +} + +.m-4 { + margin: 1.8rem !important; +} + +.m-5 { + margin: 3rem !important; +} + +.m-6 { + margin: 4rem !important; +} + +.m-7 { + margin: 5rem !important; +} + +.m-8 { + margin: 7.5rem !important; +} + +.m-9 { + margin: 10rem !important; +} + +.m-10 { + margin: 12.5rem !important; +} + +.m-11 { + margin: 15rem !important; +} + +.m-x1 { + margin: 1.25rem !important; +} + +.m-auto { + margin: auto !important; +} + +.mx-0 { + margin-right: 0 !important; + margin-left: 0 !important; +} + +.mx-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; +} + +.mx-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; +} + +.mx-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; +} + +.mx-4 { + margin-right: 1.8rem !important; + margin-left: 1.8rem !important; +} + +.mx-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; +} + +.mx-6 { + margin-right: 4rem !important; + margin-left: 4rem !important; +} + +.mx-7 { + margin-right: 5rem !important; + margin-left: 5rem !important; +} + +.mx-8 { + margin-right: 7.5rem !important; + margin-left: 7.5rem !important; +} + +.mx-9 { + margin-right: 10rem !important; + margin-left: 10rem !important; +} + +.mx-10 { + margin-right: 12.5rem !important; + margin-left: 12.5rem !important; +} + +.mx-11 { + margin-right: 15rem !important; + margin-left: 15rem !important; +} + +.mx-x1 { + margin-right: 1.25rem !important; + margin-left: 1.25rem !important; +} + +.mx-auto { + margin-right: auto !important; + margin-left: auto !important; +} + +.my-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; +} + +.my-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; +} + +.my-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; +} + +.my-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; +} + +.my-4 { + margin-top: 1.8rem !important; + margin-bottom: 1.8rem !important; +} + +.my-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; +} + +.my-6 { + margin-top: 4rem !important; + margin-bottom: 4rem !important; +} + +.my-7 { + margin-top: 5rem !important; + margin-bottom: 5rem !important; +} + +.my-8 { + margin-top: 7.5rem !important; + margin-bottom: 7.5rem !important; +} + +.my-9 { + margin-top: 10rem !important; + margin-bottom: 10rem !important; +} + +.my-10 { + margin-top: 12.5rem !important; + margin-bottom: 12.5rem !important; +} + +.my-11 { + margin-top: 15rem !important; + margin-bottom: 15rem !important; +} + +.my-x1 { + margin-top: 1.25rem !important; + margin-bottom: 1.25rem !important; +} + +.my-auto { + margin-top: auto !important; + margin-bottom: auto !important; +} + +.mt-0 { + margin-top: 0 !important; +} + +.mt-1 { + margin-top: 0.25rem !important; +} + +.mt-2 { + margin-top: 0.5rem !important; +} + +.mt-3 { + margin-top: 1rem !important; +} + +.mt-4 { + margin-top: 1.8rem !important; +} + +.mt-5 { + margin-top: 3rem !important; +} + +.mt-6 { + margin-top: 4rem !important; +} + +.mt-7 { + margin-top: 5rem !important; +} + +.mt-8 { + margin-top: 7.5rem !important; +} + +.mt-9 { + margin-top: 10rem !important; +} + +.mt-10 { + margin-top: 12.5rem !important; +} + +.mt-11 { + margin-top: 15rem !important; +} + +.mt-x1 { + margin-top: 1.25rem !important; +} + +.mt-auto { + margin-top: auto !important; +} + +.me-0 { + margin-right: 0 !important; +} + +.me-1 { + margin-right: 0.25rem !important; +} + +.me-2 { + margin-right: 0.5rem !important; +} + +.me-3 { + margin-right: 1rem !important; +} + +.me-4 { + margin-right: 1.8rem !important; +} + +.me-5 { + margin-right: 3rem !important; +} + +.me-6 { + margin-right: 4rem !important; +} + +.me-7 { + margin-right: 5rem !important; +} + +.me-8 { + margin-right: 7.5rem !important; +} + +.me-9 { + margin-right: 10rem !important; +} + +.me-10 { + margin-right: 12.5rem !important; +} + +.me-11 { + margin-right: 15rem !important; +} + +.me-x1 { + margin-right: 1.25rem !important; +} + +.me-auto { + margin-right: auto !important; +} + +.mb-0 { + margin-bottom: 0 !important; +} + +.mb-1 { + margin-bottom: 0.25rem !important; +} + +.mb-2 { + margin-bottom: 0.5rem !important; +} + +.mb-3 { + margin-bottom: 1rem !important; +} + +.mb-4 { + margin-bottom: 1.8rem !important; +} + +.mb-5 { + margin-bottom: 3rem !important; +} + +.mb-6 { + margin-bottom: 4rem !important; +} + +.mb-7 { + margin-bottom: 5rem !important; +} + +.mb-8 { + margin-bottom: 7.5rem !important; +} + +.mb-9 { + margin-bottom: 10rem !important; +} + +.mb-10 { + margin-bottom: 12.5rem !important; +} + +.mb-11 { + margin-bottom: 15rem !important; +} + +.mb-x1 { + margin-bottom: 1.25rem !important; +} + +.mb-auto { + margin-bottom: auto !important; +} + +.ms-0 { + margin-left: 0 !important; +} + +.ms-1 { + margin-left: 0.25rem !important; +} + +.ms-2 { + margin-left: 0.5rem !important; +} + +.ms-3 { + margin-left: 1rem !important; +} + +.ms-4 { + margin-left: 1.8rem !important; +} + +.ms-5 { + margin-left: 3rem !important; +} + +.ms-6 { + margin-left: 4rem !important; +} + +.ms-7 { + margin-left: 5rem !important; +} + +.ms-8 { + margin-left: 7.5rem !important; +} + +.ms-9 { + margin-left: 10rem !important; +} + +.ms-10 { + margin-left: 12.5rem !important; +} + +.ms-11 { + margin-left: 15rem !important; +} + +.ms-x1 { + margin-left: 1.25rem !important; +} + +.ms-auto { + margin-left: auto !important; +} + +.m-n1 { + margin: -0.25rem !important; +} + +.m-n2 { + margin: -0.5rem !important; +} + +.m-n3 { + margin: -1rem !important; +} + +.m-n4 { + margin: -1.8rem !important; +} + +.m-n5 { + margin: -3rem !important; +} + +.m-n6 { + margin: -4rem !important; +} + +.m-n7 { + margin: -5rem !important; +} + +.m-n8 { + margin: -7.5rem !important; +} + +.m-n9 { + margin: -10rem !important; +} + +.m-n10 { + margin: -12.5rem !important; +} + +.m-n11 { + margin: -15rem !important; +} + +.m-nx1 { + margin: -1.25rem !important; +} + +.mx-n1 { + margin-right: -0.25rem !important; + margin-left: -0.25rem !important; +} + +.mx-n2 { + margin-right: -0.5rem !important; + margin-left: -0.5rem !important; +} + +.mx-n3 { + margin-right: -1rem !important; + margin-left: -1rem !important; +} + +.mx-n4 { + margin-right: -1.8rem !important; + margin-left: -1.8rem !important; +} + +.mx-n5 { + margin-right: -3rem !important; + margin-left: -3rem !important; +} + +.mx-n6 { + margin-right: -4rem !important; + margin-left: -4rem !important; +} + +.mx-n7 { + margin-right: -5rem !important; + margin-left: -5rem !important; +} + +.mx-n8 { + margin-right: -7.5rem !important; + margin-left: -7.5rem !important; +} + +.mx-n9 { + margin-right: -10rem !important; + margin-left: -10rem !important; +} + +.mx-n10 { + margin-right: -12.5rem !important; + margin-left: -12.5rem !important; +} + +.mx-n11 { + margin-right: -15rem !important; + margin-left: -15rem !important; +} + +.mx-nx1 { + margin-right: -1.25rem !important; + margin-left: -1.25rem !important; +} + +.my-n1 { + margin-top: -0.25rem !important; + margin-bottom: -0.25rem !important; +} + +.my-n2 { + margin-top: -0.5rem !important; + margin-bottom: -0.5rem !important; +} + +.my-n3 { + margin-top: -1rem !important; + margin-bottom: -1rem !important; +} + +.my-n4 { + margin-top: -1.8rem !important; + margin-bottom: -1.8rem !important; +} + +.my-n5 { + margin-top: -3rem !important; + margin-bottom: -3rem !important; +} + +.my-n6 { + margin-top: -4rem !important; + margin-bottom: -4rem !important; +} + +.my-n7 { + margin-top: -5rem !important; + margin-bottom: -5rem !important; +} + +.my-n8 { + margin-top: -7.5rem !important; + margin-bottom: -7.5rem !important; +} + +.my-n9 { + margin-top: -10rem !important; + margin-bottom: -10rem !important; +} + +.my-n10 { + margin-top: -12.5rem !important; + margin-bottom: -12.5rem !important; +} + +.my-n11 { + margin-top: -15rem !important; + margin-bottom: -15rem !important; +} + +.my-nx1 { + margin-top: -1.25rem !important; + margin-bottom: -1.25rem !important; +} + +.mt-n1 { + margin-top: -0.25rem !important; +} + +.mt-n2 { + margin-top: -0.5rem !important; +} + +.mt-n3 { + margin-top: -1rem !important; +} + +.mt-n4 { + margin-top: -1.8rem !important; +} + +.mt-n5 { + margin-top: -3rem !important; +} + +.mt-n6 { + margin-top: -4rem !important; +} + +.mt-n7 { + margin-top: -5rem !important; +} + +.mt-n8 { + margin-top: -7.5rem !important; +} + +.mt-n9 { + margin-top: -10rem !important; +} + +.mt-n10 { + margin-top: -12.5rem !important; +} + +.mt-n11 { + margin-top: -15rem !important; +} + +.mt-nx1 { + margin-top: -1.25rem !important; +} + +.me-n1 { + margin-right: -0.25rem !important; +} + +.me-n2 { + margin-right: -0.5rem !important; +} + +.me-n3 { + margin-right: -1rem !important; +} + +.me-n4 { + margin-right: -1.8rem !important; +} + +.me-n5 { + margin-right: -3rem !important; +} + +.me-n6 { + margin-right: -4rem !important; +} + +.me-n7 { + margin-right: -5rem !important; +} + +.me-n8 { + margin-right: -7.5rem !important; +} + +.me-n9 { + margin-right: -10rem !important; +} + +.me-n10 { + margin-right: -12.5rem !important; +} + +.me-n11 { + margin-right: -15rem !important; +} + +.me-nx1 { + margin-right: -1.25rem !important; +} + +.mb-n1 { + margin-bottom: -0.25rem !important; +} + +.mb-n2 { + margin-bottom: -0.5rem !important; +} + +.mb-n3 { + margin-bottom: -1rem !important; +} + +.mb-n4 { + margin-bottom: -1.8rem !important; +} + +.mb-n5 { + margin-bottom: -3rem !important; +} + +.mb-n6 { + margin-bottom: -4rem !important; +} + +.mb-n7 { + margin-bottom: -5rem !important; +} + +.mb-n8 { + margin-bottom: -7.5rem !important; +} + +.mb-n9 { + margin-bottom: -10rem !important; +} + +.mb-n10 { + margin-bottom: -12.5rem !important; +} + +.mb-n11 { + margin-bottom: -15rem !important; +} + +.mb-nx1 { + margin-bottom: -1.25rem !important; +} + +.ms-n1 { + margin-left: -0.25rem !important; +} + +.ms-n2 { + margin-left: -0.5rem !important; +} + +.ms-n3 { + margin-left: -1rem !important; +} + +.ms-n4 { + margin-left: -1.8rem !important; +} + +.ms-n5 { + margin-left: -3rem !important; +} + +.ms-n6 { + margin-left: -4rem !important; +} + +.ms-n7 { + margin-left: -5rem !important; +} + +.ms-n8 { + margin-left: -7.5rem !important; +} + +.ms-n9 { + margin-left: -10rem !important; +} + +.ms-n10 { + margin-left: -12.5rem !important; +} + +.ms-n11 { + margin-left: -15rem !important; +} + +.ms-nx1 { + margin-left: -1.25rem !important; +} + +.p-0 { + padding: 0 !important; +} + +.p-1 { + padding: 0.25rem !important; +} + +.p-2 { + padding: 0.5rem !important; +} + +.p-3 { + padding: 1rem !important; +} + +.p-4 { + padding: 1.8rem !important; +} + +.p-5 { + padding: 3rem !important; +} + +.p-6 { + padding: 4rem !important; +} + +.p-7 { + padding: 5rem !important; +} + +.p-8 { + padding: 7.5rem !important; +} + +.p-9 { + padding: 10rem !important; +} + +.p-10 { + padding: 12.5rem !important; +} + +.p-11 { + padding: 15rem !important; +} + +.p-x1 { + padding: 1.25rem !important; +} + +.px-0 { + padding-right: 0 !important; + padding-left: 0 !important; +} + +.px-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; +} + +.px-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; +} + +.px-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; +} + +.px-4 { + padding-right: 1.8rem !important; + padding-left: 1.8rem !important; +} + +.px-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; +} + +.px-6 { + padding-right: 4rem !important; + padding-left: 4rem !important; +} + +.px-7 { + padding-right: 5rem !important; + padding-left: 5rem !important; +} + +.px-8 { + padding-right: 7.5rem !important; + padding-left: 7.5rem !important; +} + +.px-9 { + padding-right: 10rem !important; + padding-left: 10rem !important; +} + +.px-10 { + padding-right: 12.5rem !important; + padding-left: 12.5rem !important; +} + +.px-11 { + padding-right: 15rem !important; + padding-left: 15rem !important; +} + +.px-x1 { + padding-right: 1.25rem !important; + padding-left: 1.25rem !important; +} + +.py-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; +} + +.py-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; +} + +.py-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; +} + +.py-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; +} + +.py-4 { + padding-top: 1.8rem !important; + padding-bottom: 1.8rem !important; +} + +.py-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; +} + +.py-6 { + padding-top: 4rem !important; + padding-bottom: 4rem !important; +} + +.py-7 { + padding-top: 5rem !important; + padding-bottom: 5rem !important; +} + +.py-8 { + padding-top: 7.5rem !important; + padding-bottom: 7.5rem !important; +} + +.py-9 { + padding-top: 10rem !important; + padding-bottom: 10rem !important; +} + +.py-10 { + padding-top: 12.5rem !important; + padding-bottom: 12.5rem !important; +} + +.py-11 { + padding-top: 15rem !important; + padding-bottom: 15rem !important; +} + +.py-x1 { + padding-top: 1.25rem !important; + padding-bottom: 1.25rem !important; +} + +.pt-0 { + padding-top: 0 !important; +} + +.pt-1 { + padding-top: 0.25rem !important; +} + +.pt-2 { + padding-top: 0.5rem !important; +} + +.pt-3 { + padding-top: 1rem !important; +} + +.pt-4 { + padding-top: 1.8rem !important; +} + +.pt-5 { + padding-top: 3rem !important; +} + +.pt-6 { + padding-top: 4rem !important; +} + +.pt-7 { + padding-top: 5rem !important; +} + +.pt-8 { + padding-top: 7.5rem !important; +} + +.pt-9 { + padding-top: 10rem !important; +} + +.pt-10 { + padding-top: 12.5rem !important; +} + +.pt-11 { + padding-top: 15rem !important; +} + +.pt-x1 { + padding-top: 1.25rem !important; +} + +.pe-0 { + padding-right: 0 !important; +} + +.pe-1 { + padding-right: 0.25rem !important; +} + +.pe-2 { + padding-right: 0.5rem !important; +} + +.pe-3 { + padding-right: 1rem !important; +} + +.pe-4 { + padding-right: 1.8rem !important; +} + +.pe-5 { + padding-right: 3rem !important; +} + +.pe-6 { + padding-right: 4rem !important; +} + +.pe-7 { + padding-right: 5rem !important; +} + +.pe-8 { + padding-right: 7.5rem !important; +} + +.pe-9 { + padding-right: 10rem !important; +} + +.pe-10 { + padding-right: 12.5rem !important; +} + +.pe-11 { + padding-right: 15rem !important; +} + +.pe-x1 { + padding-right: 1.25rem !important; +} + +.pb-0 { + padding-bottom: 0 !important; +} + +.pb-1 { + padding-bottom: 0.25rem !important; +} + +.pb-2 { + padding-bottom: 0.5rem !important; +} + +.pb-3 { + padding-bottom: 1rem !important; +} + +.pb-4 { + padding-bottom: 1.8rem !important; +} + +.pb-5 { + padding-bottom: 3rem !important; +} + +.pb-6 { + padding-bottom: 4rem !important; +} + +.pb-7 { + padding-bottom: 5rem !important; +} + +.pb-8 { + padding-bottom: 7.5rem !important; +} + +.pb-9 { + padding-bottom: 10rem !important; +} + +.pb-10 { + padding-bottom: 12.5rem !important; +} + +.pb-11 { + padding-bottom: 15rem !important; +} + +.pb-x1 { + padding-bottom: 1.25rem !important; +} + +.ps-0 { + padding-left: 0 !important; +} + +.ps-1 { + padding-left: 0.25rem !important; +} + +.ps-2 { + padding-left: 0.5rem !important; +} + +.ps-3 { + padding-left: 1rem !important; +} + +.ps-4 { + padding-left: 1.8rem !important; +} + +.ps-5 { + padding-left: 3rem !important; +} + +.ps-6 { + padding-left: 4rem !important; +} + +.ps-7 { + padding-left: 5rem !important; +} + +.ps-8 { + padding-left: 7.5rem !important; +} + +.ps-9 { + padding-left: 10rem !important; +} + +.ps-10 { + padding-left: 12.5rem !important; +} + +.ps-11 { + padding-left: 15rem !important; +} + +.ps-x1 { + padding-left: 1.25rem !important; +} + +.gap-0 { + gap: 0 !important; +} + +.gap-1 { + gap: 0.25rem !important; +} + +.gap-2 { + gap: 0.5rem !important; +} + +.gap-3 { + gap: 1rem !important; +} + +.gap-4 { + gap: 1.8rem !important; +} + +.gap-5 { + gap: 3rem !important; +} + +.gap-6 { + gap: 4rem !important; +} + +.gap-7 { + gap: 5rem !important; +} + +.gap-8 { + gap: 7.5rem !important; +} + +.gap-9 { + gap: 10rem !important; +} + +.gap-10 { + gap: 12.5rem !important; +} + +.gap-11 { + gap: 15rem !important; +} + +.gap-x1 { + gap: 1.25rem !important; +} + +.row-gap-0 { + row-gap: 0 !important; +} + +.row-gap-1 { + row-gap: 0.25rem !important; +} + +.row-gap-2 { + row-gap: 0.5rem !important; +} + +.row-gap-3 { + row-gap: 1rem !important; +} + +.row-gap-4 { + row-gap: 1.8rem !important; +} + +.row-gap-5 { + row-gap: 3rem !important; +} + +.row-gap-6 { + row-gap: 4rem !important; +} + +.row-gap-7 { + row-gap: 5rem !important; +} + +.row-gap-8 { + row-gap: 7.5rem !important; +} + +.row-gap-9 { + row-gap: 10rem !important; +} + +.row-gap-10 { + row-gap: 12.5rem !important; +} + +.row-gap-11 { + row-gap: 15rem !important; +} + +.row-gap-x1 { + row-gap: 1.25rem !important; +} + +.column-gap-0 { + column-gap: 0 !important; +} + +.column-gap-1 { + column-gap: 0.25rem !important; +} + +.column-gap-2 { + column-gap: 0.5rem !important; +} + +.column-gap-3 { + column-gap: 1rem !important; +} + +.column-gap-4 { + column-gap: 1.8rem !important; +} + +.column-gap-5 { + column-gap: 3rem !important; +} + +.column-gap-6 { + column-gap: 4rem !important; +} + +.column-gap-7 { + column-gap: 5rem !important; +} + +.column-gap-8 { + column-gap: 7.5rem !important; +} + +.column-gap-9 { + column-gap: 10rem !important; +} + +.column-gap-10 { + column-gap: 12.5rem !important; +} + +.column-gap-11 { + column-gap: 15rem !important; +} + +.column-gap-x1 { + column-gap: 1.25rem !important; +} + +.font-monospace { + font-family: var(--falcon-font-monospace) !important; +} + +.fs-11 { + font-size: 0.6944444444rem !important; +} + +.fs-10 { + font-size: 0.8333333333rem !important; +} + +.fs-9 { + font-size: 1rem !important; +} + +.fs-8 { + font-size: 1.2rem !important; +} + +.fs-7 { + font-size: 1.44rem !important; +} + +.fs-6 { + font-size: 1.728rem !important; +} + +.fs-5 { + font-size: 2.0736rem !important; +} + +.fs-4 { + font-size: 2.48832rem !important; +} + +.fs-3 { + font-size: 2.985984rem !important; +} + +.fs-2 { + font-size: 3.5831808rem !important; +} + +.fs-1 { + font-size: 4.29981696rem !important; +} + +.fst-italic { + font-style: italic !important; +} + +.fst-normal { + font-style: normal !important; +} + +.fw-thin { + font-weight: 100 !important; +} + +.fw-lighter { + font-weight: 200 !important; +} + +.fw-light { + font-weight: 300 !important; +} + +.fw-normal { + font-weight: 400 !important; +} + +.fw-medium { + font-weight: 500 !important; +} + +.fw-semibold { + font-weight: 600 !important; +} + +.fw-bold { + font-weight: 700 !important; +} + +.fw-bolder { + font-weight: 800 !important; +} + +.fw-black { + font-weight: 900 !important; +} + +.lh-1 { + line-height: 1 !important; +} + +.lh-sm { + line-height: 1.25 !important; +} + +.lh-base { + line-height: 1.5 !important; +} + +.lh-lg { + line-height: 2 !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; +} + +/* rtl:begin:remove */ +.text-break { + word-wrap: break-word !important; + word-break: break-word !important; +} + +/* rtl:end:remove */ +.text-primary { + --falcon-text-opacity: 1; + color: rgba(var(--falcon-primary-rgb), var(--falcon-text-opacity)) !important; +} + +.text-secondary { + --falcon-text-opacity: 1; + color: rgba(var(--falcon-secondary-rgb), var(--falcon-text-opacity)) !important; +} + +.text-success { + --falcon-text-opacity: 1; + color: rgba(var(--falcon-success-rgb), var(--falcon-text-opacity)) !important; +} + +.text-info { + --falcon-text-opacity: 1; + color: rgba(var(--falcon-info-rgb), var(--falcon-text-opacity)) !important; +} + +.text-warning { + --falcon-text-opacity: 1; + color: rgba(var(--falcon-warning-rgb), var(--falcon-text-opacity)) !important; +} + +.text-danger { + --falcon-text-opacity: 1; + color: rgba(var(--falcon-danger-rgb), var(--falcon-text-opacity)) !important; +} + +.text-light { + --falcon-text-opacity: 1; + color: rgba(var(--falcon-light-rgb), var(--falcon-text-opacity)) !important; +} + +.text-dark { + --falcon-text-opacity: 1; + color: rgba(var(--falcon-dark-rgb), var(--falcon-text-opacity)) !important; +} + +.text-facebook { + --falcon-text-opacity: 1; + color: rgba(var(--falcon-facebook-rgb), var(--falcon-text-opacity)) !important; +} + +.text-google-plus { + --falcon-text-opacity: 1; + color: rgba(var(--falcon-google-plus-rgb), var(--falcon-text-opacity)) !important; +} + +.text-twitter { + --falcon-text-opacity: 1; + color: rgba(var(--falcon-twitter-rgb), var(--falcon-text-opacity)) !important; +} + +.text-linkedin { + --falcon-text-opacity: 1; + color: rgba(var(--falcon-linkedin-rgb), var(--falcon-text-opacity)) !important; +} + +.text-youtube { + --falcon-text-opacity: 1; + color: rgba(var(--falcon-youtube-rgb), var(--falcon-text-opacity)) !important; +} + +.text-github { + --falcon-text-opacity: 1; + color: rgba(var(--falcon-github-rgb), var(--falcon-text-opacity)) !important; +} + +.text-black { + --falcon-text-opacity: 1; + color: rgba(var(--falcon-black-rgb), var(--falcon-text-opacity)) !important; +} + +.text-white { + --falcon-text-opacity: 1; + color: rgba(var(--falcon-white-rgb), var(--falcon-text-opacity)) !important; +} + +.text-body { + --falcon-text-opacity: 1; + color: rgba(var(--falcon-body-color-rgb), var(--falcon-text-opacity)) !important; +} + +.text-100 { + --falcon-text-opacity: 1; + color: rgba(var(--falcon-gray-100-rgb), var(--falcon-text-opacity)) !important; +} + +.text-200 { + --falcon-text-opacity: 1; + color: rgba(var(--falcon-gray-200-rgb), var(--falcon-text-opacity)) !important; +} + +.text-300 { + --falcon-text-opacity: 1; + color: rgba(var(--falcon-gray-300-rgb), var(--falcon-text-opacity)) !important; +} + +.text-400 { + --falcon-text-opacity: 1; + color: rgba(var(--falcon-gray-400-rgb), var(--falcon-text-opacity)) !important; +} + +.text-500 { + --falcon-text-opacity: 1; + color: rgba(var(--falcon-gray-500-rgb), var(--falcon-text-opacity)) !important; +} + +.text-600 { + --falcon-text-opacity: 1; + color: rgba(var(--falcon-gray-600-rgb), var(--falcon-text-opacity)) !important; +} + +.text-700 { + --falcon-text-opacity: 1; + color: rgba(var(--falcon-gray-700-rgb), var(--falcon-text-opacity)) !important; +} + +.text-800 { + --falcon-text-opacity: 1; + color: rgba(var(--falcon-gray-800-rgb), var(--falcon-text-opacity)) !important; +} + +.text-900 { + --falcon-text-opacity: 1; + color: rgba(var(--falcon-gray-900-rgb), var(--falcon-text-opacity)) !important; +} + +.text-1000 { + --falcon-text-opacity: 1; + color: rgba(var(--falcon-gray-1000-rgb), var(--falcon-text-opacity)) !important; +} + +.text-1100 { + --falcon-text-opacity: 1; + color: rgba(var(--falcon-gray-1100-rgb), var(--falcon-text-opacity)) !important; +} + +.text-muted { + --falcon-text-opacity: 1; + color: var(--falcon-secondary-color) !important; +} + +.text-black-50 { + --falcon-text-opacity: 1; + color: rgba(0, 0, 0, 0.5) !important; +} + +.text-white-50 { + --falcon-text-opacity: 1; + color: rgba(255, 255, 255, 0.5) !important; +} + +.text-body-secondary { + --falcon-text-opacity: 1; + color: var(--falcon-secondary-color) !important; +} + +.text-body-tertiary { + --falcon-text-opacity: 1; + color: var(--falcon-tertiary-color) !important; +} + +.text-body-emphasis { + --falcon-text-opacity: 1; + color: var(--falcon-emphasis-color) !important; +} + +.text-reset { + --falcon-text-opacity: 1; + color: inherit !important; +} + +.text-opacity-25 { + --falcon-text-opacity: 0.25; +} + +.text-opacity-50 { + --falcon-text-opacity: 0.5; +} + +.text-opacity-75 { + --falcon-text-opacity: 0.75; +} + +.text-opacity-100 { + --falcon-text-opacity: 1; +} + +.text-primary-emphasis { + color: var(--falcon-primary-text-emphasis) !important; +} + +.text-secondary-emphasis { + color: var(--falcon-secondary-text-emphasis) !important; +} + +.text-success-emphasis { + color: var(--falcon-success-text-emphasis) !important; +} + +.text-info-emphasis { + color: var(--falcon-info-text-emphasis) !important; +} + +.text-warning-emphasis { + color: var(--falcon-warning-text-emphasis) !important; +} + +.text-danger-emphasis { + color: var(--falcon-danger-text-emphasis) !important; +} + +.text-light-emphasis { + color: var(--falcon-light-text-emphasis) !important; +} + +.text-dark-emphasis { + color: var(--falcon-dark-text-emphasis) !important; +} + +.link-opacity-10 { + --falcon-link-opacity: 0.1; +} + +.link-opacity-10-hover:hover { + --falcon-link-opacity: 0.1; +} + +.link-opacity-25 { + --falcon-link-opacity: 0.25; +} + +.link-opacity-25-hover:hover { + --falcon-link-opacity: 0.25; +} + +.link-opacity-50 { + --falcon-link-opacity: 0.5; +} + +.link-opacity-50-hover:hover { + --falcon-link-opacity: 0.5; +} + +.link-opacity-75 { + --falcon-link-opacity: 0.75; +} + +.link-opacity-75-hover:hover { + --falcon-link-opacity: 0.75; +} + +.link-opacity-100 { + --falcon-link-opacity: 1; +} + +.link-opacity-100-hover:hover { + --falcon-link-opacity: 1; +} + +.link-offset-1 { + text-underline-offset: 0.125em !important; +} + +.link-offset-1-hover:hover { + text-underline-offset: 0.125em !important; +} + +.link-offset-2 { + text-underline-offset: 0.25em !important; +} + +.link-offset-2-hover:hover { + text-underline-offset: 0.25em !important; +} + +.link-offset-3 { + text-underline-offset: 0.375em !important; +} + +.link-offset-3-hover:hover { + text-underline-offset: 0.375em !important; +} + +.link-underline-primary { + --falcon-link-underline-opacity: 1; + text-decoration-color: rgba(var(--falcon-primary-rgb), var(--falcon-link-underline-opacity)) !important; +} + +.link-underline-secondary { + --falcon-link-underline-opacity: 1; + text-decoration-color: rgba(var(--falcon-secondary-rgb), var(--falcon-link-underline-opacity)) !important; +} + +.link-underline-success { + --falcon-link-underline-opacity: 1; + text-decoration-color: rgba(var(--falcon-success-rgb), var(--falcon-link-underline-opacity)) !important; +} + +.link-underline-info { + --falcon-link-underline-opacity: 1; + text-decoration-color: rgba(var(--falcon-info-rgb), var(--falcon-link-underline-opacity)) !important; +} + +.link-underline-warning { + --falcon-link-underline-opacity: 1; + text-decoration-color: rgba(var(--falcon-warning-rgb), var(--falcon-link-underline-opacity)) !important; +} + +.link-underline-danger { + --falcon-link-underline-opacity: 1; + text-decoration-color: rgba(var(--falcon-danger-rgb), var(--falcon-link-underline-opacity)) !important; +} + +.link-underline-light { + --falcon-link-underline-opacity: 1; + text-decoration-color: rgba(var(--falcon-light-rgb), var(--falcon-link-underline-opacity)) !important; +} + +.link-underline-dark { + --falcon-link-underline-opacity: 1; + text-decoration-color: rgba(var(--falcon-dark-rgb), var(--falcon-link-underline-opacity)) !important; +} + +.link-underline { + --falcon-link-underline-opacity: 1; + text-decoration-color: rgba(var(--falcon-link-color-rgb), var(--falcon-link-underline-opacity, 1)) !important; +} + +.link-underline-opacity-0 { + --falcon-link-underline-opacity: 0; +} + +.link-underline-opacity-0-hover:hover { + --falcon-link-underline-opacity: 0; +} + +.link-underline-opacity-10 { + --falcon-link-underline-opacity: 0.1; +} + +.link-underline-opacity-10-hover:hover { + --falcon-link-underline-opacity: 0.1; +} + +.link-underline-opacity-25 { + --falcon-link-underline-opacity: 0.25; +} + +.link-underline-opacity-25-hover:hover { + --falcon-link-underline-opacity: 0.25; +} + +.link-underline-opacity-50 { + --falcon-link-underline-opacity: 0.5; +} + +.link-underline-opacity-50-hover:hover { + --falcon-link-underline-opacity: 0.5; +} + +.link-underline-opacity-75 { + --falcon-link-underline-opacity: 0.75; +} + +.link-underline-opacity-75-hover:hover { + --falcon-link-underline-opacity: 0.75; +} + +.link-underline-opacity-100 { + --falcon-link-underline-opacity: 1; +} + +.link-underline-opacity-100-hover:hover { + --falcon-link-underline-opacity: 1; +} + +.bg-primary { + --falcon-bg-opacity: 1; + background-color: rgba(var(--falcon-primary-rgb), var(--falcon-bg-opacity)) !important; +} + +.bg-secondary { + --falcon-bg-opacity: 1; + background-color: rgba(var(--falcon-secondary-rgb), var(--falcon-bg-opacity)) !important; +} + +.bg-success { + --falcon-bg-opacity: 1; + background-color: rgba(var(--falcon-success-rgb), var(--falcon-bg-opacity)) !important; +} + +.bg-info { + --falcon-bg-opacity: 1; + background-color: rgba(var(--falcon-info-rgb), var(--falcon-bg-opacity)) !important; +} + +.bg-warning { + --falcon-bg-opacity: 1; + background-color: rgba(var(--falcon-warning-rgb), var(--falcon-bg-opacity)) !important; +} + +.bg-danger { + --falcon-bg-opacity: 1; + background-color: rgba(var(--falcon-danger-rgb), var(--falcon-bg-opacity)) !important; +} + +.bg-light { + --falcon-bg-opacity: 1; + background-color: rgba(var(--falcon-light-rgb), var(--falcon-bg-opacity)) !important; +} + +.bg-dark { + --falcon-bg-opacity: 1; + background-color: rgba(var(--falcon-dark-rgb), var(--falcon-bg-opacity)) !important; +} + +.bg-facebook { + --falcon-bg-opacity: 1; + background-color: rgba(var(--falcon-facebook-rgb), var(--falcon-bg-opacity)) !important; +} + +.bg-google-plus { + --falcon-bg-opacity: 1; + background-color: rgba(var(--falcon-google-plus-rgb), var(--falcon-bg-opacity)) !important; +} + +.bg-twitter { + --falcon-bg-opacity: 1; + background-color: rgba(var(--falcon-twitter-rgb), var(--falcon-bg-opacity)) !important; +} + +.bg-linkedin { + --falcon-bg-opacity: 1; + background-color: rgba(var(--falcon-linkedin-rgb), var(--falcon-bg-opacity)) !important; +} + +.bg-youtube { + --falcon-bg-opacity: 1; + background-color: rgba(var(--falcon-youtube-rgb), var(--falcon-bg-opacity)) !important; +} + +.bg-github { + --falcon-bg-opacity: 1; + background-color: rgba(var(--falcon-github-rgb), var(--falcon-bg-opacity)) !important; +} + +.bg-black { + --falcon-bg-opacity: 1; + background-color: rgba(var(--falcon-black-rgb), var(--falcon-bg-opacity)) !important; +} + +.bg-white { + --falcon-bg-opacity: 1; + background-color: rgba(var(--falcon-white-rgb), var(--falcon-bg-opacity)) !important; +} + +.bg-body { + --falcon-bg-opacity: 1; + background-color: rgba(var(--falcon-body-bg-rgb), var(--falcon-bg-opacity)) !important; +} + +.bg-100 { + --falcon-bg-opacity: 1; + background-color: rgba(var(--falcon-gray-100-rgb), var(--falcon-bg-opacity)) !important; +} + +.bg-200 { + --falcon-bg-opacity: 1; + background-color: rgba(var(--falcon-gray-200-rgb), var(--falcon-bg-opacity)) !important; +} + +.bg-300 { + --falcon-bg-opacity: 1; + background-color: rgba(var(--falcon-gray-300-rgb), var(--falcon-bg-opacity)) !important; +} + +.bg-400 { + --falcon-bg-opacity: 1; + background-color: rgba(var(--falcon-gray-400-rgb), var(--falcon-bg-opacity)) !important; +} + +.bg-500 { + --falcon-bg-opacity: 1; + background-color: rgba(var(--falcon-gray-500-rgb), var(--falcon-bg-opacity)) !important; +} + +.bg-600 { + --falcon-bg-opacity: 1; + background-color: rgba(var(--falcon-gray-600-rgb), var(--falcon-bg-opacity)) !important; +} + +.bg-700 { + --falcon-bg-opacity: 1; + background-color: rgba(var(--falcon-gray-700-rgb), var(--falcon-bg-opacity)) !important; +} + +.bg-800 { + --falcon-bg-opacity: 1; + background-color: rgba(var(--falcon-gray-800-rgb), var(--falcon-bg-opacity)) !important; +} + +.bg-900 { + --falcon-bg-opacity: 1; + background-color: rgba(var(--falcon-gray-900-rgb), var(--falcon-bg-opacity)) !important; +} + +.bg-1000 { + --falcon-bg-opacity: 1; + background-color: rgba(var(--falcon-gray-1000-rgb), var(--falcon-bg-opacity)) !important; +} + +.bg-1100 { + --falcon-bg-opacity: 1; + background-color: rgba(var(--falcon-gray-1100-rgb), var(--falcon-bg-opacity)) !important; +} + +.bg-transparent { + --falcon-bg-opacity: 1; + background-color: transparent !important; +} + +.bg-body-secondary { + --falcon-bg-opacity: 1; + background-color: rgba(var(--falcon-secondary-bg-rgb), var(--falcon-bg-opacity)) !important; +} + +.bg-body-tertiary { + --falcon-bg-opacity: 1; + background-color: rgba(var(--falcon-tertiary-bg-rgb), var(--falcon-bg-opacity)) !important; +} + +.bg-body-emphasis { + --falcon-bg-opacity: 1; + background-color: rgba(var(--falcon-emphasis-bg-rgb), var(--falcon-bg-opacity)) !important; +} + +.bg-body-quaternary { + --falcon-bg-opacity: 1; + background-color: rgba(var(--falcon-quaternary-bg-rgb), var(--falcon-bg-opacity)) !important; +} + +.bg-opacity-10 { + --falcon-bg-opacity: 0.1; +} + +.bg-opacity-25 { + --falcon-bg-opacity: 0.25; +} + +.bg-opacity-50 { + --falcon-bg-opacity: 0.5; +} + +.bg-opacity-75 { + --falcon-bg-opacity: 0.75; +} + +.bg-opacity-100 { + --falcon-bg-opacity: 1; +} + +.bg-primary-subtle, .fc-timegrid .event-bg-primary-subtle { + background-color: var(--falcon-primary-bg-subtle) !important; +} + +.bg-secondary-subtle, .fc-timegrid .event-bg-secondary-subtle { + background-color: var(--falcon-secondary-bg-subtle) !important; +} + +.bg-success-subtle, .fc-timegrid .event-bg-success-subtle { + background-color: var(--falcon-success-bg-subtle) !important; +} + +.bg-info-subtle, .fc-timegrid .event-bg-info-subtle { + background-color: var(--falcon-info-bg-subtle) !important; +} + +.bg-warning-subtle, .fc-timegrid .event-bg-warning-subtle { + background-color: var(--falcon-warning-bg-subtle) !important; +} + +.bg-danger-subtle, .fc-timegrid .event-bg-danger-subtle { + background-color: var(--falcon-danger-bg-subtle) !important; +} + +.bg-light-subtle, .fc-timegrid .event-bg-light-subtle { + background-color: var(--falcon-light-bg-subtle) !important; +} + +.bg-dark-subtle, .fc-timegrid .event-bg-dark-subtle { + background-color: var(--falcon-dark-bg-subtle) !important; +} + +.bg-gradient { + background-image: var(--falcon-gradient) !important; +} + +.user-select-all { + user-select: all !important; +} + +.user-select-auto { + user-select: auto !important; +} + +.user-select-none { + user-select: none !important; +} + +.pe-none { + pointer-events: none !important; +} + +.pe-auto { + pointer-events: auto !important; +} + +.rounded, .progress-bar { + border-radius: var(--falcon-border-radius) !important; +} + +.rounded-0 { + border-radius: 0 !important; +} + +.rounded-1 { + border-radius: var(--falcon-border-radius-sm) !important; +} + +.rounded-2 { + border-radius: var(--falcon-border-radius) !important; +} + +.rounded-3 { + border-radius: var(--falcon-border-radius-lg) !important; +} + +.rounded-4 { + border-radius: var(--falcon-border-radius-xl) !important; +} + +.rounded-5 { + border-radius: var(--falcon-border-radius-xxl) !important; +} + +.rounded-circle { + border-radius: 50% !important; +} + +.rounded-pill { + border-radius: var(--falcon-border-radius-pill) !important; +} + +.rounded-top { + border-top-left-radius: 0.25rem !important; + border-top-right-radius: 0.25rem !important; +} + +.rounded-top-lg { + border-top-left-radius: 0.375rem !important; + border-top-right-radius: 0.375rem !important; +} + +.rounded-top-0 { + border-top-left-radius: 0 !important; + border-top-right-radius: 0 !important; +} + +.rounded-end { + border-top-right-radius: 0.25rem !important; + border-bottom-right-radius: 0.25rem !important; +} + +.rounded-end-lg { + border-top-right-radius: 0.375rem !important; + border-bottom-right-radius: 0.375rem !important; +} + +.rounded-end-0 { + border-top-right-radius: 0 !important; + border-bottom-right-radius: 0 !important; +} + +.rounded-bottom { + border-bottom-right-radius: 0.25rem !important; + border-bottom-left-radius: 0.25rem !important; +} + +.rounded-bottom-lg { + border-bottom-right-radius: 0.375rem !important; + border-bottom-left-radius: 0.375rem !important; +} + +.rounded-bottom-0 { + border-bottom-right-radius: 0 !important; + border-bottom-left-radius: 0 !important; +} + +.rounded-start { + border-bottom-left-radius: 0.25rem !important; + border-top-left-radius: 0.25rem !important; +} + +.rounded-start-lg { + border-bottom-left-radius: 0.375rem !important; + border-top-left-radius: 0.375rem !important; +} + +.rounded-start-0 { + border-bottom-left-radius: 0 !important; + border-top-left-radius: 0 !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; +} + +.max-vh-25 { + max-height: 25vh !important; +} + +.max-vh-50 { + max-height: 50vh !important; +} + +.max-vh-75 { + max-height: 75vh !important; +} + +.max-vh-100 { + max-height: 100vh !important; +} + +.border-x { + border-left: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; + border-right: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; +} + +.border-x-0 { + border-left: 0 !important; + border-right: 0 !important; +} + +.border-y { + border-top: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; + border-bottom: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; +} + +.border-y-0 { + border-top: 0 !important; + border-bottom: 0 !important; +} + +.border-primary { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-primary-rgb), var(--falcon-border-opacity)) !important; +} + +.border-secondary { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-secondary-rgb), var(--falcon-border-opacity)) !important; +} + +.border-success { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-success-rgb), var(--falcon-border-opacity)) !important; +} + +.border-info { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-info-rgb), var(--falcon-border-opacity)) !important; +} + +.border-warning { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-warning-rgb), var(--falcon-border-opacity)) !important; +} + +.border-danger { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-danger-rgb), var(--falcon-border-opacity)) !important; +} + +.border-light { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-light-rgb), var(--falcon-border-opacity)) !important; +} + +.border-dark { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-dark-rgb), var(--falcon-border-opacity)) !important; +} + +.border-facebook { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-facebook-rgb), var(--falcon-border-opacity)) !important; +} + +.border-google-plus { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-google-plus-rgb), var(--falcon-border-opacity)) !important; +} + +.border-twitter { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-twitter-rgb), var(--falcon-border-opacity)) !important; +} + +.border-linkedin { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-linkedin-rgb), var(--falcon-border-opacity)) !important; +} + +.border-youtube { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-youtube-rgb), var(--falcon-border-opacity)) !important; +} + +.border-github { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-github-rgb), var(--falcon-border-opacity)) !important; +} + +.border-white { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-white-rgb), var(--falcon-border-opacity)) !important; +} + +.border-100 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-100-rgb), var(--falcon-border-opacity)) !important; +} + +.border-200 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-200-rgb), var(--falcon-border-opacity)) !important; +} + +.border-300 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-300-rgb), var(--falcon-border-opacity)) !important; +} + +.border-400 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-400-rgb), var(--falcon-border-opacity)) !important; +} + +.border-500 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-500-rgb), var(--falcon-border-opacity)) !important; +} + +.border-600 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-600-rgb), var(--falcon-border-opacity)) !important; +} + +.border-700 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-700-rgb), var(--falcon-border-opacity)) !important; +} + +.border-800 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-800-rgb), var(--falcon-border-opacity)) !important; +} + +.border-900 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-900-rgb), var(--falcon-border-opacity)) !important; +} + +.border-1000 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-1000-rgb), var(--falcon-border-opacity)) !important; +} + +.border-1100 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-1100-rgb), var(--falcon-border-opacity)) !important; +} + +.border-dotted { + --falcon-border-style: dotted !important; +} + +.border-dashed { + --falcon-border-style: dashed !important; +} + +.border-none { + --falcon-border-style: none !important; +} + +.border-hidden { + --falcon-border-style: hidden !important; +} + +.rounded-0 { + border-radius: 0 !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 { + object-fit: contain !important; + } + .object-fit-sm-cover { + object-fit: cover !important; + } + .object-fit-sm-fill { + object-fit: fill !important; + } + .object-fit-sm-scale { + object-fit: scale-down !important; + } + .object-fit-sm-none { + object-fit: none !important; + } + .opacity-sm-0 { + opacity: 0 !important; + } + .opacity-sm-25 { + opacity: 0.25 !important; + } + .opacity-sm-50 { + opacity: 0.5 !important; + } + .opacity-sm-75 { + opacity: 0.75 !important; + } + .opacity-sm-85 { + opacity: 0.85 !important; + } + .opacity-sm-100 { + opacity: 1 !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; + } + .position-sm-static { + position: static !important; + } + .position-sm-absolute { + position: absolute !important; + } + .position-sm-relative { + position: relative !important; + } + .position-sm-fixed { + position: fixed !important; + } + .position-sm-sticky { + position: sticky !important; + } + .translate-sm-middle { + transform: translateX(-50%) translateY(-50%) !important; + } + .translate-sm-middle-x { + transform: translateX(-50%) !important; + } + .translate-sm-middle-y { + transform: translateY(-50%) !important; + } + .border-sm { + border: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; + } + .border-sm-0 { + border: 0 !important; + } + .border-sm-top { + border-top: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; + } + .border-sm-top-0 { + border-top: 0 !important; + } + .border-sm-end { + border-right: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; + } + .border-sm-end-0 { + border-right: 0 !important; + } + .border-sm-bottom { + border-bottom: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; + } + .border-sm-bottom-0 { + border-bottom: 0 !important; + } + .border-sm-start { + border-left: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; + } + .border-sm-start-0 { + border-left: 0 !important; + } + .w-sm-25 { + width: 25% !important; + } + .w-sm-50 { + width: 50% !important; + } + .w-sm-75 { + width: 75% !important; + } + .w-sm-100 { + width: 100% !important; + } + .w-sm-auto { + width: auto !important; + } + .vw-sm-25 { + width: 25vw !important; + } + .vw-sm-50 { + width: 50vw !important; + } + .vw-sm-75 { + width: 75vw !important; + } + .vw-sm-100 { + width: 100vw !important; + } + .h-sm-25 { + height: 25% !important; + } + .h-sm-50 { + height: 50% !important; + } + .h-sm-75 { + height: 75% !important; + } + .h-sm-100 { + height: 100% !important; + } + .h-sm-auto { + height: auto !important; + } + .vh-sm-25 { + height: 25vh !important; + } + .vh-sm-50 { + height: 50vh !important; + } + .vh-sm-75 { + height: 75vh !important; + } + .vh-sm-100 { + height: 100vh !important; + } + .min-vh-sm-25 { + min-height: 25vh !important; + } + .min-vh-sm-50 { + min-height: 50vh !important; + } + .min-vh-sm-75 { + min-height: 75vh !important; + } + .min-vh-sm-100 { + min-height: 100vh !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: 0.25rem !important; + } + .m-sm-2 { + margin: 0.5rem !important; + } + .m-sm-3 { + margin: 1rem !important; + } + .m-sm-4 { + margin: 1.8rem !important; + } + .m-sm-5 { + margin: 3rem !important; + } + .m-sm-6 { + margin: 4rem !important; + } + .m-sm-7 { + margin: 5rem !important; + } + .m-sm-8 { + margin: 7.5rem !important; + } + .m-sm-9 { + margin: 10rem !important; + } + .m-sm-10 { + margin: 12.5rem !important; + } + .m-sm-11 { + margin: 15rem !important; + } + .m-sm-x1 { + margin: 1.25rem !important; + } + .m-sm-auto { + margin: auto !important; + } + .mx-sm-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-sm-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-sm-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-sm-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-sm-4 { + margin-right: 1.8rem !important; + margin-left: 1.8rem !important; + } + .mx-sm-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-sm-6 { + margin-right: 4rem !important; + margin-left: 4rem !important; + } + .mx-sm-7 { + margin-right: 5rem !important; + margin-left: 5rem !important; + } + .mx-sm-8 { + margin-right: 7.5rem !important; + margin-left: 7.5rem !important; + } + .mx-sm-9 { + margin-right: 10rem !important; + margin-left: 10rem !important; + } + .mx-sm-10 { + margin-right: 12.5rem !important; + margin-left: 12.5rem !important; + } + .mx-sm-11 { + margin-right: 15rem !important; + margin-left: 15rem !important; + } + .mx-sm-x1 { + margin-right: 1.25rem !important; + margin-left: 1.25rem !important; + } + .mx-sm-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-sm-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-sm-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-sm-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-sm-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-sm-4 { + margin-top: 1.8rem !important; + margin-bottom: 1.8rem !important; + } + .my-sm-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-sm-6 { + margin-top: 4rem !important; + margin-bottom: 4rem !important; + } + .my-sm-7 { + margin-top: 5rem !important; + margin-bottom: 5rem !important; + } + .my-sm-8 { + margin-top: 7.5rem !important; + margin-bottom: 7.5rem !important; + } + .my-sm-9 { + margin-top: 10rem !important; + margin-bottom: 10rem !important; + } + .my-sm-10 { + margin-top: 12.5rem !important; + margin-bottom: 12.5rem !important; + } + .my-sm-11 { + margin-top: 15rem !important; + margin-bottom: 15rem !important; + } + .my-sm-x1 { + margin-top: 1.25rem !important; + margin-bottom: 1.25rem !important; + } + .my-sm-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-sm-0 { + margin-top: 0 !important; + } + .mt-sm-1 { + margin-top: 0.25rem !important; + } + .mt-sm-2 { + margin-top: 0.5rem !important; + } + .mt-sm-3 { + margin-top: 1rem !important; + } + .mt-sm-4 { + margin-top: 1.8rem !important; + } + .mt-sm-5 { + margin-top: 3rem !important; + } + .mt-sm-6 { + margin-top: 4rem !important; + } + .mt-sm-7 { + margin-top: 5rem !important; + } + .mt-sm-8 { + margin-top: 7.5rem !important; + } + .mt-sm-9 { + margin-top: 10rem !important; + } + .mt-sm-10 { + margin-top: 12.5rem !important; + } + .mt-sm-11 { + margin-top: 15rem !important; + } + .mt-sm-x1 { + margin-top: 1.25rem !important; + } + .mt-sm-auto { + margin-top: auto !important; + } + .me-sm-0 { + margin-right: 0 !important; + } + .me-sm-1 { + margin-right: 0.25rem !important; + } + .me-sm-2 { + margin-right: 0.5rem !important; + } + .me-sm-3 { + margin-right: 1rem !important; + } + .me-sm-4 { + margin-right: 1.8rem !important; + } + .me-sm-5 { + margin-right: 3rem !important; + } + .me-sm-6 { + margin-right: 4rem !important; + } + .me-sm-7 { + margin-right: 5rem !important; + } + .me-sm-8 { + margin-right: 7.5rem !important; + } + .me-sm-9 { + margin-right: 10rem !important; + } + .me-sm-10 { + margin-right: 12.5rem !important; + } + .me-sm-11 { + margin-right: 15rem !important; + } + .me-sm-x1 { + margin-right: 1.25rem !important; + } + .me-sm-auto { + margin-right: auto !important; + } + .mb-sm-0 { + margin-bottom: 0 !important; + } + .mb-sm-1 { + margin-bottom: 0.25rem !important; + } + .mb-sm-2 { + margin-bottom: 0.5rem !important; + } + .mb-sm-3 { + margin-bottom: 1rem !important; + } + .mb-sm-4 { + margin-bottom: 1.8rem !important; + } + .mb-sm-5 { + margin-bottom: 3rem !important; + } + .mb-sm-6 { + margin-bottom: 4rem !important; + } + .mb-sm-7 { + margin-bottom: 5rem !important; + } + .mb-sm-8 { + margin-bottom: 7.5rem !important; + } + .mb-sm-9 { + margin-bottom: 10rem !important; + } + .mb-sm-10 { + margin-bottom: 12.5rem !important; + } + .mb-sm-11 { + margin-bottom: 15rem !important; + } + .mb-sm-x1 { + margin-bottom: 1.25rem !important; + } + .mb-sm-auto { + margin-bottom: auto !important; + } + .ms-sm-0 { + margin-left: 0 !important; + } + .ms-sm-1 { + margin-left: 0.25rem !important; + } + .ms-sm-2 { + margin-left: 0.5rem !important; + } + .ms-sm-3 { + margin-left: 1rem !important; + } + .ms-sm-4 { + margin-left: 1.8rem !important; + } + .ms-sm-5 { + margin-left: 3rem !important; + } + .ms-sm-6 { + margin-left: 4rem !important; + } + .ms-sm-7 { + margin-left: 5rem !important; + } + .ms-sm-8 { + margin-left: 7.5rem !important; + } + .ms-sm-9 { + margin-left: 10rem !important; + } + .ms-sm-10 { + margin-left: 12.5rem !important; + } + .ms-sm-11 { + margin-left: 15rem !important; + } + .ms-sm-x1 { + margin-left: 1.25rem !important; + } + .ms-sm-auto { + margin-left: auto !important; + } + .m-sm-n1 { + margin: -0.25rem !important; + } + .m-sm-n2 { + margin: -0.5rem !important; + } + .m-sm-n3 { + margin: -1rem !important; + } + .m-sm-n4 { + margin: -1.8rem !important; + } + .m-sm-n5 { + margin: -3rem !important; + } + .m-sm-n6 { + margin: -4rem !important; + } + .m-sm-n7 { + margin: -5rem !important; + } + .m-sm-n8 { + margin: -7.5rem !important; + } + .m-sm-n9 { + margin: -10rem !important; + } + .m-sm-n10 { + margin: -12.5rem !important; + } + .m-sm-n11 { + margin: -15rem !important; + } + .m-sm-nx1 { + margin: -1.25rem !important; + } + .mx-sm-n1 { + margin-right: -0.25rem !important; + margin-left: -0.25rem !important; + } + .mx-sm-n2 { + margin-right: -0.5rem !important; + margin-left: -0.5rem !important; + } + .mx-sm-n3 { + margin-right: -1rem !important; + margin-left: -1rem !important; + } + .mx-sm-n4 { + margin-right: -1.8rem !important; + margin-left: -1.8rem !important; + } + .mx-sm-n5 { + margin-right: -3rem !important; + margin-left: -3rem !important; + } + .mx-sm-n6 { + margin-right: -4rem !important; + margin-left: -4rem !important; + } + .mx-sm-n7 { + margin-right: -5rem !important; + margin-left: -5rem !important; + } + .mx-sm-n8 { + margin-right: -7.5rem !important; + margin-left: -7.5rem !important; + } + .mx-sm-n9 { + margin-right: -10rem !important; + margin-left: -10rem !important; + } + .mx-sm-n10 { + margin-right: -12.5rem !important; + margin-left: -12.5rem !important; + } + .mx-sm-n11 { + margin-right: -15rem !important; + margin-left: -15rem !important; + } + .mx-sm-nx1 { + margin-right: -1.25rem !important; + margin-left: -1.25rem !important; + } + .my-sm-n1 { + margin-top: -0.25rem !important; + margin-bottom: -0.25rem !important; + } + .my-sm-n2 { + margin-top: -0.5rem !important; + margin-bottom: -0.5rem !important; + } + .my-sm-n3 { + margin-top: -1rem !important; + margin-bottom: -1rem !important; + } + .my-sm-n4 { + margin-top: -1.8rem !important; + margin-bottom: -1.8rem !important; + } + .my-sm-n5 { + margin-top: -3rem !important; + margin-bottom: -3rem !important; + } + .my-sm-n6 { + margin-top: -4rem !important; + margin-bottom: -4rem !important; + } + .my-sm-n7 { + margin-top: -5rem !important; + margin-bottom: -5rem !important; + } + .my-sm-n8 { + margin-top: -7.5rem !important; + margin-bottom: -7.5rem !important; + } + .my-sm-n9 { + margin-top: -10rem !important; + margin-bottom: -10rem !important; + } + .my-sm-n10 { + margin-top: -12.5rem !important; + margin-bottom: -12.5rem !important; + } + .my-sm-n11 { + margin-top: -15rem !important; + margin-bottom: -15rem !important; + } + .my-sm-nx1 { + margin-top: -1.25rem !important; + margin-bottom: -1.25rem !important; + } + .mt-sm-n1 { + margin-top: -0.25rem !important; + } + .mt-sm-n2 { + margin-top: -0.5rem !important; + } + .mt-sm-n3 { + margin-top: -1rem !important; + } + .mt-sm-n4 { + margin-top: -1.8rem !important; + } + .mt-sm-n5 { + margin-top: -3rem !important; + } + .mt-sm-n6 { + margin-top: -4rem !important; + } + .mt-sm-n7 { + margin-top: -5rem !important; + } + .mt-sm-n8 { + margin-top: -7.5rem !important; + } + .mt-sm-n9 { + margin-top: -10rem !important; + } + .mt-sm-n10 { + margin-top: -12.5rem !important; + } + .mt-sm-n11 { + margin-top: -15rem !important; + } + .mt-sm-nx1 { + margin-top: -1.25rem !important; + } + .me-sm-n1 { + margin-right: -0.25rem !important; + } + .me-sm-n2 { + margin-right: -0.5rem !important; + } + .me-sm-n3 { + margin-right: -1rem !important; + } + .me-sm-n4 { + margin-right: -1.8rem !important; + } + .me-sm-n5 { + margin-right: -3rem !important; + } + .me-sm-n6 { + margin-right: -4rem !important; + } + .me-sm-n7 { + margin-right: -5rem !important; + } + .me-sm-n8 { + margin-right: -7.5rem !important; + } + .me-sm-n9 { + margin-right: -10rem !important; + } + .me-sm-n10 { + margin-right: -12.5rem !important; + } + .me-sm-n11 { + margin-right: -15rem !important; + } + .me-sm-nx1 { + margin-right: -1.25rem !important; + } + .mb-sm-n1 { + margin-bottom: -0.25rem !important; + } + .mb-sm-n2 { + margin-bottom: -0.5rem !important; + } + .mb-sm-n3 { + margin-bottom: -1rem !important; + } + .mb-sm-n4 { + margin-bottom: -1.8rem !important; + } + .mb-sm-n5 { + margin-bottom: -3rem !important; + } + .mb-sm-n6 { + margin-bottom: -4rem !important; + } + .mb-sm-n7 { + margin-bottom: -5rem !important; + } + .mb-sm-n8 { + margin-bottom: -7.5rem !important; + } + .mb-sm-n9 { + margin-bottom: -10rem !important; + } + .mb-sm-n10 { + margin-bottom: -12.5rem !important; + } + .mb-sm-n11 { + margin-bottom: -15rem !important; + } + .mb-sm-nx1 { + margin-bottom: -1.25rem !important; + } + .ms-sm-n1 { + margin-left: -0.25rem !important; + } + .ms-sm-n2 { + margin-left: -0.5rem !important; + } + .ms-sm-n3 { + margin-left: -1rem !important; + } + .ms-sm-n4 { + margin-left: -1.8rem !important; + } + .ms-sm-n5 { + margin-left: -3rem !important; + } + .ms-sm-n6 { + margin-left: -4rem !important; + } + .ms-sm-n7 { + margin-left: -5rem !important; + } + .ms-sm-n8 { + margin-left: -7.5rem !important; + } + .ms-sm-n9 { + margin-left: -10rem !important; + } + .ms-sm-n10 { + margin-left: -12.5rem !important; + } + .ms-sm-n11 { + margin-left: -15rem !important; + } + .ms-sm-nx1 { + margin-left: -1.25rem !important; + } + .p-sm-0 { + padding: 0 !important; + } + .p-sm-1 { + padding: 0.25rem !important; + } + .p-sm-2 { + padding: 0.5rem !important; + } + .p-sm-3 { + padding: 1rem !important; + } + .p-sm-4 { + padding: 1.8rem !important; + } + .p-sm-5 { + padding: 3rem !important; + } + .p-sm-6 { + padding: 4rem !important; + } + .p-sm-7 { + padding: 5rem !important; + } + .p-sm-8 { + padding: 7.5rem !important; + } + .p-sm-9 { + padding: 10rem !important; + } + .p-sm-10 { + padding: 12.5rem !important; + } + .p-sm-11 { + padding: 15rem !important; + } + .p-sm-x1 { + padding: 1.25rem !important; + } + .px-sm-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-sm-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-sm-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-sm-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-sm-4 { + padding-right: 1.8rem !important; + padding-left: 1.8rem !important; + } + .px-sm-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .px-sm-6 { + padding-right: 4rem !important; + padding-left: 4rem !important; + } + .px-sm-7 { + padding-right: 5rem !important; + padding-left: 5rem !important; + } + .px-sm-8 { + padding-right: 7.5rem !important; + padding-left: 7.5rem !important; + } + .px-sm-9 { + padding-right: 10rem !important; + padding-left: 10rem !important; + } + .px-sm-10 { + padding-right: 12.5rem !important; + padding-left: 12.5rem !important; + } + .px-sm-11 { + padding-right: 15rem !important; + padding-left: 15rem !important; + } + .px-sm-x1 { + padding-right: 1.25rem !important; + padding-left: 1.25rem !important; + } + .py-sm-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-sm-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-sm-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-sm-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-sm-4 { + padding-top: 1.8rem !important; + padding-bottom: 1.8rem !important; + } + .py-sm-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .py-sm-6 { + padding-top: 4rem !important; + padding-bottom: 4rem !important; + } + .py-sm-7 { + padding-top: 5rem !important; + padding-bottom: 5rem !important; + } + .py-sm-8 { + padding-top: 7.5rem !important; + padding-bottom: 7.5rem !important; + } + .py-sm-9 { + padding-top: 10rem !important; + padding-bottom: 10rem !important; + } + .py-sm-10 { + padding-top: 12.5rem !important; + padding-bottom: 12.5rem !important; + } + .py-sm-11 { + padding-top: 15rem !important; + padding-bottom: 15rem !important; + } + .py-sm-x1 { + padding-top: 1.25rem !important; + padding-bottom: 1.25rem !important; + } + .pt-sm-0 { + padding-top: 0 !important; + } + .pt-sm-1 { + padding-top: 0.25rem !important; + } + .pt-sm-2 { + padding-top: 0.5rem !important; + } + .pt-sm-3 { + padding-top: 1rem !important; + } + .pt-sm-4 { + padding-top: 1.8rem !important; + } + .pt-sm-5 { + padding-top: 3rem !important; + } + .pt-sm-6 { + padding-top: 4rem !important; + } + .pt-sm-7 { + padding-top: 5rem !important; + } + .pt-sm-8 { + padding-top: 7.5rem !important; + } + .pt-sm-9 { + padding-top: 10rem !important; + } + .pt-sm-10 { + padding-top: 12.5rem !important; + } + .pt-sm-11 { + padding-top: 15rem !important; + } + .pt-sm-x1 { + padding-top: 1.25rem !important; + } + .pe-sm-0 { + padding-right: 0 !important; + } + .pe-sm-1 { + padding-right: 0.25rem !important; + } + .pe-sm-2 { + padding-right: 0.5rem !important; + } + .pe-sm-3 { + padding-right: 1rem !important; + } + .pe-sm-4 { + padding-right: 1.8rem !important; + } + .pe-sm-5 { + padding-right: 3rem !important; + } + .pe-sm-6 { + padding-right: 4rem !important; + } + .pe-sm-7 { + padding-right: 5rem !important; + } + .pe-sm-8 { + padding-right: 7.5rem !important; + } + .pe-sm-9 { + padding-right: 10rem !important; + } + .pe-sm-10 { + padding-right: 12.5rem !important; + } + .pe-sm-11 { + padding-right: 15rem !important; + } + .pe-sm-x1 { + padding-right: 1.25rem !important; + } + .pb-sm-0 { + padding-bottom: 0 !important; + } + .pb-sm-1 { + padding-bottom: 0.25rem !important; + } + .pb-sm-2 { + padding-bottom: 0.5rem !important; + } + .pb-sm-3 { + padding-bottom: 1rem !important; + } + .pb-sm-4 { + padding-bottom: 1.8rem !important; + } + .pb-sm-5 { + padding-bottom: 3rem !important; + } + .pb-sm-6 { + padding-bottom: 4rem !important; + } + .pb-sm-7 { + padding-bottom: 5rem !important; + } + .pb-sm-8 { + padding-bottom: 7.5rem !important; + } + .pb-sm-9 { + padding-bottom: 10rem !important; + } + .pb-sm-10 { + padding-bottom: 12.5rem !important; + } + .pb-sm-11 { + padding-bottom: 15rem !important; + } + .pb-sm-x1 { + padding-bottom: 1.25rem !important; + } + .ps-sm-0 { + padding-left: 0 !important; + } + .ps-sm-1 { + padding-left: 0.25rem !important; + } + .ps-sm-2 { + padding-left: 0.5rem !important; + } + .ps-sm-3 { + padding-left: 1rem !important; + } + .ps-sm-4 { + padding-left: 1.8rem !important; + } + .ps-sm-5 { + padding-left: 3rem !important; + } + .ps-sm-6 { + padding-left: 4rem !important; + } + .ps-sm-7 { + padding-left: 5rem !important; + } + .ps-sm-8 { + padding-left: 7.5rem !important; + } + .ps-sm-9 { + padding-left: 10rem !important; + } + .ps-sm-10 { + padding-left: 12.5rem !important; + } + .ps-sm-11 { + padding-left: 15rem !important; + } + .ps-sm-x1 { + padding-left: 1.25rem !important; + } + .gap-sm-0 { + gap: 0 !important; + } + .gap-sm-1 { + gap: 0.25rem !important; + } + .gap-sm-2 { + gap: 0.5rem !important; + } + .gap-sm-3 { + gap: 1rem !important; + } + .gap-sm-4 { + gap: 1.8rem !important; + } + .gap-sm-5 { + gap: 3rem !important; + } + .gap-sm-6 { + gap: 4rem !important; + } + .gap-sm-7 { + gap: 5rem !important; + } + .gap-sm-8 { + gap: 7.5rem !important; + } + .gap-sm-9 { + gap: 10rem !important; + } + .gap-sm-10 { + gap: 12.5rem !important; + } + .gap-sm-11 { + gap: 15rem !important; + } + .gap-sm-x1 { + gap: 1.25rem !important; + } + .row-gap-sm-0 { + row-gap: 0 !important; + } + .row-gap-sm-1 { + row-gap: 0.25rem !important; + } + .row-gap-sm-2 { + row-gap: 0.5rem !important; + } + .row-gap-sm-3 { + row-gap: 1rem !important; + } + .row-gap-sm-4 { + row-gap: 1.8rem !important; + } + .row-gap-sm-5 { + row-gap: 3rem !important; + } + .row-gap-sm-6 { + row-gap: 4rem !important; + } + .row-gap-sm-7 { + row-gap: 5rem !important; + } + .row-gap-sm-8 { + row-gap: 7.5rem !important; + } + .row-gap-sm-9 { + row-gap: 10rem !important; + } + .row-gap-sm-10 { + row-gap: 12.5rem !important; + } + .row-gap-sm-11 { + row-gap: 15rem !important; + } + .row-gap-sm-x1 { + row-gap: 1.25rem !important; + } + .column-gap-sm-0 { + column-gap: 0 !important; + } + .column-gap-sm-1 { + column-gap: 0.25rem !important; + } + .column-gap-sm-2 { + column-gap: 0.5rem !important; + } + .column-gap-sm-3 { + column-gap: 1rem !important; + } + .column-gap-sm-4 { + column-gap: 1.8rem !important; + } + .column-gap-sm-5 { + column-gap: 3rem !important; + } + .column-gap-sm-6 { + column-gap: 4rem !important; + } + .column-gap-sm-7 { + column-gap: 5rem !important; + } + .column-gap-sm-8 { + column-gap: 7.5rem !important; + } + .column-gap-sm-9 { + column-gap: 10rem !important; + } + .column-gap-sm-10 { + column-gap: 12.5rem !important; + } + .column-gap-sm-11 { + column-gap: 15rem !important; + } + .column-gap-sm-x1 { + column-gap: 1.25rem !important; + } + .fs-sm-11 { + font-size: 0.6944444444rem !important; + } + .fs-sm-10 { + font-size: 0.8333333333rem !important; + } + .fs-sm-9 { + font-size: 1rem !important; + } + .fs-sm-8 { + font-size: 1.2rem !important; + } + .fs-sm-7 { + font-size: 1.44rem !important; + } + .fs-sm-6 { + font-size: 1.728rem !important; + } + .fs-sm-5 { + font-size: 2.0736rem !important; + } + .fs-sm-4 { + font-size: 2.48832rem !important; + } + .fs-sm-3 { + font-size: 2.985984rem !important; + } + .fs-sm-2 { + font-size: 3.5831808rem !important; + } + .fs-sm-1 { + font-size: 4.29981696rem !important; + } + .text-sm-start { + text-align: left !important; + } + .text-sm-end { + text-align: right !important; + } + .text-sm-center { + text-align: center !important; + } + .rounded-sm-top { + border-top-left-radius: 0.25rem !important; + border-top-right-radius: 0.25rem !important; + } + .rounded-sm-top-lg { + border-top-left-radius: 0.375rem !important; + border-top-right-radius: 0.375rem !important; + } + .rounded-sm-top-0 { + border-top-left-radius: 0 !important; + border-top-right-radius: 0 !important; + } + .rounded-sm-end { + border-top-right-radius: 0.25rem !important; + border-bottom-right-radius: 0.25rem !important; + } + .rounded-sm-end-lg { + border-top-right-radius: 0.375rem !important; + border-bottom-right-radius: 0.375rem !important; + } + .rounded-sm-end-0 { + border-top-right-radius: 0 !important; + border-bottom-right-radius: 0 !important; + } + .rounded-sm-bottom { + border-bottom-right-radius: 0.25rem !important; + border-bottom-left-radius: 0.25rem !important; + } + .rounded-sm-bottom-lg { + border-bottom-right-radius: 0.375rem !important; + border-bottom-left-radius: 0.375rem !important; + } + .rounded-sm-bottom-0 { + border-bottom-right-radius: 0 !important; + border-bottom-left-radius: 0 !important; + } + .rounded-sm-start { + border-bottom-left-radius: 0.25rem !important; + border-top-left-radius: 0.25rem !important; + } + .rounded-sm-start-lg { + border-bottom-left-radius: 0.375rem !important; + border-top-left-radius: 0.375rem !important; + } + .rounded-sm-start-0 { + border-bottom-left-radius: 0 !important; + border-top-left-radius: 0 !important; + } + .max-vh-sm-25 { + max-height: 25vh !important; + } + .max-vh-sm-50 { + max-height: 50vh !important; + } + .max-vh-sm-75 { + max-height: 75vh !important; + } + .max-vh-sm-100 { + max-height: 100vh !important; + } + .border-sm-x { + border-left: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; + border-right: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; + } + .border-sm-x-0 { + border-left: 0 !important; + border-right: 0 !important; + } + .border-sm-y { + border-top: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; + border-bottom: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; + } + .border-sm-y-0 { + border-top: 0 !important; + border-bottom: 0 !important; + } + .border-sm-primary { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-primary-rgb), var(--falcon-border-opacity)) !important; + } + .border-sm-secondary { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-secondary-rgb), var(--falcon-border-opacity)) !important; + } + .border-sm-success { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-success-rgb), var(--falcon-border-opacity)) !important; + } + .border-sm-info { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-info-rgb), var(--falcon-border-opacity)) !important; + } + .border-sm-warning { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-warning-rgb), var(--falcon-border-opacity)) !important; + } + .border-sm-danger { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-danger-rgb), var(--falcon-border-opacity)) !important; + } + .border-sm-light { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-light-rgb), var(--falcon-border-opacity)) !important; + } + .border-sm-dark { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-dark-rgb), var(--falcon-border-opacity)) !important; + } + .border-sm-facebook { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-facebook-rgb), var(--falcon-border-opacity)) !important; + } + .border-sm-google-plus { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-google-plus-rgb), var(--falcon-border-opacity)) !important; + } + .border-sm-twitter { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-twitter-rgb), var(--falcon-border-opacity)) !important; + } + .border-sm-linkedin { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-linkedin-rgb), var(--falcon-border-opacity)) !important; + } + .border-sm-youtube { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-youtube-rgb), var(--falcon-border-opacity)) !important; + } + .border-sm-github { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-github-rgb), var(--falcon-border-opacity)) !important; + } + .border-sm-white { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-white-rgb), var(--falcon-border-opacity)) !important; + } + .border-sm-100 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-100-rgb), var(--falcon-border-opacity)) !important; + } + .border-sm-200 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-200-rgb), var(--falcon-border-opacity)) !important; + } + .border-sm-300 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-300-rgb), var(--falcon-border-opacity)) !important; + } + .border-sm-400 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-400-rgb), var(--falcon-border-opacity)) !important; + } + .border-sm-500 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-500-rgb), var(--falcon-border-opacity)) !important; + } + .border-sm-600 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-600-rgb), var(--falcon-border-opacity)) !important; + } + .border-sm-700 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-700-rgb), var(--falcon-border-opacity)) !important; + } + .border-sm-800 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-800-rgb), var(--falcon-border-opacity)) !important; + } + .border-sm-900 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-900-rgb), var(--falcon-border-opacity)) !important; + } + .border-sm-1000 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-1000-rgb), var(--falcon-border-opacity)) !important; + } + .border-sm-1100 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-1100-rgb), var(--falcon-border-opacity)) !important; + } + .rounded-sm-0 { + border-radius: 0 !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 { + object-fit: contain !important; + } + .object-fit-md-cover { + object-fit: cover !important; + } + .object-fit-md-fill { + object-fit: fill !important; + } + .object-fit-md-scale { + object-fit: scale-down !important; + } + .object-fit-md-none { + object-fit: none !important; + } + .opacity-md-0 { + opacity: 0 !important; + } + .opacity-md-25 { + opacity: 0.25 !important; + } + .opacity-md-50 { + opacity: 0.5 !important; + } + .opacity-md-75 { + opacity: 0.75 !important; + } + .opacity-md-85 { + opacity: 0.85 !important; + } + .opacity-md-100 { + opacity: 1 !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; + } + .position-md-static { + position: static !important; + } + .position-md-absolute { + position: absolute !important; + } + .position-md-relative { + position: relative !important; + } + .position-md-fixed { + position: fixed !important; + } + .position-md-sticky { + position: sticky !important; + } + .translate-md-middle { + transform: translateX(-50%) translateY(-50%) !important; + } + .translate-md-middle-x { + transform: translateX(-50%) !important; + } + .translate-md-middle-y { + transform: translateY(-50%) !important; + } + .border-md { + border: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; + } + .border-md-0 { + border: 0 !important; + } + .border-md-top { + border-top: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; + } + .border-md-top-0 { + border-top: 0 !important; + } + .border-md-end { + border-right: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; + } + .border-md-end-0 { + border-right: 0 !important; + } + .border-md-bottom { + border-bottom: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; + } + .border-md-bottom-0 { + border-bottom: 0 !important; + } + .border-md-start { + border-left: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; + } + .border-md-start-0 { + border-left: 0 !important; + } + .w-md-25 { + width: 25% !important; + } + .w-md-50 { + width: 50% !important; + } + .w-md-75 { + width: 75% !important; + } + .w-md-100 { + width: 100% !important; + } + .w-md-auto { + width: auto !important; + } + .vw-md-25 { + width: 25vw !important; + } + .vw-md-50 { + width: 50vw !important; + } + .vw-md-75 { + width: 75vw !important; + } + .vw-md-100 { + width: 100vw !important; + } + .h-md-25 { + height: 25% !important; + } + .h-md-50 { + height: 50% !important; + } + .h-md-75 { + height: 75% !important; + } + .h-md-100 { + height: 100% !important; + } + .h-md-auto { + height: auto !important; + } + .vh-md-25 { + height: 25vh !important; + } + .vh-md-50 { + height: 50vh !important; + } + .vh-md-75 { + height: 75vh !important; + } + .vh-md-100 { + height: 100vh !important; + } + .min-vh-md-25 { + min-height: 25vh !important; + } + .min-vh-md-50 { + min-height: 50vh !important; + } + .min-vh-md-75 { + min-height: 75vh !important; + } + .min-vh-md-100 { + min-height: 100vh !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: 0.25rem !important; + } + .m-md-2 { + margin: 0.5rem !important; + } + .m-md-3 { + margin: 1rem !important; + } + .m-md-4 { + margin: 1.8rem !important; + } + .m-md-5 { + margin: 3rem !important; + } + .m-md-6 { + margin: 4rem !important; + } + .m-md-7 { + margin: 5rem !important; + } + .m-md-8 { + margin: 7.5rem !important; + } + .m-md-9 { + margin: 10rem !important; + } + .m-md-10 { + margin: 12.5rem !important; + } + .m-md-11 { + margin: 15rem !important; + } + .m-md-x1 { + margin: 1.25rem !important; + } + .m-md-auto { + margin: auto !important; + } + .mx-md-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-md-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-md-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-md-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-md-4 { + margin-right: 1.8rem !important; + margin-left: 1.8rem !important; + } + .mx-md-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-md-6 { + margin-right: 4rem !important; + margin-left: 4rem !important; + } + .mx-md-7 { + margin-right: 5rem !important; + margin-left: 5rem !important; + } + .mx-md-8 { + margin-right: 7.5rem !important; + margin-left: 7.5rem !important; + } + .mx-md-9 { + margin-right: 10rem !important; + margin-left: 10rem !important; + } + .mx-md-10 { + margin-right: 12.5rem !important; + margin-left: 12.5rem !important; + } + .mx-md-11 { + margin-right: 15rem !important; + margin-left: 15rem !important; + } + .mx-md-x1 { + margin-right: 1.25rem !important; + margin-left: 1.25rem !important; + } + .mx-md-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-md-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-md-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-md-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-md-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-md-4 { + margin-top: 1.8rem !important; + margin-bottom: 1.8rem !important; + } + .my-md-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-md-6 { + margin-top: 4rem !important; + margin-bottom: 4rem !important; + } + .my-md-7 { + margin-top: 5rem !important; + margin-bottom: 5rem !important; + } + .my-md-8 { + margin-top: 7.5rem !important; + margin-bottom: 7.5rem !important; + } + .my-md-9 { + margin-top: 10rem !important; + margin-bottom: 10rem !important; + } + .my-md-10 { + margin-top: 12.5rem !important; + margin-bottom: 12.5rem !important; + } + .my-md-11 { + margin-top: 15rem !important; + margin-bottom: 15rem !important; + } + .my-md-x1 { + margin-top: 1.25rem !important; + margin-bottom: 1.25rem !important; + } + .my-md-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-md-0 { + margin-top: 0 !important; + } + .mt-md-1 { + margin-top: 0.25rem !important; + } + .mt-md-2 { + margin-top: 0.5rem !important; + } + .mt-md-3 { + margin-top: 1rem !important; + } + .mt-md-4 { + margin-top: 1.8rem !important; + } + .mt-md-5 { + margin-top: 3rem !important; + } + .mt-md-6 { + margin-top: 4rem !important; + } + .mt-md-7 { + margin-top: 5rem !important; + } + .mt-md-8 { + margin-top: 7.5rem !important; + } + .mt-md-9 { + margin-top: 10rem !important; + } + .mt-md-10 { + margin-top: 12.5rem !important; + } + .mt-md-11 { + margin-top: 15rem !important; + } + .mt-md-x1 { + margin-top: 1.25rem !important; + } + .mt-md-auto { + margin-top: auto !important; + } + .me-md-0 { + margin-right: 0 !important; + } + .me-md-1 { + margin-right: 0.25rem !important; + } + .me-md-2 { + margin-right: 0.5rem !important; + } + .me-md-3 { + margin-right: 1rem !important; + } + .me-md-4 { + margin-right: 1.8rem !important; + } + .me-md-5 { + margin-right: 3rem !important; + } + .me-md-6 { + margin-right: 4rem !important; + } + .me-md-7 { + margin-right: 5rem !important; + } + .me-md-8 { + margin-right: 7.5rem !important; + } + .me-md-9 { + margin-right: 10rem !important; + } + .me-md-10 { + margin-right: 12.5rem !important; + } + .me-md-11 { + margin-right: 15rem !important; + } + .me-md-x1 { + margin-right: 1.25rem !important; + } + .me-md-auto { + margin-right: auto !important; + } + .mb-md-0 { + margin-bottom: 0 !important; + } + .mb-md-1 { + margin-bottom: 0.25rem !important; + } + .mb-md-2 { + margin-bottom: 0.5rem !important; + } + .mb-md-3 { + margin-bottom: 1rem !important; + } + .mb-md-4 { + margin-bottom: 1.8rem !important; + } + .mb-md-5 { + margin-bottom: 3rem !important; + } + .mb-md-6 { + margin-bottom: 4rem !important; + } + .mb-md-7 { + margin-bottom: 5rem !important; + } + .mb-md-8 { + margin-bottom: 7.5rem !important; + } + .mb-md-9 { + margin-bottom: 10rem !important; + } + .mb-md-10 { + margin-bottom: 12.5rem !important; + } + .mb-md-11 { + margin-bottom: 15rem !important; + } + .mb-md-x1 { + margin-bottom: 1.25rem !important; + } + .mb-md-auto { + margin-bottom: auto !important; + } + .ms-md-0 { + margin-left: 0 !important; + } + .ms-md-1 { + margin-left: 0.25rem !important; + } + .ms-md-2 { + margin-left: 0.5rem !important; + } + .ms-md-3 { + margin-left: 1rem !important; + } + .ms-md-4 { + margin-left: 1.8rem !important; + } + .ms-md-5 { + margin-left: 3rem !important; + } + .ms-md-6 { + margin-left: 4rem !important; + } + .ms-md-7 { + margin-left: 5rem !important; + } + .ms-md-8 { + margin-left: 7.5rem !important; + } + .ms-md-9 { + margin-left: 10rem !important; + } + .ms-md-10 { + margin-left: 12.5rem !important; + } + .ms-md-11 { + margin-left: 15rem !important; + } + .ms-md-x1 { + margin-left: 1.25rem !important; + } + .ms-md-auto { + margin-left: auto !important; + } + .m-md-n1 { + margin: -0.25rem !important; + } + .m-md-n2 { + margin: -0.5rem !important; + } + .m-md-n3 { + margin: -1rem !important; + } + .m-md-n4 { + margin: -1.8rem !important; + } + .m-md-n5 { + margin: -3rem !important; + } + .m-md-n6 { + margin: -4rem !important; + } + .m-md-n7 { + margin: -5rem !important; + } + .m-md-n8 { + margin: -7.5rem !important; + } + .m-md-n9 { + margin: -10rem !important; + } + .m-md-n10 { + margin: -12.5rem !important; + } + .m-md-n11 { + margin: -15rem !important; + } + .m-md-nx1 { + margin: -1.25rem !important; + } + .mx-md-n1 { + margin-right: -0.25rem !important; + margin-left: -0.25rem !important; + } + .mx-md-n2 { + margin-right: -0.5rem !important; + margin-left: -0.5rem !important; + } + .mx-md-n3 { + margin-right: -1rem !important; + margin-left: -1rem !important; + } + .mx-md-n4 { + margin-right: -1.8rem !important; + margin-left: -1.8rem !important; + } + .mx-md-n5 { + margin-right: -3rem !important; + margin-left: -3rem !important; + } + .mx-md-n6 { + margin-right: -4rem !important; + margin-left: -4rem !important; + } + .mx-md-n7 { + margin-right: -5rem !important; + margin-left: -5rem !important; + } + .mx-md-n8 { + margin-right: -7.5rem !important; + margin-left: -7.5rem !important; + } + .mx-md-n9 { + margin-right: -10rem !important; + margin-left: -10rem !important; + } + .mx-md-n10 { + margin-right: -12.5rem !important; + margin-left: -12.5rem !important; + } + .mx-md-n11 { + margin-right: -15rem !important; + margin-left: -15rem !important; + } + .mx-md-nx1 { + margin-right: -1.25rem !important; + margin-left: -1.25rem !important; + } + .my-md-n1 { + margin-top: -0.25rem !important; + margin-bottom: -0.25rem !important; + } + .my-md-n2 { + margin-top: -0.5rem !important; + margin-bottom: -0.5rem !important; + } + .my-md-n3 { + margin-top: -1rem !important; + margin-bottom: -1rem !important; + } + .my-md-n4 { + margin-top: -1.8rem !important; + margin-bottom: -1.8rem !important; + } + .my-md-n5 { + margin-top: -3rem !important; + margin-bottom: -3rem !important; + } + .my-md-n6 { + margin-top: -4rem !important; + margin-bottom: -4rem !important; + } + .my-md-n7 { + margin-top: -5rem !important; + margin-bottom: -5rem !important; + } + .my-md-n8 { + margin-top: -7.5rem !important; + margin-bottom: -7.5rem !important; + } + .my-md-n9 { + margin-top: -10rem !important; + margin-bottom: -10rem !important; + } + .my-md-n10 { + margin-top: -12.5rem !important; + margin-bottom: -12.5rem !important; + } + .my-md-n11 { + margin-top: -15rem !important; + margin-bottom: -15rem !important; + } + .my-md-nx1 { + margin-top: -1.25rem !important; + margin-bottom: -1.25rem !important; + } + .mt-md-n1 { + margin-top: -0.25rem !important; + } + .mt-md-n2 { + margin-top: -0.5rem !important; + } + .mt-md-n3 { + margin-top: -1rem !important; + } + .mt-md-n4 { + margin-top: -1.8rem !important; + } + .mt-md-n5 { + margin-top: -3rem !important; + } + .mt-md-n6 { + margin-top: -4rem !important; + } + .mt-md-n7 { + margin-top: -5rem !important; + } + .mt-md-n8 { + margin-top: -7.5rem !important; + } + .mt-md-n9 { + margin-top: -10rem !important; + } + .mt-md-n10 { + margin-top: -12.5rem !important; + } + .mt-md-n11 { + margin-top: -15rem !important; + } + .mt-md-nx1 { + margin-top: -1.25rem !important; + } + .me-md-n1 { + margin-right: -0.25rem !important; + } + .me-md-n2 { + margin-right: -0.5rem !important; + } + .me-md-n3 { + margin-right: -1rem !important; + } + .me-md-n4 { + margin-right: -1.8rem !important; + } + .me-md-n5 { + margin-right: -3rem !important; + } + .me-md-n6 { + margin-right: -4rem !important; + } + .me-md-n7 { + margin-right: -5rem !important; + } + .me-md-n8 { + margin-right: -7.5rem !important; + } + .me-md-n9 { + margin-right: -10rem !important; + } + .me-md-n10 { + margin-right: -12.5rem !important; + } + .me-md-n11 { + margin-right: -15rem !important; + } + .me-md-nx1 { + margin-right: -1.25rem !important; + } + .mb-md-n1 { + margin-bottom: -0.25rem !important; + } + .mb-md-n2 { + margin-bottom: -0.5rem !important; + } + .mb-md-n3 { + margin-bottom: -1rem !important; + } + .mb-md-n4 { + margin-bottom: -1.8rem !important; + } + .mb-md-n5 { + margin-bottom: -3rem !important; + } + .mb-md-n6 { + margin-bottom: -4rem !important; + } + .mb-md-n7 { + margin-bottom: -5rem !important; + } + .mb-md-n8 { + margin-bottom: -7.5rem !important; + } + .mb-md-n9 { + margin-bottom: -10rem !important; + } + .mb-md-n10 { + margin-bottom: -12.5rem !important; + } + .mb-md-n11 { + margin-bottom: -15rem !important; + } + .mb-md-nx1 { + margin-bottom: -1.25rem !important; + } + .ms-md-n1 { + margin-left: -0.25rem !important; + } + .ms-md-n2 { + margin-left: -0.5rem !important; + } + .ms-md-n3 { + margin-left: -1rem !important; + } + .ms-md-n4 { + margin-left: -1.8rem !important; + } + .ms-md-n5 { + margin-left: -3rem !important; + } + .ms-md-n6 { + margin-left: -4rem !important; + } + .ms-md-n7 { + margin-left: -5rem !important; + } + .ms-md-n8 { + margin-left: -7.5rem !important; + } + .ms-md-n9 { + margin-left: -10rem !important; + } + .ms-md-n10 { + margin-left: -12.5rem !important; + } + .ms-md-n11 { + margin-left: -15rem !important; + } + .ms-md-nx1 { + margin-left: -1.25rem !important; + } + .p-md-0 { + padding: 0 !important; + } + .p-md-1 { + padding: 0.25rem !important; + } + .p-md-2 { + padding: 0.5rem !important; + } + .p-md-3 { + padding: 1rem !important; + } + .p-md-4 { + padding: 1.8rem !important; + } + .p-md-5 { + padding: 3rem !important; + } + .p-md-6 { + padding: 4rem !important; + } + .p-md-7 { + padding: 5rem !important; + } + .p-md-8 { + padding: 7.5rem !important; + } + .p-md-9 { + padding: 10rem !important; + } + .p-md-10 { + padding: 12.5rem !important; + } + .p-md-11 { + padding: 15rem !important; + } + .p-md-x1 { + padding: 1.25rem !important; + } + .px-md-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-md-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-md-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-md-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-md-4 { + padding-right: 1.8rem !important; + padding-left: 1.8rem !important; + } + .px-md-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .px-md-6 { + padding-right: 4rem !important; + padding-left: 4rem !important; + } + .px-md-7 { + padding-right: 5rem !important; + padding-left: 5rem !important; + } + .px-md-8 { + padding-right: 7.5rem !important; + padding-left: 7.5rem !important; + } + .px-md-9 { + padding-right: 10rem !important; + padding-left: 10rem !important; + } + .px-md-10 { + padding-right: 12.5rem !important; + padding-left: 12.5rem !important; + } + .px-md-11 { + padding-right: 15rem !important; + padding-left: 15rem !important; + } + .px-md-x1 { + padding-right: 1.25rem !important; + padding-left: 1.25rem !important; + } + .py-md-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-md-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-md-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-md-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-md-4 { + padding-top: 1.8rem !important; + padding-bottom: 1.8rem !important; + } + .py-md-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .py-md-6 { + padding-top: 4rem !important; + padding-bottom: 4rem !important; + } + .py-md-7 { + padding-top: 5rem !important; + padding-bottom: 5rem !important; + } + .py-md-8 { + padding-top: 7.5rem !important; + padding-bottom: 7.5rem !important; + } + .py-md-9 { + padding-top: 10rem !important; + padding-bottom: 10rem !important; + } + .py-md-10 { + padding-top: 12.5rem !important; + padding-bottom: 12.5rem !important; + } + .py-md-11 { + padding-top: 15rem !important; + padding-bottom: 15rem !important; + } + .py-md-x1 { + padding-top: 1.25rem !important; + padding-bottom: 1.25rem !important; + } + .pt-md-0 { + padding-top: 0 !important; + } + .pt-md-1 { + padding-top: 0.25rem !important; + } + .pt-md-2 { + padding-top: 0.5rem !important; + } + .pt-md-3 { + padding-top: 1rem !important; + } + .pt-md-4 { + padding-top: 1.8rem !important; + } + .pt-md-5 { + padding-top: 3rem !important; + } + .pt-md-6 { + padding-top: 4rem !important; + } + .pt-md-7 { + padding-top: 5rem !important; + } + .pt-md-8 { + padding-top: 7.5rem !important; + } + .pt-md-9 { + padding-top: 10rem !important; + } + .pt-md-10 { + padding-top: 12.5rem !important; + } + .pt-md-11 { + padding-top: 15rem !important; + } + .pt-md-x1 { + padding-top: 1.25rem !important; + } + .pe-md-0 { + padding-right: 0 !important; + } + .pe-md-1 { + padding-right: 0.25rem !important; + } + .pe-md-2 { + padding-right: 0.5rem !important; + } + .pe-md-3 { + padding-right: 1rem !important; + } + .pe-md-4 { + padding-right: 1.8rem !important; + } + .pe-md-5 { + padding-right: 3rem !important; + } + .pe-md-6 { + padding-right: 4rem !important; + } + .pe-md-7 { + padding-right: 5rem !important; + } + .pe-md-8 { + padding-right: 7.5rem !important; + } + .pe-md-9 { + padding-right: 10rem !important; + } + .pe-md-10 { + padding-right: 12.5rem !important; + } + .pe-md-11 { + padding-right: 15rem !important; + } + .pe-md-x1 { + padding-right: 1.25rem !important; + } + .pb-md-0 { + padding-bottom: 0 !important; + } + .pb-md-1 { + padding-bottom: 0.25rem !important; + } + .pb-md-2 { + padding-bottom: 0.5rem !important; + } + .pb-md-3 { + padding-bottom: 1rem !important; + } + .pb-md-4 { + padding-bottom: 1.8rem !important; + } + .pb-md-5 { + padding-bottom: 3rem !important; + } + .pb-md-6 { + padding-bottom: 4rem !important; + } + .pb-md-7 { + padding-bottom: 5rem !important; + } + .pb-md-8 { + padding-bottom: 7.5rem !important; + } + .pb-md-9 { + padding-bottom: 10rem !important; + } + .pb-md-10 { + padding-bottom: 12.5rem !important; + } + .pb-md-11 { + padding-bottom: 15rem !important; + } + .pb-md-x1 { + padding-bottom: 1.25rem !important; + } + .ps-md-0 { + padding-left: 0 !important; + } + .ps-md-1 { + padding-left: 0.25rem !important; + } + .ps-md-2 { + padding-left: 0.5rem !important; + } + .ps-md-3 { + padding-left: 1rem !important; + } + .ps-md-4 { + padding-left: 1.8rem !important; + } + .ps-md-5 { + padding-left: 3rem !important; + } + .ps-md-6 { + padding-left: 4rem !important; + } + .ps-md-7 { + padding-left: 5rem !important; + } + .ps-md-8 { + padding-left: 7.5rem !important; + } + .ps-md-9 { + padding-left: 10rem !important; + } + .ps-md-10 { + padding-left: 12.5rem !important; + } + .ps-md-11 { + padding-left: 15rem !important; + } + .ps-md-x1 { + padding-left: 1.25rem !important; + } + .gap-md-0 { + gap: 0 !important; + } + .gap-md-1 { + gap: 0.25rem !important; + } + .gap-md-2 { + gap: 0.5rem !important; + } + .gap-md-3 { + gap: 1rem !important; + } + .gap-md-4 { + gap: 1.8rem !important; + } + .gap-md-5 { + gap: 3rem !important; + } + .gap-md-6 { + gap: 4rem !important; + } + .gap-md-7 { + gap: 5rem !important; + } + .gap-md-8 { + gap: 7.5rem !important; + } + .gap-md-9 { + gap: 10rem !important; + } + .gap-md-10 { + gap: 12.5rem !important; + } + .gap-md-11 { + gap: 15rem !important; + } + .gap-md-x1 { + gap: 1.25rem !important; + } + .row-gap-md-0 { + row-gap: 0 !important; + } + .row-gap-md-1 { + row-gap: 0.25rem !important; + } + .row-gap-md-2 { + row-gap: 0.5rem !important; + } + .row-gap-md-3 { + row-gap: 1rem !important; + } + .row-gap-md-4 { + row-gap: 1.8rem !important; + } + .row-gap-md-5 { + row-gap: 3rem !important; + } + .row-gap-md-6 { + row-gap: 4rem !important; + } + .row-gap-md-7 { + row-gap: 5rem !important; + } + .row-gap-md-8 { + row-gap: 7.5rem !important; + } + .row-gap-md-9 { + row-gap: 10rem !important; + } + .row-gap-md-10 { + row-gap: 12.5rem !important; + } + .row-gap-md-11 { + row-gap: 15rem !important; + } + .row-gap-md-x1 { + row-gap: 1.25rem !important; + } + .column-gap-md-0 { + column-gap: 0 !important; + } + .column-gap-md-1 { + column-gap: 0.25rem !important; + } + .column-gap-md-2 { + column-gap: 0.5rem !important; + } + .column-gap-md-3 { + column-gap: 1rem !important; + } + .column-gap-md-4 { + column-gap: 1.8rem !important; + } + .column-gap-md-5 { + column-gap: 3rem !important; + } + .column-gap-md-6 { + column-gap: 4rem !important; + } + .column-gap-md-7 { + column-gap: 5rem !important; + } + .column-gap-md-8 { + column-gap: 7.5rem !important; + } + .column-gap-md-9 { + column-gap: 10rem !important; + } + .column-gap-md-10 { + column-gap: 12.5rem !important; + } + .column-gap-md-11 { + column-gap: 15rem !important; + } + .column-gap-md-x1 { + column-gap: 1.25rem !important; + } + .fs-md-11 { + font-size: 0.6944444444rem !important; + } + .fs-md-10 { + font-size: 0.8333333333rem !important; + } + .fs-md-9 { + font-size: 1rem !important; + } + .fs-md-8 { + font-size: 1.2rem !important; + } + .fs-md-7 { + font-size: 1.44rem !important; + } + .fs-md-6 { + font-size: 1.728rem !important; + } + .fs-md-5 { + font-size: 2.0736rem !important; + } + .fs-md-4 { + font-size: 2.48832rem !important; + } + .fs-md-3 { + font-size: 2.985984rem !important; + } + .fs-md-2 { + font-size: 3.5831808rem !important; + } + .fs-md-1 { + font-size: 4.29981696rem !important; + } + .text-md-start { + text-align: left !important; + } + .text-md-end { + text-align: right !important; + } + .text-md-center { + text-align: center !important; + } + .rounded-md-top { + border-top-left-radius: 0.25rem !important; + border-top-right-radius: 0.25rem !important; + } + .rounded-md-top-lg { + border-top-left-radius: 0.375rem !important; + border-top-right-radius: 0.375rem !important; + } + .rounded-md-top-0 { + border-top-left-radius: 0 !important; + border-top-right-radius: 0 !important; + } + .rounded-md-end { + border-top-right-radius: 0.25rem !important; + border-bottom-right-radius: 0.25rem !important; + } + .rounded-md-end-lg { + border-top-right-radius: 0.375rem !important; + border-bottom-right-radius: 0.375rem !important; + } + .rounded-md-end-0 { + border-top-right-radius: 0 !important; + border-bottom-right-radius: 0 !important; + } + .rounded-md-bottom { + border-bottom-right-radius: 0.25rem !important; + border-bottom-left-radius: 0.25rem !important; + } + .rounded-md-bottom-lg { + border-bottom-right-radius: 0.375rem !important; + border-bottom-left-radius: 0.375rem !important; + } + .rounded-md-bottom-0 { + border-bottom-right-radius: 0 !important; + border-bottom-left-radius: 0 !important; + } + .rounded-md-start { + border-bottom-left-radius: 0.25rem !important; + border-top-left-radius: 0.25rem !important; + } + .rounded-md-start-lg { + border-bottom-left-radius: 0.375rem !important; + border-top-left-radius: 0.375rem !important; + } + .rounded-md-start-0 { + border-bottom-left-radius: 0 !important; + border-top-left-radius: 0 !important; + } + .max-vh-md-25 { + max-height: 25vh !important; + } + .max-vh-md-50 { + max-height: 50vh !important; + } + .max-vh-md-75 { + max-height: 75vh !important; + } + .max-vh-md-100 { + max-height: 100vh !important; + } + .border-md-x { + border-left: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; + border-right: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; + } + .border-md-x-0 { + border-left: 0 !important; + border-right: 0 !important; + } + .border-md-y { + border-top: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; + border-bottom: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; + } + .border-md-y-0 { + border-top: 0 !important; + border-bottom: 0 !important; + } + .border-md-primary { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-primary-rgb), var(--falcon-border-opacity)) !important; + } + .border-md-secondary { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-secondary-rgb), var(--falcon-border-opacity)) !important; + } + .border-md-success { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-success-rgb), var(--falcon-border-opacity)) !important; + } + .border-md-info { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-info-rgb), var(--falcon-border-opacity)) !important; + } + .border-md-warning { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-warning-rgb), var(--falcon-border-opacity)) !important; + } + .border-md-danger { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-danger-rgb), var(--falcon-border-opacity)) !important; + } + .border-md-light { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-light-rgb), var(--falcon-border-opacity)) !important; + } + .border-md-dark { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-dark-rgb), var(--falcon-border-opacity)) !important; + } + .border-md-facebook { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-facebook-rgb), var(--falcon-border-opacity)) !important; + } + .border-md-google-plus { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-google-plus-rgb), var(--falcon-border-opacity)) !important; + } + .border-md-twitter { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-twitter-rgb), var(--falcon-border-opacity)) !important; + } + .border-md-linkedin { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-linkedin-rgb), var(--falcon-border-opacity)) !important; + } + .border-md-youtube { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-youtube-rgb), var(--falcon-border-opacity)) !important; + } + .border-md-github { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-github-rgb), var(--falcon-border-opacity)) !important; + } + .border-md-white { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-white-rgb), var(--falcon-border-opacity)) !important; + } + .border-md-100 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-100-rgb), var(--falcon-border-opacity)) !important; + } + .border-md-200 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-200-rgb), var(--falcon-border-opacity)) !important; + } + .border-md-300 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-300-rgb), var(--falcon-border-opacity)) !important; + } + .border-md-400 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-400-rgb), var(--falcon-border-opacity)) !important; + } + .border-md-500 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-500-rgb), var(--falcon-border-opacity)) !important; + } + .border-md-600 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-600-rgb), var(--falcon-border-opacity)) !important; + } + .border-md-700 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-700-rgb), var(--falcon-border-opacity)) !important; + } + .border-md-800 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-800-rgb), var(--falcon-border-opacity)) !important; + } + .border-md-900 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-900-rgb), var(--falcon-border-opacity)) !important; + } + .border-md-1000 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-1000-rgb), var(--falcon-border-opacity)) !important; + } + .border-md-1100 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-1100-rgb), var(--falcon-border-opacity)) !important; + } + .rounded-md-0 { + border-radius: 0 !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 { + object-fit: contain !important; + } + .object-fit-lg-cover { + object-fit: cover !important; + } + .object-fit-lg-fill { + object-fit: fill !important; + } + .object-fit-lg-scale { + object-fit: scale-down !important; + } + .object-fit-lg-none { + object-fit: none !important; + } + .opacity-lg-0 { + opacity: 0 !important; + } + .opacity-lg-25 { + opacity: 0.25 !important; + } + .opacity-lg-50 { + opacity: 0.5 !important; + } + .opacity-lg-75 { + opacity: 0.75 !important; + } + .opacity-lg-85 { + opacity: 0.85 !important; + } + .opacity-lg-100 { + opacity: 1 !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; + } + .position-lg-static { + position: static !important; + } + .position-lg-absolute { + position: absolute !important; + } + .position-lg-relative { + position: relative !important; + } + .position-lg-fixed { + position: fixed !important; + } + .position-lg-sticky { + position: sticky !important; + } + .translate-lg-middle { + transform: translateX(-50%) translateY(-50%) !important; + } + .translate-lg-middle-x { + transform: translateX(-50%) !important; + } + .translate-lg-middle-y { + transform: translateY(-50%) !important; + } + .border-lg { + border: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; + } + .border-lg-0 { + border: 0 !important; + } + .border-lg-top { + border-top: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; + } + .border-lg-top-0 { + border-top: 0 !important; + } + .border-lg-end { + border-right: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; + } + .border-lg-end-0 { + border-right: 0 !important; + } + .border-lg-bottom { + border-bottom: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; + } + .border-lg-bottom-0 { + border-bottom: 0 !important; + } + .border-lg-start { + border-left: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; + } + .border-lg-start-0 { + border-left: 0 !important; + } + .w-lg-25 { + width: 25% !important; + } + .w-lg-50 { + width: 50% !important; + } + .w-lg-75 { + width: 75% !important; + } + .w-lg-100 { + width: 100% !important; + } + .w-lg-auto { + width: auto !important; + } + .vw-lg-25 { + width: 25vw !important; + } + .vw-lg-50 { + width: 50vw !important; + } + .vw-lg-75 { + width: 75vw !important; + } + .vw-lg-100 { + width: 100vw !important; + } + .h-lg-25 { + height: 25% !important; + } + .h-lg-50 { + height: 50% !important; + } + .h-lg-75 { + height: 75% !important; + } + .h-lg-100 { + height: 100% !important; + } + .h-lg-auto { + height: auto !important; + } + .vh-lg-25 { + height: 25vh !important; + } + .vh-lg-50 { + height: 50vh !important; + } + .vh-lg-75 { + height: 75vh !important; + } + .vh-lg-100 { + height: 100vh !important; + } + .min-vh-lg-25 { + min-height: 25vh !important; + } + .min-vh-lg-50 { + min-height: 50vh !important; + } + .min-vh-lg-75 { + min-height: 75vh !important; + } + .min-vh-lg-100 { + min-height: 100vh !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: 0.25rem !important; + } + .m-lg-2 { + margin: 0.5rem !important; + } + .m-lg-3 { + margin: 1rem !important; + } + .m-lg-4 { + margin: 1.8rem !important; + } + .m-lg-5 { + margin: 3rem !important; + } + .m-lg-6 { + margin: 4rem !important; + } + .m-lg-7 { + margin: 5rem !important; + } + .m-lg-8 { + margin: 7.5rem !important; + } + .m-lg-9 { + margin: 10rem !important; + } + .m-lg-10 { + margin: 12.5rem !important; + } + .m-lg-11 { + margin: 15rem !important; + } + .m-lg-x1 { + margin: 1.25rem !important; + } + .m-lg-auto { + margin: auto !important; + } + .mx-lg-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-lg-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-lg-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-lg-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-lg-4 { + margin-right: 1.8rem !important; + margin-left: 1.8rem !important; + } + .mx-lg-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-lg-6 { + margin-right: 4rem !important; + margin-left: 4rem !important; + } + .mx-lg-7 { + margin-right: 5rem !important; + margin-left: 5rem !important; + } + .mx-lg-8 { + margin-right: 7.5rem !important; + margin-left: 7.5rem !important; + } + .mx-lg-9 { + margin-right: 10rem !important; + margin-left: 10rem !important; + } + .mx-lg-10 { + margin-right: 12.5rem !important; + margin-left: 12.5rem !important; + } + .mx-lg-11 { + margin-right: 15rem !important; + margin-left: 15rem !important; + } + .mx-lg-x1 { + margin-right: 1.25rem !important; + margin-left: 1.25rem !important; + } + .mx-lg-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-lg-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-lg-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-lg-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-lg-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-lg-4 { + margin-top: 1.8rem !important; + margin-bottom: 1.8rem !important; + } + .my-lg-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-lg-6 { + margin-top: 4rem !important; + margin-bottom: 4rem !important; + } + .my-lg-7 { + margin-top: 5rem !important; + margin-bottom: 5rem !important; + } + .my-lg-8 { + margin-top: 7.5rem !important; + margin-bottom: 7.5rem !important; + } + .my-lg-9 { + margin-top: 10rem !important; + margin-bottom: 10rem !important; + } + .my-lg-10 { + margin-top: 12.5rem !important; + margin-bottom: 12.5rem !important; + } + .my-lg-11 { + margin-top: 15rem !important; + margin-bottom: 15rem !important; + } + .my-lg-x1 { + margin-top: 1.25rem !important; + margin-bottom: 1.25rem !important; + } + .my-lg-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-lg-0 { + margin-top: 0 !important; + } + .mt-lg-1 { + margin-top: 0.25rem !important; + } + .mt-lg-2 { + margin-top: 0.5rem !important; + } + .mt-lg-3 { + margin-top: 1rem !important; + } + .mt-lg-4 { + margin-top: 1.8rem !important; + } + .mt-lg-5 { + margin-top: 3rem !important; + } + .mt-lg-6 { + margin-top: 4rem !important; + } + .mt-lg-7 { + margin-top: 5rem !important; + } + .mt-lg-8 { + margin-top: 7.5rem !important; + } + .mt-lg-9 { + margin-top: 10rem !important; + } + .mt-lg-10 { + margin-top: 12.5rem !important; + } + .mt-lg-11 { + margin-top: 15rem !important; + } + .mt-lg-x1 { + margin-top: 1.25rem !important; + } + .mt-lg-auto { + margin-top: auto !important; + } + .me-lg-0 { + margin-right: 0 !important; + } + .me-lg-1 { + margin-right: 0.25rem !important; + } + .me-lg-2 { + margin-right: 0.5rem !important; + } + .me-lg-3 { + margin-right: 1rem !important; + } + .me-lg-4 { + margin-right: 1.8rem !important; + } + .me-lg-5 { + margin-right: 3rem !important; + } + .me-lg-6 { + margin-right: 4rem !important; + } + .me-lg-7 { + margin-right: 5rem !important; + } + .me-lg-8 { + margin-right: 7.5rem !important; + } + .me-lg-9 { + margin-right: 10rem !important; + } + .me-lg-10 { + margin-right: 12.5rem !important; + } + .me-lg-11 { + margin-right: 15rem !important; + } + .me-lg-x1 { + margin-right: 1.25rem !important; + } + .me-lg-auto { + margin-right: auto !important; + } + .mb-lg-0 { + margin-bottom: 0 !important; + } + .mb-lg-1 { + margin-bottom: 0.25rem !important; + } + .mb-lg-2 { + margin-bottom: 0.5rem !important; + } + .mb-lg-3 { + margin-bottom: 1rem !important; + } + .mb-lg-4 { + margin-bottom: 1.8rem !important; + } + .mb-lg-5 { + margin-bottom: 3rem !important; + } + .mb-lg-6 { + margin-bottom: 4rem !important; + } + .mb-lg-7 { + margin-bottom: 5rem !important; + } + .mb-lg-8 { + margin-bottom: 7.5rem !important; + } + .mb-lg-9 { + margin-bottom: 10rem !important; + } + .mb-lg-10 { + margin-bottom: 12.5rem !important; + } + .mb-lg-11 { + margin-bottom: 15rem !important; + } + .mb-lg-x1 { + margin-bottom: 1.25rem !important; + } + .mb-lg-auto { + margin-bottom: auto !important; + } + .ms-lg-0 { + margin-left: 0 !important; + } + .ms-lg-1 { + margin-left: 0.25rem !important; + } + .ms-lg-2 { + margin-left: 0.5rem !important; + } + .ms-lg-3 { + margin-left: 1rem !important; + } + .ms-lg-4 { + margin-left: 1.8rem !important; + } + .ms-lg-5 { + margin-left: 3rem !important; + } + .ms-lg-6 { + margin-left: 4rem !important; + } + .ms-lg-7 { + margin-left: 5rem !important; + } + .ms-lg-8 { + margin-left: 7.5rem !important; + } + .ms-lg-9 { + margin-left: 10rem !important; + } + .ms-lg-10 { + margin-left: 12.5rem !important; + } + .ms-lg-11 { + margin-left: 15rem !important; + } + .ms-lg-x1 { + margin-left: 1.25rem !important; + } + .ms-lg-auto { + margin-left: auto !important; + } + .m-lg-n1 { + margin: -0.25rem !important; + } + .m-lg-n2 { + margin: -0.5rem !important; + } + .m-lg-n3 { + margin: -1rem !important; + } + .m-lg-n4 { + margin: -1.8rem !important; + } + .m-lg-n5 { + margin: -3rem !important; + } + .m-lg-n6 { + margin: -4rem !important; + } + .m-lg-n7 { + margin: -5rem !important; + } + .m-lg-n8 { + margin: -7.5rem !important; + } + .m-lg-n9 { + margin: -10rem !important; + } + .m-lg-n10 { + margin: -12.5rem !important; + } + .m-lg-n11 { + margin: -15rem !important; + } + .m-lg-nx1 { + margin: -1.25rem !important; + } + .mx-lg-n1 { + margin-right: -0.25rem !important; + margin-left: -0.25rem !important; + } + .mx-lg-n2 { + margin-right: -0.5rem !important; + margin-left: -0.5rem !important; + } + .mx-lg-n3 { + margin-right: -1rem !important; + margin-left: -1rem !important; + } + .mx-lg-n4 { + margin-right: -1.8rem !important; + margin-left: -1.8rem !important; + } + .mx-lg-n5 { + margin-right: -3rem !important; + margin-left: -3rem !important; + } + .mx-lg-n6 { + margin-right: -4rem !important; + margin-left: -4rem !important; + } + .mx-lg-n7 { + margin-right: -5rem !important; + margin-left: -5rem !important; + } + .mx-lg-n8 { + margin-right: -7.5rem !important; + margin-left: -7.5rem !important; + } + .mx-lg-n9 { + margin-right: -10rem !important; + margin-left: -10rem !important; + } + .mx-lg-n10 { + margin-right: -12.5rem !important; + margin-left: -12.5rem !important; + } + .mx-lg-n11 { + margin-right: -15rem !important; + margin-left: -15rem !important; + } + .mx-lg-nx1 { + margin-right: -1.25rem !important; + margin-left: -1.25rem !important; + } + .my-lg-n1 { + margin-top: -0.25rem !important; + margin-bottom: -0.25rem !important; + } + .my-lg-n2 { + margin-top: -0.5rem !important; + margin-bottom: -0.5rem !important; + } + .my-lg-n3 { + margin-top: -1rem !important; + margin-bottom: -1rem !important; + } + .my-lg-n4 { + margin-top: -1.8rem !important; + margin-bottom: -1.8rem !important; + } + .my-lg-n5 { + margin-top: -3rem !important; + margin-bottom: -3rem !important; + } + .my-lg-n6 { + margin-top: -4rem !important; + margin-bottom: -4rem !important; + } + .my-lg-n7 { + margin-top: -5rem !important; + margin-bottom: -5rem !important; + } + .my-lg-n8 { + margin-top: -7.5rem !important; + margin-bottom: -7.5rem !important; + } + .my-lg-n9 { + margin-top: -10rem !important; + margin-bottom: -10rem !important; + } + .my-lg-n10 { + margin-top: -12.5rem !important; + margin-bottom: -12.5rem !important; + } + .my-lg-n11 { + margin-top: -15rem !important; + margin-bottom: -15rem !important; + } + .my-lg-nx1 { + margin-top: -1.25rem !important; + margin-bottom: -1.25rem !important; + } + .mt-lg-n1 { + margin-top: -0.25rem !important; + } + .mt-lg-n2 { + margin-top: -0.5rem !important; + } + .mt-lg-n3 { + margin-top: -1rem !important; + } + .mt-lg-n4 { + margin-top: -1.8rem !important; + } + .mt-lg-n5 { + margin-top: -3rem !important; + } + .mt-lg-n6 { + margin-top: -4rem !important; + } + .mt-lg-n7 { + margin-top: -5rem !important; + } + .mt-lg-n8 { + margin-top: -7.5rem !important; + } + .mt-lg-n9 { + margin-top: -10rem !important; + } + .mt-lg-n10 { + margin-top: -12.5rem !important; + } + .mt-lg-n11 { + margin-top: -15rem !important; + } + .mt-lg-nx1 { + margin-top: -1.25rem !important; + } + .me-lg-n1 { + margin-right: -0.25rem !important; + } + .me-lg-n2 { + margin-right: -0.5rem !important; + } + .me-lg-n3 { + margin-right: -1rem !important; + } + .me-lg-n4 { + margin-right: -1.8rem !important; + } + .me-lg-n5 { + margin-right: -3rem !important; + } + .me-lg-n6 { + margin-right: -4rem !important; + } + .me-lg-n7 { + margin-right: -5rem !important; + } + .me-lg-n8 { + margin-right: -7.5rem !important; + } + .me-lg-n9 { + margin-right: -10rem !important; + } + .me-lg-n10 { + margin-right: -12.5rem !important; + } + .me-lg-n11 { + margin-right: -15rem !important; + } + .me-lg-nx1 { + margin-right: -1.25rem !important; + } + .mb-lg-n1 { + margin-bottom: -0.25rem !important; + } + .mb-lg-n2 { + margin-bottom: -0.5rem !important; + } + .mb-lg-n3 { + margin-bottom: -1rem !important; + } + .mb-lg-n4 { + margin-bottom: -1.8rem !important; + } + .mb-lg-n5 { + margin-bottom: -3rem !important; + } + .mb-lg-n6 { + margin-bottom: -4rem !important; + } + .mb-lg-n7 { + margin-bottom: -5rem !important; + } + .mb-lg-n8 { + margin-bottom: -7.5rem !important; + } + .mb-lg-n9 { + margin-bottom: -10rem !important; + } + .mb-lg-n10 { + margin-bottom: -12.5rem !important; + } + .mb-lg-n11 { + margin-bottom: -15rem !important; + } + .mb-lg-nx1 { + margin-bottom: -1.25rem !important; + } + .ms-lg-n1 { + margin-left: -0.25rem !important; + } + .ms-lg-n2 { + margin-left: -0.5rem !important; + } + .ms-lg-n3 { + margin-left: -1rem !important; + } + .ms-lg-n4 { + margin-left: -1.8rem !important; + } + .ms-lg-n5 { + margin-left: -3rem !important; + } + .ms-lg-n6 { + margin-left: -4rem !important; + } + .ms-lg-n7 { + margin-left: -5rem !important; + } + .ms-lg-n8 { + margin-left: -7.5rem !important; + } + .ms-lg-n9 { + margin-left: -10rem !important; + } + .ms-lg-n10 { + margin-left: -12.5rem !important; + } + .ms-lg-n11 { + margin-left: -15rem !important; + } + .ms-lg-nx1 { + margin-left: -1.25rem !important; + } + .p-lg-0 { + padding: 0 !important; + } + .p-lg-1 { + padding: 0.25rem !important; + } + .p-lg-2 { + padding: 0.5rem !important; + } + .p-lg-3 { + padding: 1rem !important; + } + .p-lg-4 { + padding: 1.8rem !important; + } + .p-lg-5 { + padding: 3rem !important; + } + .p-lg-6 { + padding: 4rem !important; + } + .p-lg-7 { + padding: 5rem !important; + } + .p-lg-8 { + padding: 7.5rem !important; + } + .p-lg-9 { + padding: 10rem !important; + } + .p-lg-10 { + padding: 12.5rem !important; + } + .p-lg-11 { + padding: 15rem !important; + } + .p-lg-x1 { + padding: 1.25rem !important; + } + .px-lg-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-lg-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-lg-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-lg-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-lg-4 { + padding-right: 1.8rem !important; + padding-left: 1.8rem !important; + } + .px-lg-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .px-lg-6 { + padding-right: 4rem !important; + padding-left: 4rem !important; + } + .px-lg-7 { + padding-right: 5rem !important; + padding-left: 5rem !important; + } + .px-lg-8 { + padding-right: 7.5rem !important; + padding-left: 7.5rem !important; + } + .px-lg-9 { + padding-right: 10rem !important; + padding-left: 10rem !important; + } + .px-lg-10 { + padding-right: 12.5rem !important; + padding-left: 12.5rem !important; + } + .px-lg-11 { + padding-right: 15rem !important; + padding-left: 15rem !important; + } + .px-lg-x1 { + padding-right: 1.25rem !important; + padding-left: 1.25rem !important; + } + .py-lg-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-lg-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-lg-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-lg-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-lg-4 { + padding-top: 1.8rem !important; + padding-bottom: 1.8rem !important; + } + .py-lg-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .py-lg-6 { + padding-top: 4rem !important; + padding-bottom: 4rem !important; + } + .py-lg-7 { + padding-top: 5rem !important; + padding-bottom: 5rem !important; + } + .py-lg-8 { + padding-top: 7.5rem !important; + padding-bottom: 7.5rem !important; + } + .py-lg-9 { + padding-top: 10rem !important; + padding-bottom: 10rem !important; + } + .py-lg-10 { + padding-top: 12.5rem !important; + padding-bottom: 12.5rem !important; + } + .py-lg-11 { + padding-top: 15rem !important; + padding-bottom: 15rem !important; + } + .py-lg-x1 { + padding-top: 1.25rem !important; + padding-bottom: 1.25rem !important; + } + .pt-lg-0 { + padding-top: 0 !important; + } + .pt-lg-1 { + padding-top: 0.25rem !important; + } + .pt-lg-2 { + padding-top: 0.5rem !important; + } + .pt-lg-3 { + padding-top: 1rem !important; + } + .pt-lg-4 { + padding-top: 1.8rem !important; + } + .pt-lg-5 { + padding-top: 3rem !important; + } + .pt-lg-6 { + padding-top: 4rem !important; + } + .pt-lg-7 { + padding-top: 5rem !important; + } + .pt-lg-8 { + padding-top: 7.5rem !important; + } + .pt-lg-9 { + padding-top: 10rem !important; + } + .pt-lg-10 { + padding-top: 12.5rem !important; + } + .pt-lg-11 { + padding-top: 15rem !important; + } + .pt-lg-x1 { + padding-top: 1.25rem !important; + } + .pe-lg-0 { + padding-right: 0 !important; + } + .pe-lg-1 { + padding-right: 0.25rem !important; + } + .pe-lg-2 { + padding-right: 0.5rem !important; + } + .pe-lg-3 { + padding-right: 1rem !important; + } + .pe-lg-4 { + padding-right: 1.8rem !important; + } + .pe-lg-5 { + padding-right: 3rem !important; + } + .pe-lg-6 { + padding-right: 4rem !important; + } + .pe-lg-7 { + padding-right: 5rem !important; + } + .pe-lg-8 { + padding-right: 7.5rem !important; + } + .pe-lg-9 { + padding-right: 10rem !important; + } + .pe-lg-10 { + padding-right: 12.5rem !important; + } + .pe-lg-11 { + padding-right: 15rem !important; + } + .pe-lg-x1 { + padding-right: 1.25rem !important; + } + .pb-lg-0 { + padding-bottom: 0 !important; + } + .pb-lg-1 { + padding-bottom: 0.25rem !important; + } + .pb-lg-2 { + padding-bottom: 0.5rem !important; + } + .pb-lg-3 { + padding-bottom: 1rem !important; + } + .pb-lg-4 { + padding-bottom: 1.8rem !important; + } + .pb-lg-5 { + padding-bottom: 3rem !important; + } + .pb-lg-6 { + padding-bottom: 4rem !important; + } + .pb-lg-7 { + padding-bottom: 5rem !important; + } + .pb-lg-8 { + padding-bottom: 7.5rem !important; + } + .pb-lg-9 { + padding-bottom: 10rem !important; + } + .pb-lg-10 { + padding-bottom: 12.5rem !important; + } + .pb-lg-11 { + padding-bottom: 15rem !important; + } + .pb-lg-x1 { + padding-bottom: 1.25rem !important; + } + .ps-lg-0 { + padding-left: 0 !important; + } + .ps-lg-1 { + padding-left: 0.25rem !important; + } + .ps-lg-2 { + padding-left: 0.5rem !important; + } + .ps-lg-3 { + padding-left: 1rem !important; + } + .ps-lg-4 { + padding-left: 1.8rem !important; + } + .ps-lg-5 { + padding-left: 3rem !important; + } + .ps-lg-6 { + padding-left: 4rem !important; + } + .ps-lg-7 { + padding-left: 5rem !important; + } + .ps-lg-8 { + padding-left: 7.5rem !important; + } + .ps-lg-9 { + padding-left: 10rem !important; + } + .ps-lg-10 { + padding-left: 12.5rem !important; + } + .ps-lg-11 { + padding-left: 15rem !important; + } + .ps-lg-x1 { + padding-left: 1.25rem !important; + } + .gap-lg-0 { + gap: 0 !important; + } + .gap-lg-1 { + gap: 0.25rem !important; + } + .gap-lg-2 { + gap: 0.5rem !important; + } + .gap-lg-3 { + gap: 1rem !important; + } + .gap-lg-4 { + gap: 1.8rem !important; + } + .gap-lg-5 { + gap: 3rem !important; + } + .gap-lg-6 { + gap: 4rem !important; + } + .gap-lg-7 { + gap: 5rem !important; + } + .gap-lg-8 { + gap: 7.5rem !important; + } + .gap-lg-9 { + gap: 10rem !important; + } + .gap-lg-10 { + gap: 12.5rem !important; + } + .gap-lg-11 { + gap: 15rem !important; + } + .gap-lg-x1 { + gap: 1.25rem !important; + } + .row-gap-lg-0 { + row-gap: 0 !important; + } + .row-gap-lg-1 { + row-gap: 0.25rem !important; + } + .row-gap-lg-2 { + row-gap: 0.5rem !important; + } + .row-gap-lg-3 { + row-gap: 1rem !important; + } + .row-gap-lg-4 { + row-gap: 1.8rem !important; + } + .row-gap-lg-5 { + row-gap: 3rem !important; + } + .row-gap-lg-6 { + row-gap: 4rem !important; + } + .row-gap-lg-7 { + row-gap: 5rem !important; + } + .row-gap-lg-8 { + row-gap: 7.5rem !important; + } + .row-gap-lg-9 { + row-gap: 10rem !important; + } + .row-gap-lg-10 { + row-gap: 12.5rem !important; + } + .row-gap-lg-11 { + row-gap: 15rem !important; + } + .row-gap-lg-x1 { + row-gap: 1.25rem !important; + } + .column-gap-lg-0 { + column-gap: 0 !important; + } + .column-gap-lg-1 { + column-gap: 0.25rem !important; + } + .column-gap-lg-2 { + column-gap: 0.5rem !important; + } + .column-gap-lg-3 { + column-gap: 1rem !important; + } + .column-gap-lg-4 { + column-gap: 1.8rem !important; + } + .column-gap-lg-5 { + column-gap: 3rem !important; + } + .column-gap-lg-6 { + column-gap: 4rem !important; + } + .column-gap-lg-7 { + column-gap: 5rem !important; + } + .column-gap-lg-8 { + column-gap: 7.5rem !important; + } + .column-gap-lg-9 { + column-gap: 10rem !important; + } + .column-gap-lg-10 { + column-gap: 12.5rem !important; + } + .column-gap-lg-11 { + column-gap: 15rem !important; + } + .column-gap-lg-x1 { + column-gap: 1.25rem !important; + } + .fs-lg-11 { + font-size: 0.6944444444rem !important; + } + .fs-lg-10 { + font-size: 0.8333333333rem !important; + } + .fs-lg-9 { + font-size: 1rem !important; + } + .fs-lg-8 { + font-size: 1.2rem !important; + } + .fs-lg-7 { + font-size: 1.44rem !important; + } + .fs-lg-6 { + font-size: 1.728rem !important; + } + .fs-lg-5 { + font-size: 2.0736rem !important; + } + .fs-lg-4 { + font-size: 2.48832rem !important; + } + .fs-lg-3 { + font-size: 2.985984rem !important; + } + .fs-lg-2 { + font-size: 3.5831808rem !important; + } + .fs-lg-1 { + font-size: 4.29981696rem !important; + } + .text-lg-start { + text-align: left !important; + } + .text-lg-end { + text-align: right !important; + } + .text-lg-center { + text-align: center !important; + } + .rounded-lg-top { + border-top-left-radius: 0.25rem !important; + border-top-right-radius: 0.25rem !important; + } + .rounded-lg-top-lg { + border-top-left-radius: 0.375rem !important; + border-top-right-radius: 0.375rem !important; + } + .rounded-lg-top-0 { + border-top-left-radius: 0 !important; + border-top-right-radius: 0 !important; + } + .rounded-lg-end { + border-top-right-radius: 0.25rem !important; + border-bottom-right-radius: 0.25rem !important; + } + .rounded-lg-end-lg { + border-top-right-radius: 0.375rem !important; + border-bottom-right-radius: 0.375rem !important; + } + .rounded-lg-end-0 { + border-top-right-radius: 0 !important; + border-bottom-right-radius: 0 !important; + } + .rounded-lg-bottom { + border-bottom-right-radius: 0.25rem !important; + border-bottom-left-radius: 0.25rem !important; + } + .rounded-lg-bottom-lg { + border-bottom-right-radius: 0.375rem !important; + border-bottom-left-radius: 0.375rem !important; + } + .rounded-lg-bottom-0 { + border-bottom-right-radius: 0 !important; + border-bottom-left-radius: 0 !important; + } + .rounded-lg-start { + border-bottom-left-radius: 0.25rem !important; + border-top-left-radius: 0.25rem !important; + } + .rounded-lg-start-lg { + border-bottom-left-radius: 0.375rem !important; + border-top-left-radius: 0.375rem !important; + } + .rounded-lg-start-0 { + border-bottom-left-radius: 0 !important; + border-top-left-radius: 0 !important; + } + .max-vh-lg-25 { + max-height: 25vh !important; + } + .max-vh-lg-50 { + max-height: 50vh !important; + } + .max-vh-lg-75 { + max-height: 75vh !important; + } + .max-vh-lg-100 { + max-height: 100vh !important; + } + .border-lg-x { + border-left: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; + border-right: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; + } + .border-lg-x-0 { + border-left: 0 !important; + border-right: 0 !important; + } + .border-lg-y { + border-top: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; + border-bottom: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; + } + .border-lg-y-0 { + border-top: 0 !important; + border-bottom: 0 !important; + } + .border-lg-primary { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-primary-rgb), var(--falcon-border-opacity)) !important; + } + .border-lg-secondary { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-secondary-rgb), var(--falcon-border-opacity)) !important; + } + .border-lg-success { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-success-rgb), var(--falcon-border-opacity)) !important; + } + .border-lg-info { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-info-rgb), var(--falcon-border-opacity)) !important; + } + .border-lg-warning { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-warning-rgb), var(--falcon-border-opacity)) !important; + } + .border-lg-danger { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-danger-rgb), var(--falcon-border-opacity)) !important; + } + .border-lg-light { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-light-rgb), var(--falcon-border-opacity)) !important; + } + .border-lg-dark { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-dark-rgb), var(--falcon-border-opacity)) !important; + } + .border-lg-facebook { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-facebook-rgb), var(--falcon-border-opacity)) !important; + } + .border-lg-google-plus { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-google-plus-rgb), var(--falcon-border-opacity)) !important; + } + .border-lg-twitter { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-twitter-rgb), var(--falcon-border-opacity)) !important; + } + .border-lg-linkedin { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-linkedin-rgb), var(--falcon-border-opacity)) !important; + } + .border-lg-youtube { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-youtube-rgb), var(--falcon-border-opacity)) !important; + } + .border-lg-github { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-github-rgb), var(--falcon-border-opacity)) !important; + } + .border-lg-white { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-white-rgb), var(--falcon-border-opacity)) !important; + } + .border-lg-100 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-100-rgb), var(--falcon-border-opacity)) !important; + } + .border-lg-200 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-200-rgb), var(--falcon-border-opacity)) !important; + } + .border-lg-300 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-300-rgb), var(--falcon-border-opacity)) !important; + } + .border-lg-400 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-400-rgb), var(--falcon-border-opacity)) !important; + } + .border-lg-500 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-500-rgb), var(--falcon-border-opacity)) !important; + } + .border-lg-600 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-600-rgb), var(--falcon-border-opacity)) !important; + } + .border-lg-700 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-700-rgb), var(--falcon-border-opacity)) !important; + } + .border-lg-800 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-800-rgb), var(--falcon-border-opacity)) !important; + } + .border-lg-900 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-900-rgb), var(--falcon-border-opacity)) !important; + } + .border-lg-1000 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-1000-rgb), var(--falcon-border-opacity)) !important; + } + .border-lg-1100 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-1100-rgb), var(--falcon-border-opacity)) !important; + } + .rounded-lg-0 { + border-radius: 0 !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 { + object-fit: contain !important; + } + .object-fit-xl-cover { + object-fit: cover !important; + } + .object-fit-xl-fill { + object-fit: fill !important; + } + .object-fit-xl-scale { + object-fit: scale-down !important; + } + .object-fit-xl-none { + object-fit: none !important; + } + .opacity-xl-0 { + opacity: 0 !important; + } + .opacity-xl-25 { + opacity: 0.25 !important; + } + .opacity-xl-50 { + opacity: 0.5 !important; + } + .opacity-xl-75 { + opacity: 0.75 !important; + } + .opacity-xl-85 { + opacity: 0.85 !important; + } + .opacity-xl-100 { + opacity: 1 !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; + } + .position-xl-static { + position: static !important; + } + .position-xl-absolute { + position: absolute !important; + } + .position-xl-relative { + position: relative !important; + } + .position-xl-fixed { + position: fixed !important; + } + .position-xl-sticky { + position: sticky !important; + } + .translate-xl-middle { + transform: translateX(-50%) translateY(-50%) !important; + } + .translate-xl-middle-x { + transform: translateX(-50%) !important; + } + .translate-xl-middle-y { + transform: translateY(-50%) !important; + } + .border-xl { + border: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; + } + .border-xl-0 { + border: 0 !important; + } + .border-xl-top { + border-top: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; + } + .border-xl-top-0 { + border-top: 0 !important; + } + .border-xl-end { + border-right: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; + } + .border-xl-end-0 { + border-right: 0 !important; + } + .border-xl-bottom { + border-bottom: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; + } + .border-xl-bottom-0 { + border-bottom: 0 !important; + } + .border-xl-start { + border-left: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; + } + .border-xl-start-0 { + border-left: 0 !important; + } + .w-xl-25 { + width: 25% !important; + } + .w-xl-50 { + width: 50% !important; + } + .w-xl-75 { + width: 75% !important; + } + .w-xl-100 { + width: 100% !important; + } + .w-xl-auto { + width: auto !important; + } + .vw-xl-25 { + width: 25vw !important; + } + .vw-xl-50 { + width: 50vw !important; + } + .vw-xl-75 { + width: 75vw !important; + } + .vw-xl-100 { + width: 100vw !important; + } + .h-xl-25 { + height: 25% !important; + } + .h-xl-50 { + height: 50% !important; + } + .h-xl-75 { + height: 75% !important; + } + .h-xl-100 { + height: 100% !important; + } + .h-xl-auto { + height: auto !important; + } + .vh-xl-25 { + height: 25vh !important; + } + .vh-xl-50 { + height: 50vh !important; + } + .vh-xl-75 { + height: 75vh !important; + } + .vh-xl-100 { + height: 100vh !important; + } + .min-vh-xl-25 { + min-height: 25vh !important; + } + .min-vh-xl-50 { + min-height: 50vh !important; + } + .min-vh-xl-75 { + min-height: 75vh !important; + } + .min-vh-xl-100 { + min-height: 100vh !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: 0.25rem !important; + } + .m-xl-2 { + margin: 0.5rem !important; + } + .m-xl-3 { + margin: 1rem !important; + } + .m-xl-4 { + margin: 1.8rem !important; + } + .m-xl-5 { + margin: 3rem !important; + } + .m-xl-6 { + margin: 4rem !important; + } + .m-xl-7 { + margin: 5rem !important; + } + .m-xl-8 { + margin: 7.5rem !important; + } + .m-xl-9 { + margin: 10rem !important; + } + .m-xl-10 { + margin: 12.5rem !important; + } + .m-xl-11 { + margin: 15rem !important; + } + .m-xl-x1 { + margin: 1.25rem !important; + } + .m-xl-auto { + margin: auto !important; + } + .mx-xl-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-xl-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-xl-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-xl-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-xl-4 { + margin-right: 1.8rem !important; + margin-left: 1.8rem !important; + } + .mx-xl-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-xl-6 { + margin-right: 4rem !important; + margin-left: 4rem !important; + } + .mx-xl-7 { + margin-right: 5rem !important; + margin-left: 5rem !important; + } + .mx-xl-8 { + margin-right: 7.5rem !important; + margin-left: 7.5rem !important; + } + .mx-xl-9 { + margin-right: 10rem !important; + margin-left: 10rem !important; + } + .mx-xl-10 { + margin-right: 12.5rem !important; + margin-left: 12.5rem !important; + } + .mx-xl-11 { + margin-right: 15rem !important; + margin-left: 15rem !important; + } + .mx-xl-x1 { + margin-right: 1.25rem !important; + margin-left: 1.25rem !important; + } + .mx-xl-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-xl-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-xl-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-xl-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-xl-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-xl-4 { + margin-top: 1.8rem !important; + margin-bottom: 1.8rem !important; + } + .my-xl-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-xl-6 { + margin-top: 4rem !important; + margin-bottom: 4rem !important; + } + .my-xl-7 { + margin-top: 5rem !important; + margin-bottom: 5rem !important; + } + .my-xl-8 { + margin-top: 7.5rem !important; + margin-bottom: 7.5rem !important; + } + .my-xl-9 { + margin-top: 10rem !important; + margin-bottom: 10rem !important; + } + .my-xl-10 { + margin-top: 12.5rem !important; + margin-bottom: 12.5rem !important; + } + .my-xl-11 { + margin-top: 15rem !important; + margin-bottom: 15rem !important; + } + .my-xl-x1 { + margin-top: 1.25rem !important; + margin-bottom: 1.25rem !important; + } + .my-xl-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-xl-0 { + margin-top: 0 !important; + } + .mt-xl-1 { + margin-top: 0.25rem !important; + } + .mt-xl-2 { + margin-top: 0.5rem !important; + } + .mt-xl-3 { + margin-top: 1rem !important; + } + .mt-xl-4 { + margin-top: 1.8rem !important; + } + .mt-xl-5 { + margin-top: 3rem !important; + } + .mt-xl-6 { + margin-top: 4rem !important; + } + .mt-xl-7 { + margin-top: 5rem !important; + } + .mt-xl-8 { + margin-top: 7.5rem !important; + } + .mt-xl-9 { + margin-top: 10rem !important; + } + .mt-xl-10 { + margin-top: 12.5rem !important; + } + .mt-xl-11 { + margin-top: 15rem !important; + } + .mt-xl-x1 { + margin-top: 1.25rem !important; + } + .mt-xl-auto { + margin-top: auto !important; + } + .me-xl-0 { + margin-right: 0 !important; + } + .me-xl-1 { + margin-right: 0.25rem !important; + } + .me-xl-2 { + margin-right: 0.5rem !important; + } + .me-xl-3 { + margin-right: 1rem !important; + } + .me-xl-4 { + margin-right: 1.8rem !important; + } + .me-xl-5 { + margin-right: 3rem !important; + } + .me-xl-6 { + margin-right: 4rem !important; + } + .me-xl-7 { + margin-right: 5rem !important; + } + .me-xl-8 { + margin-right: 7.5rem !important; + } + .me-xl-9 { + margin-right: 10rem !important; + } + .me-xl-10 { + margin-right: 12.5rem !important; + } + .me-xl-11 { + margin-right: 15rem !important; + } + .me-xl-x1 { + margin-right: 1.25rem !important; + } + .me-xl-auto { + margin-right: auto !important; + } + .mb-xl-0 { + margin-bottom: 0 !important; + } + .mb-xl-1 { + margin-bottom: 0.25rem !important; + } + .mb-xl-2 { + margin-bottom: 0.5rem !important; + } + .mb-xl-3 { + margin-bottom: 1rem !important; + } + .mb-xl-4 { + margin-bottom: 1.8rem !important; + } + .mb-xl-5 { + margin-bottom: 3rem !important; + } + .mb-xl-6 { + margin-bottom: 4rem !important; + } + .mb-xl-7 { + margin-bottom: 5rem !important; + } + .mb-xl-8 { + margin-bottom: 7.5rem !important; + } + .mb-xl-9 { + margin-bottom: 10rem !important; + } + .mb-xl-10 { + margin-bottom: 12.5rem !important; + } + .mb-xl-11 { + margin-bottom: 15rem !important; + } + .mb-xl-x1 { + margin-bottom: 1.25rem !important; + } + .mb-xl-auto { + margin-bottom: auto !important; + } + .ms-xl-0 { + margin-left: 0 !important; + } + .ms-xl-1 { + margin-left: 0.25rem !important; + } + .ms-xl-2 { + margin-left: 0.5rem !important; + } + .ms-xl-3 { + margin-left: 1rem !important; + } + .ms-xl-4 { + margin-left: 1.8rem !important; + } + .ms-xl-5 { + margin-left: 3rem !important; + } + .ms-xl-6 { + margin-left: 4rem !important; + } + .ms-xl-7 { + margin-left: 5rem !important; + } + .ms-xl-8 { + margin-left: 7.5rem !important; + } + .ms-xl-9 { + margin-left: 10rem !important; + } + .ms-xl-10 { + margin-left: 12.5rem !important; + } + .ms-xl-11 { + margin-left: 15rem !important; + } + .ms-xl-x1 { + margin-left: 1.25rem !important; + } + .ms-xl-auto { + margin-left: auto !important; + } + .m-xl-n1 { + margin: -0.25rem !important; + } + .m-xl-n2 { + margin: -0.5rem !important; + } + .m-xl-n3 { + margin: -1rem !important; + } + .m-xl-n4 { + margin: -1.8rem !important; + } + .m-xl-n5 { + margin: -3rem !important; + } + .m-xl-n6 { + margin: -4rem !important; + } + .m-xl-n7 { + margin: -5rem !important; + } + .m-xl-n8 { + margin: -7.5rem !important; + } + .m-xl-n9 { + margin: -10rem !important; + } + .m-xl-n10 { + margin: -12.5rem !important; + } + .m-xl-n11 { + margin: -15rem !important; + } + .m-xl-nx1 { + margin: -1.25rem !important; + } + .mx-xl-n1 { + margin-right: -0.25rem !important; + margin-left: -0.25rem !important; + } + .mx-xl-n2 { + margin-right: -0.5rem !important; + margin-left: -0.5rem !important; + } + .mx-xl-n3 { + margin-right: -1rem !important; + margin-left: -1rem !important; + } + .mx-xl-n4 { + margin-right: -1.8rem !important; + margin-left: -1.8rem !important; + } + .mx-xl-n5 { + margin-right: -3rem !important; + margin-left: -3rem !important; + } + .mx-xl-n6 { + margin-right: -4rem !important; + margin-left: -4rem !important; + } + .mx-xl-n7 { + margin-right: -5rem !important; + margin-left: -5rem !important; + } + .mx-xl-n8 { + margin-right: -7.5rem !important; + margin-left: -7.5rem !important; + } + .mx-xl-n9 { + margin-right: -10rem !important; + margin-left: -10rem !important; + } + .mx-xl-n10 { + margin-right: -12.5rem !important; + margin-left: -12.5rem !important; + } + .mx-xl-n11 { + margin-right: -15rem !important; + margin-left: -15rem !important; + } + .mx-xl-nx1 { + margin-right: -1.25rem !important; + margin-left: -1.25rem !important; + } + .my-xl-n1 { + margin-top: -0.25rem !important; + margin-bottom: -0.25rem !important; + } + .my-xl-n2 { + margin-top: -0.5rem !important; + margin-bottom: -0.5rem !important; + } + .my-xl-n3 { + margin-top: -1rem !important; + margin-bottom: -1rem !important; + } + .my-xl-n4 { + margin-top: -1.8rem !important; + margin-bottom: -1.8rem !important; + } + .my-xl-n5 { + margin-top: -3rem !important; + margin-bottom: -3rem !important; + } + .my-xl-n6 { + margin-top: -4rem !important; + margin-bottom: -4rem !important; + } + .my-xl-n7 { + margin-top: -5rem !important; + margin-bottom: -5rem !important; + } + .my-xl-n8 { + margin-top: -7.5rem !important; + margin-bottom: -7.5rem !important; + } + .my-xl-n9 { + margin-top: -10rem !important; + margin-bottom: -10rem !important; + } + .my-xl-n10 { + margin-top: -12.5rem !important; + margin-bottom: -12.5rem !important; + } + .my-xl-n11 { + margin-top: -15rem !important; + margin-bottom: -15rem !important; + } + .my-xl-nx1 { + margin-top: -1.25rem !important; + margin-bottom: -1.25rem !important; + } + .mt-xl-n1 { + margin-top: -0.25rem !important; + } + .mt-xl-n2 { + margin-top: -0.5rem !important; + } + .mt-xl-n3 { + margin-top: -1rem !important; + } + .mt-xl-n4 { + margin-top: -1.8rem !important; + } + .mt-xl-n5 { + margin-top: -3rem !important; + } + .mt-xl-n6 { + margin-top: -4rem !important; + } + .mt-xl-n7 { + margin-top: -5rem !important; + } + .mt-xl-n8 { + margin-top: -7.5rem !important; + } + .mt-xl-n9 { + margin-top: -10rem !important; + } + .mt-xl-n10 { + margin-top: -12.5rem !important; + } + .mt-xl-n11 { + margin-top: -15rem !important; + } + .mt-xl-nx1 { + margin-top: -1.25rem !important; + } + .me-xl-n1 { + margin-right: -0.25rem !important; + } + .me-xl-n2 { + margin-right: -0.5rem !important; + } + .me-xl-n3 { + margin-right: -1rem !important; + } + .me-xl-n4 { + margin-right: -1.8rem !important; + } + .me-xl-n5 { + margin-right: -3rem !important; + } + .me-xl-n6 { + margin-right: -4rem !important; + } + .me-xl-n7 { + margin-right: -5rem !important; + } + .me-xl-n8 { + margin-right: -7.5rem !important; + } + .me-xl-n9 { + margin-right: -10rem !important; + } + .me-xl-n10 { + margin-right: -12.5rem !important; + } + .me-xl-n11 { + margin-right: -15rem !important; + } + .me-xl-nx1 { + margin-right: -1.25rem !important; + } + .mb-xl-n1 { + margin-bottom: -0.25rem !important; + } + .mb-xl-n2 { + margin-bottom: -0.5rem !important; + } + .mb-xl-n3 { + margin-bottom: -1rem !important; + } + .mb-xl-n4 { + margin-bottom: -1.8rem !important; + } + .mb-xl-n5 { + margin-bottom: -3rem !important; + } + .mb-xl-n6 { + margin-bottom: -4rem !important; + } + .mb-xl-n7 { + margin-bottom: -5rem !important; + } + .mb-xl-n8 { + margin-bottom: -7.5rem !important; + } + .mb-xl-n9 { + margin-bottom: -10rem !important; + } + .mb-xl-n10 { + margin-bottom: -12.5rem !important; + } + .mb-xl-n11 { + margin-bottom: -15rem !important; + } + .mb-xl-nx1 { + margin-bottom: -1.25rem !important; + } + .ms-xl-n1 { + margin-left: -0.25rem !important; + } + .ms-xl-n2 { + margin-left: -0.5rem !important; + } + .ms-xl-n3 { + margin-left: -1rem !important; + } + .ms-xl-n4 { + margin-left: -1.8rem !important; + } + .ms-xl-n5 { + margin-left: -3rem !important; + } + .ms-xl-n6 { + margin-left: -4rem !important; + } + .ms-xl-n7 { + margin-left: -5rem !important; + } + .ms-xl-n8 { + margin-left: -7.5rem !important; + } + .ms-xl-n9 { + margin-left: -10rem !important; + } + .ms-xl-n10 { + margin-left: -12.5rem !important; + } + .ms-xl-n11 { + margin-left: -15rem !important; + } + .ms-xl-nx1 { + margin-left: -1.25rem !important; + } + .p-xl-0 { + padding: 0 !important; + } + .p-xl-1 { + padding: 0.25rem !important; + } + .p-xl-2 { + padding: 0.5rem !important; + } + .p-xl-3 { + padding: 1rem !important; + } + .p-xl-4 { + padding: 1.8rem !important; + } + .p-xl-5 { + padding: 3rem !important; + } + .p-xl-6 { + padding: 4rem !important; + } + .p-xl-7 { + padding: 5rem !important; + } + .p-xl-8 { + padding: 7.5rem !important; + } + .p-xl-9 { + padding: 10rem !important; + } + .p-xl-10 { + padding: 12.5rem !important; + } + .p-xl-11 { + padding: 15rem !important; + } + .p-xl-x1 { + padding: 1.25rem !important; + } + .px-xl-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-xl-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-xl-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-xl-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-xl-4 { + padding-right: 1.8rem !important; + padding-left: 1.8rem !important; + } + .px-xl-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .px-xl-6 { + padding-right: 4rem !important; + padding-left: 4rem !important; + } + .px-xl-7 { + padding-right: 5rem !important; + padding-left: 5rem !important; + } + .px-xl-8 { + padding-right: 7.5rem !important; + padding-left: 7.5rem !important; + } + .px-xl-9 { + padding-right: 10rem !important; + padding-left: 10rem !important; + } + .px-xl-10 { + padding-right: 12.5rem !important; + padding-left: 12.5rem !important; + } + .px-xl-11 { + padding-right: 15rem !important; + padding-left: 15rem !important; + } + .px-xl-x1 { + padding-right: 1.25rem !important; + padding-left: 1.25rem !important; + } + .py-xl-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-xl-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-xl-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-xl-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-xl-4 { + padding-top: 1.8rem !important; + padding-bottom: 1.8rem !important; + } + .py-xl-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .py-xl-6 { + padding-top: 4rem !important; + padding-bottom: 4rem !important; + } + .py-xl-7 { + padding-top: 5rem !important; + padding-bottom: 5rem !important; + } + .py-xl-8 { + padding-top: 7.5rem !important; + padding-bottom: 7.5rem !important; + } + .py-xl-9 { + padding-top: 10rem !important; + padding-bottom: 10rem !important; + } + .py-xl-10 { + padding-top: 12.5rem !important; + padding-bottom: 12.5rem !important; + } + .py-xl-11 { + padding-top: 15rem !important; + padding-bottom: 15rem !important; + } + .py-xl-x1 { + padding-top: 1.25rem !important; + padding-bottom: 1.25rem !important; + } + .pt-xl-0 { + padding-top: 0 !important; + } + .pt-xl-1 { + padding-top: 0.25rem !important; + } + .pt-xl-2 { + padding-top: 0.5rem !important; + } + .pt-xl-3 { + padding-top: 1rem !important; + } + .pt-xl-4 { + padding-top: 1.8rem !important; + } + .pt-xl-5 { + padding-top: 3rem !important; + } + .pt-xl-6 { + padding-top: 4rem !important; + } + .pt-xl-7 { + padding-top: 5rem !important; + } + .pt-xl-8 { + padding-top: 7.5rem !important; + } + .pt-xl-9 { + padding-top: 10rem !important; + } + .pt-xl-10 { + padding-top: 12.5rem !important; + } + .pt-xl-11 { + padding-top: 15rem !important; + } + .pt-xl-x1 { + padding-top: 1.25rem !important; + } + .pe-xl-0 { + padding-right: 0 !important; + } + .pe-xl-1 { + padding-right: 0.25rem !important; + } + .pe-xl-2 { + padding-right: 0.5rem !important; + } + .pe-xl-3 { + padding-right: 1rem !important; + } + .pe-xl-4 { + padding-right: 1.8rem !important; + } + .pe-xl-5 { + padding-right: 3rem !important; + } + .pe-xl-6 { + padding-right: 4rem !important; + } + .pe-xl-7 { + padding-right: 5rem !important; + } + .pe-xl-8 { + padding-right: 7.5rem !important; + } + .pe-xl-9 { + padding-right: 10rem !important; + } + .pe-xl-10 { + padding-right: 12.5rem !important; + } + .pe-xl-11 { + padding-right: 15rem !important; + } + .pe-xl-x1 { + padding-right: 1.25rem !important; + } + .pb-xl-0 { + padding-bottom: 0 !important; + } + .pb-xl-1 { + padding-bottom: 0.25rem !important; + } + .pb-xl-2 { + padding-bottom: 0.5rem !important; + } + .pb-xl-3 { + padding-bottom: 1rem !important; + } + .pb-xl-4 { + padding-bottom: 1.8rem !important; + } + .pb-xl-5 { + padding-bottom: 3rem !important; + } + .pb-xl-6 { + padding-bottom: 4rem !important; + } + .pb-xl-7 { + padding-bottom: 5rem !important; + } + .pb-xl-8 { + padding-bottom: 7.5rem !important; + } + .pb-xl-9 { + padding-bottom: 10rem !important; + } + .pb-xl-10 { + padding-bottom: 12.5rem !important; + } + .pb-xl-11 { + padding-bottom: 15rem !important; + } + .pb-xl-x1 { + padding-bottom: 1.25rem !important; + } + .ps-xl-0 { + padding-left: 0 !important; + } + .ps-xl-1 { + padding-left: 0.25rem !important; + } + .ps-xl-2 { + padding-left: 0.5rem !important; + } + .ps-xl-3 { + padding-left: 1rem !important; + } + .ps-xl-4 { + padding-left: 1.8rem !important; + } + .ps-xl-5 { + padding-left: 3rem !important; + } + .ps-xl-6 { + padding-left: 4rem !important; + } + .ps-xl-7 { + padding-left: 5rem !important; + } + .ps-xl-8 { + padding-left: 7.5rem !important; + } + .ps-xl-9 { + padding-left: 10rem !important; + } + .ps-xl-10 { + padding-left: 12.5rem !important; + } + .ps-xl-11 { + padding-left: 15rem !important; + } + .ps-xl-x1 { + padding-left: 1.25rem !important; + } + .gap-xl-0 { + gap: 0 !important; + } + .gap-xl-1 { + gap: 0.25rem !important; + } + .gap-xl-2 { + gap: 0.5rem !important; + } + .gap-xl-3 { + gap: 1rem !important; + } + .gap-xl-4 { + gap: 1.8rem !important; + } + .gap-xl-5 { + gap: 3rem !important; + } + .gap-xl-6 { + gap: 4rem !important; + } + .gap-xl-7 { + gap: 5rem !important; + } + .gap-xl-8 { + gap: 7.5rem !important; + } + .gap-xl-9 { + gap: 10rem !important; + } + .gap-xl-10 { + gap: 12.5rem !important; + } + .gap-xl-11 { + gap: 15rem !important; + } + .gap-xl-x1 { + gap: 1.25rem !important; + } + .row-gap-xl-0 { + row-gap: 0 !important; + } + .row-gap-xl-1 { + row-gap: 0.25rem !important; + } + .row-gap-xl-2 { + row-gap: 0.5rem !important; + } + .row-gap-xl-3 { + row-gap: 1rem !important; + } + .row-gap-xl-4 { + row-gap: 1.8rem !important; + } + .row-gap-xl-5 { + row-gap: 3rem !important; + } + .row-gap-xl-6 { + row-gap: 4rem !important; + } + .row-gap-xl-7 { + row-gap: 5rem !important; + } + .row-gap-xl-8 { + row-gap: 7.5rem !important; + } + .row-gap-xl-9 { + row-gap: 10rem !important; + } + .row-gap-xl-10 { + row-gap: 12.5rem !important; + } + .row-gap-xl-11 { + row-gap: 15rem !important; + } + .row-gap-xl-x1 { + row-gap: 1.25rem !important; + } + .column-gap-xl-0 { + column-gap: 0 !important; + } + .column-gap-xl-1 { + column-gap: 0.25rem !important; + } + .column-gap-xl-2 { + column-gap: 0.5rem !important; + } + .column-gap-xl-3 { + column-gap: 1rem !important; + } + .column-gap-xl-4 { + column-gap: 1.8rem !important; + } + .column-gap-xl-5 { + column-gap: 3rem !important; + } + .column-gap-xl-6 { + column-gap: 4rem !important; + } + .column-gap-xl-7 { + column-gap: 5rem !important; + } + .column-gap-xl-8 { + column-gap: 7.5rem !important; + } + .column-gap-xl-9 { + column-gap: 10rem !important; + } + .column-gap-xl-10 { + column-gap: 12.5rem !important; + } + .column-gap-xl-11 { + column-gap: 15rem !important; + } + .column-gap-xl-x1 { + column-gap: 1.25rem !important; + } + .fs-xl-11 { + font-size: 0.6944444444rem !important; + } + .fs-xl-10 { + font-size: 0.8333333333rem !important; + } + .fs-xl-9 { + font-size: 1rem !important; + } + .fs-xl-8 { + font-size: 1.2rem !important; + } + .fs-xl-7 { + font-size: 1.44rem !important; + } + .fs-xl-6 { + font-size: 1.728rem !important; + } + .fs-xl-5 { + font-size: 2.0736rem !important; + } + .fs-xl-4 { + font-size: 2.48832rem !important; + } + .fs-xl-3 { + font-size: 2.985984rem !important; + } + .fs-xl-2 { + font-size: 3.5831808rem !important; + } + .fs-xl-1 { + font-size: 4.29981696rem !important; + } + .text-xl-start { + text-align: left !important; + } + .text-xl-end { + text-align: right !important; + } + .text-xl-center { + text-align: center !important; + } + .rounded-xl-top { + border-top-left-radius: 0.25rem !important; + border-top-right-radius: 0.25rem !important; + } + .rounded-xl-top-lg { + border-top-left-radius: 0.375rem !important; + border-top-right-radius: 0.375rem !important; + } + .rounded-xl-top-0 { + border-top-left-radius: 0 !important; + border-top-right-radius: 0 !important; + } + .rounded-xl-end { + border-top-right-radius: 0.25rem !important; + border-bottom-right-radius: 0.25rem !important; + } + .rounded-xl-end-lg { + border-top-right-radius: 0.375rem !important; + border-bottom-right-radius: 0.375rem !important; + } + .rounded-xl-end-0 { + border-top-right-radius: 0 !important; + border-bottom-right-radius: 0 !important; + } + .rounded-xl-bottom { + border-bottom-right-radius: 0.25rem !important; + border-bottom-left-radius: 0.25rem !important; + } + .rounded-xl-bottom-lg { + border-bottom-right-radius: 0.375rem !important; + border-bottom-left-radius: 0.375rem !important; + } + .rounded-xl-bottom-0 { + border-bottom-right-radius: 0 !important; + border-bottom-left-radius: 0 !important; + } + .rounded-xl-start { + border-bottom-left-radius: 0.25rem !important; + border-top-left-radius: 0.25rem !important; + } + .rounded-xl-start-lg { + border-bottom-left-radius: 0.375rem !important; + border-top-left-radius: 0.375rem !important; + } + .rounded-xl-start-0 { + border-bottom-left-radius: 0 !important; + border-top-left-radius: 0 !important; + } + .max-vh-xl-25 { + max-height: 25vh !important; + } + .max-vh-xl-50 { + max-height: 50vh !important; + } + .max-vh-xl-75 { + max-height: 75vh !important; + } + .max-vh-xl-100 { + max-height: 100vh !important; + } + .border-xl-x { + border-left: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; + border-right: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; + } + .border-xl-x-0 { + border-left: 0 !important; + border-right: 0 !important; + } + .border-xl-y { + border-top: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; + border-bottom: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; + } + .border-xl-y-0 { + border-top: 0 !important; + border-bottom: 0 !important; + } + .border-xl-primary { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-primary-rgb), var(--falcon-border-opacity)) !important; + } + .border-xl-secondary { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-secondary-rgb), var(--falcon-border-opacity)) !important; + } + .border-xl-success { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-success-rgb), var(--falcon-border-opacity)) !important; + } + .border-xl-info { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-info-rgb), var(--falcon-border-opacity)) !important; + } + .border-xl-warning { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-warning-rgb), var(--falcon-border-opacity)) !important; + } + .border-xl-danger { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-danger-rgb), var(--falcon-border-opacity)) !important; + } + .border-xl-light { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-light-rgb), var(--falcon-border-opacity)) !important; + } + .border-xl-dark { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-dark-rgb), var(--falcon-border-opacity)) !important; + } + .border-xl-facebook { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-facebook-rgb), var(--falcon-border-opacity)) !important; + } + .border-xl-google-plus { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-google-plus-rgb), var(--falcon-border-opacity)) !important; + } + .border-xl-twitter { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-twitter-rgb), var(--falcon-border-opacity)) !important; + } + .border-xl-linkedin { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-linkedin-rgb), var(--falcon-border-opacity)) !important; + } + .border-xl-youtube { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-youtube-rgb), var(--falcon-border-opacity)) !important; + } + .border-xl-github { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-github-rgb), var(--falcon-border-opacity)) !important; + } + .border-xl-white { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-white-rgb), var(--falcon-border-opacity)) !important; + } + .border-xl-100 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-100-rgb), var(--falcon-border-opacity)) !important; + } + .border-xl-200 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-200-rgb), var(--falcon-border-opacity)) !important; + } + .border-xl-300 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-300-rgb), var(--falcon-border-opacity)) !important; + } + .border-xl-400 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-400-rgb), var(--falcon-border-opacity)) !important; + } + .border-xl-500 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-500-rgb), var(--falcon-border-opacity)) !important; + } + .border-xl-600 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-600-rgb), var(--falcon-border-opacity)) !important; + } + .border-xl-700 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-700-rgb), var(--falcon-border-opacity)) !important; + } + .border-xl-800 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-800-rgb), var(--falcon-border-opacity)) !important; + } + .border-xl-900 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-900-rgb), var(--falcon-border-opacity)) !important; + } + .border-xl-1000 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-1000-rgb), var(--falcon-border-opacity)) !important; + } + .border-xl-1100 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-1100-rgb), var(--falcon-border-opacity)) !important; + } + .rounded-xl-0 { + border-radius: 0 !important; + } +} +@media (min-width: 1540px) { + .float-xxl-start { + float: left !important; + } + .float-xxl-end { + float: right !important; + } + .float-xxl-none { + float: none !important; + } + .object-fit-xxl-contain { + object-fit: contain !important; + } + .object-fit-xxl-cover { + object-fit: cover !important; + } + .object-fit-xxl-fill { + object-fit: fill !important; + } + .object-fit-xxl-scale { + object-fit: scale-down !important; + } + .object-fit-xxl-none { + object-fit: none !important; + } + .opacity-xxl-0 { + opacity: 0 !important; + } + .opacity-xxl-25 { + opacity: 0.25 !important; + } + .opacity-xxl-50 { + opacity: 0.5 !important; + } + .opacity-xxl-75 { + opacity: 0.75 !important; + } + .opacity-xxl-85 { + opacity: 0.85 !important; + } + .opacity-xxl-100 { + opacity: 1 !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; + } + .position-xxl-static { + position: static !important; + } + .position-xxl-absolute { + position: absolute !important; + } + .position-xxl-relative { + position: relative !important; + } + .position-xxl-fixed { + position: fixed !important; + } + .position-xxl-sticky { + position: sticky !important; + } + .translate-xxl-middle { + transform: translateX(-50%) translateY(-50%) !important; + } + .translate-xxl-middle-x { + transform: translateX(-50%) !important; + } + .translate-xxl-middle-y { + transform: translateY(-50%) !important; + } + .border-xxl { + border: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; + } + .border-xxl-0 { + border: 0 !important; + } + .border-xxl-top { + border-top: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; + } + .border-xxl-top-0 { + border-top: 0 !important; + } + .border-xxl-end { + border-right: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; + } + .border-xxl-end-0 { + border-right: 0 !important; + } + .border-xxl-bottom { + border-bottom: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; + } + .border-xxl-bottom-0 { + border-bottom: 0 !important; + } + .border-xxl-start { + border-left: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; + } + .border-xxl-start-0 { + border-left: 0 !important; + } + .w-xxl-25 { + width: 25% !important; + } + .w-xxl-50 { + width: 50% !important; + } + .w-xxl-75 { + width: 75% !important; + } + .w-xxl-100 { + width: 100% !important; + } + .w-xxl-auto { + width: auto !important; + } + .vw-xxl-25 { + width: 25vw !important; + } + .vw-xxl-50 { + width: 50vw !important; + } + .vw-xxl-75 { + width: 75vw !important; + } + .vw-xxl-100 { + width: 100vw !important; + } + .h-xxl-25 { + height: 25% !important; + } + .h-xxl-50 { + height: 50% !important; + } + .h-xxl-75 { + height: 75% !important; + } + .h-xxl-100 { + height: 100% !important; + } + .h-xxl-auto { + height: auto !important; + } + .vh-xxl-25 { + height: 25vh !important; + } + .vh-xxl-50 { + height: 50vh !important; + } + .vh-xxl-75 { + height: 75vh !important; + } + .vh-xxl-100 { + height: 100vh !important; + } + .min-vh-xxl-25 { + min-height: 25vh !important; + } + .min-vh-xxl-50 { + min-height: 50vh !important; + } + .min-vh-xxl-75 { + min-height: 75vh !important; + } + .min-vh-xxl-100 { + min-height: 100vh !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: 0.25rem !important; + } + .m-xxl-2 { + margin: 0.5rem !important; + } + .m-xxl-3 { + margin: 1rem !important; + } + .m-xxl-4 { + margin: 1.8rem !important; + } + .m-xxl-5 { + margin: 3rem !important; + } + .m-xxl-6 { + margin: 4rem !important; + } + .m-xxl-7 { + margin: 5rem !important; + } + .m-xxl-8 { + margin: 7.5rem !important; + } + .m-xxl-9 { + margin: 10rem !important; + } + .m-xxl-10 { + margin: 12.5rem !important; + } + .m-xxl-11 { + margin: 15rem !important; + } + .m-xxl-x1 { + margin: 1.25rem !important; + } + .m-xxl-auto { + margin: auto !important; + } + .mx-xxl-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-xxl-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-xxl-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-xxl-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-xxl-4 { + margin-right: 1.8rem !important; + margin-left: 1.8rem !important; + } + .mx-xxl-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-xxl-6 { + margin-right: 4rem !important; + margin-left: 4rem !important; + } + .mx-xxl-7 { + margin-right: 5rem !important; + margin-left: 5rem !important; + } + .mx-xxl-8 { + margin-right: 7.5rem !important; + margin-left: 7.5rem !important; + } + .mx-xxl-9 { + margin-right: 10rem !important; + margin-left: 10rem !important; + } + .mx-xxl-10 { + margin-right: 12.5rem !important; + margin-left: 12.5rem !important; + } + .mx-xxl-11 { + margin-right: 15rem !important; + margin-left: 15rem !important; + } + .mx-xxl-x1 { + margin-right: 1.25rem !important; + margin-left: 1.25rem !important; + } + .mx-xxl-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-xxl-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-xxl-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-xxl-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-xxl-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-xxl-4 { + margin-top: 1.8rem !important; + margin-bottom: 1.8rem !important; + } + .my-xxl-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-xxl-6 { + margin-top: 4rem !important; + margin-bottom: 4rem !important; + } + .my-xxl-7 { + margin-top: 5rem !important; + margin-bottom: 5rem !important; + } + .my-xxl-8 { + margin-top: 7.5rem !important; + margin-bottom: 7.5rem !important; + } + .my-xxl-9 { + margin-top: 10rem !important; + margin-bottom: 10rem !important; + } + .my-xxl-10 { + margin-top: 12.5rem !important; + margin-bottom: 12.5rem !important; + } + .my-xxl-11 { + margin-top: 15rem !important; + margin-bottom: 15rem !important; + } + .my-xxl-x1 { + margin-top: 1.25rem !important; + margin-bottom: 1.25rem !important; + } + .my-xxl-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-xxl-0 { + margin-top: 0 !important; + } + .mt-xxl-1 { + margin-top: 0.25rem !important; + } + .mt-xxl-2 { + margin-top: 0.5rem !important; + } + .mt-xxl-3 { + margin-top: 1rem !important; + } + .mt-xxl-4 { + margin-top: 1.8rem !important; + } + .mt-xxl-5 { + margin-top: 3rem !important; + } + .mt-xxl-6 { + margin-top: 4rem !important; + } + .mt-xxl-7 { + margin-top: 5rem !important; + } + .mt-xxl-8 { + margin-top: 7.5rem !important; + } + .mt-xxl-9 { + margin-top: 10rem !important; + } + .mt-xxl-10 { + margin-top: 12.5rem !important; + } + .mt-xxl-11 { + margin-top: 15rem !important; + } + .mt-xxl-x1 { + margin-top: 1.25rem !important; + } + .mt-xxl-auto { + margin-top: auto !important; + } + .me-xxl-0 { + margin-right: 0 !important; + } + .me-xxl-1 { + margin-right: 0.25rem !important; + } + .me-xxl-2 { + margin-right: 0.5rem !important; + } + .me-xxl-3 { + margin-right: 1rem !important; + } + .me-xxl-4 { + margin-right: 1.8rem !important; + } + .me-xxl-5 { + margin-right: 3rem !important; + } + .me-xxl-6 { + margin-right: 4rem !important; + } + .me-xxl-7 { + margin-right: 5rem !important; + } + .me-xxl-8 { + margin-right: 7.5rem !important; + } + .me-xxl-9 { + margin-right: 10rem !important; + } + .me-xxl-10 { + margin-right: 12.5rem !important; + } + .me-xxl-11 { + margin-right: 15rem !important; + } + .me-xxl-x1 { + margin-right: 1.25rem !important; + } + .me-xxl-auto { + margin-right: auto !important; + } + .mb-xxl-0 { + margin-bottom: 0 !important; + } + .mb-xxl-1 { + margin-bottom: 0.25rem !important; + } + .mb-xxl-2 { + margin-bottom: 0.5rem !important; + } + .mb-xxl-3 { + margin-bottom: 1rem !important; + } + .mb-xxl-4 { + margin-bottom: 1.8rem !important; + } + .mb-xxl-5 { + margin-bottom: 3rem !important; + } + .mb-xxl-6 { + margin-bottom: 4rem !important; + } + .mb-xxl-7 { + margin-bottom: 5rem !important; + } + .mb-xxl-8 { + margin-bottom: 7.5rem !important; + } + .mb-xxl-9 { + margin-bottom: 10rem !important; + } + .mb-xxl-10 { + margin-bottom: 12.5rem !important; + } + .mb-xxl-11 { + margin-bottom: 15rem !important; + } + .mb-xxl-x1 { + margin-bottom: 1.25rem !important; + } + .mb-xxl-auto { + margin-bottom: auto !important; + } + .ms-xxl-0 { + margin-left: 0 !important; + } + .ms-xxl-1 { + margin-left: 0.25rem !important; + } + .ms-xxl-2 { + margin-left: 0.5rem !important; + } + .ms-xxl-3 { + margin-left: 1rem !important; + } + .ms-xxl-4 { + margin-left: 1.8rem !important; + } + .ms-xxl-5 { + margin-left: 3rem !important; + } + .ms-xxl-6 { + margin-left: 4rem !important; + } + .ms-xxl-7 { + margin-left: 5rem !important; + } + .ms-xxl-8 { + margin-left: 7.5rem !important; + } + .ms-xxl-9 { + margin-left: 10rem !important; + } + .ms-xxl-10 { + margin-left: 12.5rem !important; + } + .ms-xxl-11 { + margin-left: 15rem !important; + } + .ms-xxl-x1 { + margin-left: 1.25rem !important; + } + .ms-xxl-auto { + margin-left: auto !important; + } + .m-xxl-n1 { + margin: -0.25rem !important; + } + .m-xxl-n2 { + margin: -0.5rem !important; + } + .m-xxl-n3 { + margin: -1rem !important; + } + .m-xxl-n4 { + margin: -1.8rem !important; + } + .m-xxl-n5 { + margin: -3rem !important; + } + .m-xxl-n6 { + margin: -4rem !important; + } + .m-xxl-n7 { + margin: -5rem !important; + } + .m-xxl-n8 { + margin: -7.5rem !important; + } + .m-xxl-n9 { + margin: -10rem !important; + } + .m-xxl-n10 { + margin: -12.5rem !important; + } + .m-xxl-n11 { + margin: -15rem !important; + } + .m-xxl-nx1 { + margin: -1.25rem !important; + } + .mx-xxl-n1 { + margin-right: -0.25rem !important; + margin-left: -0.25rem !important; + } + .mx-xxl-n2 { + margin-right: -0.5rem !important; + margin-left: -0.5rem !important; + } + .mx-xxl-n3 { + margin-right: -1rem !important; + margin-left: -1rem !important; + } + .mx-xxl-n4 { + margin-right: -1.8rem !important; + margin-left: -1.8rem !important; + } + .mx-xxl-n5 { + margin-right: -3rem !important; + margin-left: -3rem !important; + } + .mx-xxl-n6 { + margin-right: -4rem !important; + margin-left: -4rem !important; + } + .mx-xxl-n7 { + margin-right: -5rem !important; + margin-left: -5rem !important; + } + .mx-xxl-n8 { + margin-right: -7.5rem !important; + margin-left: -7.5rem !important; + } + .mx-xxl-n9 { + margin-right: -10rem !important; + margin-left: -10rem !important; + } + .mx-xxl-n10 { + margin-right: -12.5rem !important; + margin-left: -12.5rem !important; + } + .mx-xxl-n11 { + margin-right: -15rem !important; + margin-left: -15rem !important; + } + .mx-xxl-nx1 { + margin-right: -1.25rem !important; + margin-left: -1.25rem !important; + } + .my-xxl-n1 { + margin-top: -0.25rem !important; + margin-bottom: -0.25rem !important; + } + .my-xxl-n2 { + margin-top: -0.5rem !important; + margin-bottom: -0.5rem !important; + } + .my-xxl-n3 { + margin-top: -1rem !important; + margin-bottom: -1rem !important; + } + .my-xxl-n4 { + margin-top: -1.8rem !important; + margin-bottom: -1.8rem !important; + } + .my-xxl-n5 { + margin-top: -3rem !important; + margin-bottom: -3rem !important; + } + .my-xxl-n6 { + margin-top: -4rem !important; + margin-bottom: -4rem !important; + } + .my-xxl-n7 { + margin-top: -5rem !important; + margin-bottom: -5rem !important; + } + .my-xxl-n8 { + margin-top: -7.5rem !important; + margin-bottom: -7.5rem !important; + } + .my-xxl-n9 { + margin-top: -10rem !important; + margin-bottom: -10rem !important; + } + .my-xxl-n10 { + margin-top: -12.5rem !important; + margin-bottom: -12.5rem !important; + } + .my-xxl-n11 { + margin-top: -15rem !important; + margin-bottom: -15rem !important; + } + .my-xxl-nx1 { + margin-top: -1.25rem !important; + margin-bottom: -1.25rem !important; + } + .mt-xxl-n1 { + margin-top: -0.25rem !important; + } + .mt-xxl-n2 { + margin-top: -0.5rem !important; + } + .mt-xxl-n3 { + margin-top: -1rem !important; + } + .mt-xxl-n4 { + margin-top: -1.8rem !important; + } + .mt-xxl-n5 { + margin-top: -3rem !important; + } + .mt-xxl-n6 { + margin-top: -4rem !important; + } + .mt-xxl-n7 { + margin-top: -5rem !important; + } + .mt-xxl-n8 { + margin-top: -7.5rem !important; + } + .mt-xxl-n9 { + margin-top: -10rem !important; + } + .mt-xxl-n10 { + margin-top: -12.5rem !important; + } + .mt-xxl-n11 { + margin-top: -15rem !important; + } + .mt-xxl-nx1 { + margin-top: -1.25rem !important; + } + .me-xxl-n1 { + margin-right: -0.25rem !important; + } + .me-xxl-n2 { + margin-right: -0.5rem !important; + } + .me-xxl-n3 { + margin-right: -1rem !important; + } + .me-xxl-n4 { + margin-right: -1.8rem !important; + } + .me-xxl-n5 { + margin-right: -3rem !important; + } + .me-xxl-n6 { + margin-right: -4rem !important; + } + .me-xxl-n7 { + margin-right: -5rem !important; + } + .me-xxl-n8 { + margin-right: -7.5rem !important; + } + .me-xxl-n9 { + margin-right: -10rem !important; + } + .me-xxl-n10 { + margin-right: -12.5rem !important; + } + .me-xxl-n11 { + margin-right: -15rem !important; + } + .me-xxl-nx1 { + margin-right: -1.25rem !important; + } + .mb-xxl-n1 { + margin-bottom: -0.25rem !important; + } + .mb-xxl-n2 { + margin-bottom: -0.5rem !important; + } + .mb-xxl-n3 { + margin-bottom: -1rem !important; + } + .mb-xxl-n4 { + margin-bottom: -1.8rem !important; + } + .mb-xxl-n5 { + margin-bottom: -3rem !important; + } + .mb-xxl-n6 { + margin-bottom: -4rem !important; + } + .mb-xxl-n7 { + margin-bottom: -5rem !important; + } + .mb-xxl-n8 { + margin-bottom: -7.5rem !important; + } + .mb-xxl-n9 { + margin-bottom: -10rem !important; + } + .mb-xxl-n10 { + margin-bottom: -12.5rem !important; + } + .mb-xxl-n11 { + margin-bottom: -15rem !important; + } + .mb-xxl-nx1 { + margin-bottom: -1.25rem !important; + } + .ms-xxl-n1 { + margin-left: -0.25rem !important; + } + .ms-xxl-n2 { + margin-left: -0.5rem !important; + } + .ms-xxl-n3 { + margin-left: -1rem !important; + } + .ms-xxl-n4 { + margin-left: -1.8rem !important; + } + .ms-xxl-n5 { + margin-left: -3rem !important; + } + .ms-xxl-n6 { + margin-left: -4rem !important; + } + .ms-xxl-n7 { + margin-left: -5rem !important; + } + .ms-xxl-n8 { + margin-left: -7.5rem !important; + } + .ms-xxl-n9 { + margin-left: -10rem !important; + } + .ms-xxl-n10 { + margin-left: -12.5rem !important; + } + .ms-xxl-n11 { + margin-left: -15rem !important; + } + .ms-xxl-nx1 { + margin-left: -1.25rem !important; + } + .p-xxl-0 { + padding: 0 !important; + } + .p-xxl-1 { + padding: 0.25rem !important; + } + .p-xxl-2 { + padding: 0.5rem !important; + } + .p-xxl-3 { + padding: 1rem !important; + } + .p-xxl-4 { + padding: 1.8rem !important; + } + .p-xxl-5 { + padding: 3rem !important; + } + .p-xxl-6 { + padding: 4rem !important; + } + .p-xxl-7 { + padding: 5rem !important; + } + .p-xxl-8 { + padding: 7.5rem !important; + } + .p-xxl-9 { + padding: 10rem !important; + } + .p-xxl-10 { + padding: 12.5rem !important; + } + .p-xxl-11 { + padding: 15rem !important; + } + .p-xxl-x1 { + padding: 1.25rem !important; + } + .px-xxl-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-xxl-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-xxl-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-xxl-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-xxl-4 { + padding-right: 1.8rem !important; + padding-left: 1.8rem !important; + } + .px-xxl-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .px-xxl-6 { + padding-right: 4rem !important; + padding-left: 4rem !important; + } + .px-xxl-7 { + padding-right: 5rem !important; + padding-left: 5rem !important; + } + .px-xxl-8 { + padding-right: 7.5rem !important; + padding-left: 7.5rem !important; + } + .px-xxl-9 { + padding-right: 10rem !important; + padding-left: 10rem !important; + } + .px-xxl-10 { + padding-right: 12.5rem !important; + padding-left: 12.5rem !important; + } + .px-xxl-11 { + padding-right: 15rem !important; + padding-left: 15rem !important; + } + .px-xxl-x1 { + padding-right: 1.25rem !important; + padding-left: 1.25rem !important; + } + .py-xxl-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-xxl-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-xxl-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-xxl-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-xxl-4 { + padding-top: 1.8rem !important; + padding-bottom: 1.8rem !important; + } + .py-xxl-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .py-xxl-6 { + padding-top: 4rem !important; + padding-bottom: 4rem !important; + } + .py-xxl-7 { + padding-top: 5rem !important; + padding-bottom: 5rem !important; + } + .py-xxl-8 { + padding-top: 7.5rem !important; + padding-bottom: 7.5rem !important; + } + .py-xxl-9 { + padding-top: 10rem !important; + padding-bottom: 10rem !important; + } + .py-xxl-10 { + padding-top: 12.5rem !important; + padding-bottom: 12.5rem !important; + } + .py-xxl-11 { + padding-top: 15rem !important; + padding-bottom: 15rem !important; + } + .py-xxl-x1 { + padding-top: 1.25rem !important; + padding-bottom: 1.25rem !important; + } + .pt-xxl-0 { + padding-top: 0 !important; + } + .pt-xxl-1 { + padding-top: 0.25rem !important; + } + .pt-xxl-2 { + padding-top: 0.5rem !important; + } + .pt-xxl-3 { + padding-top: 1rem !important; + } + .pt-xxl-4 { + padding-top: 1.8rem !important; + } + .pt-xxl-5 { + padding-top: 3rem !important; + } + .pt-xxl-6 { + padding-top: 4rem !important; + } + .pt-xxl-7 { + padding-top: 5rem !important; + } + .pt-xxl-8 { + padding-top: 7.5rem !important; + } + .pt-xxl-9 { + padding-top: 10rem !important; + } + .pt-xxl-10 { + padding-top: 12.5rem !important; + } + .pt-xxl-11 { + padding-top: 15rem !important; + } + .pt-xxl-x1 { + padding-top: 1.25rem !important; + } + .pe-xxl-0 { + padding-right: 0 !important; + } + .pe-xxl-1 { + padding-right: 0.25rem !important; + } + .pe-xxl-2 { + padding-right: 0.5rem !important; + } + .pe-xxl-3 { + padding-right: 1rem !important; + } + .pe-xxl-4 { + padding-right: 1.8rem !important; + } + .pe-xxl-5 { + padding-right: 3rem !important; + } + .pe-xxl-6 { + padding-right: 4rem !important; + } + .pe-xxl-7 { + padding-right: 5rem !important; + } + .pe-xxl-8 { + padding-right: 7.5rem !important; + } + .pe-xxl-9 { + padding-right: 10rem !important; + } + .pe-xxl-10 { + padding-right: 12.5rem !important; + } + .pe-xxl-11 { + padding-right: 15rem !important; + } + .pe-xxl-x1 { + padding-right: 1.25rem !important; + } + .pb-xxl-0 { + padding-bottom: 0 !important; + } + .pb-xxl-1 { + padding-bottom: 0.25rem !important; + } + .pb-xxl-2 { + padding-bottom: 0.5rem !important; + } + .pb-xxl-3 { + padding-bottom: 1rem !important; + } + .pb-xxl-4 { + padding-bottom: 1.8rem !important; + } + .pb-xxl-5 { + padding-bottom: 3rem !important; + } + .pb-xxl-6 { + padding-bottom: 4rem !important; + } + .pb-xxl-7 { + padding-bottom: 5rem !important; + } + .pb-xxl-8 { + padding-bottom: 7.5rem !important; + } + .pb-xxl-9 { + padding-bottom: 10rem !important; + } + .pb-xxl-10 { + padding-bottom: 12.5rem !important; + } + .pb-xxl-11 { + padding-bottom: 15rem !important; + } + .pb-xxl-x1 { + padding-bottom: 1.25rem !important; + } + .ps-xxl-0 { + padding-left: 0 !important; + } + .ps-xxl-1 { + padding-left: 0.25rem !important; + } + .ps-xxl-2 { + padding-left: 0.5rem !important; + } + .ps-xxl-3 { + padding-left: 1rem !important; + } + .ps-xxl-4 { + padding-left: 1.8rem !important; + } + .ps-xxl-5 { + padding-left: 3rem !important; + } + .ps-xxl-6 { + padding-left: 4rem !important; + } + .ps-xxl-7 { + padding-left: 5rem !important; + } + .ps-xxl-8 { + padding-left: 7.5rem !important; + } + .ps-xxl-9 { + padding-left: 10rem !important; + } + .ps-xxl-10 { + padding-left: 12.5rem !important; + } + .ps-xxl-11 { + padding-left: 15rem !important; + } + .ps-xxl-x1 { + padding-left: 1.25rem !important; + } + .gap-xxl-0 { + gap: 0 !important; + } + .gap-xxl-1 { + gap: 0.25rem !important; + } + .gap-xxl-2 { + gap: 0.5rem !important; + } + .gap-xxl-3 { + gap: 1rem !important; + } + .gap-xxl-4 { + gap: 1.8rem !important; + } + .gap-xxl-5 { + gap: 3rem !important; + } + .gap-xxl-6 { + gap: 4rem !important; + } + .gap-xxl-7 { + gap: 5rem !important; + } + .gap-xxl-8 { + gap: 7.5rem !important; + } + .gap-xxl-9 { + gap: 10rem !important; + } + .gap-xxl-10 { + gap: 12.5rem !important; + } + .gap-xxl-11 { + gap: 15rem !important; + } + .gap-xxl-x1 { + gap: 1.25rem !important; + } + .row-gap-xxl-0 { + row-gap: 0 !important; + } + .row-gap-xxl-1 { + row-gap: 0.25rem !important; + } + .row-gap-xxl-2 { + row-gap: 0.5rem !important; + } + .row-gap-xxl-3 { + row-gap: 1rem !important; + } + .row-gap-xxl-4 { + row-gap: 1.8rem !important; + } + .row-gap-xxl-5 { + row-gap: 3rem !important; + } + .row-gap-xxl-6 { + row-gap: 4rem !important; + } + .row-gap-xxl-7 { + row-gap: 5rem !important; + } + .row-gap-xxl-8 { + row-gap: 7.5rem !important; + } + .row-gap-xxl-9 { + row-gap: 10rem !important; + } + .row-gap-xxl-10 { + row-gap: 12.5rem !important; + } + .row-gap-xxl-11 { + row-gap: 15rem !important; + } + .row-gap-xxl-x1 { + row-gap: 1.25rem !important; + } + .column-gap-xxl-0 { + column-gap: 0 !important; + } + .column-gap-xxl-1 { + column-gap: 0.25rem !important; + } + .column-gap-xxl-2 { + column-gap: 0.5rem !important; + } + .column-gap-xxl-3 { + column-gap: 1rem !important; + } + .column-gap-xxl-4 { + column-gap: 1.8rem !important; + } + .column-gap-xxl-5 { + column-gap: 3rem !important; + } + .column-gap-xxl-6 { + column-gap: 4rem !important; + } + .column-gap-xxl-7 { + column-gap: 5rem !important; + } + .column-gap-xxl-8 { + column-gap: 7.5rem !important; + } + .column-gap-xxl-9 { + column-gap: 10rem !important; + } + .column-gap-xxl-10 { + column-gap: 12.5rem !important; + } + .column-gap-xxl-11 { + column-gap: 15rem !important; + } + .column-gap-xxl-x1 { + column-gap: 1.25rem !important; + } + .fs-xxl-11 { + font-size: 0.6944444444rem !important; + } + .fs-xxl-10 { + font-size: 0.8333333333rem !important; + } + .fs-xxl-9 { + font-size: 1rem !important; + } + .fs-xxl-8 { + font-size: 1.2rem !important; + } + .fs-xxl-7 { + font-size: 1.44rem !important; + } + .fs-xxl-6 { + font-size: 1.728rem !important; + } + .fs-xxl-5 { + font-size: 2.0736rem !important; + } + .fs-xxl-4 { + font-size: 2.48832rem !important; + } + .fs-xxl-3 { + font-size: 2.985984rem !important; + } + .fs-xxl-2 { + font-size: 3.5831808rem !important; + } + .fs-xxl-1 { + font-size: 4.29981696rem !important; + } + .text-xxl-start { + text-align: left !important; + } + .text-xxl-end { + text-align: right !important; + } + .text-xxl-center { + text-align: center !important; + } + .rounded-xxl-top { + border-top-left-radius: 0.25rem !important; + border-top-right-radius: 0.25rem !important; + } + .rounded-xxl-top-lg { + border-top-left-radius: 0.375rem !important; + border-top-right-radius: 0.375rem !important; + } + .rounded-xxl-top-0 { + border-top-left-radius: 0 !important; + border-top-right-radius: 0 !important; + } + .rounded-xxl-end { + border-top-right-radius: 0.25rem !important; + border-bottom-right-radius: 0.25rem !important; + } + .rounded-xxl-end-lg { + border-top-right-radius: 0.375rem !important; + border-bottom-right-radius: 0.375rem !important; + } + .rounded-xxl-end-0 { + border-top-right-radius: 0 !important; + border-bottom-right-radius: 0 !important; + } + .rounded-xxl-bottom { + border-bottom-right-radius: 0.25rem !important; + border-bottom-left-radius: 0.25rem !important; + } + .rounded-xxl-bottom-lg { + border-bottom-right-radius: 0.375rem !important; + border-bottom-left-radius: 0.375rem !important; + } + .rounded-xxl-bottom-0 { + border-bottom-right-radius: 0 !important; + border-bottom-left-radius: 0 !important; + } + .rounded-xxl-start { + border-bottom-left-radius: 0.25rem !important; + border-top-left-radius: 0.25rem !important; + } + .rounded-xxl-start-lg { + border-bottom-left-radius: 0.375rem !important; + border-top-left-radius: 0.375rem !important; + } + .rounded-xxl-start-0 { + border-bottom-left-radius: 0 !important; + border-top-left-radius: 0 !important; + } + .max-vh-xxl-25 { + max-height: 25vh !important; + } + .max-vh-xxl-50 { + max-height: 50vh !important; + } + .max-vh-xxl-75 { + max-height: 75vh !important; + } + .max-vh-xxl-100 { + max-height: 100vh !important; + } + .border-xxl-x { + border-left: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; + border-right: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; + } + .border-xxl-x-0 { + border-left: 0 !important; + border-right: 0 !important; + } + .border-xxl-y { + border-top: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; + border-bottom: var(--falcon-border-width) var(--falcon-border-style) var(--falcon-border-color) !important; + } + .border-xxl-y-0 { + border-top: 0 !important; + border-bottom: 0 !important; + } + .border-xxl-primary { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-primary-rgb), var(--falcon-border-opacity)) !important; + } + .border-xxl-secondary { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-secondary-rgb), var(--falcon-border-opacity)) !important; + } + .border-xxl-success { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-success-rgb), var(--falcon-border-opacity)) !important; + } + .border-xxl-info { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-info-rgb), var(--falcon-border-opacity)) !important; + } + .border-xxl-warning { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-warning-rgb), var(--falcon-border-opacity)) !important; + } + .border-xxl-danger { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-danger-rgb), var(--falcon-border-opacity)) !important; + } + .border-xxl-light { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-light-rgb), var(--falcon-border-opacity)) !important; + } + .border-xxl-dark { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-dark-rgb), var(--falcon-border-opacity)) !important; + } + .border-xxl-facebook { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-facebook-rgb), var(--falcon-border-opacity)) !important; + } + .border-xxl-google-plus { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-google-plus-rgb), var(--falcon-border-opacity)) !important; + } + .border-xxl-twitter { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-twitter-rgb), var(--falcon-border-opacity)) !important; + } + .border-xxl-linkedin { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-linkedin-rgb), var(--falcon-border-opacity)) !important; + } + .border-xxl-youtube { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-youtube-rgb), var(--falcon-border-opacity)) !important; + } + .border-xxl-github { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-github-rgb), var(--falcon-border-opacity)) !important; + } + .border-xxl-white { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-white-rgb), var(--falcon-border-opacity)) !important; + } + .border-xxl-100 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-100-rgb), var(--falcon-border-opacity)) !important; + } + .border-xxl-200 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-200-rgb), var(--falcon-border-opacity)) !important; + } + .border-xxl-300 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-300-rgb), var(--falcon-border-opacity)) !important; + } + .border-xxl-400 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-400-rgb), var(--falcon-border-opacity)) !important; + } + .border-xxl-500 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-500-rgb), var(--falcon-border-opacity)) !important; + } + .border-xxl-600 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-600-rgb), var(--falcon-border-opacity)) !important; + } + .border-xxl-700 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-700-rgb), var(--falcon-border-opacity)) !important; + } + .border-xxl-800 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-800-rgb), var(--falcon-border-opacity)) !important; + } + .border-xxl-900 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-900-rgb), var(--falcon-border-opacity)) !important; + } + .border-xxl-1000 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-1000-rgb), var(--falcon-border-opacity)) !important; + } + .border-xxl-1100 { + --falcon-border-opacity: 1; + border-color: rgba(var(--falcon-gray-1100-rgb), var(--falcon-border-opacity)) !important; + } + .rounded-xxl-0 { + border-radius: 0 !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; + } +} +/*----------------------------------------------- +| Theme Styles +-----------------------------------------------*/ +/*----------------------------------------------- +| Reboot +-----------------------------------------------*/ +::placeholder { + opacity: 1; + color: var(--falcon-gray-400); +} + +::selection { + background-color: var(--falcon-primary); + color: #fff; +} + +[id] { + scroll-margin-top: calc(var(--falcon-top-nav-height) + 1.5rem); +} + +body { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + position: relative; +} + +pre, +code { + -webkit-font-smoothing: auto; + -moz-osx-font-smoothing: auto; +} + +section { + position: relative; + padding-top: 4rem; + padding-bottom: 4rem; +} +@media (min-width: 992px) { + section { + padding-top: 7.5rem; + padding-bottom: 7.5rem; + } +} + +input, +button, +select, +optgroup, +textarea, +label, +.alert, +.badge, +.blockquote-footer, +.btn, +.tox .tox-menu__footer .tox-button:last-child, +.tox .tox-dialog__footer .tox-button:last-child, +.tox .tox-menu__footer .tox-button--secondary, +.tox .tox-dialog__footer .tox-button--secondary, +.navbar, +.pagination, +.valid-feedback, +.invalid-feedback { + font-family: "Poppins", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; +} + +pre { + margin: 0; + transform: translate3d(0, 0, 0); +} + +strong { + font-weight: 600; +} + +label { + font-weight: 500 !important; + margin-bottom: 0.5rem; +} + +pre, +code, +kbd, +samp { + font-size: 0.875rem; +} + +[type=email], +[type=number], +[type=tel], +[type=url] { + direction: ltr !important; +} + +/* -------------------------------------------------------------------------- */ +/* Navbar */ +/* -------------------------------------------------------------------------- */ +:root { + --falcon-top-nav-height: 4.3125rem; +} +@media (min-width: 992px) { + :root.double-top-nav-layout { + --falcon-top-nav-height: 8.688rem; + } +} + +.navbar .nav-link { + outline: none; +} +.navbar .dropdown-menu { + overflow: visible; + left: -0.5625rem; + padding: 0; +} +.navbar .dropdown-menu.dropdown-caret:after { + content: ""; + position: absolute; + z-index: -1; + width: 1rem; + height: 1rem; + background: #fff; + top: -0.375rem; + left: 1.8rem; + transform: rotate(45deg); + background: inherit; + border-radius: 0.125rem; + border-width: 1px 0 0 1px; + border-style: solid; + border-color: var(--falcon-border-color); + box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075); +} +.navbar .dropdown-menu.dropdown-menu-end { + left: auto; + right: -0.5625rem; +} +.navbar .dropdown-menu.dropdown-menu-end:after { + right: 0.95rem; + left: auto; +} +.navbar .dropdown-item { + font-weight: 500; +} +.navbar .dropdown-item:hover, .navbar .dropdown-item:focus { + background-color: var(--falcon-dropdown-link-hover-bg); + color: var(--falcon-gray-1000); +} + +.navbar-toggler-humburger-icon { + height: 2.5rem; + width: 2.5rem; + padding: 0.3125rem; + display: flex; + justify-content: center; + align-items: center; + border-radius: 50%; +} +.navbar-toggler-humburger-icon:hover, .navbar-toggler-humburger-icon:focus { + background-color: var(--falcon-gray-300); +} + +.navbar-toggle-icon { + position: relative; + height: 0.125rem; + width: 1.25rem; + transition: all 0.2s ease-in-out; + display: block; + top: -0.3125rem; + padding-right: 0; +} +.navbar-toggle-icon .toggle-line { + display: block; + height: 100%; + border-radius: 0.25rem; + transition: all 0.2s ease-in-out; + background-color: var(--falcon-gray-700); +} +.navbar-toggle-icon:after, .navbar-toggle-icon:before { + content: ""; + position: absolute; + height: 0.125rem; + background-color: var(--falcon-gray-700); + left: 0; + transition: all 0.2s ease-in-out; + border-radius: 0.25rem; + width: 100%; +} +.navbar-toggle-icon:before { + top: 0.3125rem; +} +.navbar-toggle-icon:after { + top: 0.625rem; +} + +.navbar-glass { + background-color: var(--falcon-bg-navbar-glass); +} + +.navbar-brand { + font-weight: 800; +} + +.navbar-glass-shadow { + box-shadow: 0 0.5rem 0.5rem -0.5rem rgba(0, 0, 0, 0.2) !important; +} + +/* Navbar Dropdown */ +/* --------------------------------------------------------------------------- */ +.nine-dots:hover circle { + fill: var(--falcon-navbar-hover-color); +} + +.navbar-dropdown-dots { + width: 16.7rem; + height: 21rem; +} + +.nav-quick-links { + width: 16.7rem; + height: 21rem; +} + +.dropdown-caret-bg::after { + background: var(--falcon-emphasis-bg) !important; +} + +/* -------------------------------------------------------------------------- */ +/* Badge */ +/* -------------------------------------------------------------------------- */ +.badge-subtle-primary { + color: var(--falcon-primary-text-emphasis); + background-color: var(--falcon-primary-bg-subtle); +} +.badge-subtle-primary[href]:hover, .badge-subtle-primary[href]:focus { + text-decoration: none; + color: var(--falcon-primary-text-emphasis); + background-color: var(--falcon-primary-bg-subtle); +} + +.badge-subtle-secondary { + color: var(--falcon-secondary-text-emphasis); + background-color: var(--falcon-secondary-bg-subtle); +} +.badge-subtle-secondary[href]:hover, .badge-subtle-secondary[href]:focus { + text-decoration: none; + color: var(--falcon-secondary-text-emphasis); + background-color: var(--falcon-secondary-bg-subtle); +} + +.badge-subtle-success { + color: var(--falcon-success-text-emphasis); + background-color: var(--falcon-success-bg-subtle); +} +.badge-subtle-success[href]:hover, .badge-subtle-success[href]:focus { + text-decoration: none; + color: var(--falcon-success-text-emphasis); + background-color: var(--falcon-success-bg-subtle); +} + +.badge-subtle-info { + color: var(--falcon-info-text-emphasis); + background-color: var(--falcon-info-bg-subtle); +} +.badge-subtle-info[href]:hover, .badge-subtle-info[href]:focus { + text-decoration: none; + color: var(--falcon-info-text-emphasis); + background-color: var(--falcon-info-bg-subtle); +} + +.badge-subtle-warning { + color: var(--falcon-warning-text-emphasis); + background-color: var(--falcon-warning-bg-subtle); +} +.badge-subtle-warning[href]:hover, .badge-subtle-warning[href]:focus { + text-decoration: none; + color: var(--falcon-warning-text-emphasis); + background-color: var(--falcon-warning-bg-subtle); +} + +.badge-subtle-danger { + color: var(--falcon-danger-text-emphasis); + background-color: var(--falcon-danger-bg-subtle); +} +.badge-subtle-danger[href]:hover, .badge-subtle-danger[href]:focus { + text-decoration: none; + color: var(--falcon-danger-text-emphasis); + background-color: var(--falcon-danger-bg-subtle); +} + +.badge-subtle-light { + color: var(--falcon-light-text-emphasis); + background-color: var(--falcon-light-bg-subtle); +} +.badge-subtle-light[href]:hover, .badge-subtle-light[href]:focus { + text-decoration: none; + color: var(--falcon-light-text-emphasis); + background-color: var(--falcon-light-bg-subtle); +} + +.badge-subtle-dark { + color: var(--falcon-dark-text-emphasis); + background-color: var(--falcon-dark-bg-subtle); +} +.badge-subtle-dark[href]:hover, .badge-subtle-dark[href]:focus { + text-decoration: none; + color: var(--falcon-dark-text-emphasis); + background-color: var(--falcon-dark-bg-subtle); +} + +/*----------------------------------------------- +| Card +-----------------------------------------------*/ +.card { + --falcon-card-bg: var(--falcon-emphasis-bg); + box-shadow: var(--falcon-box-shadow); +} + +.card-link { + font-size: 0.8333333333rem; + font-weight: 600; +} + +.card-title { + font-weight: 600; + font-size: 1.2rem; +} + +.card-body:last-child { + border-bottom-left-radius: 0.375rem; + border-bottom-right-radius: 0.375rem; +} + +/*----------------------------------------------- +| Card spacer +-----------------------------------------------*/ +.ms-ncard, +.mx-ncard, +.m-ncard { + margin-left: -1.25rem !important; +} + +.me-ncard, +.mx-ncard, +.m-ncard { + margin-right: -1.25rem !important; +} + +/* -------------------------------------------------------------------------- */ +/* Browser Fixing */ +/* -------------------------------------------------------------------------- */ +.firefox .dropcap:first-letter { + margin-top: 0.175em; +} +.firefox .card-notification .scrollbar-overlay { + min-height: 19rem; +} + +.chrome .btn-close { + background-clip: unset; +} + +/*----------------------------------------------- +| Button +-----------------------------------------------*/ +/*----------------------------------------------- +| Button Reveal +-----------------------------------------------*/ +.btn-reveal-trigger:hover .btn-reveal, .btn-reveal-trigger:focus .btn-reveal { + box-shadow: var(--falcon-btn-reveal-hover-shadow); +} +.btn-reveal-trigger:hover .btn-reveal:hover, .btn-reveal-trigger:hover .btn-reveal:focus, .btn-reveal-trigger:hover .btn-reveal:active, .btn-reveal-trigger:focus .btn-reveal:hover, .btn-reveal-trigger:focus .btn-reveal:focus, .btn-reveal-trigger:focus .btn-reveal:active { + color: var(--falcon-btn-reveal-hover-color) !important; +} +.btn-reveal-trigger:hover .btn-reveal-sm, .btn-reveal-trigger:focus .btn-reveal-sm { + box-shadow: var(--falcon-box-shadow-sm); +} +.btn-reveal-trigger .btn-reveal { + box-shadow: none; +} +.btn-reveal-trigger .btn-reveal:active:focus, .btn-reveal-trigger .btn-reveal:active, .btn-reveal-trigger .btn-reveal:focus { + box-shadow: none; + color: var(--falcon-btn-reveal-hover-color) !important; + background-color: var(--falcon-btn-reveal-focus-bg); + border-color: var(--falcon-btn-reveal-focus-border-color); +} +.btn-reveal-trigger .dropdown-toggle:after, .btn-reveal-trigger .dropdown-toggle:before { + display: none; +} + +/*----------------------------------------------- +| Falcon buttons +-----------------------------------------------*/ +.btn-falcon-primary, .btn-falcon-primary.show { + color: var(--falcon-btn-falcon-primary-color); + background-color: var(--falcon-btn-falcon-background); + border-color: var(--falcon-btn-falcon-background); + box-shadow: var(--falcon-btn-falcon-box-shadow); +} +.btn-falcon-primary:hover, .btn-falcon-primary:focus { + color: var(--falcon-btn-falcon-primary-hover-color); + background-color: var(--falcon-btn-falcon-background); + border-color: var(--falcon-btn-falcon-background); +} +.btn-falcon-primary:hover:not(.disabled):not(:disabled), .btn-falcon-primary:focus:not(.disabled):not(:disabled) { + color: var(--falcon-btn-falcon-primary-hover-color); + box-shadow: var(--falcon-btn-falcon-hover-box-shadow); +} +.btn-falcon-primary:active { + box-shadow: none !important; + color: var(--falcon-btn-falcon-primary-active-color); +} +.btn-check:checked + .btn-falcon-primary, :not(.btn-check) + .btn-falcon-primary:active, .btn-falcon-primary:first-child:active, .btn-falcon-primary.active { + color: var(--falcon-btn-falcon-primary-color); + background-color: var(--falcon-btn-falcon-primary-active-background); + border-color: var(--falcon-btn-falcon-background); +} +.btn-falcon-primary:disabled, .btn-falcon-primary.disabled { + color: var(--falcon-btn-disabled-color); + background-color: var(--falcon-btn-falcon-background); + box-shadow: var(--falcon-btn-falcon-box-shadow) !important; +} + +.btn-falcon-success, .btn-falcon-success.show { + color: var(--falcon-btn-falcon-success-color); + background-color: var(--falcon-btn-falcon-background); + border-color: var(--falcon-btn-falcon-background); + box-shadow: var(--falcon-btn-falcon-box-shadow); +} +.btn-falcon-success:hover, .btn-falcon-success:focus { + color: var(--falcon-btn-falcon-success-hover-color); + background-color: var(--falcon-btn-falcon-background); + border-color: var(--falcon-btn-falcon-background); +} +.btn-falcon-success:hover:not(.disabled):not(:disabled), .btn-falcon-success:focus:not(.disabled):not(:disabled) { + color: var(--falcon-btn-falcon-success-hover-color); + box-shadow: var(--falcon-btn-falcon-hover-box-shadow); +} +.btn-falcon-success:active { + box-shadow: none !important; + color: var(--falcon-btn-falcon-success-active-color); +} +.btn-check:checked + .btn-falcon-success, :not(.btn-check) + .btn-falcon-success:active, .btn-falcon-success:first-child:active, .btn-falcon-success.active { + color: var(--falcon-btn-falcon-success-color); + background-color: var(--falcon-btn-falcon-success-active-background); + border-color: var(--falcon-btn-falcon-background); +} +.btn-falcon-success:disabled, .btn-falcon-success.disabled { + color: var(--falcon-btn-disabled-color); + background-color: var(--falcon-btn-falcon-background); + box-shadow: var(--falcon-btn-falcon-box-shadow) !important; +} + +.btn-falcon-info, .btn-falcon-info.show { + color: var(--falcon-btn-falcon-info-color); + background-color: var(--falcon-btn-falcon-background); + border-color: var(--falcon-btn-falcon-background); + box-shadow: var(--falcon-btn-falcon-box-shadow); +} +.btn-falcon-info:hover, .btn-falcon-info:focus { + color: var(--falcon-btn-falcon-info-hover-color); + background-color: var(--falcon-btn-falcon-background); + border-color: var(--falcon-btn-falcon-background); +} +.btn-falcon-info:hover:not(.disabled):not(:disabled), .btn-falcon-info:focus:not(.disabled):not(:disabled) { + color: var(--falcon-btn-falcon-info-hover-color); + box-shadow: var(--falcon-btn-falcon-hover-box-shadow); +} +.btn-falcon-info:active { + box-shadow: none !important; + color: var(--falcon-btn-falcon-info-active-color); +} +.btn-check:checked + .btn-falcon-info, :not(.btn-check) + .btn-falcon-info:active, .btn-falcon-info:first-child:active, .btn-falcon-info.active { + color: var(--falcon-btn-falcon-info-color); + background-color: var(--falcon-btn-falcon-info-active-background); + border-color: var(--falcon-btn-falcon-background); +} +.btn-falcon-info:disabled, .btn-falcon-info.disabled { + color: var(--falcon-btn-disabled-color); + background-color: var(--falcon-btn-falcon-background); + box-shadow: var(--falcon-btn-falcon-box-shadow) !important; +} + +.btn-falcon-warning, .btn-falcon-warning.show { + color: var(--falcon-btn-falcon-warning-color); + background-color: var(--falcon-btn-falcon-background); + border-color: var(--falcon-btn-falcon-background); + box-shadow: var(--falcon-btn-falcon-box-shadow); +} +.btn-falcon-warning:hover, .btn-falcon-warning:focus { + color: var(--falcon-btn-falcon-warning-hover-color); + background-color: var(--falcon-btn-falcon-background); + border-color: var(--falcon-btn-falcon-background); +} +.btn-falcon-warning:hover:not(.disabled):not(:disabled), .btn-falcon-warning:focus:not(.disabled):not(:disabled) { + color: var(--falcon-btn-falcon-warning-hover-color); + box-shadow: var(--falcon-btn-falcon-hover-box-shadow); +} +.btn-falcon-warning:active { + box-shadow: none !important; + color: var(--falcon-btn-falcon-warning-active-color); +} +.btn-check:checked + .btn-falcon-warning, :not(.btn-check) + .btn-falcon-warning:active, .btn-falcon-warning:first-child:active, .btn-falcon-warning.active { + color: var(--falcon-btn-falcon-warning-color); + background-color: var(--falcon-btn-falcon-warning-active-background); + border-color: var(--falcon-btn-falcon-background); +} +.btn-falcon-warning:disabled, .btn-falcon-warning.disabled { + color: var(--falcon-btn-disabled-color); + background-color: var(--falcon-btn-falcon-background); + box-shadow: var(--falcon-btn-falcon-box-shadow) !important; +} + +.btn-falcon-danger, .btn-falcon-danger.show { + color: var(--falcon-btn-falcon-danger-color); + background-color: var(--falcon-btn-falcon-background); + border-color: var(--falcon-btn-falcon-background); + box-shadow: var(--falcon-btn-falcon-box-shadow); +} +.btn-falcon-danger:hover, .btn-falcon-danger:focus { + color: var(--falcon-btn-falcon-danger-hover-color); + background-color: var(--falcon-btn-falcon-background); + border-color: var(--falcon-btn-falcon-background); +} +.btn-falcon-danger:hover:not(.disabled):not(:disabled), .btn-falcon-danger:focus:not(.disabled):not(:disabled) { + color: var(--falcon-btn-falcon-danger-hover-color); + box-shadow: var(--falcon-btn-falcon-hover-box-shadow); +} +.btn-falcon-danger:active { + box-shadow: none !important; + color: var(--falcon-btn-falcon-danger-active-color); +} +.btn-check:checked + .btn-falcon-danger, :not(.btn-check) + .btn-falcon-danger:active, .btn-falcon-danger:first-child:active, .btn-falcon-danger.active { + color: var(--falcon-btn-falcon-danger-color); + background-color: var(--falcon-btn-falcon-danger-active-background); + border-color: var(--falcon-btn-falcon-background); +} +.btn-falcon-danger:disabled, .btn-falcon-danger.disabled { + color: var(--falcon-btn-disabled-color); + background-color: var(--falcon-btn-falcon-background); + box-shadow: var(--falcon-btn-falcon-box-shadow) !important; +} + +.btn-falcon-default, .btn-falcon-default.show { + color: var(--falcon-btn-falcon-default-color); + background-color: var(--falcon-btn-falcon-background); + border-color: var(--falcon-btn-falcon-background); + box-shadow: var(--falcon-btn-falcon-box-shadow); +} +.btn-falcon-default:hover, .btn-falcon-default:focus { + color: var(--falcon-btn-falcon-default-hover-color); + background-color: var(--falcon-btn-falcon-background); + border-color: var(--falcon-btn-falcon-background); +} +.btn-falcon-default:hover:not(.disabled):not(:disabled), .btn-falcon-default:focus:not(.disabled):not(:disabled) { + color: var(--falcon-btn-falcon-default-hover-color); + box-shadow: var(--falcon-btn-falcon-hover-box-shadow); +} +.btn-falcon-default:active { + box-shadow: none !important; + color: var(--falcon-btn-falcon-default-active-color); +} +.btn-check:checked + .btn-falcon-default, :not(.btn-check) + .btn-falcon-default:active, .btn-falcon-default:first-child:active, .btn-falcon-default.active { + color: var(--falcon-btn-falcon-default-color); + background-color: var(--falcon-btn-falcon-default-active-background); + border-color: var(--falcon-btn-falcon-background); +} +.btn-falcon-default:disabled, .btn-falcon-default.disabled { + color: var(--falcon-btn-disabled-color); + background-color: var(--falcon-btn-falcon-background); + box-shadow: var(--falcon-btn-falcon-box-shadow) !important; +} + +/*----------------------------------------------- +| Brand Outline Buttons +-----------------------------------------------*/ +.btn-outline-facebook { + --falcon-btn-color: #3c5a99; + --falcon-btn-border-color: #3c5a99; + --falcon-btn-hover-color: #fff; + --falcon-btn-hover-bg: #3c5a99; + --falcon-btn-hover-border-color: #3c5a99; + --falcon-btn-focus-shadow-rgb: 60, 90, 153; + --falcon-btn-active-color: #fff; + --falcon-btn-active-bg: #3c5a99; + --falcon-btn-active-border-color: #3c5a99; + --falcon-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --falcon-btn-disabled-color: #3c5a99; + --falcon-btn-disabled-bg: transparent; + --falcon-btn-disabled-border-color: #3c5a99; + --falcon-gradient: none; +} + +.btn-outline-twitter { + --falcon-btn-color: #1da1f2; + --falcon-btn-border-color: #1da1f2; + --falcon-btn-hover-color: #fff; + --falcon-btn-hover-bg: #1da1f2; + --falcon-btn-hover-border-color: #1da1f2; + --falcon-btn-focus-shadow-rgb: 29, 161, 242; + --falcon-btn-active-color: #fff; + --falcon-btn-active-bg: #1da1f2; + --falcon-btn-active-border-color: #1da1f2; + --falcon-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --falcon-btn-disabled-color: #1da1f2; + --falcon-btn-disabled-bg: transparent; + --falcon-btn-disabled-border-color: #1da1f2; + --falcon-gradient: none; +} + +.btn-outline-google-plus { + --falcon-btn-color: #dd4b39; + --falcon-btn-border-color: #dd4b39; + --falcon-btn-hover-color: #fff; + --falcon-btn-hover-bg: #dd4b39; + --falcon-btn-hover-border-color: #dd4b39; + --falcon-btn-focus-shadow-rgb: 221, 75, 57; + --falcon-btn-active-color: #fff; + --falcon-btn-active-bg: #dd4b39; + --falcon-btn-active-border-color: #dd4b39; + --falcon-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --falcon-btn-disabled-color: #dd4b39; + --falcon-btn-disabled-bg: transparent; + --falcon-btn-disabled-border-color: #dd4b39; + --falcon-gradient: none; +} + +/*----------------------------------------------- +| Outline Buttons +-----------------------------------------------*/ +[class*=btn-outline-] { + --falcon-btn-box-shadow: none; +} + +/*----------------------------------------------- +| Profile Page Introduction +-----------------------------------------------*/ +.btn-intro-collapse .less { + display: none; +} +.btn-intro-collapse[aria-expanded=true] .less { + display: inline; +} +.btn-intro-collapse[aria-expanded=true] .full { + display: none; +} + +.btn-close-falcon { + cursor: pointer; + position: relative; + opacity: 0.5; +} +.btn-close-falcon:hover { + opacity: 1; +} +.btn-close-falcon:after, .btn-close-falcon:before { + position: absolute; + left: 12px; + top: 4px; + content: " "; + height: 100%; + width: 2px; + background-color: var(--falcon-gray-700); +} +.btn-close-falcon:after { + transform: rotate(-45deg); +} +.btn-close-falcon:before { + transform: rotate(45deg); +} + +.btn, .tox .tox-menu__footer .tox-button:last-child, +.tox .tox-dialog__footer .tox-button:last-child, .tox .tox-menu__footer .tox-button--secondary, +.tox .tox-dialog__footer .tox-button--secondary { + --falcon-btn-border-width: var(--falcon-border-width); +} + +.btn-link { + --falcon-btn-active-color: var(--falcon-link-hover-color); +} + +.btn:disabled, .tox .tox-menu__footer .tox-button:disabled:last-child, +.tox .tox-dialog__footer .tox-button:disabled:last-child, .tox .tox-menu__footer .tox-button--secondary:disabled, +.tox .tox-dialog__footer .tox-button--secondary:disabled, .btn.disabled, .tox .tox-menu__footer .disabled.tox-button:last-child, +.tox .tox-dialog__footer .disabled.tox-button:last-child, .tox .tox-menu__footer .disabled.tox-button--secondary, +.tox .tox-dialog__footer .disabled.tox-button--secondary { + box-shadow: var(--falcon-btn-box-shadow); +} + +/*----------------------------------------------- +| Documentation link and Prism +-----------------------------------------------*/ +.code-block { + padding: 0; + overflow: auto; +} +.code-block pre[class*=language-] { + padding: 1.6rem; + border: 0; + margin: 0; + border-radius: 0; +} + +:not(pre) > code[class*=language-], +pre[class*=language-] { + background-color: var(--falcon-gray-1000); + border: 1px solid var(--falcon-border-color); + border-radius: 0.25rem; +} + +code.language-html:first-child { + display: block; +} + +code[class*=language-], +pre[class*=language-] { + color: var(--falcon-gray-300) !important; + background-color: #232e3c !important; + font-family: "SFMono-Regular", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !important; +} + +pre[class*=language-] { + margin: 0; +} + +.contains-anchor a { + opacity: 0; + transition-property: opacity; +} +.contains-anchor:hover a, .contains-anchor:focus a { + opacity: 1; + text-decoration: none; +} + +.token.property, +.token.tag, +.token.constant, +.token.symbol, +.token.deleted { + color: var(--falcon-danger); +} + +.token.punctuation { + color: var(--falcon-gray-400); +} + +.components-nav { + font-family: "Poppins", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + font-size: 0.85rem; +} + +/*----------------------------------------------- +| Component examples +-----------------------------------------------*/ +/*----------------------------------------------- +| Borders +-----------------------------------------------*/ +.component-example { + font-family: "Poppins", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; +} +.component-example [class^=border] { + display: inline-flex; + align-items: center; + justify-content: center; + width: 8rem; + height: 8rem; + margin: 0.75rem; + background-color: var(--falcon-gray-100); +} + +/*----------------------------------------------- +| Utilities +-----------------------------------------------*/ +.border-component [class^=border], +.border-component [class^=rounded-] { + display: inline-block; + width: 5rem; + height: 5rem; + margin: 0.25rem; +} +.border-component [class^=border] { + background-color: var(--falcon-gray-200); +} +.border-component [class^=rounded-] { + background-color: var(--falcon-gray-200); +} + +#loaders [class^=spinner] { + margin-right: 0.5rem; +} + +/*----------------------------------------------- +| Hover Box +-----------------------------------------------*/ +.hoverbox { + position: relative; + overflow: hidden; +} +.hoverbox .hoverbox-content { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + opacity: 0; + transition: opacity 0.2s ease-in-out; + margin: 0 !important; + display: flex; +} +.hoverbox .hoverbox-primary-content { + position: absolute; + top: 0; + left: 0; + width: 100%; + min-height: 100%; +} +.hoverbox:hover .hover-box-content-initial, .hoverbox:focus .hover-box-content-initial { + opacity: 0; +} +.hoverbox:hover .hoverbox-content, .hoverbox:focus .hoverbox-content { + opacity: 1; +} +.hoverbox:hover .as-hoverbox-content, .hoverbox:focus .as-hoverbox-content { + z-index: 1; +} + +.hoverbox-content-gradient { + background: linear-gradient(transparent, var(--falcon-black)); +} + +/*----------------------------------------------- +| Object fit and Z-index +-----------------------------------------------*/ +.fit-cover { + object-fit: cover; +} + +/*----------------------------------------------- +| Sidebar +-----------------------------------------------*/ +.sticky-sidebar { + position: sticky; + z-index: 1015; + top: calc(var(--falcon-top-nav-height) + 1rem); +} + +.top-navbar-height { + top: var(--falcon-top-nav-height); +} + +/*----------------------------------------------- +| Custom circle +-----------------------------------------------*/ +.circle-dashed { + border: 1px dashed var(--falcon-primary); + display: flex; + align-items: center; + justify-content: center; + border-radius: 50%; + width: 3.5rem; + height: 3.5rem; +} + +/*----------------------------------------------- +| Miscellaneous +-----------------------------------------------*/ +.hover-text-decoration-none:hover, .hover-text-decoration-none:focus { + text-decoration: none; +} + +.resize-none { + resize: none; +} + +.collapsed .collapse-icon { + transition: all 0.2s ease-in-out; + transform: rotate(0deg); +} + +.collapse-icon { + transition: all 0.2s ease-in-out; + transform: rotate(90deg); +} + +[data-dismiss=dropdown] *, +[data-bs-offset-top] *, +[data-bs-toggle=collapse] *, +[data-bs-toggle=tooltip] *, +[data-bs-toggle=popover] * { + pointer-events: none; +} + +/*----------------------------------------------- +| Outline +-----------------------------------------------*/ +.outline-none { + outline: none; + box-shadow: none; +} +.outline-none:hover, .outline-none:focus { + outline: none; + box-shadow: none; +} + +/*----------------------------------------------- +| Vertical Line (used in kanban header) +-----------------------------------------------*/ +.vertical-line:after { + position: absolute; + content: ""; + height: 75%; + width: 1px; + background: var(--falcon-gray-300); + right: 0; + top: 50%; + transform: translateY(-50%); +} +.vertical-line.vertical-line-400:after { + background-color: var(--falcon-gray-400); +} + +/* -------------------------------------------------------------------------- */ +/* Transition */ +/* -------------------------------------------------------------------------- */ +.transition-base { + transition: all 0.2s ease-in-out; +} + +.transition-none { + transition: none; +} + +.fsp-75 { + font-size: 75%; +} + +/* -------------------------------------------------------------------------- */ +/* Width */ +/* -------------------------------------------------------------------------- */ +.min-w-0 { + min-width: 0; +} + +/* -------------------------------------------------------------------------- */ +/* Terms sidebar */ +/* -------------------------------------------------------------------------- */ +.terms-sidebar .nav-item .nav-link.active { + color: var(--falcon-primary); +} +.terms-sidebar .nav-item .nav-link { + color: var(--falcon-gray-500); + font-weight: 500; + font-family: "Poppins", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; +} + +.divider-content-center { + position: absolute; + top: 50%; + left: 50%; + transform: translateX(-50%) translateY(-50%); + padding-left: 0.5rem; + padding-right: 0.5rem; + background-color: var(--falcon-emphasis-bg); + font-family: "Poppins", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + font-size: 0.8333333333rem; + color: var(--falcon-gray-500); + white-space: nowrap; +} + +.btn-check[data-theme-control]:checked + label { + display: none; +} + +/* -------------------------------------------------------------------------- */ +/* Height */ +/* -------------------------------------------------------------------------- */ +.content { + min-height: 100vh; + position: relative; + padding-bottom: 6.375rem; +} +@media (min-width: 576px) { + .content { + padding-bottom: 3.9875rem; + } +} + +.footer { + position: absolute; + bottom: 0; + width: 100%; +} + +/* -------------------------------------------------------------------------- */ +/* Email */ +/* -------------------------------------------------------------------------- */ +.email-row-actions { + top: 0.3125rem; +} + +.rc-slider { + position: relative; + width: 100%; + height: 14px; + padding: 5px 0; + border-radius: 6px; + touch-action: none; + box-sizing: border-box; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +.rc-slider * { + box-sizing: border-box; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +.rc-slider-rail { + position: absolute; + width: 100%; + height: 4px; + background-color: #e9e9e9; + border-radius: 6px; +} + +.rc-slider-track { + position: absolute; + height: 4px; + background-color: tint(#2db7f5, 60%); + border-radius: 6px; +} + +.rc-slider-handle { + position: absolute; + width: 14px; + height: 14px; + margin-top: -5px; + background-color: #fff; + border: solid 2px tint(#2db7f5, 50%); + border-radius: 50%; + cursor: pointer; + cursor: -webkit-grab; + cursor: grab; + opacity: 0.8; + touch-action: pan-x; +} + +.rc-slider-handle-dragging.rc-slider-handle-dragging.rc-slider-handle-dragging { + border-color: tint(#2db7f5, 20%); + box-shadow: 0 0 0 5px tint(#2db7f5, 50%); +} + +.rc-slider-handle:focus { + outline: none; + box-shadow: none; +} + +.rc-slider-handle:focus-visible { + border-color: #2db7f5; + box-shadow: 0 0 0 3px tint(#2db7f5, 50%); +} + +.rc-slider-handle-click-focused:focus { + border-color: tint(#2db7f5, 50%); + box-shadow: unset; +} + +.rc-slider-handle:hover { + border-color: tint(#2db7f5, 20%); +} + +.rc-slider-handle:active { + border-color: tint(#2db7f5, 20%); + box-shadow: 0 0 5px tint(#2db7f5, 20%); + cursor: -webkit-grabbing; + cursor: grabbing; +} + +.rc-slider-mark { + position: absolute; + top: 18px; + left: 0; + width: 100%; + font-size: 12px; +} + +.rc-slider-mark-text { + position: absolute; + display: inline-block; + color: #999; + text-align: center; + vertical-align: middle; + cursor: pointer; +} + +.rc-slider-mark-text-active { + color: #666; +} + +.rc-slider-step { + position: absolute; + width: 100%; + height: 4px; + background: transparent; + pointer-events: none; +} + +.rc-slider-dot { + position: absolute; + bottom: -2px; + width: 8px; + height: 8px; + vertical-align: middle; + background-color: #fff; + border: 2px solid #e9e9e9; + border-radius: 50%; + cursor: pointer; +} + +.rc-slider-dot-active { + border-color: tint(#2db7f5, 50%); +} + +.rc-slider-dot-reverse { + margin-right: -4px; +} + +.rc-slider-disabled { + background-color: #e9e9e9; +} + +.rc-slider-disabled .rc-slider-track { + background-color: #ccc; +} + +.rc-slider-disabled .rc-slider-handle, +.rc-slider-disabled .rc-slider-dot { + background-color: #fff; + border-color: #ccc; + box-shadow: none; + cursor: not-allowed; +} + +.rc-slider-disabled .rc-slider-mark-text, +.rc-slider-disabled .rc-slider-dot { + cursor: not-allowed !important; +} + +.rc-slider-vertical { + width: 14px; + height: 100%; + padding: 0 5px; +} + +.rc-slider-vertical .rc-slider-rail { + width: 4px; + height: 100%; +} + +.rc-slider-vertical .rc-slider-track { + bottom: 0; + left: 5px; + width: 4px; +} + +.rc-slider-vertical .rc-slider-handle { + margin-top: 0; + margin-left: -5px; + touch-action: pan-y; +} + +.rc-slider-vertical .rc-slider-mark { + top: 0; + left: 18px; + height: 100%; +} + +.rc-slider-vertical .rc-slider-step { + width: 4px; + height: 100%; +} + +.rc-slider-vertical .rc-slider-dot { + margin-left: -2px; +} + +.rc-slider-tooltip-zoom-down-enter, +.rc-slider-tooltip-zoom-down-appear { + display: block !important; + animation-duration: 0.3s; + animation-fill-mode: both; + animation-play-state: paused; +} + +.rc-slider-tooltip-zoom-down-leave { + display: block !important; + animation-duration: 0.3s; + animation-fill-mode: both; + animation-play-state: paused; +} + +.rc-slider-tooltip-zoom-down-enter.rc-slider-tooltip-zoom-down-enter-active, +.rc-slider-tooltip-zoom-down-appear.rc-slider-tooltip-zoom-down-appear-active { + animation-name: rcSliderTooltipZoomDownIn; + animation-play-state: running; +} + +.rc-slider-tooltip-zoom-down-leave.rc-slider-tooltip-zoom-down-leave-active { + animation-name: rcSliderTooltipZoomDownOut; + animation-play-state: running; +} + +.rc-slider-tooltip-zoom-down-enter, +.rc-slider-tooltip-zoom-down-appear { + transform: scale(0, 0); + animation-timing-function: cubic-bezier(0.23, 1, 0.32, 1); +} + +.rc-slider-tooltip-zoom-down-leave { + animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); +} + +@keyframes rcSliderTooltipZoomDownIn { + 0% { + transform: scale(0, 0); + transform-origin: 50% 100%; + opacity: 0; + } + 100% { + transform: scale(1, 1); + transform-origin: 50% 100%; + } +} +@keyframes rcSliderTooltipZoomDownOut { + 0% { + transform: scale(1, 1); + transform-origin: 50% 100%; + } + 100% { + transform: scale(0, 0); + transform-origin: 50% 100%; + opacity: 0; + } +} +.rc-slider-tooltip { + position: absolute; + top: -9999px; + left: -9999px; + visibility: visible; + box-sizing: border-box; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +.rc-slider-tooltip * { + box-sizing: border-box; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +.rc-slider-tooltip-hidden { + display: none; +} + +.rc-slider-tooltip-placement-top { + padding: 4px 0 8px 0; +} + +.rc-slider-tooltip-inner { + min-width: 24px; + height: 24px; + padding: 6px 2px; + color: #fff; + font-size: 12px; + line-height: 1; + text-align: center; + text-decoration: none; + background-color: tint(#666, 4%); + border-radius: 6px; + box-shadow: 0 0 4px #d9d9d9; +} + +.rc-slider-tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.rc-slider-tooltip-placement-top .rc-slider-tooltip-arrow { + bottom: 4px; + left: 50%; + margin-left: -4px; + border-width: 4px 4px 0; + border-top-color: tint(#666, 4%); +} + +canvas.chartjs-responsive { + width: 100% !important; + height: 100% !important; +} + +/* -------------------------------------------------------------------------- */ +/* Loading Ripple */ +/* -------------------------------------------------------------------------- */ +.logo-ripple { + height: 40px; + width: 40px; + position: absolute; + top: 50%; + left: 50%; + overflow: hidden; +} + +.ripple-1 { + animation: ripple1 2s ease-out infinite; +} + +.ripple-2 { + animation: ripple1 2s ease-out infinite; + animation-delay: 0.5s; +} + +.ripple-3 { + animation: ripple1 2s ease-out infinite; + animation-delay: 1s; +} + +.ripple-4 { + animation: ripple1 2s ease-out infinite; + animation-delay: 1.5s; +} + +@keyframes ripple1 { + 0% { + transform: rotate(0) scale(1); + opacity: 0.3; + } + 100% { + transform: rotate(30deg) scale(4); + opacity: 0; + } +} +/* -------------------------------------------------------------------------- */ +/* Dropzone */ +/* -------------------------------------------------------------------------- */ +.dropzone { + position: relative; + background-color: #fff; + border: 0; + background-color: transparent; + border-radius: 0.375rem; +} +.dropzone.dropzone-has-default .dz-message { + border-color: transparent; + transition: all 0.2s ease-in-out; +} +.dropzone.dropzone-has-default .dz-message:hover { + background-color: rgba(0, 0, 0, 0.5); +} +.dropzone .dz-preview { + min-height: auto; +} +.dropzone .dz-remove { + position: absolute; + right: 0.5rem; + top: 0.5rem; + color: #fff; + z-index: 1000; + cursor: pointer; + opacity: 0; + width: 2rem; + height: 2rem; + line-height: 2rem; +} +.dropzone .dz-remove * { + cursor: pointer; +} +.dropzone .dz-message { + position: relative; + padding: 5rem 2rem; + margin: 0; + border: 2px dashed var(--falcon-border-color); + border-radius: 0.375rem; +} +.dropzone.dropzone-single.dz-file-processing .dz-message { + display: none; +} +.dropzone.dropzone-single.dz-file-processing.dz-file-complete .dz-message { + display: block; +} +.dropzone.dropzone-single.dz-file-processing.dz-file-complete .dz-default-image { + opacity: 0; +} +.dropzone.dropzone-single .dz-processing .dz-message-text { + opacity: 0 !important; +} +.dropzone.dropzone-single .dz-progress { + opacity: 1; + transition: opacity 0.4s ease-in; + animation: none !important; + width: 9.375rem !important; + height: 0.5rem !important; + margin: 0 !important; + transform: translateX(-50%) !important; + top: auto !important; + bottom: 1.5rem; +} +.dropzone.dropzone-single.dz-max-files-reached .dz-message { + background-color: rgba(0, 0, 0, 0.5); + color: #fff; + opacity: 0; + transition: all 0.2s ease-in-out; + border-color: transparent; +} +.dropzone.dropzone-single.dz-max-files-reached .dz-remove { + opacity: 1; +} +.dropzone.dropzone-single.dz-max-files-reached:hover .dz-message, .dropzone.dropzone-single.dz-max-files-reached:focus .dz-message { + opacity: 1; +} +.dropzone.dropzone-single .dz-processing .dz-progress { + opacity: 1; +} +.dropzone.dropzone-single .dz-complete .dz-progress { + opacity: 0; +} +.dropzone .dz-preview-single { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + margin: 0; +} +.dropzone .dz-preview-single:hover { + z-index: auto; +} +.dropzone .dz-preview-single .dz-preview-cover { + position: absolute; + height: 100%; + width: 100%; + border: 0 !important; + overflow: hidden; +} +.dropzone .dz-preview-single .dz-preview-img { + width: 100%; + height: 100%; + object-fit: cover; + border-radius: 0.375rem; +} +.dropzone.dropzone-multiple { + border: 0; + background: transparent; +} +.dropzone.dropzone-multiple .dz-message { + padding: 4rem 2rem; + border: 2px dashed var(--falcon-border-color); + border-radius: 0.375rem; +} +.dropzone.dropzone-multiple .btn *, .dropzone.dropzone-multiple .tox .tox-menu__footer .tox-button:last-child *, .tox .tox-menu__footer .dropzone.dropzone-multiple .tox-button:last-child *, +.dropzone.dropzone-multiple .tox .tox-dialog__footer .tox-button:last-child *, +.tox .tox-dialog__footer .dropzone.dropzone-multiple .tox-button:last-child *, .dropzone.dropzone-multiple .tox .tox-menu__footer .tox-button--secondary *, .tox .tox-menu__footer .dropzone.dropzone-multiple .tox-button--secondary *, +.dropzone.dropzone-multiple .tox .tox-dialog__footer .tox-button--secondary *, +.tox .tox-dialog__footer .dropzone.dropzone-multiple .tox-button--secondary * { + cursor: pointer; +} +.dropzone.dropzone-multiple .media:first-child { + margin-top: 1.8rem; +} +.dropzone.dropzone-multiple .dz-image { + border-radius: 0.25rem; + height: 2.5rem; + width: 2.5rem; + object-fit: cover; + margin-right: 1rem; + border: 1px solid var(--falcon-border-color); +} +.dropzone.dropzone-multiple .dz-progress { + opacity: 0; + position: relative !important; + transition: opacity 0.4s ease-in; + animation: none !important; + width: 6.25rem !important; + height: 0.5rem !important; + margin-top: 0; + margin-left: 1rem !important; + transform: none !important; + top: auto !important; + left: auto !important; +} +.dropzone.dropzone-multiple .dz-complete .dz-progress { + transition-delay: 1s; + opacity: 1; +} +.dropzone.dz-drag-hover .dz-message { + border-color: var(--falcon-primary); +} +.dropzone .dz-progress { + background: var(--falcon-gray-200) !important; +} +.dropzone .dz-progress .dz-upload { + background: var(--falcon-primary) !important; +} + +.dropzone-area { + border: 2px dashed var(--falcon-border-color); + border-radius: 0.25rem; + height: 100%; + cursor: pointer; + padding: 1rem; + text-align: center; +} +.dropzone-area.is-invalid { + background-color: unset; +} + +.slick-slider:hover .slick-arrow, .slick-slider:focus .slick-arrow { + opacity: 0.5; +} +.slick-slider .slick-arrow { + position: relative; + cursor: pointer; + border-radius: 50%; + width: 3rem; + height: 3rem; + background-color: var(--falcon-slick-arrow-bg) !important; + transition: opacity 0.4s ease-in-out; + box-shadow: 0.125rem 0.125rem 0.25rem rgba(0, 0, 0, 0.1); + color: var(--falcon-gray-700); + opacity: 0; + z-index: 999; +} +.slick-slider .slick-arrow:before { + display: none; +} +.slick-slider .slick-arrow:hover, .slick-slider .slick-arrow:focus { + opacity: 1; +} +.slick-slider .slick-next, +.slick-slider .slick-prev { + position: absolute; + font-size: 0; + color: transparent; + border: none; +} +.slick-slider .slick-next:after, +.slick-slider .slick-prev:after { + content: ""; + position: absolute; + height: 0.7rem; + width: 0.7rem; + left: 50%; + top: 50%; + background-color: transparent; + border-right: 2px solid var(--falcon-gray-700); + border-top: 2px solid var(--falcon-gray-700); +} +.slick-slider .slick-next:after { + transform: translate3d(-60%, -50%, 0) rotate(45deg); +} +.slick-slider .slick-prev:after { + transform: translate3d(-40%, -50%, 0) rotate(-135deg); +} +.slick-slider.slick-slider-arrow-inner { + position: relative; +} +.slick-slider.slick-slider-arrow-inner .slick-next, +.slick-slider.slick-slider-arrow-inner .slick-prev { + transform: translateY(-50%); + top: 50%; +} +.slick-slider.slick-slider-arrow-inner .slick-next { + right: 1rem; +} +.slick-slider.slick-slider-arrow-inner .slick-prev { + left: 1rem; +} + +.product-slider { + position: relative; +} +@media (min-width: 992px) { + .product-slider { + height: calc(100% - 3.5625rem); + } +} +@media (min-width: 1200px) { + .product-slider { + height: calc(100% - 3.3125rem); + } +} +@media (min-width: 1540px) { + .product-slider { + height: calc(100% - 4.75rem); + } +} +.product-slider .slick-track { + padding: 0 !important; +} + +.product-image-slider.full-height-slider .slick-list .slick-track { + padding: 0 !important; +} + +.full-height-slider .slick-list { + height: 100%; +} +.full-height-slider .slick-list .slick-track { + height: 100%; +} +.full-height-slider .slick-list .slick-track .slick-slide { + height: 100%; +} +.full-height-slider .slick-list .slick-track .slick-slide > div { + height: 100%; +} + +.slick-list { + position: relative; + display: block; + overflow: hidden; + margin: 0; + padding: 0; +} +.slick-list .slick-track { + display: flex; +} +.slick-list .slick-track .slick-slide { + height: auto !important; +} + +.similar-courses-slider .slick-list .slick-track { + gap: 10px; + padding: 20px 0; +} +.similar-courses-slider .slick-list .slick-track .slick-slide { + height: auto !important; +} + +/*----------------------------------------------- +| Lottie +-----------------------------------------------*/ +.lottie { + width: 5rem; + height: 5rem; +} + +.ie .wizard-lottie { + height: 37.5rem; +} + +@media (min-width: 768px) { + .echart-active-users-report-container { + width: calc(100% - 120px); + } +} + +.echart-closed-vs-goal { + min-height: 15rem; +} +@media (min-width: 1540px) { + .echart-closed-vs-goal { + min-height: 14rem !important; + } +} + +@media (min-width: 768px) { + .echart-unresolved-tickets-container { + width: calc(100% - 7.1rem); + } +} + +.sort { + white-space: nowrap; + cursor: pointer; +} +.sort::after { + content: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNyIgaGVpZ2h0PSI5IiB2aWV3Qm94PSIwIDAgNyA5IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBkPSJNNi41MjU1NiAzLjVDNi45NDkzNyAzLjUgNy4xNjEyOCAzLjA2MjUgNi44NTUxOSAyLjc5MTY3TDMuODQxNCAwLjEyNUMzLjY1MzA0IC0wLjA0MTY2NjcgMy4zNDY5NiAtMC4wNDE2NjY3IDMuMTU4NTkgMC4xMjVMMC4xNDQ4MDkgMi43OTE2N0MtMC4xNjEyNzkgMy4wNjI1IDAuMDUwNjI3OSAzLjUgMC40NzQ0NDEgMy41SDYuNTI1NTZaIiBmaWxsPSIjQjZDMkQyIi8+CjxwYXRoIGQ9Ik0wLjQ3NDQ0MiA1LjVDMC4wNTA2MjgyIDUuNSAtMC4xNjEyNzkgNS45Mzc1IDAuMTQ0ODA5IDYuMjA4MzNMMy4xNTg1OSA4Ljg3NUMzLjM0Njk2IDkuMDQxNjcgMy42NTMwNCA5LjA0MTY3IDMuODQxNDEgOC44NzVMNi44NTUxOSA2LjIwODMzQzcuMTYxMjggNS45Mzc1IDYuOTQ5MzcgNS41IDYuNTI1NTYgNS41TDAuNDc0NDQyIDUuNVoiIGZpbGw9IiNCNkMyRDIiLz4KPC9zdmc+Cg=="); + margin-left: 0.25rem; +} + +.sort.desc::after { + content: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNyIgaGVpZ2h0PSI0IiB2aWV3Qm94PSIwIDAgNyA0IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBkPSJNMC40NzQ0NDIgMC41MDAwMDFDMC4wNTA2MjgyIDAuNTAwMDAxIC0wLjE2MTI3OSAwLjkzNzUgMC4xNDQ4MDkgMS4yMDgzM0wzLjE1ODU5IDMuODc1QzMuMzQ2OTYgNC4wNDE2NyAzLjY1MzA0IDQuMDQxNjcgMy44NDE0MSAzLjg3NUw2Ljg1NTE5IDEuMjA4MzNDNy4xNjEyOCAwLjkzNzUwMSA2Ljk0OTM3IDAuNTAwMDAxIDYuNTI1NTYgMC41MDAwMDFMMC40NzQ0NDIgMC41MDAwMDFaIiBmaWxsPSIjQjZDMkQyIi8+Cjwvc3ZnPgo=") !important; + margin-top: -1px !important; +} + +.sort.asc::after { + content: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNyIgaGVpZ2h0PSI0IiB2aWV3Qm94PSIwIDAgNyA0IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBkPSJNNi41MjU1NiAzLjVDNi45NDkzNyAzLjUgNy4xNjEyOCAzLjA2MjUgNi44NTUxOSAyLjc5MTY3TDMuODQxNCAwLjEyNUMzLjY1MzA0IC0wLjA0MTY2NjcgMy4zNDY5NiAtMC4wNDE2NjY3IDMuMTU4NTkgMC4xMjVMMC4xNDQ4MDkgMi43OTE2N0MtMC4xNjEyNzkgMy4wNjI1IDAuMDUwNjI3OSAzLjUgMC40NzQ0NDEgMy41SDYuNTI1NTZaIiBmaWxsPSIjQjZDMkQyIi8+Cjwvc3ZnPgo=") !important; + margin-top: -1px !important; +} + +.pagination li.active .page { + color: var(--falcon-primary) !important; +} + +.simplebar-content-wrapper::-webkit-scrollbar { + display: none; +} + +.react-player { + border-radius: 0.375rem; + overflow: hidden; + width: 100% !important; + aspect-ratio: 16/9; +} + +.app-calendar .fc { + height: calc(100vh - 12.4rem) !important; +} + +.fc .fc-button .fc-icon { + line-height: 1rem; + font-size: 1.2em; +} +.fc .fc-toolbar { + flex-wrap: wrap; + gap: 0.5rem; +} +.fc .fc-scrollgrid, .fc.fc-theme-standard .fc-scrollgrid { + border-color: var(--falcon-gray-200); +} +.fc.fc-theme-standard a:not([href]) { + color: inherit; +} +.fc.fc-theme-standard .fc-list, +.fc.fc-theme-standard td, +.fc.fc-theme-standard th { + border-color: var(--falcon-gray-200); +} +.fc .fc-col-header { + background-color: var(--falcon-gray-100); +} +.fc .fc-col-header th { + border-bottom-width: 1px; +} +.fc .fc-col-header-cell-cushion { + text-decoration: none !important; +} +.fc .fc-daygrid-day-frame { + border: 2px solid transparent; + padding: 2px !important; + transition: all 0.2s ease-in-out; +} +.fc .fc-daygrid-day-frame:active { + background-color: rgba(var(--falcon-primary-rgb), 0.1) !important; +} +.fc .fc-daygrid-day-top { + justify-content: center; + margin-bottom: 0.25rem; +} +.fc .fc-daygrid-day-number { + width: 1.875rem; + height: 1.875rem; + background-color: var(--falcon-gray-100); + text-align: center; + text-decoration: none !important; + border-radius: 50%; + line-height: 1.875rem; + padding: 0 !important; + font-size: 0.8333333333rem; + transition: all 0.2s ease-in-out; +} +.fc .fc-daygrid-day-number:hover, .fc .fc-daygrid-day-number:focus { + background-color: var(--falcon-gray-200); +} +.fc .fc-daygrid-bg-harness { + top: -2px; +} +.fc .fc-daygrid-event { + border-radius: 0.25rem !important; + margin-top: 0; + margin-bottom: 0.25rem !important; + padding: 0.25rem 0.5rem !important; + border: 0 !important; + font-size: 0.6944444444rem; +} +.fc .fc-h-event { + background-color: rgb(230, 239, 252); +} +.fc .fc-h-event .fc-event-main { + color: #1862c6; +} +.fc .fc-h-event .fc-event-time, +.fc .fc-h-event .fc-event-title { + font-weight: 600 !important; +} +.fc .fc-event-title { + font-weight: normal !important; +} +.fc .fc-daygrid-event-dot { + border-color: var(--falcon-gray-400) !important; +} +.fc .fc-day-today:not(.fc-popover) { + background-color: transparent !important; +} +.fc .fc-day-today:not(.fc-popover) .fc-daygrid-day-frame { + border: 2px solid rgba(var(--falcon-primary-rgb), 0.5); +} +.fc .fc-day-today:not(.fc-popover) .fc-daygrid-day-number { + background-color: var(--falcon-primary) !important; + color: #fff; +} +.fc .fc-day-today:not(.fc-popover) .fc-daygrid-day-number:hover, .fc .fc-day-today:not(.fc-popover) .fc-daygrid-day-number:focus { + background-color: #1862c6 !important; +} +.fc.fc-direction-rtl .fc-daygrid-event.fc-event-start, .fc.fc-direction-rtl .fc-daygrid-event.fc-event-end, .fc.fc-direction-ltr .fc-daygrid-event.fc-event-start, .fc.fc-direction-ltr .fc-daygrid-event.fc-event-end { + margin-left: 0; + margin-right: 0; +} +.fc .fc-popover { + border-color: var(--falcon-border-color); + box-shadow: 0 7px 14px 0 rgba(65, 69, 88, 0.1), 0 3px 6px 0 rgba(0, 0, 0, 0.07); + border-radius: var(--falcon-border-radius-lg); + z-index: 1050; +} +.fc .fc-popover .fc-popover-title { + font-family: "Poppins", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; +} +.fc .fc-popover .fc-daygrid-event { + margin-left: 0 !important; + margin-right: 0 !important; + margin-bottom: 2px !important; +} +.fc .fc-popover-header { + padding-left: 0.625rem; + padding-right: 0.625rem; + font-size: 0.875rem; + font-weight: 600; + background: var(--falcon-popover-header-bg); + border-top-left-radius: calc(var(--falcon-border-radius-lg) - var(--falcon-border-width)); + border-top-right-radius: calc(var(--falcon-border-radius-lg) - var(--falcon-border-width)); +} +.fc .fc-daygrid-more-link { + display: block; + text-align: center; + color: var(--falcon-gray-500) !important; + font-size: 0.6944444444rem; +} +.fc .fc-daygrid-more-link:hover, .fc .fc-daygrid-more-link:focus { + text-decoration: none; + color: var(--falcon-gray-600) !important; + background-color: unset !important; +} +.fc .fc-daygrid-dot-event { + color: var(--falcon-gray-500) !important; +} +.fc .fc-daygrid-dot-event:hover, .fc .fc-daygrid-dot-event:focus { + background-color: var(--falcon-gray-200) !important; +} +.fc .fc-day:not(.fc-popover) .fc-daygrid-dot-event { + display: flex; + justify-content: center; +} +.fc .fc-day:not(.fc-popover) .fc-daygrid-dot-event .fc-event-time, +.fc .fc-day:not(.fc-popover) .fc-daygrid-dot-event .fc-event-title { + display: none; +} +.fc .fc-list-event:hover td { + background-color: unset; +} +.fc .fc-dayGridMonth-view .fc-event-time { + display: none; +} +.fc .fc-timeGridDay-view .fc-scrollgrid-sync-inner { + text-align: left; +} +.fc .fc-timeGridDay-view .fc-daygrid-day-events, +.fc .fc-timeGridWeek-view .fc-daygrid-day-events { + margin-bottom: 0; +} +.fc .fc-timeGridDay-view .fc-v-event .fc-event-main, +.fc .fc-timeGridWeek-view .fc-v-event .fc-event-main { + padding-left: 1rem; + color: var(--falcon-gray-500); +} +.fc .fc-timeGridDay-view .fc-v-event .fc-event-main:after, +.fc .fc-timeGridWeek-view .fc-v-event .fc-event-main:after { + content: ""; + position: absolute; + height: 0.625rem; + width: 0.625rem; + border-radius: 50%; + background-color: var(--falcon-gray-400); + top: 0.3125rem; + left: 0; +} +.fc .fc-timeGridDay-view .fc-timegrid-event, +.fc .fc-timeGridWeek-view .fc-timegrid-event { + padding: 0.5rem; + background-color: var(--falcon-gray-200); + border: 0; + border-radius: 0.375rem; +} +.fc .fc-timeGridDay-view .fc-timegrid-event:hover, .fc .fc-timeGridDay-view .fc-timegrid-event:focus, +.fc .fc-timeGridWeek-view .fc-timegrid-event:hover, +.fc .fc-timeGridWeek-view .fc-timegrid-event:focus { + background-color: var(--falcon-gray-300); +} +.fc .fc-timeGridDay-view .fc-timegrid-slot, +.fc .fc-timeGridWeek-view .fc-timegrid-slot { + height: 2rem; +} +.fc .fc-timeGridDay-view .fc-timegrid-slot-lane, +.fc .fc-timeGridWeek-view .fc-timegrid-slot-lane { + cursor: pointer; +} +.fc .fc-timeGridDay-view .fc-timegrid-slot-lane:active, +.fc .fc-timeGridWeek-view .fc-timegrid-slot-lane:active { + background-color: var(--falcon-gray-100); +} +.fc .fc-timeGridDay-view .fc-timegrid-col, +.fc .fc-timeGridWeek-view .fc-timegrid-col { + padding: 0 !important; +} +.fc .fc-list .fc-list-day-cushion { + padding: 0.5rem 1.25rem; + background-color: var(--fc-button-list-day-cushion); +} +.fc .fc-list .fc-list-day:not(:first-child) .fc-list-day-cushion { + margin-top: 1.8rem; +} +.fc .fc-list .fc-list-event-time { + padding-left: 1.25rem; +} +.fc .fc-list .fc-list-event-title { + padding-right: 1.25rem; +} +.fc .fc-list-empty { + background-color: var(--falcon-gray-100); +} +.fc .fc-list-event-dot { + border-color: var(--falcon-gray-300); +} + +.fc-timegrid .event-bg-primary-subtle { + border: 0 !important; +} +.fc-timegrid .event-bg-primary-subtle .fc-event-main:after { + background-color: #2c7be5 !important; +} + +.bg-primary-subtle .fc-event-main, .fc-timegrid .event-bg-primary-subtle .fc-event-main { + color: #1862c6 !important; +} +.bg-primary-subtle .fc-event-main:after, .fc-timegrid .event-bg-primary-subtle .fc-event-main:after { + background-color: #1862c6 !important; +} +.bg-primary-subtle .fc-list-event-time, .fc-timegrid .event-bg-primary-subtle .fc-list-event-time, +.bg-primary-subtle .fc-list-event-title, +.fc-timegrid .event-bg-primary-subtle .fc-list-event-title { + color: #1862c6 !important; + font-weight: 600 !important; +} +.bg-primary-subtle .fc-list-event-dot, .fc-timegrid .event-bg-primary-subtle .fc-list-event-dot { + border-color: #1862c6; +} + +.fc-timegrid .event-bg-secondary-subtle { + border: 0 !important; +} +.fc-timegrid .event-bg-secondary-subtle .fc-event-main:after { + background-color: #748194 !important; +} + +.bg-secondary-subtle .fc-event-main, .fc-timegrid .event-bg-secondary-subtle .fc-event-main { + color: #5d6878 !important; +} +.bg-secondary-subtle .fc-event-main:after, .fc-timegrid .event-bg-secondary-subtle .fc-event-main:after { + background-color: #5d6878 !important; +} +.bg-secondary-subtle .fc-list-event-time, .fc-timegrid .event-bg-secondary-subtle .fc-list-event-time, +.bg-secondary-subtle .fc-list-event-title, +.fc-timegrid .event-bg-secondary-subtle .fc-list-event-title { + color: #5d6878 !important; + font-weight: 600 !important; +} +.bg-secondary-subtle .fc-list-event-dot, .fc-timegrid .event-bg-secondary-subtle .fc-list-event-dot { + border-color: #5d6878; +} + +.fc-timegrid .event-bg-success-subtle { + border: 0 !important; +} +.fc-timegrid .event-bg-success-subtle .fc-event-main:after { + background-color: #00d27a !important; +} + +.bg-success-subtle .fc-event-main, .fc-timegrid .event-bg-success-subtle .fc-event-main { + color: #009f5c !important; +} +.bg-success-subtle .fc-event-main:after, .fc-timegrid .event-bg-success-subtle .fc-event-main:after { + background-color: #009f5c !important; +} +.bg-success-subtle .fc-list-event-time, .fc-timegrid .event-bg-success-subtle .fc-list-event-time, +.bg-success-subtle .fc-list-event-title, +.fc-timegrid .event-bg-success-subtle .fc-list-event-title { + color: #009f5c !important; + font-weight: 600 !important; +} +.bg-success-subtle .fc-list-event-dot, .fc-timegrid .event-bg-success-subtle .fc-list-event-dot { + border-color: #009f5c; +} + +.fc-timegrid .event-bg-info-subtle { + border: 0 !important; +} +.fc-timegrid .event-bg-info-subtle .fc-event-main:after { + background-color: #27bcfd !important; +} + +.bg-info-subtle .fc-event-main, .fc-timegrid .event-bg-info-subtle .fc-event-main { + color: #02a7ef !important; +} +.bg-info-subtle .fc-event-main:after, .fc-timegrid .event-bg-info-subtle .fc-event-main:after { + background-color: #02a7ef !important; +} +.bg-info-subtle .fc-list-event-time, .fc-timegrid .event-bg-info-subtle .fc-list-event-time, +.bg-info-subtle .fc-list-event-title, +.fc-timegrid .event-bg-info-subtle .fc-list-event-title { + color: #02a7ef !important; + font-weight: 600 !important; +} +.bg-info-subtle .fc-list-event-dot, .fc-timegrid .event-bg-info-subtle .fc-list-event-dot { + border-color: #02a7ef; +} + +.fc-timegrid .event-bg-warning-subtle { + border: 0 !important; +} +.fc-timegrid .event-bg-warning-subtle .fc-event-main:after { + background-color: #f5803e !important; +} + +.bg-warning-subtle .fc-event-main, .fc-timegrid .event-bg-warning-subtle .fc-event-main { + color: #f2600e !important; +} +.bg-warning-subtle .fc-event-main:after, .fc-timegrid .event-bg-warning-subtle .fc-event-main:after { + background-color: #f2600e !important; +} +.bg-warning-subtle .fc-list-event-time, .fc-timegrid .event-bg-warning-subtle .fc-list-event-time, +.bg-warning-subtle .fc-list-event-title, +.fc-timegrid .event-bg-warning-subtle .fc-list-event-title { + color: #f2600e !important; + font-weight: 600 !important; +} +.bg-warning-subtle .fc-list-event-dot, .fc-timegrid .event-bg-warning-subtle .fc-list-event-dot { + border-color: #f2600e; +} + +.fc-timegrid .event-bg-danger-subtle { + border: 0 !important; +} +.fc-timegrid .event-bg-danger-subtle .fc-event-main:after { + background-color: #e63757 !important; +} + +.bg-danger-subtle .fc-event-main, .fc-timegrid .event-bg-danger-subtle .fc-event-main { + color: #d01a3b !important; +} +.bg-danger-subtle .fc-event-main:after, .fc-timegrid .event-bg-danger-subtle .fc-event-main:after { + background-color: #d01a3b !important; +} +.bg-danger-subtle .fc-list-event-time, .fc-timegrid .event-bg-danger-subtle .fc-list-event-time, +.bg-danger-subtle .fc-list-event-title, +.fc-timegrid .event-bg-danger-subtle .fc-list-event-title { + color: #d01a3b !important; + font-weight: 600 !important; +} +.bg-danger-subtle .fc-list-event-dot, .fc-timegrid .event-bg-danger-subtle .fc-list-event-dot { + border-color: #d01a3b; +} + +.fc-timegrid .event-bg-light-subtle { + border: 0 !important; +} +.fc-timegrid .event-bg-light-subtle .fc-event-main:after { + background-color: #f9fafd !important; +} + +.bg-light-subtle .fc-event-main, .fc-timegrid .event-bg-light-subtle .fc-event-main { + color: #d3daf0 !important; +} +.bg-light-subtle .fc-event-main:after, .fc-timegrid .event-bg-light-subtle .fc-event-main:after { + background-color: #d3daf0 !important; +} +.bg-light-subtle .fc-list-event-time, .fc-timegrid .event-bg-light-subtle .fc-list-event-time, +.bg-light-subtle .fc-list-event-title, +.fc-timegrid .event-bg-light-subtle .fc-list-event-title { + color: #d3daf0 !important; + font-weight: 600 !important; +} +.bg-light-subtle .fc-list-event-dot, .fc-timegrid .event-bg-light-subtle .fc-list-event-dot { + border-color: #d3daf0; +} + +.fc-timegrid .event-bg-dark-subtle { + border: 0 !important; +} +.fc-timegrid .event-bg-dark-subtle .fc-event-main:after { + background-color: #0b1727 !important; +} + +.bg-dark-subtle .fc-event-main, .fc-timegrid .event-bg-dark-subtle .fc-event-main { + color: black !important; +} +.bg-dark-subtle .fc-event-main:after, .fc-timegrid .event-bg-dark-subtle .fc-event-main:after { + background-color: black !important; +} +.bg-dark-subtle .fc-list-event-time, .fc-timegrid .event-bg-dark-subtle .fc-list-event-time, +.bg-dark-subtle .fc-list-event-title, +.fc-timegrid .event-bg-dark-subtle .fc-list-event-title { + color: black !important; + font-weight: 600 !important; +} +.bg-dark-subtle .fc-list-event-dot, .fc-timegrid .event-bg-dark-subtle .fc-list-event-dot { + border-color: black; +} + +[data-fc-view]:not(.active) .icon-check { + opacity: 0; +} + +.timeline:before, .timeline:after { + content: none !important; +} +.timeline li { + position: relative; + padding-left: 1.5rem; +} +.timeline li:after { + position: absolute; + content: ""; + height: 0.625rem; + width: 0.625rem; + border-radius: 50%; + background: var(--falcon-gray-200); + left: 0; + top: 50%; + transform: translateY(-50%); +} +.timeline li:not(:last-child):before { + position: absolute; + content: ""; + height: 100%; + width: 1px; + background-color: var(--falcon-gray-200); + top: 50%; + left: 0.3125rem; +} + +.windows.chrome .fc-scroller { + overflow: hidden auto !important; + overflow: auto; +} +.windows.chrome .fc-scroller::-webkit-scrollbar { + visibility: hidden; + -webkit-appearance: none; + width: 6px; + height: 6px; + background-color: transparent; +} +.windows.chrome .fc-scroller::-webkit-scrollbar-thumb { + visibility: hidden; + border-radius: 3px; + background-color: var(--falcon-scrollbar-bg); +} +.windows.chrome .fc-scroller:hover::-webkit-scrollbar, .windows.chrome .fc-scroller:hover::-webkit-scrollbar-thumb, .windows.chrome .fc-scroller:focus::-webkit-scrollbar, .windows.chrome .fc-scroller:focus::-webkit-scrollbar-thumb { + visibility: visible; +} +.windows.firefox .fc-scroller { + overflow: hidden auto !important; + overflow: auto !important; + scrollbar-color: var(--falcon-scrollbar-bg) transparent; + scrollbar-width: thin; +} + +@media (min-width: 768px) { + .fc .fc-daygrid-day-frame { + padding: 0.375rem !important; + } + .fc .fc-day:not(.fc-popover) .fc-daygrid-dot-event .fc-event-time, + .fc .fc-day:not(.fc-popover) .fc-daygrid-dot-event .fc-event-title { + display: block; + } + .fc .fc-daygrid-more-link { + margin-left: 0.625rem; + text-align: left; + font-size: 0.8333333333rem; + } + .fc .fc-daygrid-event { + font-size: 0.8333333333rem; + } +} +.ie .fc-daygrid-event { + overflow: hidden; +} + +.safari .fc-dayGridMonth-view .fc-daygrid-day { + position: relative; +} +.safari .fc-dayGridMonth-view .fc-daygrid-day .fc-daygrid-day-frame { + position: absolute; + left: 0; + top: 0; + right: 0; + bottom: 0; +} + +.fc .fc-timegrid-axis-frame, +.fc-list-event-time { + text-transform: capitalize; +} + +.fc-timegrid-event-harness-inset .fc-timegrid-event, +.fc-timegrid-event.fc-event-mirror, +.fc-timegrid-more-link { + box-shadow: none; +} + +/*----------------------------------------------- +| Management Calendar Events +-----------------------------------------------*/ +.management-calendar .management-calendar-events { + height: 20rem; +} +.management-calendar .calendar-outline .fc-event-title { + display: none; +} +.management-calendar .calendar-outline .fc-daygrid-day-events { + display: none; +} +.management-calendar .calendar-outline td, +.management-calendar .calendar-outline th { + border-color: transparent !important; +} +.management-calendar .calendar-outline .fc-day-today .fc-daygrid-day-frame { + border-color: transparent !important; +} +.management-calendar .calendar-outline .fc-bg-event { + border-radius: 30px; +} +.management-calendar .calendar-outline .fc-scrollgrid { + border: 0 !important; +} +.management-calendar .calendar-outline .fc-daygrid-bg-harness { + height: 38px; + top: -2px; +} +@media (min-width: 768px) { + .management-calendar .calendar-outline .fc-daygrid-bg-harness { + height: 40px; + top: 1px; + } + .firefox .management-calendar .calendar-outline .fc-daygrid-bg-harness { + top: 2px; + } +} +.management-calendar .calendar-outline .fc-col-header-cell-cushion { + display: inline-block; + padding: 10px 4px; +} +.management-calendar .calendar-outline .fc-daygrid-day-number { + background-color: transparent; + font-weight: 600; +} + +.react-datepicker { + border: 1px solid var(--falcon-gray-300) !important; + background-color: transparent; + font-family: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; +} +.react-datepicker.react-datepicker__predefined-ranges { + overflow: hidden; + display: flex; + width: auto; + background-color: var(--falcon-react-datepicker-bg); +} +.react-datepicker.react-datepicker__predefined-ranges .react-datepicker__navigation--previous { + left: calc(7rem + 2px); +} +.react-datepicker.react-datepicker__predefined-ranges .react-datepicker__ranges { + width: 7rem; + border-right: 1px solid var(--falcon-gray-300); + border-radius: 0; +} +.react-datepicker.react-datepicker__predefined-ranges .react-datepicker__ranges > * { + background-color: var(--falcon-react-datepicker-bg); + border-bottom: 1px solid var(--falcon-gray-300); +} +.react-datepicker.react-datepicker__predefined-ranges .react-datepicker__ranges > *:hover { + background-color: var(--falcon-body-bg); +} +.react-datepicker-wrapper { + width: 100%; +} +.react-datepicker-popper { + z-index: 99999 !important; + background-color: var(--falcon-react-datepicker-bg); +} +.react-datepicker-popper[data-placement$=-start] .react-datepicker__triangle { + left: 40px !important; +} +.react-datepicker-popper[data-placement$=-end] .react-datepicker__triangle { + left: unset !important; + right: 40px !important; +} +.react-datepicker-popper .react-datepicker__triangle { + fill: var(--falcon-react-datepicker-bg) !important; + color: var(--falcon-react-datepicker-bg) !important; + stroke: var(--falcon-gray-300) !important; +} +.react-datepicker .react-datepicker__navigation { + top: 8px; +} +.react-datepicker .react-datepicker__header { + background-color: var(--falcon-react-datepicker-bg) !important; + border: 0; + color: var(--falcon-body-color); + font-weight: 400; +} +.react-datepicker .react-datepicker__month-container + .react-datepicker__time-container { + border-left: 1px solid var(--falcon-gray-300) !important; + width: 86px; +} +[dir=rtl] .react-datepicker .react-datepicker__month-container + .react-datepicker__time-container { + border-left: 0 !important; + border-right: 1px solid var(--falcon-gray-300) !important; +} +.react-datepicker .react-datepicker__time-list { + background-color: var(--falcon-react-datepicker-bg) !important; + color: var(--falcon-gray-500); + overflow: auto; + overflow: auto !important; + scrollbar-color: var(--falcon-scrollbar-bg) transparent; + scrollbar-width: thin; +} +.react-datepicker .react-datepicker__time-list::-webkit-scrollbar { + visibility: hidden; + -webkit-appearance: none; + width: 6px; + height: 6px; + background-color: transparent; +} +.react-datepicker .react-datepicker__time-list::-webkit-scrollbar-thumb { + visibility: hidden; + border-radius: 3px; + background-color: var(--falcon-scrollbar-bg); +} +.react-datepicker .react-datepicker__time-list:hover::-webkit-scrollbar, .react-datepicker .react-datepicker__time-list:hover::-webkit-scrollbar-thumb, .react-datepicker .react-datepicker__time-list:focus::-webkit-scrollbar, .react-datepicker .react-datepicker__time-list:focus::-webkit-scrollbar-thumb { + visibility: visible; +} +.react-datepicker .react-datepicker__time-list-item:hover:not(.react-datepicker .react-datepicker__time-list-item:hover--selected) { + background-color: var(--falcon-gray-200) !important; +} +.react-datepicker .react-datepicker__time-list-item--selected { + background-color: var(--falcon-primary) !important; +} +.react-datepicker .react-datepicker-time__header { + color: var(--falcon-gray-1100) !important; + font-weight: 400; +} +.react-datepicker .react-datepicker__month { + margin: 0; + padding: 0.25rem; + border-radius: 0.3rem; +} +@media (max-width: 575.98px) { + .react-datepicker .react-datepicker__month { + padding: 0; + } +} +.react-datepicker .react-datepicker__month-text { + color: var(--falcon-gray-500); +} +.react-datepicker .react-datepicker__month-text--keyboard-selected { + color: #fff; + background-color: var(--falcon-primary); +} +.react-datepicker .react-datepicker__month-text:hover { + background-color: var(--falcon-gray-200) !important; +} +.react-datepicker .react-datepicker__current-month { + color: var(--falcon-body-color); + font-weight: 400; +} +.react-datepicker .react-datepicker__day { + color: var(--falcon-gray-500) !important; +} +@media (min-width: 576px) { + .react-datepicker .react-datepicker__day { + width: 2.2rem; + } +} +.react-datepicker .react-datepicker__day--in-range:not(.react-datepicker__day--range-start, +.react-datepicker__day--range-end), .react-datepicker .react-datepicker__day--in-selecting-range:not(.react-datepicker__day--range-start, +.react-datepicker__day--range-end) { + color: var(--falcon-gray-500); + background-color: var(--falcon-gray-200); +} +.react-datepicker .react-datepicker__day--keyboard-selected { + background-color: transparent; +} +.react-datepicker .react-datepicker__day--today { + background-color: var(--falcon-gray-200); + border-radius: 0.3rem; +} +.react-datepicker .react-datepicker__day-name { + color: var(--falcon-body-color) !important; + font-weight: 700; +} +@media (min-width: 576px) { + .react-datepicker .react-datepicker__day-name { + width: 2.2rem; + } +} +.react-datepicker .react-datepicker__day-names { + margin-bottom: 0; +} +.react-datepicker .react-datepicker__day--outside-month { + color: var(--falcon-gray-300) !important; + font-weight: 300; +} +.react-datepicker .react-datepicker__day--selected, .react-datepicker .react-datepicker__day--selecting-range-start { + background-color: var(--falcon-primary) !important; + color: #fff !important; +} +.react-datepicker .react-datepicker__day--range-start { + background-color: var(--falcon-primary); + color: #fff !important; +} +.react-datepicker .react-datepicker__day--range-end { + background-color: var(--falcon-primary); + color: #fff !important; +} +.react-datepicker .react-datepicker__day:hover:not(.react-datepicker__day--selected, +.react-datepicker__day--range-start, +.react-datepicker__day--range-end) { + background-color: var(--falcon-gray-200) !important; +} +.react-datepicker .react-datepicker__month { + background-color: var(--falcon-react-datepicker-bg) !important; +} +.react-datepicker .react-datepicker__day--disabled { + cursor: not-allowed !important; + opacity: 0.4 !important; +} +.react-datepicker li.react-datepicker__time-list-item:hover:not(.react-datepicker__time-list-item--selected) { + background-color: var(--falcon-gray-200) !important; +} + +.is-invalid .react-select__control { + border: 1px solid var(--falcon-danger) !important; + padding-right: calc(1.5em + 0.625rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23e63757'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23e63757' stroke='none'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: right calc(0.375em + 0.15625rem) center; + background-size: calc(0.75em + 0.3125rem) calc(0.75em + 0.3125rem); +} +.is-invalid .react-select__control.react-select__control--is-focused { + border-color: var(--falcon-danger) !important; + box-shadow: 0 0 0 0.25rem rgba(230, 55, 87, 0.25) !important; +} + +.react-select__control { + color: var(--falcon-gray-900); + min-height: unset !important; + padding-left: 1rem; + background-color: var(--falcon-quaternary-bg) !important; + border: var(--falcon-border-width) solid var(--falcon-gray-300) !important; + box-shadow: var(--falcon-box-shadow-inset); +} +.react-select__control.react-select__control--is-focused { + border-color: var(--falcon-input-focus-border-color-global) !important; + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(44, 123, 229, 0.25) !important; +} +.react-select__control .react-select__value-container { + padding: 0; +} +.react-select__control .react-select__placeholder { + color: var(--falcon-input-placeholder-color-global); + margin: 0; +} +.react-select__control:hover, .react-select__control:focus { + outline: none !important; +} +.react-select__control .react-select__input-container { + margin: 0; +} +.react-select__control .react-select__value-container.react-select__value-container--has-value { + padding-top: 4px; + padding-bottom: 4px; +} +.react-select__control .react-select__input-container { + color: var(--falcon-gray-900) !important; +} +.react-select__control .react-select__multi-value { + border-radius: 0.25rem; + background-color: var(--falcon-gray-200) !important; +} +.react-select__control .react-select__multi-value .react-select__multi-value__remove { + border-radius: 0 2px 2px 0 !important; +} +.react-select__control .react-select__multi-value .react-select__multi-value__remove:hover { + background-color: unset !important; + color: var(--falcon-gray-900) !important; +} +.react-select__control .react-select__multi-value__label { + color: var(--falcon-body-color) !important; + font-size: 12px; +} +.react-select__control .react-select__single-value { + color: var(--falcon-body-color) !important; +} + +.react-select__menu { + background-color: var(--falcon-quaternary-bg) !important; + z-index: 1055 !important; +} +.react-select__menu .react-select__option { + padding-left: 1.25rem; + padding-right: 1.25rem; + color: var(--falcon-gray-900) !important; + margin-bottom: 5px; +} + +.react-select__indicator-separator { + display: none; +} + +.react-select__indicator.react-select__dropdown-indicator svg { + color: var(--falcon-input-placeholder-color-global) !important; +} + +.react-select__option--is-focused { + background-color: var(--falcon-primary-bg-subtle) !important; +} + +.react-select__option--is-selected { + background-color: var(--falcon-primary) !important; + color: var(--falcon-black) !important; +} + +/*----------------------------------------------- +| Tinymce +-----------------------------------------------*/ +.is-invalid .tox.tox-tinymce { + border: 1px solid var(--falcon-danger) !important; + position: relative; +} +.is-invalid .tox.tox-tinymce::after { + content: ""; + position: absolute; + right: calc(0.375em + 0.15625rem); + top: 50%; + transform: translateY(-50%); + width: calc(0.75em + 0.3125rem); + height: calc(0.75em + 0.3125rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23e63757'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23e63757' stroke='none'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: center center; + background-size: calc(0.75em + 0.3125rem) calc(0.75em + 0.3125rem); +} + +.tox-editor-container .tox-toolbar { + border: 0 !important; +} + +.tinymce-mobile-toolbar, +.tox-edit-area, +.tox-tinymce { + border-color: var(--falcon-gray-200) !important; + border-radius: 0 !important; +} + +.tox-tbtn:not([disabled=disabled]) { + color: var(--falcon-body-color) !important; +} + +.tox .tox-tbtn--enabled, +.tox .tox-tbtn:active, +.tox .tox-tbtn:hover, +.tox .tox-tbtn:focus { + background-color: var(--falcon-gray-300) !important; +} + +.tox .tox-tbtn:not([disabled=disabled]) svg { + fill: var(--falcon-body-color) !important; +} + +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button.tinymce-mobile-toolbar-button-selected { + background-color: var(--falcon-gray-300) !important; + color: var(--falcon-body-color) !important; + border-radius: 0.25rem; +} + +.tox-collection__item--active { + background-color: var(--falcon-gray-300) !important; + color: var(--falcon-body-color) !important; +} + +.tox .tox-tbtn--select { + padding: 0 10px !important; +} + +.tinymce-mobile-icon-full-dot:before { + color: var(--falcon-gray-300); +} + +.tinymce-mobile-icon:not(.tinymce-mobile-icon-back), +.tinymce-mobile-icon-large-font:before, +.tinymce-mobile-icon-style-formats:before, +.tox .tox-collection__item { + color: var(--falcon-body-color) !important; +} + +.tox .tox-collection__item-accessory { + color: inherit !important; +} + +.tinymce-mobile-toolbar-button svg, +.tox-collection__item-caret svg { + fill: var(--falcon-body-color) !important; +} + +.tox .tox-toolbar__group:not(:last-of-type) { + border-right: 1px solid var(--falcon-gray-200) !important; +} + +.tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type) { + border-left: 1px solid var(--falcon-gray-200) !important; +} + +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:first-of-type, +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:last-of-type { + background-color: var(--falcon-primary) !important; +} + +.tinymce-mobile-disabled-mask { + background-color: var(--falcon-gray-200) !important; +} + +.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket { + height: 50vh !important; +} + +.tox .tox-edit-area__iframe { + background-color: var(--falcon-tinymce-bg) !important; +} + +html[dir*=rtl] .tox-toolbar__primary { + justify-content: flex-end; +} + +.tox .tox-tbtn { + background: none !important; +} +.tox .tox-editor-header { + z-index: unset !important; + padding: 0 !important; +} +.tox .tox-editor-header .tox-toolbar { + border-bottom: 1px solid !important; + background-color: var(--falcon-card-bg) !important; +} +.tox .tox-toolbar-overlord { + background-color: var(--falcon-card-bg) !important; +} +.tox .tox-toolbar-overlord .tox-toolbar__primary { + background: none; + background-color: inherit; + border-bottom: 1px solid var(--falcon-border-color); +} +[dir=rtl] .tox .tox-toolbar-overlord .tox-toolbar__primary { + justify-content: flex-start; +} +.tox .tox-toolbar-overlord .tox-toolbar__primary .tox-toolbar__group .tox-tbtn { + background: none !important; +} +.tox .tox-menu, +.tox .tox-dialog { + border-radius: 0.25rem !important; + border-color: var(--falcon-border-color) !important; + background-color: var(--falcon-tinymce-bg) !important; +} +.tox .tox-menu__header, .tox .tox-menu__footer, +.tox .tox-dialog__header, +.tox .tox-dialog__footer { + background-color: var(--falcon-tinymce-bg) !important; + border-color: var(--falcon-border-color) !important; +} +.tox .tox-toolbar { + background-color: var(--falcon-tinymce-bg) !important; +} +.tox .tox-selectfield select, +.tox .tox-textarea, +.tox .tox-textfield, +.tox .tox-toolbar-textfield { + border-color: var(--falcon-border-color) !important; +} +.tox .tox-insert-table-picker > div { + border-color: var(--falcon-border-color) !important; +} + +.tox .tox-label, +.tox .tox-toolbar-label { + color: var(--falcon-gray-900) !important; + padding-top: 0.75rem !important; + padding-bottom: 0.25rem !important; +} + +.tox .tox-dialog__body .tox-dialog__body-nav { + padding-left: 20px; +} +.tox .tox-dialog__body .tox-dialog__body-content { + padding-right: 20px; +} +.tox .tox-dialog__header { + padding: 20px 20px 0 20px !important; +} +.tox .tox-dialog__footer { + padding: 0 20px 20px 20px !important; +} +.tox .tox-dialog__title { + color: var(--falcon-gray-900) !important; +} + +.tox .tox-textarea, +.tox .tox-textfield, +.tox .tox-toolbar-textfield, +.tox .tox-selectfield select, +.tox-listbox { + background-color: var(--falcon-input-bg) !important; + color: var(--falcon-body-color) !important; + border-color: var(--falcon-border-color) !important; + padding-left: 1rem !important; + padding-right: 1rem !important; +} + +.tox .tox-dialog-wrap__backdrop { + background-color: rgba(0, 0, 0, 0.75) !important; + backdrop-filter: blur(3px); +} + +.tox .tox-button--naked { + color: var(--falcon-body-color) !important; +} +.tox .tox-button--naked:hover:not(:disabled) { + background-color: var(--falcon-gray-200) !important; + border-color: var(--falcon-border-color) !important; +} + +.tox .tox-collection--list .tox-collection__group { + border-color: var(--falcon-border-color) !important; +} + +.tox .tox-dialog__body-nav-item { + color: var(--falcon-body-color) !important; +} + +.tox .tox-dialog__body-nav-item--active { + color: var(--falcon-primary) !important; + border-bottom: none !important; +} + +.tox .tox-collection--list .tox-collection__item--enabled { + background-color: var(--falcon-gray-200) !important; +} + +.tox.tox-tinymce-aux .tox-toolbar__overflow { + background: none !important; + background-color: var(--falcon-tinymce-bg) !important; + border-color: var(--falcon-border-color) !important; +} + +.Toastify { + all: unset; + position: fixed; + z-index: 1040 !important; +} + +.Toastify__toast { + min-height: 0 !important; + border-radius: 0.25rem !important; + padding: 0.3125rem 1rem !important; + overflow: hidden; + font-size: 0.875rem; + align-items: flex-start; +} +.Toastify__toast .Toastify__close-button { + padding: 0.3125rem 0 !important; +} +.Toastify__toast .Toastify__progress-bar--wrp { + height: 0.125rem !important; +} + +.Toastify__toast--info { + background-color: var(--falcon-info) !important; +} + +.Toastify__toast--success { + background-color: var(--falcon-success) !important; + color: white !important; +} + +.Toastify__toast--error { + background-color: var(--falcon-danger) !important; + color: white !important; +} + +.Toastify__toast--default { + background-color: #fff !important; + color: var(--falcon-gray-800) !important; +} + +.Toastify__toast-body { + padding: 0.5rem 0 !important; +} + +@keyframes fadeIn { + from { + opacity: 0; + } + 50% { + opacity: 1; + } +} +.fadeIn { + animation-name: fadeIn; +} + +@keyframes fadeOut { + from { + opacity: 1; + } + 50% { + opacity: 0; + } + to { + opacity: 0; + } +} +.fadeOut { + animation-name: fadeOut; +} + +.animate { + animation-duration: 800ms; +} + +.toast-container { + z-index: 1010; +} + +/* -------------------------------------------------------------------------- */ +/* Leaflet */ +/* -------------------------------------------------------------------------- */ +.leaflet-bar { + box-shadow: var(--falcon-box-shadow); +} +.leaflet-bar a, .leaflet-bar a:hover { + text-decoration: none; + background-color: var(--falcon-leaflet-bar-bg) !important; + color: var(--falcon-body-color) !important; + border-bottom-color: var(--falcon-border-color) !important; +} +.leaflet-bar a.leaflet-disabled { + background-color: var(--falcon-gray-200) !important; +} + +.marker-cluster-small { + background-color: rgba(var(--falcon-primary-rgb), 0.2); +} +.marker-cluster-small div { + margin: 5px; + background-color: var(--falcon-primary); + color: #fff; +} + +.marker-cluster-medium { + background-color: rgba(var(--falcon-warning-rgb), 0.2); +} +.marker-cluster-medium div { + margin: 5px; + background-color: var(--falcon-warning); + color: #fff; +} + +.marker-cluster-large { + background-color: rgba(var(--falcon-success-rgb), 0.2); +} +.marker-cluster-large div { + margin: 5px; + background-color: var(--falcon-success); + color: #fff; +} + +.leaflet-popup-content-wrapper, +.leaflet-popup-tip { + background-color: var(--falcon-leaflet-popup-content-wrapper-bg); + box-shadow: 0 1rem 4rem rgba(0, 0, 0, 0.175); + border-radius: 0.25rem; +} + +.leaflet-popup-close-button { + right: 3px !important; + top: 3px !important; +} + +.leaflet-control-attribution { + display: none; +} + +.leaflet-top, +.leaflet-bottom { + z-index: 999; +} + +.leaflet-left .leaflet-control { + margin-left: 1.25rem; +} + +.leaflet-right .leaflet-control { + margin-right: 1.25rem; +} + +.leaflet-top .leaflet-control { + margin-top: 1.25rem; +} + +.leaflet-bottom .leaflet-control { + margin-bottom: 1.25rem; +} + +.gm-fullscreen-control, +.gm-svpc, +.gmnoprint * { + background: var(--falcon-card-bg) !important; + color: inherit !important; +} + +.mapsConsumerUiSceneCoreScene__root { + z-index: 3 !important; +} + +[data-bs-theme=dark] .gm-control-active:focus > img:nth-child(2), [data-bs-theme=dark] .gm-control-active:hover > img:nth-child(2) { + display: none !important; +} +[data-bs-theme=dark] .gm-control-active:focus > img:nth-child(1), +[data-bs-theme=dark] .gm-control-active:hover > img:nth-child(1), +[data-bs-theme=dark] .gm-control-active:active > img:nth-child(1), +[data-bs-theme=dark] .gm-control-active:disabled > img:nth-child(1) { + display: block !important; +} + +.gm-style .gm-style-iw-d::-webkit-scrollbar-track, +.gm-style .gm-style-iw-d::-webkit-scrollbar-track-piece, +.gm-style .gm-style-iw-c, +.gm-style .gm-style-iw-t::after { + background: var(--falcon-card-bg); +} + +button.gm-ui-hover-effect { + top: 0 !important; + right: 0 !important; +} +button.gm-ui-hover-effect > span { + background-color: var(--falcon-black); + width: 1.25rem !important; + height: 1.25rem !important; + margin: 0 0 0 5px !important; +} + +.falcon-react-range { + height: 2.25rem; + display: flex; + width: 100%; +} +.falcon-react-range .falcon-react-range-track { + width: 100%; + height: 0.5rem; + border: none; + align-self: center; + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075); + border-radius: 3px; +} +.falcon-react-range .falcon-react-range-thumb { + width: 16px; + height: 24px; + background: #fff; + border: 1px solid #fff; + border-radius: 0.25rem; + box-shadow: 0 0 0 1px rgba(43, 45, 80, 0.1), 0 2px 5px 0 rgba(43, 45, 80, 0.08), 0 1px 1.5px 0 rgba(0, 0, 0, 0.07), 0 1px 2px 0 rgba(0, 0, 0, 0.08); + outline: none; + display: flex; + align-items: center; + justify-content: center; +} +.falcon-react-range .falcon-react-range-thumb:active { + box-shadow: var(--falcon-btn-falcon-hover-box-shadow); +} +.falcon-react-range .falcon-react-range-thumb::after { + margin-left: 5px; +} +.falcon-react-range .falcon-react-range-thumb::before { + margin-right: 5px; +} +.falcon-react-range .falcon-react-range-thumb::after, .falcon-react-range .falcon-react-range-thumb::before { + position: absolute; + content: ""; + background: #d8e2ef; + height: 10px; + width: 1px; +} +.falcon-react-range .falcon-react-range-thumb:hover { + background: #f9fafd; +} +.falcon-react-range .falcon-react-range-thumb:hover .falcon-react-range-tooltip { + display: block; +} +.falcon-react-range .falcon-react-range-thumb .falcon-react-range-tooltip { + position: absolute; + top: -2.313rem; + display: none; + padding: 5px; + background: #fff; + border: 1px solid var(--falcon-border-color); + font-size: 0.8333333333rem; + color: #000; + font-weight: 400; + border-radius: var(--falcon-border-radius); +} +.falcon-react-range .falcon-react-range-thumb .falcon-react-range-tooltip.show { + display: block; +} +html[data-bs-theme=dark] .falcon-react-range .falcon-react-range-thumb .falcon-react-range-tooltip { + background: #232e3c; + color: #fff; +} + +.yarl__root .yarl__container { + background-color: rgba(0, 0, 0, 0.85) !important; +} + +.chat-emoji-picker aside { + position: absolute; + bottom: 2rem; + left: auto; + right: 2%; +} + +.EmojiPickerReact { + --epr-emoji-size: 24px !important; + --epr-category-navigation-button-size: 24px !important; + --epr-header-padding: 0 !important; + position: absolute !important; + padding: 0; + z-index: 1; + background-color: var(--falcon-quaternary-bg) !important; + border: 1px solid var(--falcon-border-color) !important; +} +.EmojiPickerReact .epr-header { + padding: 12px 12px 0px !important; +} +.EmojiPickerReact .epr-header .epr-search-container { + --epr-search-input-height: 37px !important; +} +.EmojiPickerReact .epr-header .epr-search-container input { + padding: 0.3124rem 2rem !important; + border: 1px solid var(--falcon-border-color) !important; + font-size: 1rem; + background-color: var(--falcon-quaternary-bg) !important; + color: var(--falcon-gray-900) !important; + font-family: "Poppins", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !important; + border-radius: var(--falcon-border-radius-pill) !important; +} +.EmojiPickerReact .epr-header .epr-search-container input::placeholder { + color: var(--falcon-input-placeholder-color-global) !important; +} +.EmojiPickerReact .epr-header .epr-search-container .epr-icn-search { + background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NDAgNjQwIj48IS0tIUZvbnQgQXdlc29tZSBGcmVlIHY3LjAuMCBieSBAZm9udGF3ZXNvbWUgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbSBMaWNlbnNlIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20vbGljZW5zZS9mcmVlIENvcHlyaWdodCAyMDI1IEZvbnRpY29ucywgSW5jLi0tPjxwYXRoIGZpbGw9IiNiNmMxZDIiIGQ9Ik00ODAgMjcyQzQ4MCAzMTcuOSA0NjUuMSAzNjAuMyA0NDAgMzk0LjdMNTY2LjYgNTIxLjRDNTc5LjEgNTMzLjkgNTc5LjEgNTU0LjIgNTY2LjYgNTY2LjdDNTU0LjEgNTc5LjIgNTMzLjggNTc5LjIgNTIxLjMgNTY2LjdMMzk0LjcgNDQwQzM2MC4zIDQ2NS4xIDMxNy45IDQ4MCAyNzIgNDgwQzE1Ny4xIDQ4MCA2NCAzODYuOSA2NCAyNzJDNjQgMTU3LjEgMTU3LjEgNjQgMjcyIDY0QzM4Ni45IDY0IDQ4MCAxNTcuMSA0ODAgMjcyek0yNzIgNDE2QzM1MS41IDQxNiA0MTYgMzUxLjUgNDE2IDI3MkM0MTYgMTkyLjUgMzUxLjUgMTI4IDI3MiAxMjhDMTkyLjUgMTI4IDEyOCAxOTIuNSAxMjggMjcyQzEyOCAzNTEuNSAxOTIuNSA0MTYgMjcyIDQxNnoiLz48L3N2Zz4=") !important; + background-size: 16px !important; + left: 0.9rem !important; + transform: translateY(-48%) !important; + height: 16px !important; +} +.EmojiPickerReact .epr-header .epr-category-nav { + padding-top: 12px !important; + padding-bottom: 12px !important; +} +.EmojiPickerReact .epr-body { + padding-left: 12px !important; + padding-right: 12px !important; +} +.EmojiPickerReact .epr-body .epr-emoji-list .epr-emoji-category .epr-emoji-category-label { + --epr-category-label-height: auto !important; + --epr-category-label-padding: 6px !important; + --epr-category-label-text-color: var(--falcon-secondary-color) !important; + --epr-category-label-bg-color: rgba(var(--falcon-secondary-color), 0.9) !important; + font-size: 15px !important; + backdrop-filter: blur(4px) !important; + font-family: "Poppins", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !important; + font-weight: 500 !important; +} +.EmojiPickerReact .epr-body .epr-emoji-list .epr-emoji-category .epr-emoji-category-content { + margin: 0 !important; +} + +/*----------------------------------------------- +| Table +-----------------------------------------------*/ +.table tfoot > tr > th:first-child, +.table thead > tr > th:first-child, +.table tr th:first-child, +.table tr td:first-child { + padding-left: 1.25rem; +} +.table tfoot > tr > th:last-child, +.table thead > tr > th:last-child, +.table tr th:last-child, +.table tr td:last-child { + padding-right: 1.25rem; +} +.table .dropdown, +.table .dropstart, +.table .dropend { + position: static; +} + +.white-space-nowrap { + width: 1px; + white-space: nowrap; +} + +th { + font-weight: 600; +} + +td .dropdown-toggle:after, td .dropdown-toggle:before { + display: none; +} + +.table-dashboard { + overflow: hidden; +} +.table-dashboard th { + border-bottom-width: 1px !important; +} + +/*----------------------------------------------- +| Headers +-----------------------------------------------*/ +h5, .h5 { + margin-bottom: 0.25rem; +} + +/*----------------------------------------------- +| Drop cap +-----------------------------------------------*/ +.dropcap::first-letter { + font-size: 3em; + float: left; + line-height: 0.92; + margin-right: 0.375rem; +} + +/*----------------------------------------------- +| Letter Spacing +-----------------------------------------------*/ +.ls { + letter-spacing: 0.04em; +} + +.ls-2 { + letter-spacing: 0.25em; +} + +/*----------------------------------------------- +| List +-----------------------------------------------*/ +.bullet-inside { + list-style-position: inside; +} + +.style-check li { + position: relative; + list-style-type: none; + padding-left: 0.25rem; +} +.style-check li:before { + content: url(data:image/svg+xml;base64,PHN2ZyBhcmlhLWhpZGRlbj0idHJ1ZSIgZGF0YS1mYS1wcm9jZXNzZWQ9IiIgZGF0YS1wcmVmaXg9ImZhbCIgZGF0YS1pY29uPSJjaGVjayIgcm9sZT0iaW1nIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDggNTEyIiBjbGFzcz0ic3ZnLWlubGluZS0tZmEgZmEtY2hlY2sgZmEtdy0xNCIgc3R5bGU9ImZvbnQtc2l6ZTogNDhweDsiPjxwYXRoIGZpbGw9ImN1cnJlbnRDb2xvciIgZD0iTTQxMy41MDUgOTEuOTUxTDEzMy40OSAzNzEuOTY2bC05OC45OTUtOTguOTk1Yy00LjY4Ni00LjY4Ni0xMi4yODQtNC42ODYtMTYuOTcxIDBMNi4yMTEgMjg0LjI4NGMtNC42ODYgNC42ODYtNC42ODYgMTIuMjg0IDAgMTYuOTcxbDExOC43OTQgMTE4Ljc5NGM0LjY4NiA0LjY4NiAxMi4yODQgNC42ODYgMTYuOTcxIDBsMjk5LjgxMy0yOTkuODEzYzQuNjg2LTQuNjg2IDQuNjg2LTEyLjI4NCAwLTE2Ljk3MWwtMTEuMzE0LTExLjMxNGMtNC42ODYtNC42ODYtMTIuMjg0LTQuNjg2LTE2Ljk3IDB6IiBjbGFzcz0iIj48L3BhdGg+PC9zdmc+); + padding-right: 0.1875rem; + position: absolute; + top: 0.0625rem; + left: -1rem; + background-repeat: no-repeat; + width: 1rem; +} + +/*----------------------------------------------- +| Blockquote +-----------------------------------------------*/ +.blockquote-content { + font-style: italic; + position: relative; +} +.blockquote-content:before { + position: absolute; + left: -3rem; + top: -0.5rem; + line-height: 1; + content: "“"; + display: inline-block; + color: var(--falcon-gray-300); + font-size: 2.985984rem; +} + +.blockquote-footer::before { + transform: translateY(0.125rem); + font-weight: 400; + display: inline-block; +} + +/*----------------------------------------------- +| Cursor +-----------------------------------------------*/ +.cursor-default { + cursor: default; +} + +.cursor-pointer { + cursor: pointer; +} + +/* -------------------------------------------------------------------------- */ +/* Text */ +/* -------------------------------------------------------------------------- */ +.text-smallcaps { + font-variant: small-caps; +} + +.text-superscript { + vertical-align: super; +} + +.text-word-break { + word-break: break-word; +} + +/*----------------------------------------------- +| Font family +-----------------------------------------------*/ +.font-sans-serif { + font-family: "Poppins", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; +} + +.font-base { + font-family: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; +} + +/*----------------------------------------------- +| Error Page +-----------------------------------------------*/ +.fs-error { + font-size: 7rem; +} +@media (min-width: 576px) { + .fs-error { + font-size: 10rem; + } +} + +/*----------------------------------------------- +| Text alignment +-----------------------------------------------*/ +.text-justify { + text-align: justify !important; +} + +/*----------------------------------------------- +| Backgrounds +-----------------------------------------------*/ +.bg-holder { + position: absolute; + width: 100%; + min-height: 100%; + top: 0; + left: 0; + background-size: cover; + background-position: center; + overflow: hidden; + will-change: transform, opacity, filter; + backface-visibility: hidden; + background-repeat: no-repeat; + z-index: 0; +} +.bg-holder.bg-right { + left: auto; + right: 0; +} +.bg-holder.overlay:before { + position: absolute; + content: ""; + background: rgba(0, 0, 0, 0.25); + top: 0; + bottom: 0; + left: 0; + right: 0; +} +.bg-holder.overlay-0:before { + background: rgba(0, 0, 0, 0.7); +} +.bg-holder.overlay-1:before { + background: rgba(0, 0, 0, 0.55); +} +.bg-holder.overlay-2:before { + background: rgba(0, 0, 0, 0.4); +} +.bg-holder .bg-video { + position: absolute; + display: block; + z-index: -1; + top: 0; + left: 0; + object-fit: cover; + height: 100%; + min-width: 100%; +} +.bg-holder .bg-youtube { + position: absolute !important; + top: 0; + left: 0; + height: 100%; + width: 100%; +} + +.bg-fixed { + background-attachment: fixed; +} + +.bg-glass { + background-color: rgba(255, 255, 255, 0.9); +} + +.bg-card { + background-size: contain; + background-position: right; + border-top-right-radius: 0.375rem; + border-bottom-right-radius: 0.375rem; +} +[dir=rtl] .bg-card { + background-position: left; + transform: scaleX(-1); + border-top-left-radius: 0.375rem; + border-bottom-left-radius: 0.375rem; +} + +/*----------------------------------------------- +| Background gradient +-----------------------------------------------*/ +.bg-line-chart-gradient { + background-image: var(--falcon-line-chart-gradient); + background-position: center; +} + +.bg-card-gradient { + background-image: var(--falcon-card-gradient); + background-position: center; +} + +.bg-progress-gradient { + background-image: var(--falcon-progress-gradient); + background-position: center; +} + +.bg-auth-circle-shape, +.bg-auth-circle-shape-2 { + display: none; +} +@media (min-width: 992px) { + .bg-auth-circle-shape, + .bg-auth-circle-shape-2 { + display: block; + } +} + +.bg-auth-circle-shape { + position: absolute; + right: -8.75rem; + top: -5.125rem; +} + +.bg-auth-circle-shape-2 { + position: absolute; + left: -6.25rem; + bottom: -2.4375rem; +} + +.bg-auth-card-shape { + background-position: 0 100%; +} +@media (min-width: 768px) { + .bg-auth-card-shape { + background-position: 0 133%; + } +} + +.bg-shape { + position: relative; + overflow: hidden; + background-color: var(--falcon-bg-shape-bg); +} +.bg-shape:after, .bg-shape:before { + position: absolute; + content: ""; + border-radius: 50%; +} +.bg-shape:after { + background-image: var(--falcon-bg-shape-bg-ltd); +} +.bg-shape:before { + background-image: var(--falcon-bg-shape-bg-dtl); +} + +.bg-circle-shape:after { + height: 15.625rem; + width: 115%; + left: 32%; + top: -188%; +} +.bg-circle-shape:before { + height: 332%; + width: 45%; + left: -9%; + top: 0.5625rem; +} + +.modal-shape-header:before { + height: 28.9375rem; + width: 155%; + right: 23%; + top: -357%; +} +.modal-shape-header:after { + height: 289%; + width: 45%; + right: -10%; + top: 2.5rem; +} + +.showcase-page-gradient { + background: linear-gradient(357.7deg, #024787 -88.88%, rgba(0, 79, 197, 0) 27.93%); +} + +.bg-transparent-50 { + background-color: rgba(var(--falcon-quaternary-bg-rgb), 0.5); +} + +/* -------------------------------------------------------------------------- */ +/* Borders */ +/* -------------------------------------------------------------------------- */ +.overflow-hidden[class*=rounded] { + -webkit-mask-image: radial-gradient(#fff, #000); +} + +.border-top-2 { + border-top-width: 2px !important; +} + +.border-end-2 { + border-right-width: 2px !important; +} + +.border-bottom-2 { + border-bottom-width: 2px !important; +} + +.border-start-2 { + border-left-width: 2px !important; +} + +/* -------------------------------------------------------------------------- */ +/* Position */ +/* -------------------------------------------------------------------------- */ +.container, +.container-fluid, +.container-sm, +.container-md, +.container-lg, +.container-xl, +.container-xxl { + position: relative; +} + +.all-0, .ripple { + top: 0; + right: 0; + bottom: 0; + left: 0; +} + +/* -------------------------------------------------------------------------- */ +/* Flex */ +/* -------------------------------------------------------------------------- */ +.flex-center { + align-items: center; + justify-content: center; +} + +.flex-between-center { + justify-content: space-between; + align-items: center; +} + +.flex-end-center { + justify-content: flex-end; + align-items: center; +} + +.flex-between-end { + align-items: flex-end; + justify-content: space-between; +} + +.flex-1 { + flex: 1; +} + +@media (min-width: 992px) { + .flex-lg-basis-0 { + flex-basis: 0; + } +} +.link-100 { + color: RGBA(var(--falcon-gray-100-rgb), var(--falcon-link-opacity, 1)); + text-decoration-color: RGBA(var(--falcon-gray-100-rgb), var(--falcon-link-underline-opacity, 1)); +} +.link-100:hover, .link-100:focus { + color: var(--falcon-gray-link-hover-100); + text-decoration-color: var(--falcon-gray-link-hover-100); +} + +.link-200 { + color: RGBA(var(--falcon-gray-200-rgb), var(--falcon-link-opacity, 1)); + text-decoration-color: RGBA(var(--falcon-gray-200-rgb), var(--falcon-link-underline-opacity, 1)); +} +.link-200:hover, .link-200:focus { + color: var(--falcon-gray-link-hover-200); + text-decoration-color: var(--falcon-gray-link-hover-200); +} + +.link-300 { + color: RGBA(var(--falcon-gray-300-rgb), var(--falcon-link-opacity, 1)); + text-decoration-color: RGBA(var(--falcon-gray-300-rgb), var(--falcon-link-underline-opacity, 1)); +} +.link-300:hover, .link-300:focus { + color: var(--falcon-gray-link-hover-300); + text-decoration-color: var(--falcon-gray-link-hover-300); +} + +.link-400 { + color: RGBA(var(--falcon-gray-400-rgb), var(--falcon-link-opacity, 1)); + text-decoration-color: RGBA(var(--falcon-gray-400-rgb), var(--falcon-link-underline-opacity, 1)); +} +.link-400:hover, .link-400:focus { + color: var(--falcon-gray-link-hover-400); + text-decoration-color: var(--falcon-gray-link-hover-400); +} + +.link-500 { + color: RGBA(var(--falcon-gray-500-rgb), var(--falcon-link-opacity, 1)); + text-decoration-color: RGBA(var(--falcon-gray-500-rgb), var(--falcon-link-underline-opacity, 1)); +} +.link-500:hover, .link-500:focus { + color: var(--falcon-gray-link-hover-500); + text-decoration-color: var(--falcon-gray-link-hover-500); +} + +.link-600 { + color: RGBA(var(--falcon-gray-600-rgb), var(--falcon-link-opacity, 1)); + text-decoration-color: RGBA(var(--falcon-gray-600-rgb), var(--falcon-link-underline-opacity, 1)); +} +.link-600:hover, .link-600:focus { + color: var(--falcon-gray-link-hover-600); + text-decoration-color: var(--falcon-gray-link-hover-600); +} + +.link-700 { + color: RGBA(var(--falcon-gray-700-rgb), var(--falcon-link-opacity, 1)); + text-decoration-color: RGBA(var(--falcon-gray-700-rgb), var(--falcon-link-underline-opacity, 1)); +} +.link-700:hover, .link-700:focus { + color: var(--falcon-gray-link-hover-700); + text-decoration-color: var(--falcon-gray-link-hover-700); +} + +.link-800 { + color: RGBA(var(--falcon-gray-800-rgb), var(--falcon-link-opacity, 1)); + text-decoration-color: RGBA(var(--falcon-gray-800-rgb), var(--falcon-link-underline-opacity, 1)); +} +.link-800:hover, .link-800:focus { + color: var(--falcon-gray-link-hover-800); + text-decoration-color: var(--falcon-gray-link-hover-800); +} + +.link-900 { + color: RGBA(var(--falcon-gray-900-rgb), var(--falcon-link-opacity, 1)); + text-decoration-color: RGBA(var(--falcon-gray-900-rgb), var(--falcon-link-underline-opacity, 1)); +} +.link-900:hover, .link-900:focus { + color: var(--falcon-gray-link-hover-900); + text-decoration-color: var(--falcon-gray-link-hover-900); +} + +.link-1000 { + color: RGBA(var(--falcon-gray-1000-rgb), var(--falcon-link-opacity, 1)); + text-decoration-color: RGBA(var(--falcon-gray-1000-rgb), var(--falcon-link-underline-opacity, 1)); +} +.link-1000:hover, .link-1000:focus { + color: var(--falcon-gray-link-hover-1000); + text-decoration-color: var(--falcon-gray-link-hover-1000); +} + +.link-1100 { + color: RGBA(var(--falcon-gray-1100-rgb), var(--falcon-link-opacity, 1)); + text-decoration-color: RGBA(var(--falcon-gray-1100-rgb), var(--falcon-link-underline-opacity, 1)); +} +.link-1100:hover, .link-1100:focus { + color: var(--falcon-gray-link-hover-1100); + text-decoration-color: var(--falcon-gray-link-hover-1100); +} + +/*----------------------------------------------- +| Dropdowns +-----------------------------------------------*/ +.dropdown-menu { + font-size: 0.8333333333rem; + border-radius: 0.375rem; + box-shadow: var(--falcon-box-shadow); +} + +.dropdown-header { + padding: 0.25rem 1rem; + text-transform: uppercase; + font-size: 0.6944444444rem; + font-weight: 600; + letter-spacing: 0.04em; + font-family: "Poppins", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; +} + +.dropdown-item { + transition: all 0.2s ease-in-out; +} + +.dropdown-caret-none::after { + display: none !important; +} + +.dropdown-caret-none::before { + display: none !important; +} + +.dropdown-menu-small { + min-width: 7rem; +} + +.dropdown-indicator { + position: relative; +} +.dropdown-indicator:after { + content: ""; + display: block; + position: absolute; + right: 5px; + height: 0.4rem; + width: 0.4rem; + border-right: 1px solid #5e6e82; + border-bottom: 1px solid #5e6e82; + top: 50%; + transform: translateY(-50%) rotate(45deg); + transition: all 0.2s ease-in-out; + transform-origin: center; + transition-property: transform; +} +.dropdown-indicator[aria-expanded=true]:after { + transform: translateY(-50%) rotate(225deg); +} + +.dropdown-md { + min-width: 15.625rem; +} + +/* -------------------------------------------------------------------------- */ +/* Navbar Vertical */ +/* -------------------------------------------------------------------------- */ +.safari .navbar-vertical .navbar-nav .nav { + font-size: 14px; +} + +.navbar-vertical { + position: fixed; + display: inline-block; + padding: 0; + z-index: 1019; + top: var(--falcon-top-nav-height); + width: 100%; + max-width: 100vw; + flex-direction: column; + margin: 0 -1rem; + background-image: none; +} +.navbar-vertical + .content .navbar-top .navbar-toggler { + display: flex; +} +.navbar-vertical .navbar-brand { + display: none; +} +.navbar-vertical .toggle-icon-wrapper { + margin-left: -0.75rem; + padding-left: 0.125rem; + margin-right: 1.25rem; +} +.navbar-vertical .navbar-collapse { + overflow: hidden; +} +.navbar-vertical .navbar-collapse .navbar-vertical-content { + padding: 0 1rem; + flex-direction: column; + max-height: calc(100vh - var(--falcon-top-nav-height)); +} +.navbar-vertical .navbar-collapse .navbar-vertical-content > * { + width: 100%; + overflow: hidden; +} +.navbar-vertical .navbar-vertical-toggle { + display: none; +} +.navbar-vertical .settings .btn-close-falcon-container { + position: absolute; + right: 3px; + top: 3px; +} +.navbar-vertical .navbar-vertical-divider { + margin-top: 0.5625rem; +} +.navbar-vertical .navbar-vertical-label { + font-size: 0.75rem; + color: var(--falcon-navbar-vertical-default-label-color); +} +.navbar-vertical .dropdown-indicator { + padding-right: 1rem !important; +} +.navbar-vertical .navbar-nav { + font-size: 0.875rem; + font-weight: 500; +} +.navbar-vertical .navbar-nav .nav-link { + word-break: break-word; + transition: all 0.2s ease-in-out; +} +.navbar-vertical .navbar-nav .nav-link-icon { + width: 1.5rem; + min-width: 1.5rem; + font-size: 0.875rem; +} +.navbar-vertical .navbar-nav .nav { + flex-flow: column nowrap; + font-size: 0.8333333333rem; +} +.navbar-vertical .navbar-nav .nav .nav-item .nav-link { + padding: 0.2rem 0.2rem 0.2rem 1.5rem; +} +.navbar-vertical .navbar-nav .nav .nav-item:last-child { + margin-bottom: 0.35rem; +} +.navbar-vertical .navbar-nav .nav .nav .nav-item .nav-link { + padding-left: 2.625rem; +} +.navbar-vertical .navbar-nav .nav .nav .nav .nav-item .nav-link { + padding-left: 4.125rem; +} +.navbar-vertical .navbar-nav .nav .nav .nav .nav .nav-item .nav-link { + padding-left: 5.625rem; +} +.navbar-vertical.navbar-card, .navbar-vertical.navbar-vibrant, .navbar-vertical.navbar-inverted { + padding-left: 1rem; + padding-right: 1rem; +} +.navbar-vertical.navbar-card .navbar-collapse, .navbar-vertical.navbar-vibrant .navbar-collapse, .navbar-vertical.navbar-inverted .navbar-collapse { + border-radius: 0.375rem; +} +.navbar-vertical.navbar-card .navbar-collapse, +.navbar-vertical.navbar-card .navbar-vertical-content, .navbar-vertical.navbar-vibrant .navbar-collapse, +.navbar-vertical.navbar-vibrant .navbar-vertical-content, .navbar-vertical.navbar-inverted .navbar-collapse, +.navbar-vertical.navbar-inverted .navbar-vertical-content { + max-height: calc(100vh - var(--falcon-top-nav-height) - 1rem) !important; +} +.navbar-vertical .navbar-collapse { + background-color: var(--falcon-navbar-vertical-default-bg-color); +} +.navbar-vertical .navbar-nav .nav-item .navbar-vertical-label-wrapper { + min-height: 1.125rem; +} +.navbar-vertical .navbar-nav .nav-item .navbar-vertical-label { + color: var(--falcon-navbar-vertical-default-label-color); +} +.navbar-vertical .navbar-nav .nav-item .nav-link { + color: var(--falcon-navbar-vertical-default-link-color); +} +.navbar-vertical .navbar-nav .nav-item .nav-link.dropdown-indicator:after { + border-color: var(--falcon-navbar-vertical-default-link-color); +} +.navbar-vertical .navbar-nav .nav-item .nav-link:hover, .navbar-vertical .navbar-nav .nav-item .nav-link:focus { + color: var(--falcon-navbar-vertical-default-link-hover-color); +} +.navbar-vertical .navbar-nav .nav-item .nav-link:hover.dropdown-indicator:after, .navbar-vertical .navbar-nav .nav-item .nav-link:focus.dropdown-indicator:after { + border-color: var(--falcon-navbar-vertical-default-link-hover-color); +} +.navbar-vertical .navbar-nav .nav-item .nav-link.active { + color: var(--falcon-navbar-vertical-default-link-active-color); +} +.navbar-vertical .navbar-nav .nav-item .nav-link.nav-link-disable { + color: var(--falcon-navbar-vertical-default-link-disable-color) !important; +} +.navbar-vertical .navbar-vertical-divider { + color: var(--falcon-navbar-vertical-default-hr-color); +} +.navbar-vertical.navbar-inverted .navbar-collapse { + background-color: var(--falcon-navbar-vertical-inverted-bg-color); +} +.navbar-vertical.navbar-inverted .navbar-nav .nav-item .navbar-vertical-label-wrapper { + min-height: 1.125rem; +} +.navbar-vertical.navbar-inverted .navbar-nav .nav-item .navbar-vertical-label { + color: var(--falcon-navbar-vertical-inverted-label-color); +} +.navbar-vertical.navbar-inverted .navbar-nav .nav-item .nav-link { + color: var(--falcon-navbar-vertical-inverted-link-color); +} +.navbar-vertical.navbar-inverted .navbar-nav .nav-item .nav-link.dropdown-indicator:after { + border-color: var(--falcon-navbar-vertical-inverted-link-color); +} +.navbar-vertical.navbar-inverted .navbar-nav .nav-item .nav-link:hover, .navbar-vertical.navbar-inverted .navbar-nav .nav-item .nav-link:focus { + color: var(--falcon-navbar-vertical-inverted-link-hover-color); +} +.navbar-vertical.navbar-inverted .navbar-nav .nav-item .nav-link:hover.dropdown-indicator:after, .navbar-vertical.navbar-inverted .navbar-nav .nav-item .nav-link:focus.dropdown-indicator:after { + border-color: var(--falcon-navbar-vertical-inverted-link-hover-color); +} +.navbar-vertical.navbar-inverted .navbar-nav .nav-item .nav-link.active { + color: var(--falcon-navbar-vertical-inverted-link-active-color); +} +.navbar-vertical.navbar-inverted .navbar-nav .nav-item .nav-link.nav-link-disable { + color: var(--falcon-navbar-vertical-inverted-link-disable-color) !important; +} +.navbar-vertical.navbar-inverted .navbar-vertical-divider { + color: var(--falcon-navbar-vertical-inverted-hr-color); +} +.navbar-vertical.navbar-card .navbar-collapse { + background-color: var(--falcon-navbar-vertical-card-bg-color); + box-shadow: 0 7px 14px 0 rgba(65, 69, 88, 0.1), 0 3px 6px 0 rgba(0, 0, 0, 0.07) !important; +} +.navbar-vertical.navbar-card .navbar-nav .nav-item .navbar-vertical-label-wrapper { + min-height: 1.125rem; +} +.navbar-vertical.navbar-card .navbar-nav .nav-item .navbar-vertical-label { + color: var(--falcon-navbar-vertical-card-label-color); +} +.navbar-vertical.navbar-card .navbar-nav .nav-item .nav-link { + color: var(--falcon-navbar-vertical-card-link-color); +} +.navbar-vertical.navbar-card .navbar-nav .nav-item .nav-link.dropdown-indicator:after { + border-color: var(--falcon-navbar-vertical-card-link-color); +} +.navbar-vertical.navbar-card .navbar-nav .nav-item .nav-link:hover, .navbar-vertical.navbar-card .navbar-nav .nav-item .nav-link:focus { + color: var(--falcon-navbar-vertical-card-link-hover-color); +} +.navbar-vertical.navbar-card .navbar-nav .nav-item .nav-link:hover.dropdown-indicator:after, .navbar-vertical.navbar-card .navbar-nav .nav-item .nav-link:focus.dropdown-indicator:after { + border-color: var(--falcon-navbar-vertical-card-link-hover-color); +} +.navbar-vertical.navbar-card .navbar-nav .nav-item .nav-link.active { + color: var(--falcon-navbar-vertical-card-link-active-color); +} +.navbar-vertical.navbar-card .navbar-nav .nav-item .nav-link.nav-link-disable { + color: var(--falcon-navbar-vertical-card-link-disable-color) !important; +} +.navbar-vertical.navbar-card .navbar-vertical-divider { + color: var(--falcon-navbar-vertical-card-hr-color); +} +.navbar-vertical.navbar-card .settings .card { + border: 1px solid var(--falcon-border-color); +} +.navbar-vertical.navbar-vibrant .navbar-collapse { + background-image: var(--falcon-navbar-vertical-vibrant-bg-image); + background-position: center; + background-size: cover; + background-repeat: no-repeat; + backface-visibility: hidden; +} +.navbar-vertical.navbar-vibrant .navbar-nav .nav-item .navbar-vertical-label-wrapper { + min-height: 1.125rem; +} +.navbar-vertical.navbar-vibrant .navbar-nav .nav-item .navbar-vertical-label { + color: var(--falcon-navbar-vertical-vibrant-label-color); +} +.navbar-vertical.navbar-vibrant .navbar-nav .nav-item .nav-link { + color: var(--falcon-navbar-vertical-vibrant-link-color); +} +.navbar-vertical.navbar-vibrant .navbar-nav .nav-item .nav-link.dropdown-indicator:after { + border-color: var(--falcon-navbar-vertical-vibrant-link-color); +} +.navbar-vertical.navbar-vibrant .navbar-nav .nav-item .nav-link:hover, .navbar-vertical.navbar-vibrant .navbar-nav .nav-item .nav-link:focus { + color: var(--falcon-navbar-vertical-vibrant-link-hover-color); +} +.navbar-vertical.navbar-vibrant .navbar-nav .nav-item .nav-link:hover.dropdown-indicator:after, .navbar-vertical.navbar-vibrant .navbar-nav .nav-item .nav-link:focus.dropdown-indicator:after { + border-color: var(--falcon-navbar-vertical-vibrant-link-hover-color); +} +.navbar-vertical.navbar-vibrant .navbar-nav .nav-item .nav-link.active { + color: var(--falcon-navbar-vertical-vibrant-link-active-color); +} +.navbar-vertical.navbar-vibrant .navbar-nav .nav-item .nav-link.nav-link-disable { + color: var(--falcon-navbar-vertical-vibrant-link-disable-color) !important; +} +.navbar-vertical.navbar-vibrant .navbar-vertical-divider { + color: var(--falcon-navbar-vertical-vibrant-hr-color); +} + +.windows.chrome .navbar-vertical.navbar-default .scrollbar::-webkit-scrollbar-thumb { + background-color: var(--falcon-navbar-vertical-default-scrollbar-color); +} +.windows.firefox .navbar-vertical.navbar-default .scrollbar { + scrollbar-color: var(--falcon-navbar-vertical-default-scrollbar-color) transparent; +} + +.windows.chrome .navbar-vertical.navbar-inverted .scrollbar::-webkit-scrollbar-thumb { + background-color: var(--falcon-navbar-vertical-inverted-scrollbar-color); +} +.windows.firefox .navbar-vertical.navbar-inverted .scrollbar { + scrollbar-color: var(--falcon-navbar-vertical-inverted-scrollbar-color) transparent; +} + +.windows.chrome .navbar-vertical.navbar-card .scrollbar::-webkit-scrollbar-thumb { + background-color: var(--falcon-navbar-vertical-card-scrollbar-color); +} +.windows.firefox .navbar-vertical.navbar-card .scrollbar { + scrollbar-color: var(--falcon-navbar-vertical-card-scrollbar-color) transparent; +} + +.windows.chrome .navbar-vertical.navbar-vibrant .scrollbar::-webkit-scrollbar-thumb { + background-color: var(--falcon-navbar-vertical-vibrant-scrollbar-color); +} +.windows.firefox .navbar-vertical.navbar-vibrant .scrollbar { + scrollbar-color: var(--falcon-navbar-vertical-vibrant-scrollbar-color) transparent; +} + +@media (min-width: 576px) { + .container .navbar-vertical { + max-width: 540px; + } +} +@media (min-width: 768px) { + .container .navbar-vertical { + max-width: 720px; + } +} +@media (min-width: 992px) { + .container .navbar-vertical { + max-width: 960px; + } +} +@media (min-width: 1200px) { + .container .navbar-vertical { + max-width: 1140px; + } +} +@media (min-width: 1540px) { + .container .navbar-vertical { + max-width: 1480px; + } +} +@media (min-width: 1540px) { + .navbar-vertical.navbar-expand-xxl { + max-width: 12.625rem; + top: 0; + height: 100vh; + margin: 0; + } + .navbar-vertical.navbar-expand-xxl .nav-link { + padding: 0.35rem 0; + } + .navbar-vertical.navbar-expand-xxl .navbar-brand { + display: block; + text-align: center; + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse { + margin-top: -0.25rem; + transition: width 0.2s ease; + transition-property: width, box-shadow; + display: inline-block !important; + width: 12.625rem; + } + .navbar-vertical.navbar-expand-xxl .navbar-vertical-content { + width: 12.625rem; + height: calc(100vh - var(--falcon-top-nav-height)); + padding: 0.5rem 0 0 0; + } + .navbar-vertical.navbar-expand-xxl .navbar-vertical-toggle { + display: flex; + } + .navbar-vertical.navbar-expand-xxl.navbar-card, .navbar-vertical.navbar-expand-xxl.navbar-vibrant, .navbar-vertical.navbar-expand-xxl.navbar-inverted { + padding: 0; + max-width: 14.625rem !important; + } + .navbar-vertical.navbar-expand-xxl.navbar-card .navbar-vertical-content, .navbar-vertical.navbar-expand-xxl.navbar-vibrant .navbar-vertical-content, .navbar-vertical.navbar-expand-xxl.navbar-inverted .navbar-vertical-content { + padding: 0.5rem 0.625rem 0 1rem !important; + } + .navbar-vertical.navbar-expand-xxl.navbar-card .toggle-icon-wrapper, .navbar-vertical.navbar-expand-xxl.navbar-vibrant .toggle-icon-wrapper, .navbar-vertical.navbar-expand-xxl.navbar-inverted .toggle-icon-wrapper { + margin-left: 0.25rem; + margin-right: 1.5rem; + } + .navbar-vertical.navbar-expand-xxl.navbar-card .navbar-collapse, + .navbar-vertical.navbar-expand-xxl.navbar-card .navbar-vertical-content, .navbar-vertical.navbar-expand-xxl.navbar-vibrant .navbar-collapse, + .navbar-vertical.navbar-expand-xxl.navbar-vibrant .navbar-vertical-content, .navbar-vertical.navbar-expand-xxl.navbar-inverted .navbar-collapse, + .navbar-vertical.navbar-expand-xxl.navbar-inverted .navbar-vertical-content { + width: 14.625rem !important; + } + .navbar-vertical.navbar-expand-xxl.navbar-card + .content, .navbar-vertical.navbar-expand-xxl.navbar-vibrant + .content, .navbar-vertical.navbar-expand-xxl.navbar-inverted + .content { + margin-left: 15.625rem; + } + .navbar-vertical.navbar-expand-xxl + .content { + margin-left: 15.625rem; + } + .navbar-vertical.navbar-expand-xxl + .content .navbar-top { + position: sticky; + top: 0; + } + .navbar-vertical.navbar-expand-xxl + .content .navbar-top .navbar-toggler, + .navbar-vertical.navbar-expand-xxl + .content .navbar-top .navbar-brand { + display: none; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl { + z-index: 1030; + width: 3.125rem; + height: 100vh; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl .navbar-collapse { + width: 3.125rem !important; + margin-left: -1rem; + overflow: hidden; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl .navbar-vertical-content { + padding-right: 1rem; + padding-left: 1rem; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl .navbar-vertical-label { + display: none; + transition: all 0.5s ease; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl .dropdown-indicator:after, + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl .nav-link-text, + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl .settings { + opacity: 0; + transition: all 0.5s ease; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl .navbar-toggle-icon { + padding-right: 0.3125rem; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl .navbar-toggle-icon:after { + width: 75%; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl .navbar-toggle-icon:before { + width: 50%; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl + .content { + margin-left: 3.125rem; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl + .content .navbar-top { + padding-left: 13.5rem; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl.navbar-card, .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl.navbar-vibrant, .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl.navbar-inverted { + width: 4.125rem; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl.navbar-card .navbar-collapse, .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl.navbar-vibrant .navbar-collapse, .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl.navbar-inverted .navbar-collapse { + width: 4.125rem; + margin-left: 0; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl.navbar-card + .content, .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl.navbar-vibrant + .content, .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl.navbar-inverted + .content { + margin-left: 4.125rem; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl.navbar-card + .content .navbar-top, .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl.navbar-vibrant + .content .navbar-top, .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl.navbar-inverted + .content .navbar-top { + padding-left: 12.5rem; + } + .navbar-vertical-collapsed:not(.navbar-vertical-collapsed-hover) .navbar-vertical.navbar-expand-xxl .navbar-collapse, + .navbar-vertical-collapsed:not(.navbar-vertical-collapsed-hover) .navbar-vertical.navbar-expand-xxl .nav.collapse.show, + .navbar-vertical-collapsed:not(.navbar-vertical-collapsed-hover) .navbar-vertical.navbar-expand-xxl .nav-link .badge, + .navbar-vertical-collapsed:not(.navbar-vertical-collapsed-hover) .navbar-vertical.navbar-expand-xxl .settings, + .navbar-vertical-collapsed:not(.navbar-vertical-collapsed-hover) .navbar-vertical.navbar-expand-xxl .nav-link-text { + display: none; + } + .navbar-vertical-collapsed:not(.navbar-vertical-collapsed-hover) .navbar-vertical.navbar-expand-xxl .navbar-vertical-divider { + max-width: 2rem; + } + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-xxl { + width: 12.625rem; + } + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-xxl .navbar-collapse { + width: 12.625rem !important; + } + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-xxl .navbar-collapse { + box-shadow: 0.625rem 0 0.625rem -0.5625rem rgba(0, 0, 0, 0.2); + } + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-xxl .dropdown-indicator:after, + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-xxl .nav-link-text, + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-xxl .settings { + opacity: 1; + padding-right: 0; + } + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-xxl .navbar-vertical-label { + display: block; + } + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-xxl.navbar-card, .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-xxl.navbar-vibrant, .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-xxl.navbar-inverted { + width: 14.625rem; + } + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-xxl.navbar-card .navbar-collapse, + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-xxl.navbar-card .navbar-vertical-content, .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-xxl.navbar-vibrant .navbar-collapse, + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-xxl.navbar-vibrant .navbar-vertical-content, .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-xxl.navbar-inverted .navbar-collapse, + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-xxl.navbar-inverted .navbar-vertical-content { + width: 14.625rem !important; + } +} +@media (min-width: 1200px) { + .navbar-vertical.navbar-expand-xl { + max-width: 12.625rem; + top: 0; + height: 100vh; + margin: 0; + } + .navbar-vertical.navbar-expand-xl .nav-link { + padding: 0.35rem 0; + } + .navbar-vertical.navbar-expand-xl .navbar-brand { + display: block; + text-align: center; + } + .navbar-vertical.navbar-expand-xl .navbar-collapse { + margin-top: -0.25rem; + transition: width 0.2s ease; + transition-property: width, box-shadow; + display: inline-block !important; + width: 12.625rem; + } + .navbar-vertical.navbar-expand-xl .navbar-vertical-content { + width: 12.625rem; + height: calc(100vh - var(--falcon-top-nav-height)); + padding: 0.5rem 0 0 0; + } + .navbar-vertical.navbar-expand-xl .navbar-vertical-toggle { + display: flex; + } + .navbar-vertical.navbar-expand-xl.navbar-card, .navbar-vertical.navbar-expand-xl.navbar-vibrant, .navbar-vertical.navbar-expand-xl.navbar-inverted { + padding: 0; + max-width: 14.625rem !important; + } + .navbar-vertical.navbar-expand-xl.navbar-card .navbar-vertical-content, .navbar-vertical.navbar-expand-xl.navbar-vibrant .navbar-vertical-content, .navbar-vertical.navbar-expand-xl.navbar-inverted .navbar-vertical-content { + padding: 0.5rem 0.625rem 0 1rem !important; + } + .navbar-vertical.navbar-expand-xl.navbar-card .toggle-icon-wrapper, .navbar-vertical.navbar-expand-xl.navbar-vibrant .toggle-icon-wrapper, .navbar-vertical.navbar-expand-xl.navbar-inverted .toggle-icon-wrapper { + margin-left: 0.25rem; + margin-right: 1.5rem; + } + .navbar-vertical.navbar-expand-xl.navbar-card .navbar-collapse, + .navbar-vertical.navbar-expand-xl.navbar-card .navbar-vertical-content, .navbar-vertical.navbar-expand-xl.navbar-vibrant .navbar-collapse, + .navbar-vertical.navbar-expand-xl.navbar-vibrant .navbar-vertical-content, .navbar-vertical.navbar-expand-xl.navbar-inverted .navbar-collapse, + .navbar-vertical.navbar-expand-xl.navbar-inverted .navbar-vertical-content { + width: 14.625rem !important; + } + .navbar-vertical.navbar-expand-xl.navbar-card + .content, .navbar-vertical.navbar-expand-xl.navbar-vibrant + .content, .navbar-vertical.navbar-expand-xl.navbar-inverted + .content { + margin-left: 15.625rem; + } + .navbar-vertical.navbar-expand-xl + .content { + margin-left: 15.625rem; + } + .navbar-vertical.navbar-expand-xl + .content .navbar-top { + position: sticky; + top: 0; + } + .navbar-vertical.navbar-expand-xl + .content .navbar-top .navbar-toggler, + .navbar-vertical.navbar-expand-xl + .content .navbar-top .navbar-brand { + display: none; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl { + z-index: 1030; + width: 3.125rem; + height: 100vh; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl .navbar-collapse { + width: 3.125rem !important; + margin-left: -1rem; + overflow: hidden; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl .navbar-vertical-content { + padding-right: 1rem; + padding-left: 1rem; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl .navbar-vertical-label { + display: none; + transition: all 0.5s ease; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl .dropdown-indicator:after, + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl .nav-link-text, + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl .settings { + opacity: 0; + transition: all 0.5s ease; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl .navbar-toggle-icon { + padding-right: 0.3125rem; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl .navbar-toggle-icon:after { + width: 75%; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl .navbar-toggle-icon:before { + width: 50%; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl + .content { + margin-left: 3.125rem; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl + .content .navbar-top { + padding-left: 13.5rem; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl.navbar-card, .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl.navbar-vibrant, .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl.navbar-inverted { + width: 4.125rem; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl.navbar-card .navbar-collapse, .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl.navbar-vibrant .navbar-collapse, .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl.navbar-inverted .navbar-collapse { + width: 4.125rem; + margin-left: 0; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl.navbar-card + .content, .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl.navbar-vibrant + .content, .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl.navbar-inverted + .content { + margin-left: 4.125rem; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl.navbar-card + .content .navbar-top, .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl.navbar-vibrant + .content .navbar-top, .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl.navbar-inverted + .content .navbar-top { + padding-left: 12.5rem; + } + .navbar-vertical-collapsed:not(.navbar-vertical-collapsed-hover) .navbar-vertical.navbar-expand-xl .navbar-collapse, + .navbar-vertical-collapsed:not(.navbar-vertical-collapsed-hover) .navbar-vertical.navbar-expand-xl .nav.collapse.show, + .navbar-vertical-collapsed:not(.navbar-vertical-collapsed-hover) .navbar-vertical.navbar-expand-xl .nav-link .badge, + .navbar-vertical-collapsed:not(.navbar-vertical-collapsed-hover) .navbar-vertical.navbar-expand-xl .settings, + .navbar-vertical-collapsed:not(.navbar-vertical-collapsed-hover) .navbar-vertical.navbar-expand-xl .nav-link-text { + display: none; + } + .navbar-vertical-collapsed:not(.navbar-vertical-collapsed-hover) .navbar-vertical.navbar-expand-xl .navbar-vertical-divider { + max-width: 2rem; + } + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-xl { + width: 12.625rem; + } + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-xl .navbar-collapse { + width: 12.625rem !important; + } + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-xl .navbar-collapse { + box-shadow: 0.625rem 0 0.625rem -0.5625rem rgba(0, 0, 0, 0.2); + } + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-xl .dropdown-indicator:after, + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-xl .nav-link-text, + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-xl .settings { + opacity: 1; + padding-right: 0; + } + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-xl .navbar-vertical-label { + display: block; + } + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-xl.navbar-card, .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-xl.navbar-vibrant, .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-xl.navbar-inverted { + width: 14.625rem; + } + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-xl.navbar-card .navbar-collapse, + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-xl.navbar-card .navbar-vertical-content, .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-xl.navbar-vibrant .navbar-collapse, + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-xl.navbar-vibrant .navbar-vertical-content, .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-xl.navbar-inverted .navbar-collapse, + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-xl.navbar-inverted .navbar-vertical-content { + width: 14.625rem !important; + } +} +@media (min-width: 992px) { + .navbar-vertical.navbar-expand-lg { + max-width: 12.625rem; + top: 0; + height: 100vh; + margin: 0; + } + .navbar-vertical.navbar-expand-lg .nav-link { + padding: 0.35rem 0; + } + .navbar-vertical.navbar-expand-lg .navbar-brand { + display: block; + text-align: center; + } + .navbar-vertical.navbar-expand-lg .navbar-collapse { + margin-top: -0.25rem; + transition: width 0.2s ease; + transition-property: width, box-shadow; + display: inline-block !important; + width: 12.625rem; + } + .navbar-vertical.navbar-expand-lg .navbar-vertical-content { + width: 12.625rem; + height: calc(100vh - var(--falcon-top-nav-height)); + padding: 0.5rem 0 0 0; + } + .navbar-vertical.navbar-expand-lg .navbar-vertical-toggle { + display: flex; + } + .navbar-vertical.navbar-expand-lg.navbar-card, .navbar-vertical.navbar-expand-lg.navbar-vibrant, .navbar-vertical.navbar-expand-lg.navbar-inverted { + padding: 0; + max-width: 14.625rem !important; + } + .navbar-vertical.navbar-expand-lg.navbar-card .navbar-vertical-content, .navbar-vertical.navbar-expand-lg.navbar-vibrant .navbar-vertical-content, .navbar-vertical.navbar-expand-lg.navbar-inverted .navbar-vertical-content { + padding: 0.5rem 0.625rem 0 1rem !important; + } + .navbar-vertical.navbar-expand-lg.navbar-card .toggle-icon-wrapper, .navbar-vertical.navbar-expand-lg.navbar-vibrant .toggle-icon-wrapper, .navbar-vertical.navbar-expand-lg.navbar-inverted .toggle-icon-wrapper { + margin-left: 0.25rem; + margin-right: 1.5rem; + } + .navbar-vertical.navbar-expand-lg.navbar-card .navbar-collapse, + .navbar-vertical.navbar-expand-lg.navbar-card .navbar-vertical-content, .navbar-vertical.navbar-expand-lg.navbar-vibrant .navbar-collapse, + .navbar-vertical.navbar-expand-lg.navbar-vibrant .navbar-vertical-content, .navbar-vertical.navbar-expand-lg.navbar-inverted .navbar-collapse, + .navbar-vertical.navbar-expand-lg.navbar-inverted .navbar-vertical-content { + width: 14.625rem !important; + } + .navbar-vertical.navbar-expand-lg.navbar-card + .content, .navbar-vertical.navbar-expand-lg.navbar-vibrant + .content, .navbar-vertical.navbar-expand-lg.navbar-inverted + .content { + margin-left: 15.625rem; + } + .navbar-vertical.navbar-expand-lg + .content { + margin-left: 15.625rem; + } + .navbar-vertical.navbar-expand-lg + .content .navbar-top { + position: sticky; + top: 0; + } + .navbar-vertical.navbar-expand-lg + .content .navbar-top .navbar-toggler, + .navbar-vertical.navbar-expand-lg + .content .navbar-top .navbar-brand { + display: none; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg { + z-index: 1030; + width: 3.125rem; + height: 100vh; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg .navbar-collapse { + width: 3.125rem !important; + margin-left: -1rem; + overflow: hidden; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg .navbar-vertical-content { + padding-right: 1rem; + padding-left: 1rem; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg .navbar-vertical-label { + display: none; + transition: all 0.5s ease; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg .dropdown-indicator:after, + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg .nav-link-text, + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg .settings { + opacity: 0; + transition: all 0.5s ease; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg .navbar-toggle-icon { + padding-right: 0.3125rem; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg .navbar-toggle-icon:after { + width: 75%; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg .navbar-toggle-icon:before { + width: 50%; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg + .content { + margin-left: 3.125rem; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg + .content .navbar-top { + padding-left: 13.5rem; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg.navbar-card, .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg.navbar-vibrant, .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg.navbar-inverted { + width: 4.125rem; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg.navbar-card .navbar-collapse, .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg.navbar-vibrant .navbar-collapse, .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg.navbar-inverted .navbar-collapse { + width: 4.125rem; + margin-left: 0; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg.navbar-card + .content, .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg.navbar-vibrant + .content, .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg.navbar-inverted + .content { + margin-left: 4.125rem; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg.navbar-card + .content .navbar-top, .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg.navbar-vibrant + .content .navbar-top, .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg.navbar-inverted + .content .navbar-top { + padding-left: 12.5rem; + } + .navbar-vertical-collapsed:not(.navbar-vertical-collapsed-hover) .navbar-vertical.navbar-expand-lg .navbar-collapse, + .navbar-vertical-collapsed:not(.navbar-vertical-collapsed-hover) .navbar-vertical.navbar-expand-lg .nav.collapse.show, + .navbar-vertical-collapsed:not(.navbar-vertical-collapsed-hover) .navbar-vertical.navbar-expand-lg .nav-link .badge, + .navbar-vertical-collapsed:not(.navbar-vertical-collapsed-hover) .navbar-vertical.navbar-expand-lg .settings, + .navbar-vertical-collapsed:not(.navbar-vertical-collapsed-hover) .navbar-vertical.navbar-expand-lg .nav-link-text { + display: none; + } + .navbar-vertical-collapsed:not(.navbar-vertical-collapsed-hover) .navbar-vertical.navbar-expand-lg .navbar-vertical-divider { + max-width: 2rem; + } + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-lg { + width: 12.625rem; + } + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-lg .navbar-collapse { + width: 12.625rem !important; + } + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-lg .navbar-collapse { + box-shadow: 0.625rem 0 0.625rem -0.5625rem rgba(0, 0, 0, 0.2); + } + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-lg .dropdown-indicator:after, + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-lg .nav-link-text, + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-lg .settings { + opacity: 1; + padding-right: 0; + } + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-lg .navbar-vertical-label { + display: block; + } + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-lg.navbar-card, .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-lg.navbar-vibrant, .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-lg.navbar-inverted { + width: 14.625rem; + } + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-lg.navbar-card .navbar-collapse, + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-lg.navbar-card .navbar-vertical-content, .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-lg.navbar-vibrant .navbar-collapse, + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-lg.navbar-vibrant .navbar-vertical-content, .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-lg.navbar-inverted .navbar-collapse, + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-lg.navbar-inverted .navbar-vertical-content { + width: 14.625rem !important; + } +} +@media (min-width: 768px) { + .navbar-vertical.navbar-expand-md { + max-width: 12.625rem; + top: 0; + height: 100vh; + margin: 0; + } + .navbar-vertical.navbar-expand-md .nav-link { + padding: 0.35rem 0; + } + .navbar-vertical.navbar-expand-md .navbar-brand { + display: block; + text-align: center; + } + .navbar-vertical.navbar-expand-md .navbar-collapse { + margin-top: -0.25rem; + transition: width 0.2s ease; + transition-property: width, box-shadow; + display: inline-block !important; + width: 12.625rem; + } + .navbar-vertical.navbar-expand-md .navbar-vertical-content { + width: 12.625rem; + height: calc(100vh - var(--falcon-top-nav-height)); + padding: 0.5rem 0 0 0; + } + .navbar-vertical.navbar-expand-md .navbar-vertical-toggle { + display: flex; + } + .navbar-vertical.navbar-expand-md.navbar-card, .navbar-vertical.navbar-expand-md.navbar-vibrant, .navbar-vertical.navbar-expand-md.navbar-inverted { + padding: 0; + max-width: 14.625rem !important; + } + .navbar-vertical.navbar-expand-md.navbar-card .navbar-vertical-content, .navbar-vertical.navbar-expand-md.navbar-vibrant .navbar-vertical-content, .navbar-vertical.navbar-expand-md.navbar-inverted .navbar-vertical-content { + padding: 0.5rem 0.625rem 0 1rem !important; + } + .navbar-vertical.navbar-expand-md.navbar-card .toggle-icon-wrapper, .navbar-vertical.navbar-expand-md.navbar-vibrant .toggle-icon-wrapper, .navbar-vertical.navbar-expand-md.navbar-inverted .toggle-icon-wrapper { + margin-left: 0.25rem; + margin-right: 1.5rem; + } + .navbar-vertical.navbar-expand-md.navbar-card .navbar-collapse, + .navbar-vertical.navbar-expand-md.navbar-card .navbar-vertical-content, .navbar-vertical.navbar-expand-md.navbar-vibrant .navbar-collapse, + .navbar-vertical.navbar-expand-md.navbar-vibrant .navbar-vertical-content, .navbar-vertical.navbar-expand-md.navbar-inverted .navbar-collapse, + .navbar-vertical.navbar-expand-md.navbar-inverted .navbar-vertical-content { + width: 14.625rem !important; + } + .navbar-vertical.navbar-expand-md.navbar-card + .content, .navbar-vertical.navbar-expand-md.navbar-vibrant + .content, .navbar-vertical.navbar-expand-md.navbar-inverted + .content { + margin-left: 15.625rem; + } + .navbar-vertical.navbar-expand-md + .content { + margin-left: 15.625rem; + } + .navbar-vertical.navbar-expand-md + .content .navbar-top { + position: sticky; + top: 0; + } + .navbar-vertical.navbar-expand-md + .content .navbar-top .navbar-toggler, + .navbar-vertical.navbar-expand-md + .content .navbar-top .navbar-brand { + display: none; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md { + z-index: 1030; + width: 3.125rem; + height: 100vh; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md .navbar-collapse { + width: 3.125rem !important; + margin-left: -1rem; + overflow: hidden; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md .navbar-vertical-content { + padding-right: 1rem; + padding-left: 1rem; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md .navbar-vertical-label { + display: none; + transition: all 0.5s ease; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md .dropdown-indicator:after, + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md .nav-link-text, + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md .settings { + opacity: 0; + transition: all 0.5s ease; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md .navbar-toggle-icon { + padding-right: 0.3125rem; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md .navbar-toggle-icon:after { + width: 75%; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md .navbar-toggle-icon:before { + width: 50%; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md + .content { + margin-left: 3.125rem; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md + .content .navbar-top { + padding-left: 13.5rem; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md.navbar-card, .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md.navbar-vibrant, .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md.navbar-inverted { + width: 4.125rem; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md.navbar-card .navbar-collapse, .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md.navbar-vibrant .navbar-collapse, .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md.navbar-inverted .navbar-collapse { + width: 4.125rem; + margin-left: 0; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md.navbar-card + .content, .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md.navbar-vibrant + .content, .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md.navbar-inverted + .content { + margin-left: 4.125rem; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md.navbar-card + .content .navbar-top, .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md.navbar-vibrant + .content .navbar-top, .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md.navbar-inverted + .content .navbar-top { + padding-left: 12.5rem; + } + .navbar-vertical-collapsed:not(.navbar-vertical-collapsed-hover) .navbar-vertical.navbar-expand-md .navbar-collapse, + .navbar-vertical-collapsed:not(.navbar-vertical-collapsed-hover) .navbar-vertical.navbar-expand-md .nav.collapse.show, + .navbar-vertical-collapsed:not(.navbar-vertical-collapsed-hover) .navbar-vertical.navbar-expand-md .nav-link .badge, + .navbar-vertical-collapsed:not(.navbar-vertical-collapsed-hover) .navbar-vertical.navbar-expand-md .settings, + .navbar-vertical-collapsed:not(.navbar-vertical-collapsed-hover) .navbar-vertical.navbar-expand-md .nav-link-text { + display: none; + } + .navbar-vertical-collapsed:not(.navbar-vertical-collapsed-hover) .navbar-vertical.navbar-expand-md .navbar-vertical-divider { + max-width: 2rem; + } + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-md { + width: 12.625rem; + } + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-md .navbar-collapse { + width: 12.625rem !important; + } + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-md .navbar-collapse { + box-shadow: 0.625rem 0 0.625rem -0.5625rem rgba(0, 0, 0, 0.2); + } + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-md .dropdown-indicator:after, + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-md .nav-link-text, + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-md .settings { + opacity: 1; + padding-right: 0; + } + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-md .navbar-vertical-label { + display: block; + } + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-md.navbar-card, .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-md.navbar-vibrant, .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-md.navbar-inverted { + width: 14.625rem; + } + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-md.navbar-card .navbar-collapse, + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-md.navbar-card .navbar-vertical-content, .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-md.navbar-vibrant .navbar-collapse, + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-md.navbar-vibrant .navbar-vertical-content, .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-md.navbar-inverted .navbar-collapse, + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-md.navbar-inverted .navbar-vertical-content { + width: 14.625rem !important; + } +} +@media (min-width: 576px) { + .navbar-vertical.navbar-expand-sm { + max-width: 12.625rem; + top: 0; + height: 100vh; + margin: 0; + } + .navbar-vertical.navbar-expand-sm .nav-link { + padding: 0.35rem 0; + } + .navbar-vertical.navbar-expand-sm .navbar-brand { + display: block; + text-align: center; + } + .navbar-vertical.navbar-expand-sm .navbar-collapse { + margin-top: -0.25rem; + transition: width 0.2s ease; + transition-property: width, box-shadow; + display: inline-block !important; + width: 12.625rem; + } + .navbar-vertical.navbar-expand-sm .navbar-vertical-content { + width: 12.625rem; + height: calc(100vh - var(--falcon-top-nav-height)); + padding: 0.5rem 0 0 0; + } + .navbar-vertical.navbar-expand-sm .navbar-vertical-toggle { + display: flex; + } + .navbar-vertical.navbar-expand-sm.navbar-card, .navbar-vertical.navbar-expand-sm.navbar-vibrant, .navbar-vertical.navbar-expand-sm.navbar-inverted { + padding: 0; + max-width: 14.625rem !important; + } + .navbar-vertical.navbar-expand-sm.navbar-card .navbar-vertical-content, .navbar-vertical.navbar-expand-sm.navbar-vibrant .navbar-vertical-content, .navbar-vertical.navbar-expand-sm.navbar-inverted .navbar-vertical-content { + padding: 0.5rem 0.625rem 0 1rem !important; + } + .navbar-vertical.navbar-expand-sm.navbar-card .toggle-icon-wrapper, .navbar-vertical.navbar-expand-sm.navbar-vibrant .toggle-icon-wrapper, .navbar-vertical.navbar-expand-sm.navbar-inverted .toggle-icon-wrapper { + margin-left: 0.25rem; + margin-right: 1.5rem; + } + .navbar-vertical.navbar-expand-sm.navbar-card .navbar-collapse, + .navbar-vertical.navbar-expand-sm.navbar-card .navbar-vertical-content, .navbar-vertical.navbar-expand-sm.navbar-vibrant .navbar-collapse, + .navbar-vertical.navbar-expand-sm.navbar-vibrant .navbar-vertical-content, .navbar-vertical.navbar-expand-sm.navbar-inverted .navbar-collapse, + .navbar-vertical.navbar-expand-sm.navbar-inverted .navbar-vertical-content { + width: 14.625rem !important; + } + .navbar-vertical.navbar-expand-sm.navbar-card + .content, .navbar-vertical.navbar-expand-sm.navbar-vibrant + .content, .navbar-vertical.navbar-expand-sm.navbar-inverted + .content { + margin-left: 15.625rem; + } + .navbar-vertical.navbar-expand-sm + .content { + margin-left: 15.625rem; + } + .navbar-vertical.navbar-expand-sm + .content .navbar-top { + position: sticky; + top: 0; + } + .navbar-vertical.navbar-expand-sm + .content .navbar-top .navbar-toggler, + .navbar-vertical.navbar-expand-sm + .content .navbar-top .navbar-brand { + display: none; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm { + z-index: 1030; + width: 3.125rem; + height: 100vh; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm .navbar-collapse { + width: 3.125rem !important; + margin-left: -1rem; + overflow: hidden; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm .navbar-vertical-content { + padding-right: 1rem; + padding-left: 1rem; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm .navbar-vertical-label { + display: none; + transition: all 0.5s ease; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm .dropdown-indicator:after, + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm .nav-link-text, + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm .settings { + opacity: 0; + transition: all 0.5s ease; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm .navbar-toggle-icon { + padding-right: 0.3125rem; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm .navbar-toggle-icon:after { + width: 75%; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm .navbar-toggle-icon:before { + width: 50%; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm + .content { + margin-left: 3.125rem; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm + .content .navbar-top { + padding-left: 13.5rem; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm.navbar-card, .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm.navbar-vibrant, .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm.navbar-inverted { + width: 4.125rem; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm.navbar-card .navbar-collapse, .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm.navbar-vibrant .navbar-collapse, .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm.navbar-inverted .navbar-collapse { + width: 4.125rem; + margin-left: 0; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm.navbar-card + .content, .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm.navbar-vibrant + .content, .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm.navbar-inverted + .content { + margin-left: 4.125rem; + } + .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm.navbar-card + .content .navbar-top, .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm.navbar-vibrant + .content .navbar-top, .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm.navbar-inverted + .content .navbar-top { + padding-left: 12.5rem; + } + .navbar-vertical-collapsed:not(.navbar-vertical-collapsed-hover) .navbar-vertical.navbar-expand-sm .navbar-collapse, + .navbar-vertical-collapsed:not(.navbar-vertical-collapsed-hover) .navbar-vertical.navbar-expand-sm .nav.collapse.show, + .navbar-vertical-collapsed:not(.navbar-vertical-collapsed-hover) .navbar-vertical.navbar-expand-sm .nav-link .badge, + .navbar-vertical-collapsed:not(.navbar-vertical-collapsed-hover) .navbar-vertical.navbar-expand-sm .settings, + .navbar-vertical-collapsed:not(.navbar-vertical-collapsed-hover) .navbar-vertical.navbar-expand-sm .nav-link-text { + display: none; + } + .navbar-vertical-collapsed:not(.navbar-vertical-collapsed-hover) .navbar-vertical.navbar-expand-sm .navbar-vertical-divider { + max-width: 2rem; + } + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-sm { + width: 12.625rem; + } + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-sm .navbar-collapse { + width: 12.625rem !important; + } + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-sm .navbar-collapse { + box-shadow: 0.625rem 0 0.625rem -0.5625rem rgba(0, 0, 0, 0.2); + } + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-sm .dropdown-indicator:after, + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-sm .nav-link-text, + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-sm .settings { + opacity: 1; + padding-right: 0; + } + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-sm .navbar-vertical-label { + display: block; + } + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-sm.navbar-card, .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-sm.navbar-vibrant, .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-sm.navbar-inverted { + width: 14.625rem; + } + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-sm.navbar-card .navbar-collapse, + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-sm.navbar-card .navbar-vertical-content, .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-sm.navbar-vibrant .navbar-collapse, + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-sm.navbar-vibrant .navbar-vertical-content, .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-sm.navbar-inverted .navbar-collapse, + .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-sm.navbar-inverted .navbar-vertical-content { + width: 14.625rem !important; + } +} +.navbar-vertical.navbar-expand-xs { + max-width: 12.625rem; + top: 0; + height: 100vh; + margin: 0; +} +.navbar-vertical.navbar-expand-xs .nav-link { + padding: 0.35rem 0; +} +.navbar-vertical.navbar-expand-xs .navbar-brand { + display: block; + text-align: center; +} +.navbar-vertical.navbar-expand-xs .navbar-collapse { + margin-top: -0.25rem; + transition: width 0.2s ease; + transition-property: width, box-shadow; + display: inline-block !important; + width: 12.625rem; +} +.navbar-vertical.navbar-expand-xs .navbar-vertical-content { + width: 12.625rem; + height: calc(100vh - var(--falcon-top-nav-height)); + padding: 0.5rem 0 0 0; +} +.navbar-vertical.navbar-expand-xs .navbar-vertical-toggle { + display: flex; +} +.navbar-vertical.navbar-expand-xs.navbar-card, .navbar-vertical.navbar-expand-xs.navbar-vibrant, .navbar-vertical.navbar-expand-xs.navbar-inverted { + padding: 0; + max-width: 14.625rem !important; +} +.navbar-vertical.navbar-expand-xs.navbar-card .navbar-vertical-content, .navbar-vertical.navbar-expand-xs.navbar-vibrant .navbar-vertical-content, .navbar-vertical.navbar-expand-xs.navbar-inverted .navbar-vertical-content { + padding: 0.5rem 0.625rem 0 1rem !important; +} +.navbar-vertical.navbar-expand-xs.navbar-card .toggle-icon-wrapper, .navbar-vertical.navbar-expand-xs.navbar-vibrant .toggle-icon-wrapper, .navbar-vertical.navbar-expand-xs.navbar-inverted .toggle-icon-wrapper { + margin-left: 0.25rem; + margin-right: 1.5rem; +} +.navbar-vertical.navbar-expand-xs.navbar-card .navbar-collapse, +.navbar-vertical.navbar-expand-xs.navbar-card .navbar-vertical-content, .navbar-vertical.navbar-expand-xs.navbar-vibrant .navbar-collapse, +.navbar-vertical.navbar-expand-xs.navbar-vibrant .navbar-vertical-content, .navbar-vertical.navbar-expand-xs.navbar-inverted .navbar-collapse, +.navbar-vertical.navbar-expand-xs.navbar-inverted .navbar-vertical-content { + width: 14.625rem !important; +} +.navbar-vertical.navbar-expand-xs.navbar-card + .content, .navbar-vertical.navbar-expand-xs.navbar-vibrant + .content, .navbar-vertical.navbar-expand-xs.navbar-inverted + .content { + margin-left: 15.625rem; +} +.navbar-vertical.navbar-expand-xs + .content { + margin-left: 15.625rem; +} +.navbar-vertical.navbar-expand-xs + .content .navbar-top { + position: sticky; + top: 0; +} +.navbar-vertical.navbar-expand-xs + .content .navbar-top .navbar-toggler, +.navbar-vertical.navbar-expand-xs + .content .navbar-top .navbar-brand { + display: none; +} + +.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs { + z-index: 1030; + width: 3.125rem; + height: 100vh; +} +.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs .navbar-collapse { + width: 3.125rem !important; + margin-left: -1rem; + overflow: hidden; +} +.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs .navbar-vertical-content { + padding-right: 1rem; + padding-left: 1rem; +} +.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs .navbar-vertical-label { + display: none; + transition: all 0.5s ease; +} +.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs .dropdown-indicator:after, +.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs .nav-link-text, +.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs .settings { + opacity: 0; + transition: all 0.5s ease; +} +.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs .navbar-toggle-icon { + padding-right: 0.3125rem; +} +.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs .navbar-toggle-icon:after { + width: 75%; +} +.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs .navbar-toggle-icon:before { + width: 50%; +} +.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs + .content { + margin-left: 3.125rem; +} +.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs + .content .navbar-top { + padding-left: 13.5rem; +} +.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs.navbar-card, .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs.navbar-vibrant, .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs.navbar-inverted { + width: 4.125rem; +} +.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs.navbar-card .navbar-collapse, .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs.navbar-vibrant .navbar-collapse, .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs.navbar-inverted .navbar-collapse { + width: 4.125rem; + margin-left: 0; +} +.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs.navbar-card + .content, .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs.navbar-vibrant + .content, .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs.navbar-inverted + .content { + margin-left: 4.125rem; +} +.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs.navbar-card + .content .navbar-top, .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs.navbar-vibrant + .content .navbar-top, .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs.navbar-inverted + .content .navbar-top { + padding-left: 12.5rem; +} +.navbar-vertical-collapsed:not(.navbar-vertical-collapsed-hover) .navbar-vertical.navbar-expand-xs .navbar-collapse, +.navbar-vertical-collapsed:not(.navbar-vertical-collapsed-hover) .navbar-vertical.navbar-expand-xs .nav.collapse.show, +.navbar-vertical-collapsed:not(.navbar-vertical-collapsed-hover) .navbar-vertical.navbar-expand-xs .nav-link .badge, +.navbar-vertical-collapsed:not(.navbar-vertical-collapsed-hover) .navbar-vertical.navbar-expand-xs .settings, +.navbar-vertical-collapsed:not(.navbar-vertical-collapsed-hover) .navbar-vertical.navbar-expand-xs .nav-link-text { + display: none; +} +.navbar-vertical-collapsed:not(.navbar-vertical-collapsed-hover) .navbar-vertical.navbar-expand-xs .navbar-vertical-divider { + max-width: 2rem; +} + +.navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-xs { + width: 12.625rem; +} +.navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-xs .navbar-collapse { + width: 12.625rem !important; +} +.navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-xs .navbar-collapse { + box-shadow: 0.625rem 0 0.625rem -0.5625rem rgba(0, 0, 0, 0.2); +} +.navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-xs .dropdown-indicator:after, +.navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-xs .nav-link-text, +.navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-xs .settings { + opacity: 1; + padding-right: 0; +} +.navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-xs .navbar-vertical-label { + display: block; +} +.navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-xs.navbar-card, .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-xs.navbar-vibrant, .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-xs.navbar-inverted { + width: 14.625rem; +} +.navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-xs.navbar-card .navbar-collapse, +.navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-xs.navbar-card .navbar-vertical-content, .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-xs.navbar-vibrant .navbar-collapse, +.navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-xs.navbar-vibrant .navbar-vertical-content, .navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-xs.navbar-inverted .navbar-collapse, +.navbar-vertical-collapsed-hover .navbar-vertical.navbar-expand-xs.navbar-inverted .navbar-vertical-content { + width: 14.625rem !important; +} + +/* -------------------------------------------------------------------------- */ +/* Navbar Top */ +/* -------------------------------------------------------------------------- */ +.navbar-top { + position: sticky; + top: 0; + font-size: 0.8333333333rem; + font-weight: 600; + margin-left: -1rem; + margin-right: -1rem; + z-index: 1020; + background-image: none; + min-height: var(--falcon-top-nav-height); +} +.navbar-top .navbar-nav-icons .dropdown-menu { + position: absolute; +} +.navbar-top .navbar-collapse { + overflow: auto; + max-height: calc(100vh - var(--falcon-top-nav-height)); + margin: 0 -0.75rem; + padding: 0 0.75rem; + flex: 1 0 100%; + order: 1; +} +.navbar-top .navbar-toggler { + margin-left: -0.625rem; +} +.navbar-top[data-navbar-top=combo] .navbar-collapse { + width: auto; +} + +.dropdown-menu-card { + padding: 0; +} +.dropdown-menu-card .card { + border: 0; +} + +.navbar-toggler { + border: 0; + padding: 0; +} + +.navbar-top .navbar-nav:not(.navbar-nav-icons) .dropdown-menu:after, +.navbar-standard .navbar-nav:not(.navbar-nav-icons) .dropdown-menu:after { + display: none; +} + +.settings-popover { + position: relative; + padding: 0; + height: 0.875rem; + width: 0.875rem; + outline: none; +} + +@media (min-width: 576px) { + .navbar-expand-sm.navbar-top .navbar-collapse { + max-height: none; + margin: 0; + padding: 0; + order: 0; + flex: 0 1 auto; + } + .navbar-expand-sm.navbar .max-h-dropdown { + max-height: 75vh; + } + .navbar-expand-sm.navbar-standard .navbar-collapse { + max-height: none; + } + .navbar-expand-sm.navbar-top .navbar-nav:not(.navbar-nav-icons) .dropdown-menu:after, .navbar-expand-sm.navbar-standard .navbar-nav:not(.navbar-nav-icons) .dropdown-menu:after { + display: block; + } + .navbar.navbar-expand-sm:not(.navbar-vertical) .navbar-collapse { + overflow: visible !important; + } +} +@media (min-width: 768px) { + .navbar-expand-md.navbar-top .navbar-collapse { + max-height: none; + margin: 0; + padding: 0; + order: 0; + flex: 0 1 auto; + } + .navbar-expand-md.navbar .max-h-dropdown { + max-height: 75vh; + } + .navbar-expand-md.navbar-standard .navbar-collapse { + max-height: none; + } + .navbar-expand-md.navbar-top .navbar-nav:not(.navbar-nav-icons) .dropdown-menu:after, .navbar-expand-md.navbar-standard .navbar-nav:not(.navbar-nav-icons) .dropdown-menu:after { + display: block; + } + .navbar.navbar-expand-md:not(.navbar-vertical) .navbar-collapse { + overflow: visible !important; + } +} +@media (min-width: 992px) { + .navbar-expand-lg.navbar-top .navbar-collapse { + max-height: none; + margin: 0; + padding: 0; + order: 0; + flex: 0 1 auto; + } + .navbar-expand-lg.navbar .max-h-dropdown { + max-height: 75vh; + } + .navbar-expand-lg.navbar-standard .navbar-collapse { + max-height: none; + } + .navbar-expand-lg.navbar-top .navbar-nav:not(.navbar-nav-icons) .dropdown-menu:after, .navbar-expand-lg.navbar-standard .navbar-nav:not(.navbar-nav-icons) .dropdown-menu:after { + display: block; + } + .navbar.navbar-expand-lg:not(.navbar-vertical) .navbar-collapse { + overflow: visible !important; + } +} +@media (min-width: 1200px) { + .navbar-expand-xl.navbar-top .navbar-collapse { + max-height: none; + margin: 0; + padding: 0; + order: 0; + flex: 0 1 auto; + } + .navbar-expand-xl.navbar .max-h-dropdown { + max-height: 75vh; + } + .navbar-expand-xl.navbar-standard .navbar-collapse { + max-height: none; + } + .navbar-expand-xl.navbar-top .navbar-nav:not(.navbar-nav-icons) .dropdown-menu:after, .navbar-expand-xl.navbar-standard .navbar-nav:not(.navbar-nav-icons) .dropdown-menu:after { + display: block; + } + .navbar.navbar-expand-xl:not(.navbar-vertical) .navbar-collapse { + overflow: visible !important; + } +} +@media (min-width: 1540px) { + .navbar-expand-xxl.navbar-top .navbar-collapse { + max-height: none; + margin: 0; + padding: 0; + order: 0; + flex: 0 1 auto; + } + .navbar-expand-xxl.navbar .max-h-dropdown { + max-height: 75vh; + } + .navbar-expand-xxl.navbar-standard .navbar-collapse { + max-height: none; + } + .navbar-expand-xxl.navbar-top .navbar-nav:not(.navbar-nav-icons) .dropdown-menu:after, .navbar-expand-xxl.navbar-standard .navbar-nav:not(.navbar-nav-icons) .dropdown-menu:after { + display: block; + } + .navbar.navbar-expand-xxl:not(.navbar-vertical) .navbar-collapse { + overflow: visible !important; + } +} +.img-dropdown { + position: absolute; + bottom: 0; + right: 0; +} +html[dir=rtl] .img-dropdown { + transform: scaleX(-1); +} + +@media (min-width: 768px) { + .navbar-card-components { + min-width: 28.8125rem; + } + .navbar-card-auth { + min-width: 21rem; + } + .navbar-card-pages { + min-width: 28rem; + } + .navbar-card-app { + min-width: 32rem; + } +} +@media (min-width: 992px) { + .navbar-card-login { + min-width: 22rem; + } +} +@media (min-width: 1540px) { + .navbar-card-components { + min-width: 53.125rem; + } + .navbar-card-pages { + min-width: 45rem; + } +} +@media (min-width: 1540px) { + .navbar-card-auth { + min-width: 40.625rem; + } +} +.theme-control-toggle .theme-control-toggle-label { + height: 30px; + width: 30px; + display: flex; + align-items: center; + justify-content: center; + background-color: var(--falcon-gray-300); + color: var(--falcon-primary); + border-radius: 50%; + cursor: pointer; + transition: all 0.2s ease-in-out; +} +.theme-control-toggle .theme-control-toggle-label:hover { + background-color: var(--falcon-gray-400); +} +.theme-control-toggle .theme-control-toggle-input { + display: none; +} +.theme-control-toggle .theme-control-toggle-input:checked ~ .theme-control-toggle-dark { + display: none; +} +.theme-control-toggle .theme-control-toggle-input:not(:checked) ~ .theme-control-toggle-light { + display: none; +} + +.theme-switch-toggle .theme-switch-toggle-label { + display: none; +} +.theme-switch-toggle .theme-switch-toggle-label:hover { + color: rgba(255, 255, 255, 0.75); +} +@media (min-width: 992px) { + .theme-switch-toggle .theme-switch-toggle-label { + display: block; + } +} + +.theme-control-dropdown .dropdown-toggle:after { + margin-left: 0.125rem !important; +} +.theme-control-dropdown .dropdown-menu { + --falcon-dropdown-min-width: 8rem; +} +.theme-control-dropdown .dropdown-menu.dropdown-menu-end { + right: 0 !important; +} +.theme-control-dropdown .dropdown-menu .dropdown-item { + padding-left: 0.75rem !important; + padding-right: 0.75rem !important; +} +.theme-control-dropdown .dropdown-menu .dropdown-item.active { + color: var(--falcon-gray-900); + background-color: #edf2f9; +} +.theme-control-dropdown .dropdown-menu .dropdown-item:not(.active) .dropdown-check-icon { + display: none; +} + +.navbar-standard .theme-control-dropdown .dropdown-toggle { + color: #9da9bb !important; +} +@media (max-width: 991.98px) { + .navbar-standard .theme-control-dropdown .dropdown-menu { + margin-top: 0.75rem; + } +} +.navbar-standard .theme-control-dropdown .dropdown-menu .dropdown-item.active, .navbar-standard .theme-control-dropdown .dropdown-menu .dropdown-item:hover { + color: var(--falcon-gray-700); +} +.navbar-standard .theme-control-dropdown .dropdown-menu.dropdown-menu-end { + right: -0.25rem !important; +} +@media (max-width: 991.98px) { + .navbar-standard .theme-control-dropdown .dropdown-menu.dropdown-menu-end { + right: -0.1rem !important; + } +} +.navbar-standard .collapse.show .theme-control-dropdown { + width: 100%; +} + +[data-bs-theme=dark] .dropdown-menu .dropdown-item.active { + background-color: #0b1727; +} + +/*----------------------------------------------- +| Search box +-----------------------------------------------*/ +.search-box { + position: relative; + width: 21rem; + font-size: 0.8333333333rem; +} +.search-box .search-box-icon { + position: absolute; + color: var(--falcon-gray-400); + top: 50%; + left: 0.9rem; + transform: translateY(-48%); +} +.search-box .search-box-close-btn-container { + position: absolute; + right: 14px; + top: 50%; + transform: translateY(-50%); +} +.search-box .search-input { + padding-left: 2rem; + padding-right: 2rem; + line-height: 1.7; + border-radius: 50rem; + box-shadow: none; +} +.search-box .search-input::-webkit-search-cancel-button { + display: none; +} +.search-box .dropdown-menu { + border: 1px solid var(--falcon-border-color); + font-family: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + left: 0; + margin-top: 0.5rem; + padding-top: 0; + padding-bottom: 0; + overflow: hidden; + width: 100%; + position: absolute; +} +.search-box [data-bs-toggle=search]:not(.show) + [data-bs-dismiss=search] { + display: none; +} +.search-box .file-thumbnail { + width: 1.75rem; + height: 1.75rem; +} + +.safari .search-box .search-input { + line-height: 2; +} + +/* -------------------------------------------------------------------------- */ +/* Avatar */ +/* -------------------------------------------------------------------------- */ +.avatar { + position: relative; + display: inline-block; +} +.avatar .avatar-name { + background-color: var(--falcon-avatar-name-bg); + position: absolute; + text-align: center; + color: #fff; + font-weight: bold; + text-transform: uppercase; + display: block; +} +.avatar .avatar-name > span { + position: absolute; + top: 50%; + left: 50%; + transform: translate3d(-50%, -50%, 0); +} +.avatar .avatar-emoji { + height: 100%; + width: 100%; + display: flex; + align-items: center; + justify-content: center; +} +.avatar .avatar-emoji > span { + transform: translateY(2%); + display: inline-block; +} +.avatar img { + display: block; +} +.avatar img, +.avatar .avatar-name { + width: 100%; + height: 100%; +} +.avatar img { + object-fit: cover; +} +.avatar[class*=status-]:before { + content: ""; + position: absolute; + border-radius: 100%; + z-index: 1; +} +.avatar.status-online:before { + background-color: var(--falcon-success); +} +.avatar.status-offline:before { + background-color: var(--falcon-secondary); +} +.avatar.status-away:before { + background-color: var(--falcon-warning); +} +.avatar.status-do-not-disturb:before { + background-color: var(--falcon-danger); +} +.avatar .avatar-button { + background-color: var(--falcon-avatar-button-bg) !important; + transition: all 0.2s ease-in-out; + border: 1px solid var(--falcon-avatar-button-bg); + font-size: 12px; +} +.avatar .avatar-button:hover, .avatar .avatar-button:focus { + background-color: var(--falcon-avatar-button-hover-bg) !important; +} + +.avatar:hover .overlay-icon { + opacity: 1; +} + +.avatar-s { + height: 1.25rem; + width: 1.25rem; +} +.avatar-s .avatar-name { + font-size: 0.4166666667rem; +} +.avatar-s .avatar-emoji { + font-size: 1.25rem; +} +.avatar-s[class*=status-]:before { + border: 1px solid var(--falcon-avatar-status-border-color); + height: 9px; + width: 9px; + right: -1px; + bottom: -1px; +} +.avatar-s .rounded-soft { + border-radius: 0.2083333333rem !important; +} + +.avatar-m { + height: 1.5rem; + width: 1.5rem; +} +.avatar-m .avatar-name { + font-size: 0.5rem; +} +.avatar-m .avatar-emoji { + font-size: 1.5rem; +} +.avatar-m[class*=status-]:before { + border: 1px solid var(--falcon-avatar-status-border-color); + height: 9px; + width: 9px; + right: -1px; + bottom: -1px; +} +.avatar-m .rounded-soft { + border-radius: 0.25rem !important; +} + +.avatar-l { + height: 1.75rem; + width: 1.75rem; +} +.avatar-l .avatar-name { + font-size: 0.5833333333rem; +} +.avatar-l .avatar-emoji { + font-size: 1.75rem; +} +.avatar-l[class*=status-]:before { + border: 1px solid var(--falcon-avatar-status-border-color); + height: 9px; + width: 9px; + right: -1px; + bottom: -1px; +} +.avatar-l .rounded-soft { + border-radius: 0.2916666667rem !important; +} + +.avatar-xl { + height: 2rem; + width: 2rem; +} +.avatar-xl .avatar-name { + font-size: 0.6666666667rem; +} +.avatar-xl .avatar-emoji { + font-size: 2rem; +} +.avatar-xl[class*=status-]:before { + border: 2px solid var(--falcon-avatar-status-border-color); + height: 13px; + width: 13px; + right: -2px; + bottom: -2px; +} +.avatar-xl .rounded-soft { + border-radius: 0.3333333333rem !important; +} + +.avatar-2xl { + height: 2.5rem; + width: 2.5rem; +} +.avatar-2xl .avatar-name { + font-size: 0.8333333333rem; +} +.avatar-2xl .avatar-emoji { + font-size: 2.5rem; +} +.avatar-2xl[class*=status-]:before { + border: 2px solid var(--falcon-avatar-status-border-color); + height: 16px; + width: 16px; + right: -3px; + bottom: -3px; +} +.avatar-2xl .rounded-soft { + border-radius: 0.4166666667rem !important; +} + +.avatar-3xl { + height: 3.5rem; + width: 3.5rem; +} +.avatar-3xl .avatar-name { + font-size: 1.1666666667rem; +} +.avatar-3xl .avatar-emoji { + font-size: 3.5rem; +} +.avatar-3xl[class*=status-]:before { + border: 3px solid var(--falcon-avatar-status-border-color); + height: 18px; + width: 18px; + right: 0; + bottom: 0; +} +.avatar-3xl .rounded-soft { + border-radius: 0.5833333333rem !important; +} + +.avatar-4xl { + height: 6.125rem; + width: 6.125rem; +} +.avatar-4xl .avatar-name { + font-size: 2.0416666667rem; +} +.avatar-4xl .avatar-emoji { + font-size: 6.125rem; +} +.avatar-4xl[class*=status-]:before { + border: 3px solid var(--falcon-avatar-status-border-color); + height: 24px; + width: 24px; + right: 3px; + bottom: 3px; +} +.avatar-4xl .rounded-soft { + border-radius: 1.0208333333rem !important; +} + +.avatar-5xl { + height: 10.5rem; + width: 10.5rem; +} +.avatar-5xl .avatar-name { + font-size: 3.5rem; +} +.avatar-5xl .avatar-emoji { + font-size: 10.5rem; +} +.avatar-5xl[class*=status-]:before { + border: 4px solid var(--falcon-avatar-status-border-color); + height: 32px; + width: 32px; + right: 8px; + bottom: 8px; +} +.avatar-5xl .rounded-soft { + border-radius: 1.75rem !important; +} + +.avatar-group { + display: flex; + flex-wrap: nowrap; +} +.avatar-group .avatar-s:not(:first-child), +.avatar-group .avatar-m:not(:first-child), +.avatar-group .avatar-l:not(:first-child), +.avatar-group .avatar-xl:not(:first-child), +.avatar-group .avatar-2xl:not(:first-child) { + margin-left: -0.5rem; +} +.avatar-group .avatar-3xl:not(:first-child) { + margin-left: -1rem; +} +.avatar-group .avatar-4xl:not(:first-child) { + margin-left: -1.8rem; +} +.avatar-group .avatar-5xl:not(:first-child) { + margin-left: -3rem; +} +.avatar-group-dense .avatar-s:not(:first-child) { + margin-left: -0.6rem; +} +.avatar-group-dense .avatar-m:not(:first-child) { + margin-left: -0.8rem; +} +.avatar-group-dense .avatar-l:not(:first-child), +.avatar-group-dense .avatar-xl:not(:first-child), +.avatar-group-dense .avatar-2xl:not(:first-child) { + margin-left: -1rem; +} +.avatar-group-dense .avatar-3xl:not(:first-child) { + margin-left: -1.8rem; +} +.avatar-group-dense .avatar-4xl:not(:first-child) { + margin-left: -3.3rem; +} +.avatar-group-dense .avatar-5xl:not(:first-child) { + margin-left: -6rem; +} + +/*----------------------------------------------- +| Notification +-----------------------------------------------*/ +.notification { + color: var(--falcon-gray-1000); + text-decoration: none; + background-color: var(--falcon-notification-bg); + display: flex; + font-size: 0.8333333333rem; + font-family: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + transition: all 0.2s ease-in-out; +} +.notification:not(.notification-flush) { + border: 1px solid var(--falcon-border-color); + box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075); + border-radius: 0.375rem; + padding: 1rem; +} +.notification:hover, .notification:focus { + color: var(--falcon-gray-1100); + text-decoration: none; +} + +.notification-body { + margin-bottom: 0.25rem; +} + +.notification-time { + margin-bottom: 0; + color: var(--falcon-gray-600); + font-size: 0.8333333333rem; +} + +.notification-unread { + background-color: var(--falcon-notification-unread-bg) !important; +} +.notification-unread:hover, .notification-unread:focus { + background-color: var(--falcon-notification-unread-hover-bg) !important; +} + +.notification-indicator { + position: relative; +} +.notification-indicator::before { + position: absolute; + content: ""; + right: 0.125rem; + top: 0.5rem; + height: 1rem; + width: 1rem; + border-radius: 50%; + border: 2px solid var(--falcon-notification-indicator-border-color); +} +.notification-indicator-number { + display: flex; + align-items: center; + justify-content: center; + position: absolute; + right: 0.125rem; + top: 0.505rem; + height: 1rem; + width: 1rem; + font-size: 0.67rem; + color: #fff; + font-weight: 700; +} +.notification-indicator-primary::before { + background-color: var(--falcon-primary); +} +.notification-indicator-secondary::before { + background-color: var(--falcon-secondary); +} +.notification-indicator-success::before { + background-color: var(--falcon-success); +} +.notification-indicator-info::before { + background-color: var(--falcon-info); +} +.notification-indicator-warning::before { + background-color: var(--falcon-warning); +} +.notification-indicator-danger::before { + background-color: var(--falcon-danger); +} +.notification-indicator-light::before { + background-color: var(--falcon-light); +} +.notification-indicator-dark::before { + background-color: var(--falcon-dark); +} +.notification-indicator-fill::before { + border: 0; +} + +.dropdown-menu-notification { + min-width: 16rem; + max-width: 5rem; +} +.dropdown-menu-notification .card-header, +.dropdown-menu-notification .card-footer { + padding-top: 0.5rem; + padding-bottom: 0.5rem; +} +.dropdown-menu-notification .list-group-flush .list-group-item { + padding: 0; +} +.dropdown-menu-notification .list-group-flush .list-group-item .notification-flush { + padding: 0.5rem 1rem; +} +.dropdown-menu-notification .list-group-flush .list-group-title { + background-color: var(--falcon-notification-title-bg); + font-weight: 600; + font-size: 0.6944444444rem; + color: var(--falcon-gray-600); + padding: 0.25rem 1.25rem; +} +@media (min-width: 576px) { + .dropdown-menu-notification { + min-width: 20rem; + } +} + +/*----------------------------------------------- +| Scrollbar style for windows +-----------------------------------------------*/ +.simplebar-scrollbar::before { + background-color: var(--falcon-gray-400); +} +.simplebar-scrollbar::-webkit-scrollbar { + display: none; +} + +.simplebar-scrollbar.simplebar-visible:before { + opacity: 0.55; +} + +.scrollbar-overlay { + overflow: hidden !important; +} + +.scrollbar { + overflow: auto; +} +.scrollbar::-webkit-scrollbar { + visibility: hidden; + -webkit-appearance: none; + width: 6px; + height: 6px; + background-color: transparent; +} +.scrollbar::-webkit-scrollbar-thumb { + visibility: hidden; + border-radius: 3px; + background-color: var(--falcon-scrollbar-bg); +} +.scrollbar:hover::-webkit-scrollbar, .scrollbar:hover::-webkit-scrollbar-thumb, .scrollbar:focus::-webkit-scrollbar, .scrollbar:focus::-webkit-scrollbar-thumb { + visibility: visible; +} + +.overflow-x-hidden { + overflow-x: hidden !important; +} + +.overflow-y-hidden { + overflow-y: hidden !important; +} + +.navbar-vibrant .scrollbar { + overflow: auto; +} +.navbar-vibrant .scrollbar::-webkit-scrollbar { + visibility: hidden; + -webkit-appearance: none; + width: 6px; + height: 6px; + background-color: transparent; +} +.navbar-vibrant .scrollbar::-webkit-scrollbar-thumb { + visibility: hidden; + border-radius: 3px; + background-color: rgba(255, 255, 255, 0.4); +} +.navbar-vibrant .scrollbar:hover::-webkit-scrollbar, .navbar-vibrant .scrollbar:hover::-webkit-scrollbar-thumb, .navbar-vibrant .scrollbar:focus::-webkit-scrollbar, .navbar-vibrant .scrollbar:focus::-webkit-scrollbar-thumb { + visibility: visible; +} + +.firefox .scrollbar { + overflow: auto !important; + scrollbar-color: var(--falcon-scrollbar-bg) transparent; + scrollbar-width: thin; +} +.firefox .navbar-vibrant .scrollbar { + overflow: auto !important; + scrollbar-color: rgba(255, 255, 255, 0.4) transparent; + scrollbar-width: thin; +} +.firefox .overflow-x-hidden { + overflow-x: hidden !important; +} +.firefox .overflow-y-hidden { + overflow-y: hidden !important; +} + +.os-theme-dark > .os-scrollbar > .os-scrollbar-track > .os-scrollbar-handle { + background: var(--falcon-scrollbar-bg); +} +.os-theme-dark > .os-scrollbar:hover > .os-scrollbar-track > .os-scrollbar-handle, .os-theme-dark > .os-scrollbar:focus > .os-scrollbar-track > .os-scrollbar-handle { + background: var(--falcon-scrollbar-bg); +} + +/*----------------------------------------------- +| Dashboard +-----------------------------------------------*/ +.file-thumbnail { + height: 2.25rem; + width: 2.25rem; +} + +.dot { + width: 0.625rem; + height: 0.625rem; + border-radius: 50%; + margin-right: 0.5rem; +} + +.small-dot { + width: 0.375rem; + height: 0.375rem; + border-radius: 50%; + display: inline-block; + margin-left: 0.5rem; +} + +/*----------------------------------------------- +| E-commerce +-----------------------------------------------*/ +/*----------------------------------------------- +| Project Management +-----------------------------------------------*/ +.recent-activity-body-height { + height: 25rem; +} + +.table-member-info { + min-width: 43rem; +} + +.members-activity { + min-height: 22rem; +} + +.table-running-project { + min-width: 43rem; +} + +.hover-actions-trigger.btn-reveal-trigger .hover-actions { + right: 3.5rem; +} +[dir=rtl] .hover-actions-trigger.btn-reveal-trigger .hover-actions { + right: 3.5rem; +} + +/* -------------------------------------------------------------------------- */ +/* Analytics */ +/* -------------------------------------------------------------------------- */ +.chart-tab .nav-link:not(.active):hover { + border-color: transparent !important; +} +.chart-tab .nav-link.active { + border-bottom: 2px solid var(--falcon-primary) !important; + background-color: var(--falcon-card-bg) !important; + outline: none !important; +} + +@media (min-width: 768px) { + .ask-analytics { + max-height: 426px; + } +} +.ask-analytics .ask-analytics-item:hover, .ask-analytics .ask-analytics-item:focus { + background: var(--falcon-gray-100); +} + +/* -------------------------------------------------------------------------- */ +/* CRM */ +/* -------------------------------------------------------------------------- */ +.table-recent-leads { + min-width: 38rem; +} + +.tab-active-caret .nav-link { + color: var(--falcon-gray-600) !important; + font-size: 0.8333333333rem !important; + font-weight: 500 !important; + font-family: "Poppins", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !important; +} +.tab-active-caret .nav-link.active { + color: var(--falcon-primary) !important; + border-bottom: 0 !important; + position: relative; +} +.tab-active-caret .nav-link.active:after { + content: ""; + position: absolute; + width: 10px; + height: 10px; + bottom: -6px; + left: 45%; + transform: rotate(45deg); + background: var(--falcon-card-bg); + border-radius: 0.125rem; + border-width: 0 1px 1px 0; + border-style: solid; + border-color: var(--falcon-border-color); +} + +/* -------------------------------------------------------------------------- */ +/* Support Desk */ +/* -------------------------------------------------------------------------- */ +.ticket-todo-list { + height: 25.65rem; +} +.preview-todo-list .ticket-todo-list { + height: 24rem; +} + +html[dir=rtl] .rtl-row-reverse { + flex-direction: row-reverse; +} + +/* -------------------------------------------------------------------------- */ +/* LMS */ +/* -------------------------------------------------------------------------- */ +.bar-indicator-gradient { + background: linear-gradient(to right, rgba(44, 123, 229, 0.1), var(--falcon-primary)); + height: 0.25rem; + width: 100%; + border-radius: 1rem; +} + +.marketing-exp-circle { + width: 6.25rem; + height: 6.25rem; + box-shadow: inset 0px 1px 2px rgba(0, 0, 0, 0.075); +} + +.nav-tabs.top-courses-tab .nav-link { + color: var(--falcon-gray-400) !important; +} +.nav-tabs.top-courses-tab .nav-link:not(.active):hover { + border-color: transparent !important; +} +.nav-tabs.top-courses-tab .nav-link.active { + border-bottom: 2px solid var(--falcon-primary); + background-color: var(--falcon-card-bg); + color: var(--falcon-primary) !important; +} + +.d3-tooltip { + position: fixed; + z-index: 10000; + background-color: var(--falcon-card-bg); + border-radius: 5px; + font-size: 0.875rem; + white-space: nowrap; + opacity: 0; + pointer-events: none; + padding: 0.25rem 0.5rem; + box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px; +} + +/* -------------------------------------------------------------------------- */ +/* Accordion */ +/* -------------------------------------------------------------------------- */ +.btn-accordion { + padding: 0.25rem 0; + display: flex; + justify-content: space-between; + align-items: center; + font-size: 0.8333333333rem; + font-weight: 500; +} +.btn-accordion[aria-expanded=true] [data-prefix=fas] { + transform: rotate(90deg); +} + +.accordion-icon { + transition: transform 0.1s linear; + color: var(--falcon-gray-800); +} +[aria-expanded=true] .accordion-icon { + transform: rotate(90deg); +} + +.emoji-mart section, +.emoji-mart .section { + padding: 0 !important; +} + +/*----------------------------------------------- +| Calender +-----------------------------------------------*/ +.calendar { + width: 3.125rem; + line-height: 1; + display: flex; + flex-direction: column; + text-align: center; + font-family: "Poppins", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + border-radius: 0.375rem; +} +.calendar .calendar-month { + background-color: var(--falcon-danger); + color: #fff; + border-radius: 0.375rem 0.375rem 0 0; + padding: 0.25rem; + font-weight: 600; +} +.calendar .calendar-day { + font-size: 1.728rem; + padding: 0.25rem; + border: 0.125rem solid rgba(var(--falcon-danger-rgb), 0.3); + border-top: 0; + border-radius: 0 0 0.375rem 0.375rem; + color: #9da9bb; + font-weight: 700; +} + +/* -------------------------------------------------------------------------- */ +/* Hover */ +/* -------------------------------------------------------------------------- */ +.hover-actions { + display: none; + position: absolute; +} +.hover-actions.show { + display: inline-block; +} +.hover-actions.show + .hover-hide { + display: none; +} + +a[href].bg-200:hover, a[href].bg-200:focus { + background-color: var(--falcon-gray-300) !important; +} + +.hover-primary:hover, .hover-primary:focus { + color: var(--falcon-primary) !important; +} + +.hover-shadow:hover, .hover-shadow:focus { + box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, 0.1); +} + +.hover-actions-trigger { + position: relative; +} +.hover-actions-trigger .inbox-link { + color: inherit; + text-decoration: none; +} +.hover-actions-trigger:hover .hover-actions, .hover-actions-trigger:focus .hover-actions { + z-index: 1; + display: flex; +} +.hover-actions-trigger:hover .hover-actions.btn, .hover-actions-trigger:hover .tox .tox-menu__footer .hover-actions.tox-button--secondary, .tox .tox-menu__footer .hover-actions-trigger:hover .hover-actions.tox-button--secondary, +.hover-actions-trigger:hover .tox .tox-dialog__footer .hover-actions.tox-button--secondary, +.tox .tox-dialog__footer .hover-actions-trigger:hover .hover-actions.tox-button--secondary, .hover-actions-trigger:hover .tox .tox-menu__footer .hover-actions.tox-button:last-child, .tox .tox-menu__footer .hover-actions-trigger:hover .hover-actions.tox-button:last-child, +.hover-actions-trigger:hover .tox .tox-dialog__footer .hover-actions.tox-button:last-child, +.tox .tox-dialog__footer .hover-actions-trigger:hover .hover-actions.tox-button:last-child, .hover-actions-trigger:focus .hover-actions.btn, .hover-actions-trigger:focus .tox .tox-menu__footer .hover-actions.tox-button--secondary, .tox .tox-menu__footer .hover-actions-trigger:focus .hover-actions.tox-button--secondary, +.hover-actions-trigger:focus .tox .tox-dialog__footer .hover-actions.tox-button--secondary, +.tox .tox-dialog__footer .hover-actions-trigger:focus .hover-actions.tox-button--secondary, .hover-actions-trigger:focus .tox .tox-menu__footer .hover-actions.tox-button:last-child, .tox .tox-menu__footer .hover-actions-trigger:focus .hover-actions.tox-button:last-child, +.hover-actions-trigger:focus .tox .tox-dialog__footer .hover-actions.tox-button:last-child, +.tox .tox-dialog__footer .hover-actions-trigger:focus .hover-actions.tox-button:last-child { + display: inline-block; +} +.hover-actions-trigger:hover .hover-hide, .hover-actions-trigger:focus .hover-hide { + display: none; +} + +.hover-bg-100:hover { + background-color: var(--falcon-gray-100); +} +.hover-bg-200:hover { + background-color: var(--falcon-gray-200); +} +.hover-bg-300:hover { + background-color: var(--falcon-gray-300); +} +.hover-bg-400:hover { + background-color: var(--falcon-gray-400); +} +.hover-bg-500:hover { + background-color: var(--falcon-gray-500); +} +.hover-bg-600:hover { + background-color: var(--falcon-gray-600); +} +.hover-bg-700:hover { + background-color: var(--falcon-gray-700); +} +.hover-bg-800:hover { + background-color: var(--falcon-gray-800); +} +.hover-bg-900:hover { + background-color: var(--falcon-gray-900); +} +.hover-bg-1000:hover { + background-color: var(--falcon-gray-1000); +} +.hover-bg-1100:hover { + background-color: var(--falcon-gray-1100); +} + +.hover-100:hover { + color: var(--falcon-gray-100) !important; +} +.hover-200:hover { + color: var(--falcon-gray-200) !important; +} +.hover-300:hover { + color: var(--falcon-gray-300) !important; +} +.hover-400:hover { + color: var(--falcon-gray-400) !important; +} +.hover-500:hover { + color: var(--falcon-gray-500) !important; +} +.hover-600:hover { + color: var(--falcon-gray-600) !important; +} +.hover-700:hover { + color: var(--falcon-gray-700) !important; +} +.hover-800:hover { + color: var(--falcon-gray-800) !important; +} +.hover-900:hover { + color: var(--falcon-gray-900) !important; +} +.hover-1000:hover { + color: var(--falcon-gray-1000) !important; +} +.hover-1100:hover { + color: var(--falcon-gray-1100) !important; +} + +/* -------------------------------------------------------------------------- */ +/* Animations */ +/* -------------------------------------------------------------------------- */ +.icon-spin { + animation: icon-spin 6s cubic-bezier(0.15, 1.15, 0.65, 1) infinite; +} + +.settings-popover { + left: 29%; + z-index: 2; + top: 31%; +} +.settings-popover .d-flex { + transform-origin: center; + transform-box: fill-box; +} + +.ripple { + position: absolute; +} +.ripple .fa-spin { + animation-duration: 3s; +} +.ripple:after, .ripple:before { + position: absolute; + content: ""; + height: 0.45rem; + width: 0.45rem; + border-radius: 50%; + border: 3px solid rgba(var(--falcon-success-rgb), 0.4); + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + z-index: -1; + animation: ripple 2s ease infinite; +} +.ripple:before { + border: 5px solid rgba(var(--falcon-success-rgb), 0.3); + animation-delay: 5s; +} + +@keyframes ripple { + 0% { + height: 0.75rem; + width: 0.75rem; + } + 100% { + height: 2.125rem; + width: 2.125rem; + border-color: transparent; + } +} +@keyframes icon-spin { + 0% { + transform: rotate(0); + } + 100% { + transform: rotate(360deg); + } +} +/* -------------------------------------------------------------------------- */ +/* Modal */ +/* -------------------------------------------------------------------------- */ +.modal-fixed-right { + padding-right: 0 !important; +} +.modal-fixed-right .modal-dialog { + margin: 0; + margin-left: auto; + margin-right: initial; + max-width: 22rem; +} +.modal-fixed-right .modal-content { + border-radius: 0; +} +.modal-fixed-right.fade .modal-dialog-vertical { + transform: translateX(100%); +} +.modal-fixed-right.show .modal-dialog-vertical { + transform: translateX(0%); +} + +.modal-header-settings { + min-height: var(--falcon-top-nav-height); + position: relative; + display: flex; + align-items: flex-start; + border: none; + border-radius: 0; + padding: 0.5rem 1.25rem; + overflow: hidden; +} +.modal-header-settings:before, .modal-header-settings:after { + border-radius: 50%; + height: 12.5rem; + width: 12.5rem; +} +.modal-header-settings:before { + left: 5.125rem; + top: 1.188rem; +} +.modal-header-settings:after { + right: -6.25rem; + top: -7.938rem; +} +.modal-header-settings .close { + position: absolute; + top: 0; + right: 0; + color: white; + opacity: 0.75; + padding-top: 0.75rem; + margin-top: 0; + margin-right: 0.25rem; + outline: 0; +} +.modal-header-settings .close:hover:not(:disabled), .modal-header-settings .close:hover:not(.disabled), .modal-header-settings .close:focus:not(:disabled), .modal-header-settings .close:focus:not(.disabled) { + opacity: 1; +} + +/*----------------------------------------------- +| Icons group +-----------------------------------------------*/ +.icon-group { + display: flex; +} +.icon-group .icon-item:not(:last-child) { + margin-right: 0.5rem; +} + +.icon-item { + border-radius: 50%; + display: flex; + justify-content: center; + align-items: center; + color: var(--falcon-gray-700); + transition: all 0.2s ease-in-out; + height: 2.5rem; + width: 2.5rem; + border: 0; + font-size: 0.875rem; + box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075); + background-color: var(--falcon-quaternary-bg); +} +.icon-item:hover, .icon-item:focus { + background-color: var(--falcon-gray-200); +} +.icon-item.icon-item-sm { + height: 1.875rem; + width: 1.875rem; +} +.icon-item.icon-item-lg { + height: 2.75rem; + width: 2.75rem; +} +.icon-item.icon-item-xl { + height: 3.125rem; + width: 3.125rem; + font-size: 1.2rem; +} + +.fa-icon-wait { + opacity: 0; +} +.fontawesome-i2svg-active .fa-icon-wait { + opacity: 1; +} + +.icon-circle { + width: 4rem; + height: 4rem; + border-radius: 50%; + display: flex; + justify-content: center; + align-items: center; + border-width: 2px; + border-style: solid; + margin: 0 auto; + margin-bottom: 1rem; +} + +.icon-circle-primary { + color: var(--falcon-primary); + border-color: var(--falcon-primary); +} + +.icon-circle-success { + color: var(--falcon-success); + border-color: var(--falcon-success); +} + +.icon-circle-info { + color: var(--falcon-info); + border-color: var(--falcon-info); +} + +.icon-circle-warning { + color: var(--falcon-warning); + border-color: var(--falcon-warning); +} + +/*----------------------------------------------- +| Landing banner style +-----------------------------------------------*/ +.img-landing-banner, +.img-showcase-banner { + border-top-left-radius: 0.375rem; + border-top-right-radius: 0.375rem; + overflow: hidden; + transform: translateY(-3rem); + margin-bottom: -28rem; + transition: transform 0.4s ease; + position: relative; + box-shadow: 0 1rem 4rem rgba(0, 0, 0, 0.175); + display: block; +} +@media (min-width: 1200px) and (max-width: 1539.98px) { + .img-landing-banner, + .img-showcase-banner { + margin-bottom: -18rem; + } +} +@media (min-width: 992px) and (max-width: 1199.98px) { + .img-landing-banner, + .img-showcase-banner { + margin-bottom: -40rem; + } +} +@media (min-width: 576px) and (max-width: 767.98px) { + .img-landing-banner, + .img-showcase-banner { + margin-bottom: -20rem; + } +} +@media (max-width: 575.98px) { + .img-landing-banner, + .img-showcase-banner { + margin-bottom: -15rem; + } +} +.img-landing-banner.img-showcase-banner:after, +.img-showcase-banner.img-showcase-banner:after { + display: none; +} +.img-landing-banner:after, +.img-showcase-banner:after { + content: ""; + position: absolute; + background: linear-gradient(180deg, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.8)); + left: 0; + bottom: 0; + width: 100%; + height: 70%; + transition: opacity 0.6s; +} +.img-landing-banner:hover, .img-landing-banner:focus, +.img-showcase-banner:hover, +.img-showcase-banner:focus { + transform: translateY(-5rem); +} +.img-landing-banner:hover:after, .img-landing-banner:focus:after, +.img-showcase-banner:hover:after, +.img-showcase-banner:focus:after { + opacity: 0; +} + +@media (max-width: 575.98px) { + .landing-cta-img { + width: 100%; + height: auto; + } +} +/*----------------------------------------------- +| Back to top button +-----------------------------------------------*/ +.btn-back-to-top { + background-color: #0b1727; + display: flex; + align-items: center; + justify-content: center; + border-top-right-radius: 0.25rem; + left: 50%; + top: -7.5rem; + transform: translate3d(-50%, -50%, 0) rotate(-45deg); + height: 2.5rem; + width: 2.5rem; +} +[dir=rtl] .btn-back-to-top { + transform: translate3d(-50%, -50%, 0) rotate(45deg); +} + +/*----------------------------------------------- +| Special Card +-----------------------------------------------*/ +.card-span { + transition: all 0.4s ease; +} +.card-span .card-span-img { + position: absolute; + left: 50%; + transform: translate3d(-50%, -50%, 0); + width: 5rem; + height: 5rem; + background-color: var(--falcon-card-span-img-bg); + box-shadow: var(--falcon-card-span-img-box-shadow); + border-radius: 50%; + display: flex; + justify-content: center; + align-items: center; +} +.card-span:hover, .card-span:focus { + box-shadow: var(--falcon-card-span-img-hover-box-shadow); +} + +/* -------------------------------------------------------------------------- */ +/* Navbar Standard */ +/* -------------------------------------------------------------------------- */ +.navbar-standard { + font-size: 0.8333333333rem; + font-weight: 600; +} +.navbar-standard .navbar-collapse { + overflow-y: auto; + max-height: calc(100vh - 3.5625rem); +} + +/* -------------------------------------------------------------------------- */ +/* Bootstrap Carousel */ +/* -------------------------------------------------------------------------- */ +.theme-slider:hover .carousel-control-next, +.theme-slider:hover .carousel-control-prev, .theme-slider:focus .carousel-control-next, +.theme-slider:focus .carousel-control-prev { + color: var(--falcon-gray-700); + opacity: 0.5 !important; +} +.theme-slider .carousel-control-prev, +.theme-slider .carousel-control-next { + width: 3rem; + height: 3rem; + background: #fff; + border-radius: 50%; + top: 50%; + transform: translateY(-50%); + box-shadow: 0.125rem 0.125rem 0.25rem rgba(0, 0, 0, 0.1); + transition: opacity 0.4s ease-in-out; + color: var(--falcon-gray-700); + opacity: 0; +} +.theme-slider .carousel-control-prev:hover, .theme-slider .carousel-control-prev:focus, +.theme-slider .carousel-control-next:hover, +.theme-slider .carousel-control-next:focus { + opacity: 1 !important; +} +.theme-slider .carousel-control-prev { + left: 0.5rem; +} +.theme-slider .carousel-control-next { + right: 0.5rem; +} + +/*----------------------------------------------- +| Form +-----------------------------------------------*/ +label { + font-size: 0.8333333333rem; + font-weight: 700; + letter-spacing: 0.02em; +} + +.form-check-label { + line-height: 1.45rem; +} + +.form-label-nogutter { + margin-bottom: 0; +} +.form-label-nogutter .form-check-label { + margin-bottom: 0; +} + +/*----------------------------------------------- +| Remove spinner from Input[type="number"] +-----------------------------------------------*/ +.input-spin-none::-webkit-outer-spin-button, +.input-spin-none::-webkit-inner-spin-button { + -webkit-appearance: none; + margin: 0; +} + +.input-spin-none[type=number] { + -moz-appearance: textfield; /* Firefox */ +} + +/*----------------------------------------------- +| Theme Checkbox +-----------------------------------------------*/ +.form-check-input-primary { + border-color: #2c7be5 !important; +} +.form-check-input-primary:focus { + box-shadow: 0 0 0 0.25rem rgba(44, 123, 229, 0.25); +} +.form-check-input-primary:checked { + background-color: #2c7be5 !important; +} +.form-check-input-primary.falcon-form-check-input { + background-color: #2c7be5 !important; +} +.form-check-input.falcon-form-check-input { + background-color: #2c7be5; +} +.form-check-input-secondary { + border-color: #748194 !important; +} +.form-check-input-secondary:focus { + box-shadow: 0 0 0 0.25rem rgba(116, 129, 148, 0.25); +} +.form-check-input-secondary:checked { + background-color: #748194 !important; +} +.form-check-input-secondary.falcon-form-check-input { + background-color: #748194 !important; +} +.form-check-input.falcon-form-check-input { + background-color: #2c7be5; +} +.form-check-input-success { + border-color: #00d27a !important; +} +.form-check-input-success:focus { + box-shadow: 0 0 0 0.25rem rgba(0, 210, 122, 0.25); +} +.form-check-input-success:checked { + background-color: #00d27a !important; +} +.form-check-input-success.falcon-form-check-input { + background-color: #00d27a !important; +} +.form-check-input.falcon-form-check-input { + background-color: #2c7be5; +} +.form-check-input-info { + border-color: #27bcfd !important; +} +.form-check-input-info:focus { + box-shadow: 0 0 0 0.25rem rgba(39, 188, 253, 0.25); +} +.form-check-input-info:checked { + background-color: #27bcfd !important; +} +.form-check-input-info.falcon-form-check-input { + background-color: #27bcfd !important; +} +.form-check-input.falcon-form-check-input { + background-color: #2c7be5; +} +.form-check-input-warning { + border-color: #f5803e !important; +} +.form-check-input-warning:focus { + box-shadow: 0 0 0 0.25rem rgba(245, 128, 62, 0.25); +} +.form-check-input-warning:checked { + background-color: #f5803e !important; +} +.form-check-input-warning.falcon-form-check-input { + background-color: #f5803e !important; +} +.form-check-input.falcon-form-check-input { + background-color: #2c7be5; +} +.form-check-input-danger { + border-color: #e63757 !important; +} +.form-check-input-danger:focus { + box-shadow: 0 0 0 0.25rem rgba(230, 55, 87, 0.25); +} +.form-check-input-danger:checked { + background-color: #e63757 !important; +} +.form-check-input-danger.falcon-form-check-input { + background-color: #e63757 !important; +} +.form-check-input.falcon-form-check-input { + background-color: #2c7be5; +} +.form-check-input-light { + border-color: #f9fafd !important; +} +.form-check-input-light:focus { + box-shadow: 0 0 0 0.25rem rgba(249, 250, 253, 0.25); +} +.form-check-input-light:checked { + background-color: #f9fafd !important; +} +.form-check-input-light.falcon-form-check-input { + background-color: #f9fafd !important; +} +.form-check-input.falcon-form-check-input { + background-color: #2c7be5; +} +.form-check-input-dark { + border-color: #0b1727 !important; +} +.form-check-input-dark:focus { + box-shadow: 0 0 0 0.25rem rgba(11, 23, 39, 0.25); +} +.form-check-input-dark:checked { + background-color: #0b1727 !important; +} +.form-check-input-dark.falcon-form-check-input { + background-color: #0b1727 !important; +} +.form-check-input.falcon-form-check-input { + background-color: #2c7be5; +} + +.form-switch .falcon-form-check-input.form-check-input { + background-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='3' fill='%23fff'/%3E%3C/svg%3E"); +} + +.form-check-line-through + label { + transition: all 0.2s ease-in-out; +} +.form-check-line-through:checked + label { + color: #9da9bb; + text-decoration: line-through; +} + +.form-floating > label { + line-height: 1.625rem; +} + +input[type=file].form-control-lg { + line-height: 1.813rem; +} + +textarea.form-control, textarea.dropzone-area.is-invalid { + height: auto; +} + +option:disabled { + color: var(--falcon-gray-400); +} + +.radio-select .form-check-label { + cursor: pointer; +} + +.radio-select-content { + border: 1px solid var(--falcon-border-color); + color: var(--falcon-gray-500); + transition: all 0.2s ease-in-out; + display: block; + padding: 1rem; + font-weight: 400; + border-radius: 0.25rem; + font-size: 0.8333333333rem; + margin-top: 0.5rem; +} + +.radio-select-link { + color: inherit; +} + +.radio-select .form-check-input:checked + .form-check-label .radio-select-content { + border: 1px solid var(--falcon-success); + color: var(--falcon-gray-1100); +} + +.form-check-input, +.form-select { + appearance: none; + -webkit-appearance: none; +} + +/* -------------------------------------------------------------------------- */ +/* Settings Panel */ +/* -------------------------------------------------------------------------- */ +/*----------------------------------------------- +| Settings Panel +-----------------------------------------------*/ +.settings-panel-header { + min-height: 4.3125rem; + position: relative; + display: flex; + align-items: flex-start; + border: none; + border-radius: 0; + padding: 0.5rem 1.25rem; + overflow: hidden; +} +.settings-panel-header:before, .settings-panel-header:after { + border-radius: 50%; + height: 12.5rem; + width: 12.5rem; +} +.settings-panel-header:before { + left: 5.125rem; + top: 1.188rem; +} +.settings-panel-header:after { + right: -6.25rem; + top: -7.938rem; +} +.settings-panel-header .btn-close { + z-index: 1; + position: absolute; + top: 6px; + right: 7px; + color: white; + opacity: 0.75; + padding-top: 0.75rem; + margin-top: 0; + margin-right: 0.25rem; + outline: 0; +} +.settings-panel-header .btn-close:hover:not(:disabled), .settings-panel-header .btn-close:hover:not(.disabled), .settings-panel-header .btn-close:focus:not(:disabled), .settings-panel-header .btn-close:focus:not(.disabled) { + opacity: 1; +} + +.btn-navbar-vertical, +.btn-navbar-top { + border-color: var(--falcon-gray-400); +} +.btn-navbar-vertical.active, +.btn-navbar-top.active { + border-color: var(--falcon-primary); + background-color: var(--falcon-primary); + color: #fff; +} + +.btn-theme-default, +.btn-theme-dark { + width: 50%; + padding: 0; +} +.btn-theme-default.focus, .btn-theme-default:focus, +.btn-theme-dark.focus, +.btn-theme-dark:focus { + box-shadow: none; +} +.btn-theme-default .custom-control-label, +.btn-theme-dark .custom-control-label { + cursor: pointer; +} +.btn-theme-default .hover-overlay, +.btn-theme-dark .hover-overlay { + border: 3px solid transparent; + position: relative; + overflow: hidden; + border-radius: 0.375rem; + display: block; +} +.btn-theme-default .hover-overlay:after, +.btn-theme-dark .hover-overlay:after { + position: absolute; + content: ""; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: transparent; + z-index: 1; + transition: all 0.2s ease-in-out; +} +.btn-theme-default:hover .hover-overlay:after, .btn-theme-default:focus .hover-overlay:after, +.btn-theme-dark:hover .hover-overlay:after, +.btn-theme-dark:focus .hover-overlay:after { + background: rgba(0, 0, 0, 0.2); +} +.btn-theme-default.active, +.btn-theme-dark.active { + box-shadow: none; +} +.btn-theme-default.active .hover-overlay, +.btn-theme-dark.active .hover-overlay { + border: 3px solid var(--falcon-success); +} +.btn-theme-default .form-check, +.btn-theme-dark .form-check { + text-align: start; +} +.btn-theme-default .form-check .form-check-input:focus, +.btn-theme-dark .form-check .form-check-input:focus { + box-shadow: none; +} +.btn-theme-default .form-check .form-check-input:checked, +.btn-theme-dark .form-check .form-check-input:checked { + background-color: var(--falcon-success); + border-color: var(--falcon-success); +} + +.btn-theme-default { + margin-right: 0.5rem; + box-shadow: none; +} + +.btn-theme-dark { + margin-left: 0.5rem; +} + +.btn-group-navbar-style .btn, .btn-group-navbar-style .tox .tox-menu__footer .tox-button--secondary, .tox .tox-menu__footer .btn-group-navbar-style .tox-button--secondary, +.btn-group-navbar-style .tox .tox-dialog__footer .tox-button--secondary, +.tox .tox-dialog__footer .btn-group-navbar-style .tox-button--secondary, .btn-group-navbar-style .tox .tox-menu__footer .tox-button:last-child, .tox .tox-menu__footer .btn-group-navbar-style .tox-button:last-child, +.btn-group-navbar-style .tox .tox-dialog__footer .tox-button:last-child, +.tox .tox-dialog__footer .btn-group-navbar-style .tox-button:last-child { + border-radius: 0.25rem !important; +} +.btn-group-navbar-style .btn label:first-child, .btn-group-navbar-style .tox .tox-menu__footer .tox-button--secondary label:first-child, .tox .tox-menu__footer .btn-group-navbar-style .tox-button--secondary label:first-child, +.btn-group-navbar-style .tox .tox-dialog__footer .tox-button--secondary label:first-child, +.tox .tox-dialog__footer .btn-group-navbar-style .tox-button--secondary label:first-child, .btn-group-navbar-style .tox .tox-menu__footer .tox-button:last-child label:first-child, .tox .tox-menu__footer .btn-group-navbar-style .tox-button:last-child label:first-child, +.btn-group-navbar-style .tox .tox-dialog__footer .tox-button:last-child label:first-child, +.tox .tox-dialog__footer .btn-group-navbar-style .tox-button:last-child label:first-child { + background-color: var(--falcon-gray-100); + border: 3px solid var(--falcon-gray-300); + border-radius: 0.375rem; +} +.btn-group-navbar-style .btn.active label:first-child, .btn-group-navbar-style .tox .tox-menu__footer .active.tox-button--secondary label:first-child, .tox .tox-menu__footer .btn-group-navbar-style .active.tox-button--secondary label:first-child, +.btn-group-navbar-style .tox .tox-dialog__footer .active.tox-button--secondary label:first-child, +.tox .tox-dialog__footer .btn-group-navbar-style .active.tox-button--secondary label:first-child, .btn-group-navbar-style .tox .tox-menu__footer .active.tox-button:last-child label:first-child, .tox .tox-menu__footer .btn-group-navbar-style .active.tox-button:last-child label:first-child, +.btn-group-navbar-style .tox .tox-dialog__footer .active.tox-button:last-child label:first-child, +.tox .tox-dialog__footer .btn-group-navbar-style .active.tox-button:last-child label:first-child { + border-color: var(--falcon-success); +} +.btn-group-navbar-style .btn.focus, .btn-group-navbar-style .tox .tox-menu__footer .focus.tox-button--secondary, .tox .tox-menu__footer .btn-group-navbar-style .focus.tox-button--secondary, +.btn-group-navbar-style .tox .tox-dialog__footer .focus.tox-button--secondary, +.tox .tox-dialog__footer .btn-group-navbar-style .focus.tox-button--secondary, .btn-group-navbar-style .tox .tox-menu__footer .focus.tox-button:last-child, .tox .tox-menu__footer .btn-group-navbar-style .focus.tox-button:last-child, +.btn-group-navbar-style .tox .tox-dialog__footer .focus.tox-button:last-child, +.tox .tox-dialog__footer .btn-group-navbar-style .focus.tox-button:last-child, .btn-group-navbar-style .btn:focus, .btn-group-navbar-style .tox .tox-menu__footer .tox-button--secondary:focus, .tox .tox-menu__footer .btn-group-navbar-style .tox-button--secondary:focus, +.btn-group-navbar-style .tox .tox-dialog__footer .tox-button--secondary:focus, +.tox .tox-dialog__footer .btn-group-navbar-style .tox-button--secondary:focus, .btn-group-navbar-style .tox .tox-menu__footer .tox-button:focus:last-child, .tox .tox-menu__footer .btn-group-navbar-style .tox-button:focus:last-child, +.btn-group-navbar-style .tox .tox-dialog__footer .tox-button:focus:last-child, +.tox .tox-dialog__footer .btn-group-navbar-style .tox-button:focus:last-child { + box-shadow: none !important; +} +.btn-group-navbar-style .btn.disabled label, .btn-group-navbar-style .tox .tox-menu__footer .disabled.tox-button--secondary label, .tox .tox-menu__footer .btn-group-navbar-style .disabled.tox-button--secondary label, +.btn-group-navbar-style .tox .tox-dialog__footer .disabled.tox-button--secondary label, +.tox .tox-dialog__footer .btn-group-navbar-style .disabled.tox-button--secondary label, .btn-group-navbar-style .tox .tox-menu__footer .disabled.tox-button:last-child label, .tox .tox-menu__footer .btn-group-navbar-style .disabled.tox-button:last-child label, +.btn-group-navbar-style .tox .tox-dialog__footer .disabled.tox-button:last-child label, +.tox .tox-dialog__footer .btn-group-navbar-style .disabled.tox-button:last-child label { + cursor: not-allowed; +} + +.setting-toggle { + position: fixed; + top: 50%; + right: 0; + text-decoration: none; + z-index: 1016; + transform: rotate(-90deg) translate3d(-25px, 39px, 0); + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + margin-top: -83px; + box-shadow: var(--falcon-setting-toggle-shadow); + cursor: pointer; +} +@media (max-width: 575.98px) { + .setting-toggle { + transform: rotate(-90deg); + outline: none; + } + .setting-toggle .bg-primary-subtle, .setting-toggle .fc-timegrid .event-bg-primary-subtle, .fc-timegrid .setting-toggle .event-bg-primary-subtle { + background-color: transparent !important; + } + .setting-toggle small, .setting-toggle .small { + display: none; + } +} +.setting-toggle:hover { + text-decoration: none !important; +} + +.nav-tabs { + border-bottom: 2px solid var(--falcon-border-color); +} +.nav-tabs .nav-link { + margin-bottom: -var(--falcon-border-width); + border: var(--falcon-border-color); + color: var(--falcon-gray-800); + font-weight: 700; + font-size: 0.875rem; + border-top-left-radius: var(--falcon-border-radius); + border-top-right-radius: var(--falcon-border-radius); +} +.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus { + border-color: var(--falcon-white); +} +.nav-tabs .nav-link.disabled { + color: var(--falcon-gray-400); + background-color: transparent; + border-color: transparent; +} +.nav-tabs .nav-item .nav-link { + font-family: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; +} +.nav-tabs .nav-link.active, +.nav-tabs .nav-item.show .nav-link { + color: var(--falcon-primary); + background-color: transparent; + border-bottom: 2px solid var(--falcon-primary); +} + +.nav-pills-falcon { + --falcon-nav-link-font-size: 0.875rem; + --falcon-nav-link-font-weight: 500; + background-color: var(--falcon-gray-100); + border-radius: 0.25rem !important; + border: 1px solid var(--falcon-gray-200); +} +.nav-pills-falcon .nav-link { + padding: 0.1875rem 0.75rem; +} +.nav-pills-falcon .btn, .nav-pills-falcon .tox .tox-menu__footer .tox-button--secondary, .tox .tox-menu__footer .nav-pills-falcon .tox-button--secondary, +.nav-pills-falcon .tox .tox-dialog__footer .tox-button--secondary, +.tox .tox-dialog__footer .nav-pills-falcon .tox-button--secondary, .nav-pills-falcon .tox .tox-menu__footer .tox-button:last-child, .tox .tox-menu__footer .nav-pills-falcon .tox-button:last-child, +.nav-pills-falcon .tox .tox-dialog__footer .tox-button:last-child, +.tox .tox-dialog__footer .nav-pills-falcon .tox-button:last-child { + --falcon-btn-hover-border-color: transparent; + --falcon-btn-box-shadow: none; + color: var(--falcon-gray-600); + outline: 0; +} +.nav-pills-falcon .btn.active, .nav-pills-falcon .tox .tox-menu__footer .active.tox-button--secondary, .tox .tox-menu__footer .nav-pills-falcon .active.tox-button--secondary, +.nav-pills-falcon .tox .tox-dialog__footer .active.tox-button--secondary, +.tox .tox-dialog__footer .nav-pills-falcon .active.tox-button--secondary, .nav-pills-falcon .tox .tox-menu__footer .active.tox-button:last-child, .tox .tox-menu__footer .nav-pills-falcon .active.tox-button:last-child, +.nav-pills-falcon .tox .tox-dialog__footer .active.tox-button:last-child, +.tox .tox-dialog__footer .nav-pills-falcon .active.tox-button:last-child { + background-color: var(--falcon-nav-pills-falcon-active-bg-color) !important; + box-shadow: var(--falcon-btn-falcon-box-shadow) !important; + color: var(--falcon-btn-falcon-default-color) !important; +} +.nav-pills-falcon .btn:active:focus, .nav-pills-falcon .tox .tox-menu__footer .tox-button--secondary:active:focus, .tox .tox-menu__footer .nav-pills-falcon .tox-button--secondary:active:focus, +.nav-pills-falcon .tox .tox-dialog__footer .tox-button--secondary:active:focus, +.tox .tox-dialog__footer .nav-pills-falcon .tox-button--secondary:active:focus, .nav-pills-falcon .tox .tox-menu__footer .tox-button:active:focus:last-child, .tox .tox-menu__footer .nav-pills-falcon .tox-button:active:focus:last-child, +.nav-pills-falcon .tox .tox-dialog__footer .tox-button:active:focus:last-child, +.tox .tox-dialog__footer .nav-pills-falcon .tox-button:active:focus:last-child { + box-shadow: none; +} +.nav-pills-falcon .btn:hover, .nav-pills-falcon .tox .tox-menu__footer .tox-button--secondary:hover, .tox .tox-menu__footer .nav-pills-falcon .tox-button--secondary:hover, +.nav-pills-falcon .tox .tox-dialog__footer .tox-button--secondary:hover, +.tox .tox-dialog__footer .nav-pills-falcon .tox-button--secondary:hover, .nav-pills-falcon .tox .tox-menu__footer .tox-button:hover:last-child, .tox .tox-menu__footer .nav-pills-falcon .tox-button:hover:last-child, +.nav-pills-falcon .tox .tox-dialog__footer .tox-button:hover:last-child, +.tox .tox-dialog__footer .nav-pills-falcon .tox-button:hover:last-child, .nav-pills-falcon .btn:focus, .nav-pills-falcon .tox .tox-menu__footer .tox-button--secondary:focus, .tox .tox-menu__footer .nav-pills-falcon .tox-button--secondary:focus, +.nav-pills-falcon .tox .tox-dialog__footer .tox-button--secondary:focus, +.tox .tox-dialog__footer .nav-pills-falcon .tox-button--secondary:focus, .nav-pills-falcon .tox .tox-menu__footer .tox-button:focus:last-child, .tox .tox-menu__footer .nav-pills-falcon .tox-button:focus:last-child, +.nav-pills-falcon .tox .tox-dialog__footer .tox-button:focus:last-child, +.tox .tox-dialog__footer .nav-pills-falcon .tox-button:focus:last-child { + color: var(--falcon-btn-falcon-default-color); + background-color: unset; +} + +.rating { + display: flex; + padding: 0; + margin: 0; +} + +.rating li { + list-style-type: none; +} + +.rating-item { + border: 1px solid #fff; + cursor: pointer; + font-size: 2rem; + color: var(--falcon-warning); +} + +.rating-item::before { + content: "★"; +} + +.rating-item.active ~ .rating-item::before { + content: "☆"; +} + +.rating:hover .rating-item::before { + content: "2605"; +} + +.rating-item:hover ~ .rating-item::before { + content: "☆"; +} + +/*----------------------------------------------- +| Chat Page +-----------------------------------------------*/ +.card-chat { + height: calc(100vh - var(--falcon-top-nav-height) - 0.625rem); + z-index: 1; +} +.card-chat .card-body { + position: relative; + overflow: hidden; +} + +.card-chat-pane { + height: calc(100% - 2.063rem); + position: relative; + overflow: hidden; +} + +.card-chat-content { + flex-grow: 1; + flex-basis: 0; + max-width: 100%; + height: 100%; + font-size: 0.8333333333rem; + position: relative; + display: flex; + flex-direction: column; +} + +/*----------------------------------------------- +| Chat Sidebar +-----------------------------------------------*/ +.chat-sidebar { + position: absolute; + height: 100%; + z-index: 11; + top: 0; + left: -100%; + width: 100%; + transition: all 0.5s ease; + overflow: hidden; +} + +.contacts-list { + height: calc(100% - 2rem); + border-right: 1px solid var(--falcon-border-color); + overflow-y: auto; + width: 100%; +} + +.chat-contact { + position: relative; + width: 100% !important; + align-items: center; + height: 4.188rem; + cursor: pointer; + border-top: 1px solid transparent; + background-color: var(--falcon-chat-contact-bg); +} +.chat-contact:after { + position: absolute; + content: ""; + height: 100%; + width: 0.25rem; + left: 0; + top: 0; +} +.chat-contact:first-child { + border-top: 0 !important; +} +.chat-contact:hover:after, .chat-contact:focus:after { + background-color: var(--falcon-success); +} +.chat-contact.active:after { + background-color: var(--falcon-success); +} +.chat-contact.active:not(:first-child), .chat-contact.active + .chat-contact { + border-top: 1px solid var(--falcon-border-color); +} +.chat-contact .hover-actions { + background-color: var(--falcon-card-bg); +} +.chat-contact .hover-actions > * { + pointer-events: none; +} +.chat-contact .chat-contact-link.active:not(:first-child), .chat-contact .chat-contact-link.active + .chat-contact-link { + border-top: 1px solid var(--falcon-border-color); +} + +.chat-contact-body { + position: relative; + min-width: 0; +} + +.chat-contact-title { + font-weight: 400; +} + +.message-time { + color: var(--falcon-gray-400); +} + +.chat-contact-content { + font-size: 0.8333333333rem; + color: var(--falcon-gray-600); + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.unread-message { + color: var(--falcon-emphasis-color); +} +.unread-message .chat-contact-title, +.unread-message .chat-contact-content { + font-weight: 600; + color: var(--falcon-emphasis-color); +} +.unread-message .message-time { + color: var(--falcon-primary); +} + +.contacts-search-wrapper { + position: relative; + border-top: 1px solid var(--falcon-border-color); + border-right: 1px solid var(--falcon-border-color); + background-color: var(--falcon-chat-contact-bg); + display: flex; + align-items: center; + justify-content: center; + height: 2.063rem; +} + +.chat-contacts-search { + padding-left: 2.12rem; + background-color: var(--falcon-card-bg); +} +.chat-contacts-search:hover, .chat-contacts-search:focus { + box-shadow: none; +} + +.contacts-search-icon { + position: absolute; + top: 50%; + transform: translateY(-50%); + color: #b6c1d2; + font-size: 0.8333333333rem; + left: 1rem; +} + +.dropdown-chat .dropdown-toggle { + right: -13px; + bottom: -45px; +} + +/*----------------------------------------------- +| Chat contents +-----------------------------------------------*/ +.chat-content-header { + padding: 1rem; + border-bottom: 1px solid var(--falcon-border-color); +} + +.chat-content-body { + height: calc(100% - 4.25rem); +} +.chat-content-body .scroll-content { + position: relative; +} + +.chat-content-scroll-area { + height: 100%; + padding-bottom: 1rem; + overflow-y: auto; +} + +.chat-message { + max-width: calc(100% - 7rem); + margin-bottom: 0.25rem; + display: inline-block; + position: relative; +} + +.message-settings { + position: absolute; + bottom: -0.9375rem; + border: 1px solid var(--falcon-gray-200); + background-color: var(--falcon-gray-100); + border-radius: 50%; + height: 1.875rem; + width: 1.875rem; + text-align: center; +} + +.message-settings-left { + right: -0.9375rem; +} + +.message-settings-right { + left: -0.9375rem; +} + +.conversation-info { + position: absolute; + width: 15rem; + right: -15rem; + background-color: var(--falcon-gray-100); + border-left: 1px solid var(--falcon-border-color); + z-index: 10; + top: 4.25rem; + height: calc(100% - 4.25rem); + transition: right 0.5s ease; +} +.conversation-info.show { + right: 0; +} +.conversation-info .conversation-info-icon { + width: 1.25rem; + font-size: 1rem; +} + +.chat-file-upload { + margin-bottom: 0; + padding: 0 0.5rem; + z-index: 2; + color: var(--falcon-gray-500); +} +.chat-file-upload:hover, .chat-file-upload:focus { + color: var(--falcon-gray-600); +} + +.btn-message-submit { + position: absolute; + right: 3.938rem; + top: 0.1875rem; +} + +.btn-send { + z-index: 2; + padding: 0; + background-color: transparent; + color: var(--falcon-gray-500); + outline: none !important; + margin-right: 1rem; +} + +.chat-editor-area { + border-top: 1px solid var(--falcon-border-color); + display: flex; + align-items: center; + width: 100%; +} +.chat-editor-area .form-control, .chat-editor-area .dropzone-area.is-invalid { + min-height: 2rem; +} +.chat-editor-area .emoji-icon { + padding: 0 0.25rem; + margin-right: 0.5rem; + cursor: pointer; + color: var(--falcon-gray-500); +} +.chat-editor-area .emoji-icon:hover, .chat-editor-area .emoji-icon:focus { + color: var(--falcon-gray-600) !important; +} +.chat-editor-area .emojiarea-editor { + padding: 0.3rem 1rem; + flex: 1; + font-size: 14px; + max-height: 6.25rem; + overflow: auto; + word-break: break-all; + box-shadow: var(--falcon-box-shadow-inset); +} +.chat-editor-area .emojiarea-editor[contenteditable=true]:empty:before { + content: attr(placeholder); + pointer-events: none; + color: var(--falcon-gray-400); +} + +.chat-option { + color: var(--falcon-gray-400); +} +.chat-option:hover, .chat-option:focus { + color: var(--falcon-primary); +} + +@media (min-width: 576px) { + .contacts-list { + height: calc(100% - 2.063rem); + } + .conversation-scroll-area { + height: calc(100% - 2.188rem); + } + .card-chat { + height: calc(100vh - var(--falcon-top-nav-height) - 3.9875rem); + } +} +@media (min-width: 768px) { + .chat-sidebar { + position: relative; + height: 100%; + top: 0; + left: 0 !important; + width: 4.063rem; + transition: none; + flex: 0 0 4.063rem; + max-width: 0 0 4.063rem; + } + .card-chat-content { + flex: 0 0 100%; + max-width: calc(100% - 4.063rem); + } +} +@media (min-width: 992px) { + .chat-sidebar { + flex: 0 0 17.5rem; + max-width: 17.5rem; + } + .card-chat-content { + max-width: calc(100% - 17.5rem); + } +} +@media (min-width: 1540px) { + .chat-sidebar { + flex: 0 0 21.88rem; + max-width: 21.88rem; + } + .card-chat-content { + max-width: calc(100% - 21.88rem); + } +} +.safari .contacts-list { + height: calc(100% - 2.063rem); +} +.safari .contacts-search-wrapper { + height: 2.125rem; +} + +.ipad .card-chat, +.mobile.safari .card-chat, +.mobile.chrome .card-chat { + height: calc(100vh - var(--falcon-top-nav-height) - 0.625rem - 3.5rem); +} + +.kanban-header { + background-color: var(--falcon-kanban-header-bg); +} + +.kanban-container { + padding-bottom: 0.25rem; + white-space: nowrap; +} + +.kanban-column { + display: inline-block !important; + width: 22.1875rem; + white-space: normal; + vertical-align: top; + margin-right: 1.25rem; +} +.kanban-column:not(.form-added) .add-card-form { + display: none; +} +.kanban-column:not(:first-child) { + margin-left: -0.375rem; +} + +.kanban-column-header { + display: flex; + align-items: center; + justify-content: space-between; + background-color: var(--falcon-kanban-bg); + padding: 0.5rem 1.25rem; + border-top-left-radius: 0.375rem; + border-top-right-radius: 0.375rem; +} + +.kanban-column-footer { + background-color: var(--falcon-kanban-bg); + border-bottom-left-radius: 0.375rem; + border-bottom-right-radius: 0.375rem; + padding: 0.5rem 1.25rem; +} + +.kanban-items-container { + outline: none; + padding: 0.5rem 1.25rem; + max-height: calc(100vh - (var(--falcon-top-nav-height) + 4.3125rem + 2.5625rem + 2.8125rem + 0.9375rem)); + overflow-y: auto; + overflow-x: hidden; + background-color: var(--falcon-kanban-bg); +} +.kanban-items-container .kanban-collapse:first-child, +.kanban-items-container .kanban-item:first-child { + margin-top: 0 !important; +} + +.kanban-item { + cursor: pointer; + user-select: none; + outline: none; + margin-top: 1rem; +} + +.kanban-item-card { + border: 0; + color: var(--falcon-kanban-item-color); + font-size: 0.8333333333rem; + background-color: var(--falcon-kanban-item-bg); + border-radius: 0.375rem; + box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075); +} + +.kanban-item-dropdown-btn { + padding: 0 0.5rem; + position: absolute !important; + right: 0; + top: 0; + z-index: 2 !important; +} + +.kanban-item-footer { + display: flex; + align-items: center; + justify-content: space-between; + font-size: 0.6944444444rem; + margin-top: 1rem; + color: var(--falcon-kanban-footer-color); +} + +.form-added .kanban-items-container { + max-height: calc(100vh - (var(--falcon-top-nav-height) + 4.3125rem + 2.5625rem + 0.9375rem)); + border-bottom-left-radius: 0.375rem; + border-bottom-right-radius: 0.375rem; +} +.form-added .kanban-column-footer { + display: none; +} + +.add-card-form { + padding: 1rem; + border-radius: 0.375rem; + background-color: var(--falcon-kanban-item-bg); + border: 1px solid var(--falcon-border-color); + margin-top: 1rem; +} + +.btn-add-card:hover, .btn-add-card:focus { + background-color: var(--falcon-kanban-btn-add-hover-bg); +} + +.bg-attachment { + position: relative; + height: 3.5625rem; + width: 6.25rem; + border-radius: 0.25rem; + overflow: hidden; + background: var(--falcon-kanban-bg-attachment-bg); + display: flex; + align-items: center; + justify-content: center; + color: var(--falcon-kanban-footer-color); +} +.bg-attachment .icon-play { + position: relative; + color: var(--falcon-gray-200); +} +.bg-attachment:hover, .bg-attachment:focus { + color: var(--falcon-gray-700) !important; +} +.bg-attachment:hover .icon-play, .bg-attachment:focus .icon-play { + color: var(--falcon-gray-300); +} + +.avatar-group .avatar { + vertical-align: top; +} + +.draggable--is-dragging * { + cursor: grab !important; +} + +.draggable-source--is-dragging { + background-color: var(--falcon-kanban-draggable-source-dragging-bg) !important; + box-shadow: none !important; + border-radius: 0.375rem; +} +.draggable-source--is-dragging * { + opacity: 0; +} + +.add-card-form + .draggable-source--is-dragging { + margin-top: 0 !important; +} + +.draggable-mirror { + z-index: 1100; +} +.draggable-mirror .kanban-item-card { + transform: rotate(-2deg); +} + +button.btn-circle { + width: 2.5rem; + height: 2.5rem; + padding: 0; + background-color: #edf2f9; + text-shadow: none; + border-radius: 50%; + box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075); + opacity: 0.5; +} +button.btn-circle:hover, button.btn-circle:focus { + opacity: 1 !important; + background-color: #d8e2ef; +} + +.icon-title { + width: 1.25rem; + text-align: center; + margin-right: 1rem; +} + +div[data-collapse] + .kanban-item, +.draggable--original:first-child + .kanban-item { + margin-top: 0; +} + +.nav-link-card-details { + background-color: var(--falcon-kanban-bg); + color: var(--falcon-kanban-nav-link-card-details-color); + transition: all 0.2s ease-in-out; + border-radius: 0.25rem; + margin-bottom: 0.25rem; +} +.nav-link-card-details:hover, .nav-link-card-details:focus { + background-color: var(--falcon-kanban-nav-link-card-details-hover-bg); + color: var(--falcon-kanban-nav-link-card-details-color); +} + +.ipad .kanban-items-container, +.mobile.safari .kanban-items-container, +.mobile.chrome .kanban-items-container { + max-height: calc(100vh - (var(--falcon-top-nav-height) + 4.3125rem + 2.5625rem + 2.8125rem + 0.9375rem + 3.5rem)); +} +.ipad .form-added .kanban-items-container, +.mobile.safari .form-added .kanban-items-container, +.mobile.chrome .form-added .kanban-items-container { + max-height: calc(100vh - (var(--falcon-top-nav-height) + 4.3125rem + 2.5625rem + 0.9375rem + 3.5rem)); +} + +.video-popup { + z-index: 1065; +} + +.video-popup-backdrop.show { + z-index: 1060; + opacity: 0.9; +} + +.video-popup-close-btn { + z-index: 1065; + position: fixed; + top: 15px; + right: 15px; +} + +/*----------------------------------------------- +| Cover and profile image +-----------------------------------------------*/ +.avatar-profile { + position: absolute; + bottom: 0; + transform: translateY(50%); +} + +.overlay-icon { + position: absolute; + height: 50%; + width: 100%; + bottom: 0; + opacity: 0; + transition: all 0.2s ease-in-out; + cursor: pointer; +} + +.cover-image-file-input { + opacity: 0; + cursor: pointer; + position: absolute; + top: 0; + left: 0; + padding: 0.25rem 0.5rem; + margin-left: 1rem; + margin-top: 1rem; + border-radius: 0.25rem; + font-size: 0.8333333333rem; + color: #fff; + border: 1px solid var(--falcon-border-color); + box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075); + background-color: rgba(0, 0, 0, 0.9); +} + +.cover-image { + overflow: hidden; +} +.cover-image:hover .cover-image-file-input { + opacity: 1; + transition: all 0.2s ease-in-out; +} + +.theme-wizard .nav-link { + display: flex; + padding-left: 0; + padding-right: 0; + width: 100%; + text-align: center; + color: var(--falcon-gray-600); + display: block; +} +.theme-wizard .nav-link .nav-item-circle { + color: var(--falcon-gray-500); + background-color: var(--falcon-theme-wizard-nav-item-circle-bg); + border: 2px solid var(--falcon-gray-300); + height: 2.5rem; + width: 2.5rem; + border-radius: 50%; + line-height: 2.25rem; + padding: 0; + text-align: center; + align-self: center; + display: block; + transition: all 0.2s ease-in-out; +} +.theme-wizard .nav-link.active .nav-item-circle { + background-color: var(--falcon-primary) !important; + color: #fff; + border-color: var(--falcon-primary); +} +.theme-wizard .nav-link.active:not(.nav-pills .active) { + color: var(--falcon-primary); +} +.theme-wizard .nav-link.done { + color: var(--falcon-success); +} +.theme-wizard .nav-link.done .nav-item-circle { + background-color: var(--falcon-success) !important; + color: #fff; + border-color: var(--falcon-success); +} +.theme-wizard .nav-link.done .nav-item-circle .check-icon { + display: inline-block; +} +.theme-wizard .nav-link.done .nav-item-circle-parent:before { + background-color: var(--falcon-success); +} +.theme-wizard .nav-link .nav-item-circle .check-icon { + display: none; +} +.theme-wizard .nav-link .nav-item-circle-parent { + display: block; +} +.theme-wizard .nav-link .nav-item-circle-parent:before { + content: ""; + height: 2px; + width: 101%; + position: absolute; + left: 51%; + top: 50%; + transform: translate3d(-50%, -50%, 0); + background: var(--falcon-gray-300); +} +.theme-wizard .nav-item:not(:first-child) .active .nav-item-circle-parent:after { + content: ""; + width: 50%; + position: absolute; + left: -1px; + top: 50%; + transform: translateY(-50%); + height: 2px; + background-color: var(--falcon-success); +} +.theme-wizard .nav-item-circle-parent { + position: relative; + padding: 0 1rem; +} +.theme-wizard .nav-item-circle { + margin: 0 auto; + z-index: 1; + position: relative; +} +.theme-wizard .nav-item { + display: flex; + flex-basis: auto; + flex-grow: 1; + max-width: 100%; + justify-content: center; +} +.theme-wizard .nav-item:first-child .nav-item-circle-parent:before, .theme-wizard .nav-item:last-child .nav-item-circle-parent:before { + width: 50%; +} +.theme-wizard .nav-item:first-child .nav-item-circle-parent:before { + transform: translate3d(0, -50%, 0); +} +.theme-wizard .nav-item:last-child .nav-item-circle-parent:before { + left: 0; + transform: translate3d(0, -50%, 0); +} +.theme-wizard .pager { + display: flex; + justify-content: space-between; +} +.theme-wizard .wizard-lottie-wrapper { + height: 1px; + position: relative; + padding-bottom: 11.875rem; + overflow: hidden; +} +.theme-wizard .wizard-lottie-wrapper .wizard-lottie { + width: 21.25rem; + height: auto; + transform: translateY(-73%); +} + +.wizard-modal { + width: 400px; +} + +/*----------------------------------------------- +| Notice +-----------------------------------------------*/ +.notice { + position: fixed; + left: 0; + bottom: 0; + margin: 0 !important; + z-index: -1; + border: 0; + width: 100%; + max-width: 100%; + box-shadow: 0 1rem 4rem rgba(0, 0, 0, 0.175); + border-radius: 0; +} +.notice.show { + z-index: 1050; +} +.notice .btn-close { + margin-top: 0.75rem; +} + +/* -------------------------------------------------------------------------- */ +/* Override */ +/* -------------------------------------------------------------------------- */ +[data-bs-theme=dark] .dark__bg-primary { + background-color: #2c7be5 !important; +} +[data-bs-theme=dark] .dark__text-primary { + color: #2c7be5 !important; +} +[data-bs-theme=dark] .dark__bg-card-dark { + background-color: #121e2d !important; +} +[data-bs-theme=dark] .dark__bg-secondary { + background-color: #748194 !important; +} +[data-bs-theme=dark] .dark__text-secondary { + color: #748194 !important; +} +[data-bs-theme=dark] .dark__bg-card-dark { + background-color: #121e2d !important; +} +[data-bs-theme=dark] .dark__bg-success { + background-color: #00d27a !important; +} +[data-bs-theme=dark] .dark__text-success { + color: #00d27a !important; +} +[data-bs-theme=dark] .dark__bg-card-dark { + background-color: #121e2d !important; +} +[data-bs-theme=dark] .dark__bg-info { + background-color: #27bcfd !important; +} +[data-bs-theme=dark] .dark__text-info { + color: #27bcfd !important; +} +[data-bs-theme=dark] .dark__bg-card-dark { + background-color: #121e2d !important; +} +[data-bs-theme=dark] .dark__bg-warning { + background-color: #f5803e !important; +} +[data-bs-theme=dark] .dark__text-warning { + color: #f5803e !important; +} +[data-bs-theme=dark] .dark__bg-card-dark { + background-color: #121e2d !important; +} +[data-bs-theme=dark] .dark__bg-danger { + background-color: #e63757 !important; +} +[data-bs-theme=dark] .dark__text-danger { + color: #e63757 !important; +} +[data-bs-theme=dark] .dark__bg-card-dark { + background-color: #121e2d !important; +} +[data-bs-theme=dark] .dark__bg-light { + background-color: #f9fafd !important; +} +[data-bs-theme=dark] .dark__text-light { + color: #f9fafd !important; +} +[data-bs-theme=dark] .dark__bg-card-dark { + background-color: #121e2d !important; +} +[data-bs-theme=dark] .dark__bg-dark { + background-color: #0b1727 !important; +} +[data-bs-theme=dark] .dark__text-dark { + color: #0b1727 !important; +} +[data-bs-theme=dark] .dark__bg-card-dark { + background-color: #121e2d !important; +} +[data-bs-theme=dark] .dark__bg-100 { + background-color: #f9fafd !important; +} +[data-bs-theme=dark] .dark__text-100 { + color: #f9fafd !important; +} +[data-bs-theme=dark] .dark__bg-card-dark { + background-color: #121e2d !important; +} +[data-bs-theme=dark] .dark__bg-200 { + background-color: #edf2f9 !important; +} +[data-bs-theme=dark] .dark__text-200 { + color: #edf2f9 !important; +} +[data-bs-theme=dark] .dark__bg-card-dark { + background-color: #121e2d !important; +} +[data-bs-theme=dark] .dark__bg-300 { + background-color: #d8e2ef !important; +} +[data-bs-theme=dark] .dark__text-300 { + color: #d8e2ef !important; +} +[data-bs-theme=dark] .dark__bg-card-dark { + background-color: #121e2d !important; +} +[data-bs-theme=dark] .dark__bg-400 { + background-color: #b6c1d2 !important; +} +[data-bs-theme=dark] .dark__text-400 { + color: #b6c1d2 !important; +} +[data-bs-theme=dark] .dark__bg-card-dark { + background-color: #121e2d !important; +} +[data-bs-theme=dark] .dark__bg-500 { + background-color: #9da9bb !important; +} +[data-bs-theme=dark] .dark__text-500 { + color: #9da9bb !important; +} +[data-bs-theme=dark] .dark__bg-card-dark { + background-color: #121e2d !important; +} +[data-bs-theme=dark] .dark__bg-600 { + background-color: #748194 !important; +} +[data-bs-theme=dark] .dark__text-600 { + color: #748194 !important; +} +[data-bs-theme=dark] .dark__bg-card-dark { + background-color: #121e2d !important; +} +[data-bs-theme=dark] .dark__bg-700 { + background-color: #5e6e82 !important; +} +[data-bs-theme=dark] .dark__text-700 { + color: #5e6e82 !important; +} +[data-bs-theme=dark] .dark__bg-card-dark { + background-color: #121e2d !important; +} +[data-bs-theme=dark] .dark__bg-800 { + background-color: #4d5969 !important; +} +[data-bs-theme=dark] .dark__text-800 { + color: #4d5969 !important; +} +[data-bs-theme=dark] .dark__bg-card-dark { + background-color: #121e2d !important; +} +[data-bs-theme=dark] .dark__bg-900 { + background-color: #344050 !important; +} +[data-bs-theme=dark] .dark__text-900 { + color: #344050 !important; +} +[data-bs-theme=dark] .dark__bg-card-dark { + background-color: #121e2d !important; +} +[data-bs-theme=dark] .dark__bg-1000 { + background-color: #232e3c !important; +} +[data-bs-theme=dark] .dark__text-1000 { + color: #232e3c !important; +} +[data-bs-theme=dark] .dark__bg-card-dark { + background-color: #121e2d !important; +} +[data-bs-theme=dark] .dark__bg-1100 { + background-color: #0b1727 !important; +} +[data-bs-theme=dark] .dark__text-1100 { + color: #0b1727 !important; +} +[data-bs-theme=dark] .dark__bg-card-dark { + background-color: #121e2d !important; +} +[data-bs-theme=dark] .dark__bg-facebook { + background-color: #3c5a99 !important; +} +[data-bs-theme=dark] .dark__text-facebook { + color: #3c5a99 !important; +} +[data-bs-theme=dark] .dark__bg-card-dark { + background-color: #121e2d !important; +} +[data-bs-theme=dark] .dark__bg-google-plus { + background-color: #dd4b39 !important; +} +[data-bs-theme=dark] .dark__text-google-plus { + color: #dd4b39 !important; +} +[data-bs-theme=dark] .dark__bg-card-dark { + background-color: #121e2d !important; +} +[data-bs-theme=dark] .dark__bg-twitter { + background-color: #1da1f2 !important; +} +[data-bs-theme=dark] .dark__text-twitter { + color: #1da1f2 !important; +} +[data-bs-theme=dark] .dark__bg-card-dark { + background-color: #121e2d !important; +} +[data-bs-theme=dark] .dark__bg-linkedin { + background-color: #0077b5 !important; +} +[data-bs-theme=dark] .dark__text-linkedin { + color: #0077b5 !important; +} +[data-bs-theme=dark] .dark__bg-card-dark { + background-color: #121e2d !important; +} +[data-bs-theme=dark] .dark__bg-youtube { + background-color: #ff0001 !important; +} +[data-bs-theme=dark] .dark__text-youtube { + color: #ff0001 !important; +} +[data-bs-theme=dark] .dark__bg-card-dark { + background-color: #121e2d !important; +} +[data-bs-theme=dark] .dark__bg-github { + background-color: #333333 !important; +} +[data-bs-theme=dark] .dark__text-github { + color: #333333 !important; +} +[data-bs-theme=dark] .dark__bg-card-dark { + background-color: #121e2d !important; +} +[data-bs-theme=dark] .dark__bg-opacity-0 { + --falcon-bg-opacity: 0 !important; +} +[data-bs-theme=dark] .dark__bg-opacity-25 { + --falcon-bg-opacity: 0.25 !important; +} +[data-bs-theme=dark] .dark__bg-opacity-50 { + --falcon-bg-opacity: 0.5 !important; +} +[data-bs-theme=dark] .dark__bg-opacity-75 { + --falcon-bg-opacity: 0.75 !important; +} +[data-bs-theme=dark] .dark__bg-opacity-85 { + --falcon-bg-opacity: 0.85 !important; +} +[data-bs-theme=dark] .dark__bg-opacity-100 { + --falcon-bg-opacity: 1 !important; +} +[data-bs-theme=dark] ::selection { + background-color: var(--falcon-warning); +} + +.recent-activity-timeline { + position: relative; +} +.recent-activity-timeline::after, .recent-activity-timeline::before { + content: ""; + position: absolute; +} +.recent-activity-timeline::after { + height: 0.625rem; + width: 0.625rem; + left: 1.25rem; + top: 1.5625rem; + border-radius: 50%; + border: 1px solid var(--falcon-border-color); +} +.recent-activity-timeline-current::after { + left: 21px; +} +.recent-activity-timeline:not(:last-child)::before { + border-left: 1px dashed; + height: calc(100% - 2.11rem); + left: calc(1.25rem + 0.32rem); + top: 2.4rem; + opacity: 0.48; +} +.recent-activity-timeline-primary.recent-activity-timeline-past::after, .recent-activity-timeline-primary.recent-activity-timeline-current::after { + background-color: #2c7be5; + border-color: #2c7be5; +} +.recent-activity-timeline-primary.recent-activity-timeline-current::after { + height: 0.5rem; + width: 0.5rem; + box-shadow: 0 0 0 3px rgba(44, 123, 229, 0.3); +} +.recent-activity-timeline-secondary.recent-activity-timeline-past::after, .recent-activity-timeline-secondary.recent-activity-timeline-current::after { + background-color: #748194; + border-color: #748194; +} +.recent-activity-timeline-secondary.recent-activity-timeline-current::after { + height: 0.5rem; + width: 0.5rem; + box-shadow: 0 0 0 3px rgba(116, 129, 148, 0.3); +} +.recent-activity-timeline-success.recent-activity-timeline-past::after, .recent-activity-timeline-success.recent-activity-timeline-current::after { + background-color: #00d27a; + border-color: #00d27a; +} +.recent-activity-timeline-success.recent-activity-timeline-current::after { + height: 0.5rem; + width: 0.5rem; + box-shadow: 0 0 0 3px rgba(0, 210, 122, 0.3); +} +.recent-activity-timeline-info.recent-activity-timeline-past::after, .recent-activity-timeline-info.recent-activity-timeline-current::after { + background-color: #27bcfd; + border-color: #27bcfd; +} +.recent-activity-timeline-info.recent-activity-timeline-current::after { + height: 0.5rem; + width: 0.5rem; + box-shadow: 0 0 0 3px rgba(39, 188, 253, 0.3); +} +.recent-activity-timeline-warning.recent-activity-timeline-past::after, .recent-activity-timeline-warning.recent-activity-timeline-current::after { + background-color: #f5803e; + border-color: #f5803e; +} +.recent-activity-timeline-warning.recent-activity-timeline-current::after { + height: 0.5rem; + width: 0.5rem; + box-shadow: 0 0 0 3px rgba(245, 128, 62, 0.3); +} +.recent-activity-timeline-danger.recent-activity-timeline-past::after, .recent-activity-timeline-danger.recent-activity-timeline-current::after { + background-color: #e63757; + border-color: #e63757; +} +.recent-activity-timeline-danger.recent-activity-timeline-current::after { + height: 0.5rem; + width: 0.5rem; + box-shadow: 0 0 0 3px rgba(230, 55, 87, 0.3); +} +.recent-activity-timeline-light.recent-activity-timeline-past::after, .recent-activity-timeline-light.recent-activity-timeline-current::after { + background-color: #f9fafd; + border-color: #f9fafd; +} +.recent-activity-timeline-light.recent-activity-timeline-current::after { + height: 0.5rem; + width: 0.5rem; + box-shadow: 0 0 0 3px rgba(249, 250, 253, 0.3); +} +.recent-activity-timeline-dark.recent-activity-timeline-past::after, .recent-activity-timeline-dark.recent-activity-timeline-current::after { + background-color: #0b1727; + border-color: #0b1727; +} +.recent-activity-timeline-dark.recent-activity-timeline-current::after { + height: 0.5rem; + width: 0.5rem; + box-shadow: 0 0 0 3px rgba(11, 23, 39, 0.3); +} + +.timeline-simple { + position: relative; +} +.timeline-simple .timeline-item { + position: relative; + padding-left: 0; +} +.timeline-simple .timeline-item .timeline-item-date { + width: 3.4375rem; +} +.timeline-simple .timeline-item:not(:last-child)::before { + content: ""; + position: absolute; + border-left: 2px dashed var(--falcon-gray-200); + height: calc(100% + 2rem); + left: 4.9rem; + top: 1.5rem; +} + +.timeline-vertical { + position: relative; + padding-top: 1.5rem; + padding-bottom: 1.5rem; +} +.timeline-vertical .timeline-item { + position: relative; + padding-left: 1.8rem; +} +@media (min-width: 992px) { + .timeline-vertical .timeline-item { + padding-left: 0; + } +} +.timeline-vertical .timeline-item:not(:first-child) { + margin-top: 3rem; +} +.timeline-vertical .timeline-item:not(:last-child)::before { + content: ""; + position: absolute; + border-left: 1px solid var(--falcon-gray-300); + height: calc(100% + 4rem); + left: 1.375rem; +} +@media (min-width: 992px) { + .timeline-vertical .timeline-item:not(:last-child)::before { + left: 50%; + transform: translateX(-50%); + } +} +.timeline-vertical .timeline-item-content { + position: relative; + border: 1px solid var(--falcon-gray-300); + border-radius: 0.375rem; + margin-left: 1.25rem; + z-index: 1; +} +.timeline-vertical .timeline-item-content .timeline-item-card { + padding: 1.5rem; + background-color: var(--falcon-gray-100); + border-radius: 0.375rem; +} +@media (min-width: 992px) { + .timeline-vertical .timeline-item-content.arrow-bg-white::before { + background: var(--falcon-white); + } + html[data-bs-theme=dark] .timeline-vertical .timeline-item-content.arrow-bg-white::before { + background-color: var(--falcon-gray-100) !important; + } +} +@media (min-width: 992px) { + .timeline-vertical .timeline-item-content::before { + content: ""; + position: absolute; + width: 0.8rem; + height: 0.8rem; + background: var(--falcon-gray-100); + top: 0.9rem; + transform: rotate(45deg); + border-width: 1px; + border-style: solid; + border-color: var(--falcon-gray-300); + border-radius: 0.125rem; + z-index: -1; + } +} +.timeline-vertical .timeline-item-time { + margin-top: 0.25rem; + padding-left: 2.25rem; +} +@media (min-width: 992px) { + .timeline-vertical .timeline-item-start .timeline-item-time:first-child { + order: 1; + } +} +@media (min-width: 992px) { + .timeline-vertical .timeline-item-start .timeline-item-content { + margin-left: 0; + margin-right: 1.5rem; + } + .timeline-vertical .timeline-item-start .timeline-item-content::before { + right: -0.375rem; + } +} +@media (min-width: 992px) { + .timeline-vertical .timeline-item-start .timeline-item-time { + padding-left: 2.5rem; + } +} +.timeline-vertical .timeline-item-end .timeline-item-time:first-child { + display: flex; +} +@media (min-width: 992px) { + .timeline-vertical .timeline-item-end .timeline-item-time:first-child { + justify-content: flex-end; + } +} +@media (min-width: 992px) { + .timeline-vertical .timeline-item-end .timeline-item-content { + margin-left: 1.5rem; + } + .timeline-vertical .timeline-item-end .timeline-item-content::before { + left: -0.375rem; + border-width: 0px 0px 1px 1px; + } +} +@media (min-width: 992px) { + .timeline-vertical .timeline-item-end .timeline-item-time { + padding-right: 2.5rem; + } +} +.timeline-vertical .timeline-icon { + position: absolute; + font-size: 0.875rem; + border-radius: 50%; + background-color: var(--falcon-gray-100); + box-shadow: none; + left: 0; + top: 0; + border: 1px solid var(--falcon-border-color); +} +@media (min-width: 992px) { + .timeline-vertical .timeline-icon { + left: 50%; + transform: translateX(-50%); + } +} + +.timeline-zigzag { + position: relative; + margin-top: 3.5rem; + margin-bottom: 1.5rem; + padding-left: 0.5rem; +} +@media (min-width: 992px) { + .timeline-zigzag { + padding-left: 0; + } +} +.timeline-zigzag .timeline-item:not(:first-child) { + margin-top: 4rem; +} +@media (min-width: 992px) { + .timeline-zigzag .timeline-item:not(:first-child) { + margin-top: -5rem; + } +} +.timeline-zigzag .timeline-item:not(:last-child) .timeline-item-content { + position: relative; +} +.timeline-zigzag .timeline-item:not(:last-child) .timeline-item-content::before { + content: ""; + position: absolute; + width: 2px; + border-left: 1px solid var(--falcon-gray-300); + height: calc(100% + 4rem); + top: 0.5rem; +} +@media (min-width: 992px) { + .timeline-zigzag .timeline-item:not(:last-child) .timeline-item-content::before { + height: calc(100% - 5rem); + } +} +.timeline-zigzag .timeline-item-text { + padding-left: 1.5rem; + padding-right: 1.5rem; + order: 1; +} +@media (min-width: 576px) { + .timeline-zigzag .timeline-item-text { + order: 0; + } +} +.timeline-zigzag .timeline-item-end { + justify-content: flex-end; +} +.timeline-zigzag .timeline-item-end .bullet::after { + transform: translate(-50%, -50%); +} +.timeline-zigzag .timeline-item-end .timeline-item-content::before { + left: 0; +} +@media (min-width: 992px) { + .timeline-zigzag .timeline-item-end .timeline-item-content::before { + transform: translateX(-50%); + } +} +.timeline-zigzag .timeline-item-start .bullet::after { + transform: translate(-50%, -50%); +} +@media (min-width: 992px) { + .timeline-zigzag .timeline-item-start .bullet::after { + right: 0; + transform: translate(50%, -50%); + } +} +@media (min-width: 992px) { + .timeline-zigzag .timeline-item-start .timeline-item-content::before { + right: 0; + transform: translateX(50%); + } +} +@media (min-width: 992px) { + .timeline-zigzag .timeline-item-start .timeline-item-text { + order: 1; + } +} +.timeline-zigzag .bullet { + display: block; + position: relative; + height: 1px; +} +.timeline-zigzag .bullet::after, .timeline-zigzag .bullet::before { + content: ""; + position: absolute; +} +.timeline-zigzag .bullet::after { + top: 0.5rem; + height: 1rem; + width: 1rem; + border-radius: 50%; + border: 1px solid var(--falcon-gray-300); + background-color: var(--falcon-gray-100); +} +.timeline-zigzag .bullet::before { + height: 1px; + width: 50px; + border-top: 1px solid var(--falcon-gray-300); + top: 0.5rem; +} +@media (min-width: 576px) { + .timeline-zigzag .bullet::before { + width: 100%; + } +} +.timeline-zigzag .timeline-item-media { + position: relative; + object-fit: cover; + margin-left: 1.5rem; +} +@media (min-width: 576px) { + .timeline-zigzag .timeline-item-media { + margin-left: 0; + } +} + +.treeview.treeview-select .collapse-toggle .treeview-text { + margin-left: 2.1rem; +} +.treeview.treeview-select .toggle-container { + position: relative; +} +.treeview.treeview-select .toggle-container input { + position: absolute; + left: 18px; + z-index: 2; +} + +.treeview { + position: relative; + padding-left: 0; +} +.treeview .collapsing { + transition: height 0.15s ease; +} +@media (prefers-reduced-motion: reduce) { + .treeview .collapsing { + transition: none; + } +} +.treeview .treeview-border { + border-left-style: solid; + border-width: 1px; + border-color: var(--falcon-border-color); + margin-left: 3px; +} +.treeview .treeview-border-transparent { + border-color: transparent !important; +} +.treeview ul:not(.collapse-show) .treeview-row { + display: none; +} +.treeview .treeview-list-item { + list-style: none; +} +.treeview .treeview-list-item .treeview-row { + width: 100%; + height: 27px; + position: absolute; + left: 0; +} +.treeview .treeview-list-item .treeview-row-odd { + background-color: var(--falcon-gray-200); +} +.treeview .treeview-list-item .treeview-row-even { + background-color: var(--falcon-gray-100); +} +.treeview .treeview-list-item .treeview-item { + position: relative; + display: flex; + align-items: center; +} +.treeview .treeview-list-item .treeview-item > .form-check-input { + margin: 0 0.5rem 0.25rem 0; +} +.treeview .treeview-list-item .treeview-text { + display: flex; + align-items: center; + font-weight: 600; + font-size: 0.8333333333rem; + color: var(--falcon-gray-600); + padding: 0.25rem 0; + margin-bottom: 0; +} +.treeview a { + text-decoration: none; +} +.treeview .collapse-toggle { + position: relative; + display: block; +} +.treeview .collapse-toggle .treeview-text { + padding-left: 1.8rem; + margin-left: 0.5rem; +} +.treeview .collapse-toggle:after { + content: ""; + display: block; + position: absolute; + left: 0; + height: 0.4rem; + width: 0.4rem; + border-right: 2px solid var(--falcon-gray-400); + border-bottom: 2px solid var(--falcon-gray-400); + top: 45%; + transform: translateY(-50%) rotate(-45deg); + transition: all 0.2s ease-in-out; + transform-origin: center; + transition-property: transform, border-color; +} +.treeview .collapse-toggle.collapsed:after { + transform: translateY(-50%) rotate(45deg); +} +.treeview .collapse-toggle .treeview-text { + position: relative; +} +.treeview .collapse-toggle .treeview-text::before { + display: block; + width: 12px; + position: absolute; + left: 10px; + content: url("data:image/svg+xml;base64,PHN2ZyBhcmlhLWhpZGRlbj0idHJ1ZSIgZm9jdXNhYmxlPSJmYWxzZSIgZGF0YS1wcmVmaXg9ImZhcyIgZGF0YS1pY29uPSJmb2xkZXIiIGNsYXNzPSJzdmctaW5saW5lLS1mYSBmYS1mb2xkZXIgZmEtdy0xNiIgcm9sZT0iaW1nIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj48cGF0aCBmaWxsPSIjNzQ4MTk0IiBkPSJNNDY0IDEyOEgyNzJsLTY0LTY0SDQ4QzIxLjQ5IDY0IDAgODUuNDkgMCAxMTJ2Mjg4YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoNDE2YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWMTc2YzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6Ij48L3BhdGg+PC9zdmc+") !important; +} +.treeview .collapse-toggle.collapsed .treeview-text::before { + display: block; + width: 12px; + position: absolute; + left: 10px; + content: url("data:image/svg+xml;base64,PHN2ZyBhcmlhLWhpZGRlbj0idHJ1ZSIgZm9jdXNhYmxlPSJmYWxzZSIgZGF0YS1wcmVmaXg9ImZhcyIgZGF0YS1pY29uPSJmb2xkZXItb3BlbiIgY2xhc3M9InN2Zy1pbmxpbmUtLWZhIGZhLWZvbGRlci1vcGVuIGZhLXctMTgiIHJvbGU9ImltZyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgNTc2IDUxMiI+PHBhdGggZmlsbD0iI0I2QzJEMiIgZD0iTTU3Mi42OTQgMjkyLjA5M0w1MDAuMjcgNDE2LjI0OEE2My45OTcgNjMuOTk3IDAgMCAxIDQ0NC45ODkgNDQ4SDQ1LjAyNWMtMTguNTIzIDAtMzAuMDY0LTIwLjA5My0yMC43MzEtMzYuMDkzbDcyLjQyNC0xMjQuMTU1QTY0IDY0IDAgMCAxIDE1MiAyNTZoMzk5Ljk2NGMxOC41MjMgMCAzMC4wNjQgMjAuMDkzIDIwLjczIDM2LjA5M3pNMTUyIDIyNGgzMjh2LTQ4YzAtMjYuNTEtMjEuNDktNDgtNDgtNDhIMjcybC02NC02NEg0OEMyMS40OSA2NCAwIDg1LjQ5IDAgMTEydjI3OC4wNDZsNjkuMDc3LTExOC40MThDODYuMjE0IDI0Mi4yNSAxMTcuOTg5IDIyNCAxNTIgMjI0eiI+PC9wYXRoPjwvc3ZnPg==") !important; +} +.treeview.treeview-stripe { + padding-left: 0.5rem !important; +} + +.migration-sidebar .treeview-list-item .active .treeview-text { + color: var(--falcon-primary); + font-weight: 700; +} + +@media (min-width: 768px) and (max-width: 991.98px) { + .card-view-height { + height: 7.25rem; + } +} + +.remove-checked-icon:checked[type=checkbox] { + background-image: none; +} + +.open-tickets:checked { + opacity: 0.5; +} + +.due-tickets:checked { + opacity: 0.3; +} + +.unassigned-tickets:checked { + opacity: 0.7; +} + +.due-tickets-volume:checked { + opacity: 0.3; +} + +.unassigned-tickets-volume:checked { + opacity: 0.15; +} + +.bg-priority-medium:checked { + border-color: #73d3fe !important; + background-color: #73d3fe !important; +} +html[data-bs-theme=dark] .bg-priority-medium:checked { + border-color: #229bd2 !important; + background-color: #229bd2 !important; +} + +.bg-priority-low:checked { + border-color: #a9e4ff !important; + background-color: #a9e4ff !important; +} +html[data-bs-theme=dark] .bg-priority-low:checked { + border-color: #195979 !important; + background-color: #195979 !important; +} + +.ticket-preview-avatar { + width: 5.625rem; + height: 5.625rem; + border-radius: 50%; +} + +@media (min-width: 1200px) { + .shadow-show-xl { + box-shadow: var(--falcon-box-shadow) !important; + } +} + +.hover-border-secondary:hover { + border-color: var(--falcon-secondary) !important; +} + +.input-search-width { + width: 13.75rem; +} + +.contact-details-todo-list { + height: 21rem; +} +.offcanvas .contact-details-todo-list { + height: auto; +} + +.tab-contact-details .nav-link:not(.active):hover, +.tab-tickets-status .nav-link:not(.active):hover { + border-color: transparent !important; +} +.tab-contact-details .nav-link.active, +.tab-tickets-status .nav-link.active { + border-bottom: 2px solid var(--falcon-primary) !important; + background-color: var(--falcon-card-bg) !important; + outline: none !important; +} +.tab-contact-details .nav-link.active svg, +.tab-contact-details .nav-link.active span, +.tab-tickets-status .nav-link.active svg, +.tab-tickets-status .nav-link.active span { + color: var(--falcon-primary) !important; +} +.tab-contact-details .nav-link.active h6, .tab-contact-details .nav-link.active .h6, +.tab-tickets-status .nav-link.active h6, +.tab-tickets-status .nav-link.active .h6 { + color: var(--falcon-gray-900) !important; +} + +.top-customers-tab { + width: 5rem; +} +.top-customers-tab .nav-item .nav-link.active { + font-weight: 600 !important; +} +.top-customers-tab .nav-item .nav-link.active:after { + top: 45%; + right: -6px; + bottom: unset; + left: unset; + border-width: 1px 1px 0 0; +} +.top-customers-tab + .tab-content { + max-width: calc(100% - 5rem); +} + +.animated-progress-bar .progress-bar { + width: var(--falcon-progressbar-width); + animation-name: widthAnimation; + animation-duration: 1s; + border-radius: 6px; +} + +@keyframes widthAnimation { + 0% { + width: 0%; + } + 100% { + width: var(--falcon-progressbar-width); + } +} +.circle-progress-svg { + transform: rotate(130deg); +} +[dir=rtl] .circle-progress-svg { + transform: rotate(-230deg) scaleX(-1); +} +.circle-progress-svg .progress-bar-rail { + stroke-dasharray: 340px; + stroke-dashoffset: 72; + stroke: var(--falcon-gray-200); +} +.circle-progress-svg .progress-bar-top { + stroke-dasharray: 340px; + stroke-dashoffset: 340; + animation: strokeAnimation 1s ease-in-out forwards; +} + +@keyframes strokeAnimation { + to { + stroke-dashoffset: calc(340px - 267px * var(--falcon-circle-progress-bar) / 100); + } +} +/* -------------------------------------------------------------------------- */ +/* Course Details */ +/* -------------------------------------------------------------------------- */ +@media (min-width: 992px) { + .course-details-sticky-sidebar { + position: sticky; + z-index: 1015; + top: calc(var(--falcon-top-nav-height) + 1rem); + } +} + +/* -------------------------------------------------------------------------- */ +/* Create Course */ +/* -------------------------------------------------------------------------- */ +.create-course-description-textarea .tox-editor-header, +create-product-description-textarea .tox-editor-header { + background-color: var(--falcon-card-bg); +} +.create-course-description-textarea .tox-editor-header .tox-toolbar__primary, +create-product-description-textarea .tox-editor-header .tox-toolbar__primary { + border-bottom: 1px solid var(--falcon-gray-300) !important; +} +.create-course-description-textarea .tox-tinymce, +create-product-description-textarea .tox-tinymce { + border: 1px solid var(--falcon-gray-300) !important; + border-radius: var(--falcon-border-radius-lg) !important; + height: 13.438rem !important; +} + +/* -------------------------------------------------------------------------- */ +/* Courses */ +/* -------------------------------------------------------------------------- */ +.course-filter { + height: 100% !important; +} +@media (min-width: 1200px) { + .course-filter { + height: calc(100vh - var(--falcon-top-nav-height)) !important; + position: sticky !important; + top: var(--falcon-top-nav-height) !important; + } +} + +.bottom-bar { + transition: all 0.2s ease-in-out; +} +.bottom-bar.show { + transform: translateY(0%); +} +.bottom-bar.hide { + transform: translateY(100%); +} + +.focus-actions { + display: none; + position: absolute; +} +.focus-actions.show { + display: inline-block; +} +.focus-actions.show + .focus-hide { + display: none; +} + +.focus-actions-trigger { + position: relative; +} +.focus-actions-trigger:focus-within .focus-actions { + z-index: 1; + display: flex; +} +.focus-actions-trigger:focus-within .focus-hide { + display: none; +} + +.focus-bg-primary:focus, .focus-bg-primary:focus-visible, .focus-bg-primary:active { + background-color: var(--falcon-primary) !important; + color: var(--falcon-white) !important; +} + +.focus-bg-secondary:focus, .focus-bg-secondary:focus-visible, .focus-bg-secondary:active { + background-color: var(--falcon-secondary) !important; + color: var(--falcon-white) !important; +} + +.collapse-indicator-plus { + position: relative; +} +.collapse-indicator-plus:after { + content: "+"; + position: absolute; + top: 50%; + transform: translateY(-50%); + right: 0; + font-size: 1.2rem; + line-height: 0; + font-weight: 500; + color: inherit; + transition: all 0.2s ease-in-out; + transition-property: transform; +} +.collapse-indicator-plus:before { + display: none; +} +.collapse-indicator-plus[aria-expanded=true]:after { + margin-left: 2px; + margin-bottom: 6px; + content: "−"; + transform: rotate(-180deg); +} \ No newline at end of file diff --git a/public/css/theme.css.map b/public/css/theme.css.map new file mode 100644 index 0000000..2636319 --- /dev/null +++ b/public/css/theme.css.map @@ -0,0 +1 @@ +{"version":3,"file":"theme.css","mappings":"AAAA,oBAAoB;;AAEpB;;;;;;;;;;CAUC,kBAAkB;CAClB,OAAO;CACP,MAAM;CACN;AACD;CACC,gBAAgB;CAChB;AACD;;;CAGC,yBAAyB;IACtB,sBAAsB;SACjB,iBAAiB;GACvB,uBAAuB;CACzB;AACD,kDAAkD;AAClD;CACC,uBAAuB;AACxB;AACA,mFAAmF;AACnF;CACC,0CAA0C;CAC1C;AACD,qEAAqE;AACrE;CACC,aAAa;CACb,cAAc;CACd,6BAA6B;CAC7B;AACD;;CAEC,cAAc;CACd;AACD,gGAAgG;AAChG,qFAAqF;AACrF;CACC,0BAA0B;CAC1B,2BAA2B;CAC3B;AACD;;;;;CAKC,0BAA0B;CAC1B,2BAA2B;CAC3B,WAAW;CACX,UAAU;CACV;;AAED;CACC,sEAAsE;CACtE,4BAA4B;AAC7B;;AAEA;CACC,6BAA6B;CAC7B,yBAAyB;CACzB;AACD;CACC,4BAA4B;CAC5B,qDAAqD;CACrD,kBAAkB;CAClB,wBAAwB;AACzB;AACA;CACC,sBAAsB;CACtB,kBAAkB;AACnB;AACA;CACC,wCAAwC;AACzC;AACA;CACC,oDAAoD;AACrD;AACA;CACC,eAAe;CACf,kBAAkB;CAClB;AACD;CACC,mBAAmB;CACnB;AACD;CACC,QAAQ;CACR,SAAS;CACT,2BAA2B;MACtB,sBAAsB;CAC3B,YAAY;CACZ;AACD,uEAAuE;AACvE;CACC,sBAAsB;CACtB;;AAED,wBAAwB,YAAY,EAAE;;AAEtC,wBAAwB,YAAY,EAAE;AACtC,wBAAwB,YAAY,EAAE;AACtC,wBAAwB,YAAY,EAAE;AACtC,wBAAwB,YAAY,EAAE;AACtC,0BAA0B,YAAY,EAAE;AACxC,wBAAwB,YAAY,EAAE;;AAEtC,2BAA2B,YAAY,EAAE;AACzC,2BAA2B,YAAY,EAAE;;AAEzC;CACC,UAAU;CACV,WAAW;CACX;AACD;CACC,2BAA2B;CAC3B,qBAAqB;CACrB,kBAAkB;CAClB;;;AAGD,wBAAwB;;AAExB;CACC,kBAAkB;CAClB,YAAY;CACZ,8BAA8B,EAAE,8BAA8B;CAC9D,oBAAoB;CACpB;AACD;;CAEC,kBAAkB;CAClB,aAAa;CACb,oBAAoB;CACpB;AACD;CACC,MAAM;CACN;AACD;CACC,QAAQ;CACR;AACD;CACC,SAAS;CACT;AACD;CACC,OAAO;CACP;AACD;CACC,WAAW;CACX,WAAW;CACX;AACD;CACC,YAAY;CACZ;AACD;CACC,gBAAgB;CAChB;AACD;CACC,mBAAmB;CACnB;AACD;CACC,iBAAiB;CACjB;AACD;CACC,kBAAkB;CAClB;;;AAGD,6BAA6B;;AAE7B;CACC,UAAU;CACV,uCAAuC;IACpC,oCAAoC;SAC/B,+BAA+B;CACvC;AACD;CACC,UAAU;CACV;AACD;CACC,6BAA6B;KACzB,yBAAyB;SACrB,qBAAqB;CAC7B;AACD;CACC,sBAAsB;AACvB;;AAEA;CACC,oEAAoE;IACjE,iEAAiE;SAC5D,4DAA4D;CACpE;AACD;;CAEC,wBAAwB;IACrB,qBAAqB;SAChB,gBAAgB;CACxB;;AAED;CACC,kBAAkB;CAClB;;;AAGD,YAAY;;AAEZ;CACC,eAAe;CACf;AACD;CACC,oBAAoB;CACpB,oBAAoB;CACpB,oBAAoB;CACpB;AACD;;CAEC,iBAAiB;CACjB;AACD;;CAEC,YAAY;CACZ;AACD;;;CAGC,YAAY;CACZ,wBAAwB;CACxB,wBAAwB;CACxB,wBAAwB;CACxB;;AAED,oCAAoC;AACpC;;;;;CAKC,oBAAoB;CACpB;;AAED;;;;CAIC,8BAA8B,EAAE,8BAA8B;CAC9D,oBAAoB;CACpB;;AAED,kBAAkB;;AAElB;CACC,gBAAgB;CAChB,mBAAmB;CACnB;AACD;CACC,cAAc;CACd;AACD;CACC,uBAAuB;CACvB,iCAAiC;CACjC;;;AAGD,uBAAuB;AACvB;CACC,2DAA2D;CAC3D,eAAe;CACf,kBAAkB;CAClB,gBAAgB;CAChB;;;AAGD,2BAA2B;;AAE3B;CACC,sCAAsC;CACtC,kBAAkB;CAClB;AACD;CACC,sBAAsB;CACtB,6BAA6B;CAC7B,WAAW;CACX,YAAY;CACZ,iBAAiB;CACjB,cAAc;CACd,kBAAkB;CAClB,qBAAqB;CACrB,YAAY;CACZ;AACD;;CAEC,4BAA4B;CAC5B,4BAA4B;CAC5B,cAAc;CACd;AACD;;CAEC,yBAAyB;CACzB;AACD;CACC,2BAA2B;CAC3B,4BAA4B;CAC5B;AACD;CACC,8BAA8B;CAC9B,+BAA+B;CAC/B,mBAAmB;CACnB;AACD;CACC,eAAe;CACf,yBAAyB;CACzB,WAAW;CACX;;AAED;CACC,WAAW;CACX,YAAY;CACZ,iBAAiB;CACjB;AACD;CACC,2BAA2B;CAC3B,4BAA4B;CAC5B;AACD;CACC,8BAA8B;CAC9B,+BAA+B;CAC/B;;AAED,iBAAiB;;AAEjB;;CAEC,mDAAmD;CACnD,gBAAgB;CAChB;;AAED;CACC,eAAe;CACf;;;AAGD,mBAAmB;;AAEnB;CACC,qCAAqC;CACrC,gBAAgB;CAChB,kBAAkB;CAClB;AACD;CACC,wCAAwC;CACxC,WAAW;CACX,YAAY;CACZ;AACD;CACC,2CAA2C;CAC3C,0BAA0B;CAC1B;AACD;CACC,WAAW;CACX,YAAY;CACZ;AACD;;CAEC,aAAa;CACb;AACD;CACC,cAAc;CACd,kBAAkB;CAClB;AACD;CACC,yBAAyB;CACzB,WAAW;CACX,gBAAgB;CAChB;AACD;CACC,kBAAkB;CAClB,kBAAkB;CAClB,kBAAkB;CAClB;AACD;CACC,eAAe;CACf,kBAAkB;CAClB,QAAQ;CACR;AACD;CACC,cAAc;CACd,eAAe;CACf,oBAAoB;CACpB;AACD;CACC,SAAS;CACT,0BAA0B;CAC1B,0BAA0B;CAC1B;;AAED,sBAAsB;AACtB,6BAA6B,6DAA6D;CACzF,6CAA6C;CAC7C;;;AAGD,mCAAmC;;AAEnC;CACC,gBAAgB;CAChB,oCAAoC;CACpC,SAAS;CACT;AACD;;CAEC,cAAc;CACd,WAAW;CACX,gBAAgB;CAChB;AACD;CACC,qBAAqB;CACrB;AACD;;CAEC,0BAA0B;CAC1B;AACD;CACC,0BAA0B;CAC1B,mCAAmC;CACnC,UAAU;CACV,gBAAgB;CAChB;AACD;CACC,gBAAgB;CAChB;AACD;CACC,kBAAkB;CAClB;AACD;CACC,sBAAsB;CACtB,gBAAgB;CAChB,gBAAgB;CAChB,oBAAoB;CACpB,mBAAmB;CACnB,2BAA2B;MACtB,sBAAsB;CAC3B,oCAAoC;CACpC,yBAAyB;CACzB;AACD;CACC,0BAA0B;CAC1B,mBAAmB;CACnB,gBAAgB;CAChB;AACD;CACC,6BAA6B;CAC7B;;AAED;;;CAGC,gBAAgB;CAChB;AACD;;CAEC,iCAAiC;CACjC,4BAA4B;CAC5B;;;AAGD,UAAU;;AAEV;CACC,kBAAkB;CAClB,kBAAkB;CAClB,mBAAmB;CACnB;AACD;CACC,YAAY;CACZ,gBAAgB;CAChB,mBAAmB;CACnB;AACD;CACC,2BAA2B;CAC3B,gBAAgB;CAChB,eAAe;CACf,oBAAoB;CACpB,eAAe;CACf;AACD;CACC,cAAc;CACd,eAAe;CACf;AACD;CACC,WAAW;CACX,YAAY;CACZ,kBAAkB;CAClB,SAAS;CACT,gBAAgB;CAChB,kBAAkB;CAClB,gBAAgB;CAChB,oBAAoB;CACpB;AACD;CACC,WAAW;CACX,YAAY;CACZ,YAAY;;CAEZ,oBAAoB;CACpB,oBAAoB;;CAEpB,gCAAgC;IAC7B,6BAA6B;KAC5B,4BAA4B;SACxB,wBAAwB;CAChC;AACD;;CAEC,iBAAiB;CACjB,WAAW;CACX,sCAAsC;CACtC;AACD;CACC,kBAAkB;CAClB,MAAM;CACN,QAAQ;CACR,YAAY;CACZ,kBAAkB;CAClB,WAAW;CACX,YAAY;CACZ,2CAA2C;CAC3C,cAAc;CACd,qBAAqB;CACrB,uBAAuB;CACvB;AACD;;CAEC,cAAc;CACd;AACD;CACC,cAAc;CACd;;AAED;CACC,WAAW;CACX;AACD;CACC,WAAW;CACX,cAAc;;CAEd,uHAAuH;CACvH,iHAAiH;CACjH;;AAED;;;;CAIC,sBAAsB;CACtB;;;AAGD,aAAa;;AAEb;CACC,gBAAgB;CAChB,sBAAsB;CACtB;;;AAGD,YAAY;AACZ,mDAAmD;AACnD;CACC,kBAAkB;CAClB,YAAY;CACZ,sBAAsB;CACtB,sBAAsB;CACtB,kBAAkB;CAClB,WAAW;CACX,mBAAmB;CACnB,yBAAyB;CACzB,sBAAsB;CACtB,qBAAqB;CACrB,iBAAiB;CACjB,oBAAoB;CACpB,qCAAqC;CACrC;AACD;CACC,eAAe;CACf,oBAAoB;CACpB;AACD;;;;CAIC,kBAAkB;CAClB,oBAAoB;CACpB,6BAA6B;CAC7B,uBAAuB;CACvB,WAAW;CACX;;AAED,eAAe;;AAEf;CACC,eAAe;AAChB;AACA;CACC,gBAAgB;AACjB;AACA;;CAEC,SAAS;CACT,iBAAiB;CACjB;AACD;CACC,SAAS;CACT,oBAAoB;CACpB,sBAAsB;CACtB;AACD;CACC,MAAM;CACN,iBAAiB;CACjB,iBAAiB;CACjB,yBAAyB;CACzB;AACD;CACC,iBAAiB;AAClB;AACA;CACC,gBAAgB;AACjB;AACA;;CAEC,QAAQ;CACR,gBAAgB;CAChB;AACD;CACC,QAAQ;CACR,mBAAmB;CACnB,uBAAuB;CACvB;AACD;CACC,OAAO;CACP,kBAAkB;CAClB,wBAAwB;CACxB;;AAED,aAAa;;AAEb;CACC,kEAAkE;CAClE;EACC,iCAAiC;EACjC,yBAAyB;EACzB;CACD;;ACppBD,iBAAiB,iBAAiB,CAAC,qBAAqB,CAAC,cAAc,CAAC,0BAA0B,CAAC,wBAAwB,CAAC,sBAAsB,CAAC,mBAAmB,eAAe,CAAC,aAAa,CAAC,cAAc,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,gBAAgB,iBAAiB,CAAC,iBAAiB,CAAC,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,SAAS,CAAC,kBAAkB,2BAA2B,CAAC,4BAA4B,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,gCAAgC,CAAC,2BAA2B,iBAAiB,CAAC,+BAA+B,CAAC,iBAAiB,CAAC,aAAa,CAAC,WAAW,CAAC,UAAU,CAAC,cAAc,CAAC,eAAe,CAAC,aAAa,CAAC,oBAAoB,CAAC,uBAAuB,CAAC,2FAA2F,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,mDAAmD,WAAW,CAAC,aAAa,CAAC,uBAAuB,eAAe,CAAC,cAAc,CAAC,UAAU,CAAC,mBAAmB,CAAC,wCAAwC,4BAA4B,CAAC,WAAW,CAAC,UAAU,CAAC,aAAa,CAAC,iBAAiB,CAAC,UAAU,CAAC,cAAc,CAAC,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,aAAa,CAAC,YAAY,CAAC,gCAAgC,kBAAkB,CAAC,aAAa,CAAC,SAAS,CAAC,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,cAAc,CAAC,aAAa,CAAC,eAAe,CAAC,mBAAmB,CAAC,UAAU,CAAC,iBAAiB,SAAS,CAAC,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,eAAe,CAAC,oCAAoC,mBAAmB,CAAC,0BAA0B,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,uDAAuD,mBAAmB,CAAC,0BAA0B,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,qDAAqD,kBAAkB,CAAC,qBAAqB,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,4BAA4B,iBAAiB,CAAC,UAAU,CAAC,eAAe,CAAC,iBAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,iCAAiC,CAAC,8CAA8C,UAAU,CAAC,mBAAmB,CAAC,sBAAsB,CAAC,oCAAoC,KAAK,CAAC,UAAU,CAAC,4BAA4B,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,sCAAsC,MAAM,CAAC,WAAW,CAAC,2DAA2D,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,cAAc,CAAC,UAAU,CAAC,mEAAmE,UAAU,CAAC,MAAM,CAAC,gCAAgC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAC,iBAAiB,CAAC,YAAY,CAAC,WAAW,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,sCAAsC,CAAC,oCAAoC,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC,0BAA0B,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,uBAAuB;;ACAnsG,gBAAgB;AAChB;AACA;ACFA;ACAA;AACA;AACA;ACFA;AACA;AACA;ACFA;;EASI;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAIA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAIA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAIA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAIA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAIA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAIA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAGF;EACA;EAMA;EACA;EACA;EAOA;EC2OI,6BALI;EDpOR;EACA;EAKA;EACA;EACA;EACA;EAEA;EACA;EAEA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EAGA;EAEA;EACA;EACA;EAEA;EACA;EAGE;EAGF;EACA;EACA;EAGA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EAIA;EACA;EACA;EAIA;EACA;EACA;EACA;AJOF;;AMvHI;EFsHA;EAGA;EACA;EACA;EACA;EAEA;EACA;EAEA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EAGE;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAIA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAIA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAGF;EAEA;EACA;EACA;EACA;EAEA;EACA;EACA;EAEA;EACA;EAEA;EACA;EACA;EACA;AJOJ;;AO9LA;;EAMI;EAAA;EAAA;EAAA;EAAA;EAAA;EAOA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAGA;EAAA;EAAA;EAAA;EAAA;EAAA;EASA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAOF;EAKA;EACA;EAEA;EACA;EAEA;EAEA;EAEA;EAKA;EAKA;EAKA;EACA;EACA;EACA;;mCAAA;EAGA;EAKA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EAUE;EACA;EACA;EAIA;EANA;EACA;EACA;EAIA;EANA;EACA;EACA;EAIA;EANA;EACA;EACA;EAIA;EANA;EACA;EACA;EAIA;EANA;EACA;EACA;EAIA;EANA;EACA;EACA;EAIA;EANA;EACA;EACA;EAIA;EAIF;EAKA;EACA;EACA;EAKA;EAIA;EAKA;EAKA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAIA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAIA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAIA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAMA;EACA;EACA;EACA;EAKA;EACA;EACA;EACA;EACA;EAKA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAKA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EAKA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAKA;EAKA;EACA;EAKA;EACA;EACA;EAKA;EAKA;EAKA;EAKA;EAKA;EAKA;EACA;EAKA;EAKA;EAKA;EACA;EAKA;EACA;EACA;EAKA;EAMA;EACA;EAKA;EAKA;EACA;EAKA;EACA;EACA;EAKA;EAKA;EACA;EAKA;EAKA;EAKA;AP0CF;AOzTE;;EACE;AP4TJ;AOxCI;;EACE;EACA;EACA;EAKA;EAOA;EAKA;EAOA;EAKA;EAOA;APaN;AOpDI;;EACE;EACA;EACA;EAKA;EAOA;EAKA;EAOA;EAKA;EAOA;APyBN;AOhEI;;EACE;EACA;EACA;EAKA;EAOA;EAKA;EAOA;EAKA;EAOA;APqCN;AO5EI;;EACE;EACA;EACA;EAKA;EAOA;EAKA;EAOA;EAKA;EAOA;APiDN;AOxFI;;EACE;EACA;EACA;EAKA;EAOA;EAKA;EAOA;EAKA;EAOA;AP6DN;AOpGI;;EACE;EACA;EACA;EAKA;EAOA;EAKA;EAOA;EAKA;EAOA;APyEN;AOhHI;;EACE;EACA;EACA;EAKA;EAOA;EAKA;EAOA;EAKA;EAOA;APqFN;AO5HI;;EACE;EACA;EACA;EAKA;EAOA;EAKA;EAOA;EAKA;EAOA;APiGN;;AMleI;EEJE;EACA;EADA;EACA;EADA;EACA;EADA;EACA;EADA;EACA;EADA;EACA;EADA;EACA;EADA;EACA;EADA;EACA;EADA;EACA;EADA;EACA;EAWA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAGA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAGF;EACA;EACA;EAME;EACA;EAIA;EAIA;EATA;EACA;EAIA;EAIA;EATA;EACA;EAIA;EAIA;EATA;EACA;EAIA;EAIA;EATA;EACA;EAIA;EAIA;EATA;EACA;EAIA;EAIA;EATA;EACA;EAIA;EAIA;EATA;EACA;EAIA;EAIA;EAMF;EACA;EAEA;EACA;EAEA;EACA;EAKA;kCAAA;EAEA;EACA;EACA;EAKA;EAQA;EAMA;EACA;EACA;EACA;EACA;EACA;EAIA;EACA;EAMA;EACA;;;6CAAA;EAIA;EAKA;;kCAAA;EAGA;;uBAAA;EAIA;EACA;EACA;EAKA;EAKA;EACA;EAKA;EACA;EACA;EAKA;EACA;;;;GAAA;EAKA;;;;GAAA;EAMA;EACA;EACA;;;;GAAA;EAKA;EACA;EACA;;;;GAAA;EAKA;EAKA;EACA;EAKA;EAKA;EACA;EAKA;EAKA;EAKA;EAKA;EAKA;kCAAA;EAMA;EAKA;EACA;EAKA;EACA;EACA;EAKA;EAKA;EACA;ARqaJ;AQ/ZM;EACE;EACA;EACA;EAKA;EAOA;EAKA;EAOA;EAKA;EAOA;ARmYR;AQ1aM;EACE;EACA;EACA;EAKA;EAOA;EAKA;EAOA;EAKA;EAOA;AR8YR;AQrbM;EACE;EACA;EACA;EAKA;EAOA;EAKA;EAOA;EAKA;EAOA;ARyZR;AQhcM;EACE;EACA;EACA;EAKA;EAOA;EAKA;EAOA;EAKA;EAOA;ARoaR;AQ3cM;EACE;EACA;EACA;EAKA;EAOA;EAKA;EAOA;EAKA;EAOA;AR+aR;AQtdM;EACE;EACA;EACA;EAKA;EAOA;EAKA;EAOA;EAKA;EAOA;AR0bR;AQjeM;EACE;EACA;EACA;EAKA;EAOA;EAKA;EAOA;EAKA;EAOA;ARqcR;AQ5eM;EACE;EACA;EACA;EAKA;EAOA;EAKA;EAOA;EAKA;EAOA;ARgdR;;AAttBA;;gDAAA;ASXA;;;EAGE;ATuuBF;;ASxtBI;EANJ;IAOM;ET4tBJ;AACF;;AS/sBA;EACE;EACA;EJ6OI,uCALI;EItOR;EACA;EACA;EACA;EACA;EACA;EACA;ATktBF;;ASzsBA;EACE;EACA,iCRgLS;EQ/KT;EACA;EACA,iCR8KW;AD8hBb;;ASlsBA;EACE;EACA,qBCwjB4B;EDvjB5B,0CRsIqB;EQpIrB,gBR2GmB;EQ1GnB,gBCwjB4B;EDvjB5B;ATosBF;;ASjsBA;EJuMQ;AL8fR;AK1pBI;EI3CJ;IJ8MQ;EL2fN;AACF;;ASrsBA;EJkMQ;ALugBR;AKnqBI;EItCJ;IJyMQ;ELogBN;AACF;;ASzsBA;EJ6LQ;ALghBR;AK5qBI;EIjCJ;IJoMQ;EL6gBN;AACF;;AS7sBA;EJwLQ;ALyhBR;AKrrBI;EI5BJ;IJ+LQ;ELshBN;AACF;;ASjtBA;EJ+KM,iBALI;AL2iBV;;AShtBA;EJ0KM,0BALI;AL+iBV;;ASzsBA;EACE;EACA,mBCwV0B;AVoX5B;;ASlsBA;EACE;EACA;EACA;ATqsBF;;AS/rBA;EACE;EACA;EACA;ATksBF;;AS5rBA;;EAEE;AT+rBF;;AS5rBA;;;EAGE;EACA;AT+rBF;;AS5rBA;;;;EAIE;AT+rBF;;AS5rBA;EACE,gBRkBiB;AD6qBnB;;AS1rBA;EACE;EACA;AT6rBF;;ASvrBA;EACE;AT0rBF;;ASlrBA;;EAEE,gBRLmB;AD0rBrB;;AS7qBA;EJ6EM,cALI;ALymBV;;AS1qBA;EACE,iBCqf4B;EDpf5B;EACA;AT6qBF;;ASpqBA;;EAEE;EJwDI,iBALI;EIjDR;EACA;ATuqBF;;ASpqBA;EAAM;ATwqBN;;ASvqBA;EAAM;AT2qBN;;AStqBA;EACE;EACA,qBR3GgB;ADoxBlB;ASvqBE;EACE;EACA,0BR9GoB;ADuxBxB;;AS/pBE;EAEE;EACA;ATiqBJ;;AS1pBA;;;;EAIE,yCCgV4B;ELlUxB,cALI;ALqpBV;;AStpBA;EACE;EACA;EACA;EACA;EJEI,cALI;AL6pBV;ASrpBE;EJHI,kBALI;EIUN;EACA;ATupBJ;;ASnpBA;EJVM,cALI;EIiBR;EACA;ATspBF;ASnpBE;EACE;ATqpBJ;;ASjpBA;EACE;EJtBI,cALI;EI6BR,4BCy5CkC;EDx5ClC,0CCy5CkC;EC9rDhC;AX07BJ;ASlpBE;EACE;EJ7BE,cALI;ALurBV;;AS1oBA;EACE;AT6oBF;;ASvoBA;;EAEE;AT0oBF;;ASloBA;EACE;EACA;ATqoBF;;ASloBA;EACE,oBRlEqB;EQmErB,uBRnEqB;EQoErB,cG1VS;EH2VT;ATqoBF;;AS9nBA;EAEE;EACA;ATgoBF;;AS7nBA;;;;;;EAME;EACA;EACA;ATgoBF;;ASxnBA;EACE;AT2nBF;;ASrnBA;EAEE;ATunBF;;AS/mBA;EACE;ATknBF;;AS7mBA;;;;;EAKE;EACA;EJ5HI,kBALI;EImIR;ATgnBF;;AS5mBA;;EAEE;AT+mBF;;AS1mBA;EACE;AT6mBF;;AS1mBA;EAGE;AT2mBF;ASxmBE;EACE;AT0mBJ;;ASnmBA;EACE;ATsmBF;;AS9lBA;;;;EAIE;ATimBF;AS9lBI;;;;EACE;ATmmBN;;AS5lBA;EACE;EACA;AT+lBF;;AS1lBA;EACE;AT6lBF;;ASnlBA;EACE;EACA;EACA;EACA;ATslBF;;AS9kBA;EACE;EACA;EACA;EACA,qBCmN4B;ELpatB;EIoNN;ATglBF;AKh8BI;EIyWJ;IJtMQ;ELiyBN;AACF;ASnlBE;EACE;ATqlBJ;;AS9kBA;;;;;;;EAOE;ATilBF;;AS9kBA;EACE;ATilBF;;ASxkBA;EACE;EACA;AT2kBF;;ASnkBA;;;;;;;CAAA;AAWA;EACE;ATmkBF;;AS9jBA;EACE;ATikBF;;AS1jBA;EACE;EACA;AT6jBF;;ASxjBA;EACE;AT2jBF;;AStjBA;EACE;ATyjBF;;ASljBA;EACE;EACA;ATqjBF;;AS7iBA;EACE;ATgjBF;;ASxiBA;EACE;AT2iBF;;AahnCA;ERmQM,iBALI;EQ5PR,gBZmKmB;ADg9BrB;;Aa9mCE;ERgQM;EQ5PJ,gBZ+JgB;EY9JhB,cZkMkB;AD66BtB;AKhhCI;EQpGF;IRuQM;ELi3BN;AACF;;AaznCE;ERgQM;EQ5PJ,gBZ+JgB;EY9JhB,cZkMkB;ADw7BtB;AK3hCI;EQpGF;IRuQM;EL43BN;AACF;;AapoCE;ERgQM;EQ5PJ,gBZ+JgB;EY9JhB,cZkMkB;ADm8BtB;AKtiCI;EQpGF;IRuQM;ELu4BN;AACF;;Aa/oCE;ERgQM;EQ5PJ,gBZ+JgB;EY9JhB,cZkMkB;AD88BtB;AKjjCI;EQpGF;IRuQM;ELk5BN;AACF;;Aa1pCE;ERgQM;EQ5PJ,gBZ+JgB;EY9JhB,cZkMkB;ADy9BtB;AK5jCI;EQpGF;IRuQM;EL65BN;AACF;;AarqCE;ERgQM;EQ5PJ,gBZ+JgB;EY9JhB,cZkMkB;ADo+BtB;AKvkCI;EQpGF;IRuQM;ELw6BN;AACF;;AaxpCA;ECvDE;EACA;AdmtCF;;AaxpCA;EC5DE;EACA;AdwtCF;;Aa1pCA;EACE;Ab6pCF;Aa3pCE;EACE,oBHsoB0B;AVuhB9B;;AanpCA;ER8MM,cALI;EQvMR;AbspCF;;AalpCA;EACE,mBZxDO;EI+PH,iBALI;ALo9BV;AanpCE;EACE;AbqpCJ;;AajpCA;EACE;EACA,mBZlEO;EI+PH,cALI;EQtLR,cD7FS;AZivCX;AalpCE;EACE;AbopCJ;;AepvCA;ECIE;EAGA;AhBkvCF;;AenvCA;EACE,gBL+jDkC;EK9jDlC,mDdolBa;EcnlBb;EJGE;EMLE,uCARW;EDKf;EAGA;AhB4vCF;;Ae9uCA;EAEE;AfgvCF;;Ae7uCA;EACE;EACA;AfgvCF;;Ae7uCA;EVyPM,cALI;EUlPR,6BdmkBqB;AD6qBvB;;AkBlxCE;;;;;;;ECHA;EACA;EACA;EACA;EACA;EACA;EACA;AnB+xCF;;AoBzuCI;EF5CE;IACE,gBjBTe;EDkyCrB;AACF;AoB/uCI;EF5CE;IACE,gBjBTe;EDuyCrB;AACF;AoBpvCI;EF5CE;IACE,gBjBTe;ED4yCrB;AACF;AoBzvCI;EF5CE;IACE,iBjBTe;EDizCrB;AACF;AoB9vCI;EF5CE;IACE,iBjBTe;EDszCrB;AACF;AqB9zCA;EAEI;EAAA;EAAA;EAAA;EAAA;EAAA;ArBo0CJ;;AqB/zCE;ECNA;EACA;EACA;EACA;EAEA;EACA;EACA;AtBw0CF;AqBt0CI;ECOF;EACA;EACA;EACA;EACA;EACA;AtBk0CF;;AsBnxCM;EACE;AtBsxCR;;AsBnxCM;EApCJ;EACA;AtB2zCF;;AsB7yCE;EACE;EACA;AtBgzCJ;;AsBlzCE;EACE;EACA;AtBqzCJ;;AsBvzCE;EACE;EACA;AtB0zCJ;;AsB5zCE;EACE;EACA;AtB+zCJ;;AsBj0CE;EACE;EACA;AtBo0CJ;;AsBt0CE;EACE;EACA;AtBy0CJ;;AsB1yCM;EAhDJ;EACA;AtB81CF;;AsBzyCU;EAhEN;EACA;AtB62CJ;;AsB9yCU;EAhEN;EACA;AtBk3CJ;;AsBnzCU;EAhEN;EACA;AtBu3CJ;;AsBxzCU;EAhEN;EACA;AtB43CJ;;AsB7zCU;EAhEN;EACA;AtBi4CJ;;AsBl0CU;EAhEN;EACA;AtBs4CJ;;AsBv0CU;EAhEN;EACA;AtB24CJ;;AsB50CU;EAhEN;EACA;AtBg5CJ;;AsBj1CU;EAhEN;EACA;AtBq5CJ;;AsBt1CU;EAhEN;EACA;AtB05CJ;;AsB31CU;EAhEN;EACA;AtB+5CJ;;AsBh2CU;EAhEN;EACA;AtBo6CJ;;AsB71CY;EAxDV;AtBy5CF;;AsBj2CY;EAxDV;AtB65CF;;AsBr2CY;EAxDV;AtBi6CF;;AsBz2CY;EAxDV;AtBq6CF;;AsB72CY;EAxDV;AtBy6CF;;AsBj3CY;EAxDV;AtB66CF;;AsBr3CY;EAxDV;AtBi7CF;;AsBz3CY;EAxDV;AtBq7CF;;AsB73CY;EAxDV;AtBy7CF;;AsBj4CY;EAxDV;AtB67CF;;AsBr4CY;EAxDV;AtBi8CF;;AsB93CQ;;;;;EAEE;AtBo4CV;;AsBj4CQ;;EAEE;AtBo4CV;;AsB34CQ;;EAEE;AtB84CV;;AsB34CQ;;EAEE;AtB84CV;;AsBr5CQ;;EAEE;AtBw5CV;;AsBr5CQ;;EAEE;AtBw5CV;;AsB/5CQ;;EAEE;AtBk6CV;;AsB/5CQ;;EAEE;AtBk6CV;;AsBz6CQ;;EAEE;AtB46CV;;AsBz6CQ;;EAEE;AtB46CV;;AsBn7CQ;;EAEE;AtBs7CV;;AsBn7CQ;;EAEE;AtBs7CV;;AsB77CQ;;EAEE;AtBg8CV;;AsB77CQ;;EAEE;AtBg8CV;;AsBv8CQ;;EAEE;AtB08CV;;AsBv8CQ;;EAEE;AtB08CV;;AsBj9CQ;;EAEE;AtBo9CV;;AsBj9CQ;;EAEE;AtBo9CV;;AsB39CQ;;EAEE;AtB89CV;;AsB39CQ;;EAEE;AtB89CV;;AsBr+CQ;;EAEE;AtBw+CV;;AsBr+CQ;;EAEE;AtBw+CV;;AsB/+CQ;;EAEE;AtBk/CV;;AsB/+CQ;;EAEE;AtBk/CV;;AsBz/CQ;;EAEE;AtB4/CV;;AsBz/CQ;;EAEE;AtB4/CV;;AsBngDQ;;EAEE;AtBsgDV;;AsBngDQ;;EAEE;AtBsgDV;;AoBhkDI;EEUE;IACE;EtB0jDN;EsBvjDI;IApCJ;IACA;EtB8lDA;EsBhlDA;IACE;IACA;EtBklDF;EsBplDA;IACE;IACA;EtBslDF;EsBxlDA;IACE;IACA;EtB0lDF;EsB5lDA;IACE;IACA;EtB8lDF;EsBhmDA;IACE;IACA;EtBkmDF;EsBpmDA;IACE;IACA;EtBsmDF;EsBvkDI;IAhDJ;IACA;EtB0nDA;EsBrkDQ;IAhEN;IACA;EtBwoDF;EsBzkDQ;IAhEN;IACA;EtB4oDF;EsB7kDQ;IAhEN;IACA;EtBgpDF;EsBjlDQ;IAhEN;IACA;EtBopDF;EsBrlDQ;IAhEN;IACA;EtBwpDF;EsBzlDQ;IAhEN;IACA;EtB4pDF;EsB7lDQ;IAhEN;IACA;EtBgqDF;EsBjmDQ;IAhEN;IACA;EtBoqDF;EsBrmDQ;IAhEN;IACA;EtBwqDF;EsBzmDQ;IAhEN;IACA;EtB4qDF;EsB7mDQ;IAhEN;IACA;EtBgrDF;EsBjnDQ;IAhEN;IACA;EtBorDF;EsB7mDU;IAxDV;EtBwqDA;EsBhnDU;IAxDV;EtB2qDA;EsBnnDU;IAxDV;EtB8qDA;EsBtnDU;IAxDV;EtBirDA;EsBznDU;IAxDV;EtBorDA;EsB5nDU;IAxDV;EtBurDA;EsB/nDU;IAxDV;EtB0rDA;EsBloDU;IAxDV;EtB6rDA;EsBroDU;IAxDV;EtBgsDA;EsBxoDU;IAxDV;EtBmsDA;EsB3oDU;IAxDV;EtBssDA;EsB9oDU;IAxDV;EtBysDA;EsBtoDM;;IAEE;EtBwoDR;EsBroDM;;IAEE;EtBuoDR;EsB9oDM;;IAEE;EtBgpDR;EsB7oDM;;IAEE;EtB+oDR;EsBtpDM;;IAEE;EtBwpDR;EsBrpDM;;IAEE;EtBupDR;EsB9pDM;;IAEE;EtBgqDR;EsB7pDM;;IAEE;EtB+pDR;EsBtqDM;;IAEE;EtBwqDR;EsBrqDM;;IAEE;EtBuqDR;EsB9qDM;;IAEE;EtBgrDR;EsB7qDM;;IAEE;EtB+qDR;EsBtrDM;;IAEE;EtBwrDR;EsBrrDM;;IAEE;EtBurDR;EsB9rDM;;IAEE;EtBgsDR;EsB7rDM;;IAEE;EtB+rDR;EsBtsDM;;IAEE;EtBwsDR;EsBrsDM;;IAEE;EtBusDR;EsB9sDM;;IAEE;EtBgtDR;EsB7sDM;;IAEE;EtB+sDR;EsBttDM;;IAEE;EtBwtDR;EsBrtDM;;IAEE;EtButDR;EsB9tDM;;IAEE;EtBguDR;EsB7tDM;;IAEE;EtB+tDR;EsBtuDM;;IAEE;EtBwuDR;EsBruDM;;IAEE;EtBuuDR;EsB9uDM;;IAEE;EtBgvDR;EsB7uDM;;IAEE;EtB+uDR;AACF;AoB1yDI;EEUE;IACE;EtBmyDN;EsBhyDI;IApCJ;IACA;EtBu0DA;EsBzzDA;IACE;IACA;EtB2zDF;EsB7zDA;IACE;IACA;EtB+zDF;EsBj0DA;IACE;IACA;EtBm0DF;EsBr0DA;IACE;IACA;EtBu0DF;EsBz0DA;IACE;IACA;EtB20DF;EsB70DA;IACE;IACA;EtB+0DF;EsBhzDI;IAhDJ;IACA;EtBm2DA;EsB9yDQ;IAhEN;IACA;EtBi3DF;EsBlzDQ;IAhEN;IACA;EtBq3DF;EsBtzDQ;IAhEN;IACA;EtBy3DF;EsB1zDQ;IAhEN;IACA;EtB63DF;EsB9zDQ;IAhEN;IACA;EtBi4DF;EsBl0DQ;IAhEN;IACA;EtBq4DF;EsBt0DQ;IAhEN;IACA;EtBy4DF;EsB10DQ;IAhEN;IACA;EtB64DF;EsB90DQ;IAhEN;IACA;EtBi5DF;EsBl1DQ;IAhEN;IACA;EtBq5DF;EsBt1DQ;IAhEN;IACA;EtBy5DF;EsB11DQ;IAhEN;IACA;EtB65DF;EsBt1DU;IAxDV;EtBi5DA;EsBz1DU;IAxDV;EtBo5DA;EsB51DU;IAxDV;EtBu5DA;EsB/1DU;IAxDV;EtB05DA;EsBl2DU;IAxDV;EtB65DA;EsBr2DU;IAxDV;EtBg6DA;EsBx2DU;IAxDV;EtBm6DA;EsB32DU;IAxDV;EtBs6DA;EsB92DU;IAxDV;EtBy6DA;EsBj3DU;IAxDV;EtB46DA;EsBp3DU;IAxDV;EtB+6DA;EsBv3DU;IAxDV;EtBk7DA;EsB/2DM;;IAEE;EtBi3DR;EsB92DM;;IAEE;EtBg3DR;EsBv3DM;;IAEE;EtBy3DR;EsBt3DM;;IAEE;EtBw3DR;EsB/3DM;;IAEE;EtBi4DR;EsB93DM;;IAEE;EtBg4DR;EsBv4DM;;IAEE;EtBy4DR;EsBt4DM;;IAEE;EtBw4DR;EsB/4DM;;IAEE;EtBi5DR;EsB94DM;;IAEE;EtBg5DR;EsBv5DM;;IAEE;EtBy5DR;EsBt5DM;;IAEE;EtBw5DR;EsB/5DM;;IAEE;EtBi6DR;EsB95DM;;IAEE;EtBg6DR;EsBv6DM;;IAEE;EtBy6DR;EsBt6DM;;IAEE;EtBw6DR;EsB/6DM;;IAEE;EtBi7DR;EsB96DM;;IAEE;EtBg7DR;EsBv7DM;;IAEE;EtBy7DR;EsBt7DM;;IAEE;EtBw7DR;EsB/7DM;;IAEE;EtBi8DR;EsB97DM;;IAEE;EtBg8DR;EsBv8DM;;IAEE;EtBy8DR;EsBt8DM;;IAEE;EtBw8DR;EsB/8DM;;IAEE;EtBi9DR;EsB98DM;;IAEE;EtBg9DR;EsBv9DM;;IAEE;EtBy9DR;EsBt9DM;;IAEE;EtBw9DR;AACF;AoBnhEI;EEUE;IACE;EtB4gEN;EsBzgEI;IApCJ;IACA;EtBgjEA;EsBliEA;IACE;IACA;EtBoiEF;EsBtiEA;IACE;IACA;EtBwiEF;EsB1iEA;IACE;IACA;EtB4iEF;EsB9iEA;IACE;IACA;EtBgjEF;EsBljEA;IACE;IACA;EtBojEF;EsBtjEA;IACE;IACA;EtBwjEF;EsBzhEI;IAhDJ;IACA;EtB4kEA;EsBvhEQ;IAhEN;IACA;EtB0lEF;EsB3hEQ;IAhEN;IACA;EtB8lEF;EsB/hEQ;IAhEN;IACA;EtBkmEF;EsBniEQ;IAhEN;IACA;EtBsmEF;EsBviEQ;IAhEN;IACA;EtB0mEF;EsB3iEQ;IAhEN;IACA;EtB8mEF;EsB/iEQ;IAhEN;IACA;EtBknEF;EsBnjEQ;IAhEN;IACA;EtBsnEF;EsBvjEQ;IAhEN;IACA;EtB0nEF;EsB3jEQ;IAhEN;IACA;EtB8nEF;EsB/jEQ;IAhEN;IACA;EtBkoEF;EsBnkEQ;IAhEN;IACA;EtBsoEF;EsB/jEU;IAxDV;EtB0nEA;EsBlkEU;IAxDV;EtB6nEA;EsBrkEU;IAxDV;EtBgoEA;EsBxkEU;IAxDV;EtBmoEA;EsB3kEU;IAxDV;EtBsoEA;EsB9kEU;IAxDV;EtByoEA;EsBjlEU;IAxDV;EtB4oEA;EsBplEU;IAxDV;EtB+oEA;EsBvlEU;IAxDV;EtBkpEA;EsB1lEU;IAxDV;EtBqpEA;EsB7lEU;IAxDV;EtBwpEA;EsBhmEU;IAxDV;EtB2pEA;EsBxlEM;;IAEE;EtB0lER;EsBvlEM;;IAEE;EtBylER;EsBhmEM;;IAEE;EtBkmER;EsB/lEM;;IAEE;EtBimER;EsBxmEM;;IAEE;EtB0mER;EsBvmEM;;IAEE;EtBymER;EsBhnEM;;IAEE;EtBknER;EsB/mEM;;IAEE;EtBinER;EsBxnEM;;IAEE;EtB0nER;EsBvnEM;;IAEE;EtBynER;EsBhoEM;;IAEE;EtBkoER;EsB/nEM;;IAEE;EtBioER;EsBxoEM;;IAEE;EtB0oER;EsBvoEM;;IAEE;EtByoER;EsBhpEM;;IAEE;EtBkpER;EsB/oEM;;IAEE;EtBipER;EsBxpEM;;IAEE;EtB0pER;EsBvpEM;;IAEE;EtBypER;EsBhqEM;;IAEE;EtBkqER;EsB/pEM;;IAEE;EtBiqER;EsBxqEM;;IAEE;EtB0qER;EsBvqEM;;IAEE;EtByqER;EsBhrEM;;IAEE;EtBkrER;EsB/qEM;;IAEE;EtBirER;EsBxrEM;;IAEE;EtB0rER;EsBvrEM;;IAEE;EtByrER;EsBhsEM;;IAEE;EtBksER;EsB/rEM;;IAEE;EtBisER;AACF;AoB5vEI;EEUE;IACE;EtBqvEN;EsBlvEI;IApCJ;IACA;EtByxEA;EsB3wEA;IACE;IACA;EtB6wEF;EsB/wEA;IACE;IACA;EtBixEF;EsBnxEA;IACE;IACA;EtBqxEF;EsBvxEA;IACE;IACA;EtByxEF;EsB3xEA;IACE;IACA;EtB6xEF;EsB/xEA;IACE;IACA;EtBiyEF;EsBlwEI;IAhDJ;IACA;EtBqzEA;EsBhwEQ;IAhEN;IACA;EtBm0EF;EsBpwEQ;IAhEN;IACA;EtBu0EF;EsBxwEQ;IAhEN;IACA;EtB20EF;EsB5wEQ;IAhEN;IACA;EtB+0EF;EsBhxEQ;IAhEN;IACA;EtBm1EF;EsBpxEQ;IAhEN;IACA;EtBu1EF;EsBxxEQ;IAhEN;IACA;EtB21EF;EsB5xEQ;IAhEN;IACA;EtB+1EF;EsBhyEQ;IAhEN;IACA;EtBm2EF;EsBpyEQ;IAhEN;IACA;EtBu2EF;EsBxyEQ;IAhEN;IACA;EtB22EF;EsB5yEQ;IAhEN;IACA;EtB+2EF;EsBxyEU;IAxDV;EtBm2EA;EsB3yEU;IAxDV;EtBs2EA;EsB9yEU;IAxDV;EtBy2EA;EsBjzEU;IAxDV;EtB42EA;EsBpzEU;IAxDV;EtB+2EA;EsBvzEU;IAxDV;EtBk3EA;EsB1zEU;IAxDV;EtBq3EA;EsB7zEU;IAxDV;EtBw3EA;EsBh0EU;IAxDV;EtB23EA;EsBn0EU;IAxDV;EtB83EA;EsBt0EU;IAxDV;EtBi4EA;EsBz0EU;IAxDV;EtBo4EA;EsBj0EM;;IAEE;EtBm0ER;EsBh0EM;;IAEE;EtBk0ER;EsBz0EM;;IAEE;EtB20ER;EsBx0EM;;IAEE;EtB00ER;EsBj1EM;;IAEE;EtBm1ER;EsBh1EM;;IAEE;EtBk1ER;EsBz1EM;;IAEE;EtB21ER;EsBx1EM;;IAEE;EtB01ER;EsBj2EM;;IAEE;EtBm2ER;EsBh2EM;;IAEE;EtBk2ER;EsBz2EM;;IAEE;EtB22ER;EsBx2EM;;IAEE;EtB02ER;EsBj3EM;;IAEE;EtBm3ER;EsBh3EM;;IAEE;EtBk3ER;EsBz3EM;;IAEE;EtB23ER;EsBx3EM;;IAEE;EtB03ER;EsBj4EM;;IAEE;EtBm4ER;EsBh4EM;;IAEE;EtBk4ER;EsBz4EM;;IAEE;EtB24ER;EsBx4EM;;IAEE;EtB04ER;EsBj5EM;;IAEE;EtBm5ER;EsBh5EM;;IAEE;EtBk5ER;EsBz5EM;;IAEE;EtB25ER;EsBx5EM;;IAEE;EtB05ER;EsBj6EM;;IAEE;EtBm6ER;EsBh6EM;;IAEE;EtBk6ER;EsBz6EM;;IAEE;EtB26ER;EsBx6EM;;IAEE;EtB06ER;AACF;AoBr+EI;EEUE;IACE;EtB89EN;EsB39EI;IApCJ;IACA;EtBkgFA;EsBp/EA;IACE;IACA;EtBs/EF;EsBx/EA;IACE;IACA;EtB0/EF;EsB5/EA;IACE;IACA;EtB8/EF;EsBhgFA;IACE;IACA;EtBkgFF;EsBpgFA;IACE;IACA;EtBsgFF;EsBxgFA;IACE;IACA;EtB0gFF;EsB3+EI;IAhDJ;IACA;EtB8hFA;EsBz+EQ;IAhEN;IACA;EtB4iFF;EsB7+EQ;IAhEN;IACA;EtBgjFF;EsBj/EQ;IAhEN;IACA;EtBojFF;EsBr/EQ;IAhEN;IACA;EtBwjFF;EsBz/EQ;IAhEN;IACA;EtB4jFF;EsB7/EQ;IAhEN;IACA;EtBgkFF;EsBjgFQ;IAhEN;IACA;EtBokFF;EsBrgFQ;IAhEN;IACA;EtBwkFF;EsBzgFQ;IAhEN;IACA;EtB4kFF;EsB7gFQ;IAhEN;IACA;EtBglFF;EsBjhFQ;IAhEN;IACA;EtBolFF;EsBrhFQ;IAhEN;IACA;EtBwlFF;EsBjhFU;IAxDV;EtB4kFA;EsBphFU;IAxDV;EtB+kFA;EsBvhFU;IAxDV;EtBklFA;EsB1hFU;IAxDV;EtBqlFA;EsB7hFU;IAxDV;EtBwlFA;EsBhiFU;IAxDV;EtB2lFA;EsBniFU;IAxDV;EtB8lFA;EsBtiFU;IAxDV;EtBimFA;EsBziFU;IAxDV;EtBomFA;EsB5iFU;IAxDV;EtBumFA;EsB/iFU;IAxDV;EtB0mFA;EsBljFU;IAxDV;EtB6mFA;EsB1iFM;;IAEE;EtB4iFR;EsBziFM;;IAEE;EtB2iFR;EsBljFM;;IAEE;EtBojFR;EsBjjFM;;IAEE;EtBmjFR;EsB1jFM;;IAEE;EtB4jFR;EsBzjFM;;IAEE;EtB2jFR;EsBlkFM;;IAEE;EtBokFR;EsBjkFM;;IAEE;EtBmkFR;EsB1kFM;;IAEE;EtB4kFR;EsBzkFM;;IAEE;EtB2kFR;EsBllFM;;IAEE;EtBolFR;EsBjlFM;;IAEE;EtBmlFR;EsB1lFM;;IAEE;EtB4lFR;EsBzlFM;;IAEE;EtB2lFR;EsBlmFM;;IAEE;EtBomFR;EsBjmFM;;IAEE;EtBmmFR;EsB1mFM;;IAEE;EtB4mFR;EsBzmFM;;IAEE;EtB2mFR;EsBlnFM;;IAEE;EtBonFR;EsBjnFM;;IAEE;EtBmnFR;EsB1nFM;;IAEE;EtB4nFR;EsBznFM;;IAEE;EtB2nFR;EsBloFM;;IAEE;EtBooFR;EsBjoFM;;IAEE;EtBmoFR;EsB1oFM;;IAEE;EtB4oFR;EsBzoFM;;IAEE;EtB2oFR;EsBlpFM;;IAEE;EtBopFR;EsBjpFM;;IAEE;EtBmpFR;AACF;AuBzwFA;EAEE;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA,mBtBSO;EsBRP,mBbusB4B;EatsB5B;AvBwwFF;AuBjwFE;EACE;EAEA;EACA;EACA,+Cb+sB0B;Ea9sB1B;AvBkwFJ;AuB/vFE;EACE;AvBiwFJ;AuB9vFE;EACE;AvBgwFJ;;AuB5vFA;EACE;AvB+vFF;;AuBxvFA;EACE;AvB2vFF;;AuBjvFE;EACE;AvBovFJ;;AuBruFE;EACE;AvBwuFJ;AuBruFI;EACE;AvBuuFN;;AuBhuFE;EACE;AvBmuFJ;AuBhuFE;EACE;AvBkuFJ;;AuBxtFE;EACE;EACA;AvB2tFJ;;AuBrtFE;EACE;EACA;AvBwtFJ;;AuBhtFA;EACE;EACA;AvBmtFF;;AuB3sFE;EACE;EACA;AvB8sFJ;;AwB11FE;EAOE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;AxBs1FJ;;AwBx2FE;EAOE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;AxBo2FJ;;AwBt3FE;EAOE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;AxBk3FJ;;AwBp4FE;EAOE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;AxBg4FJ;;AwBl5FE;EAOE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;AxB84FJ;;AwBh6FE;EAOE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;AxB45FJ;;AwB96FE;EAOE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;AxB06FJ;;AwB57FE;EAOE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;AxBw7FJ;;AuBvyFI;EACE;EACA;AvB0yFN;;AoBr4FI;EGyFA;IACE;IACA;EvBgzFJ;AACF;AoB54FI;EGyFA;IACE;IACA;EvBszFJ;AACF;AoBl5FI;EGyFA;IACE;IACA;EvB4zFJ;AACF;AoBx5FI;EGyFA;IACE;IACA;EvBk0FJ;AACF;AoB95FI;EGyFA;IACE;IACA;EvBw0FJ;AACF;AyB5+FA;EACE,qBxB0WyB;EIhFrB,0BALI;EoBlRR,gBxB0LmB;ADmzFrB;;AyBv+FA;EACE;EACA;EACA;EpB8QI,kBALI;EoBtQR,gBxB8KmB;EwB7KnB,gBf+lB4B;AV04E9B;;AyBr+FA;EACE;EACA;EpBoQI,iBALI;AL0uFV;;AyBr+FA;EACE;EACA;EpB8PI,mBALI;ALgvFV;;A0BtgGA;EACE,mBhB+1BsC;ELrkBlC,cALI;EqBjRR,cdHS;AZ0gGX;;A2B5gGA;EACE;EACA;EACA;EtBwRI,eALI;EsBhRR,gB1BuLmB;E0BtLnB,gBjBymB4B;EiBxmB5B,6B1B8UY;E0B7UZ;EACA,6C1ByUS;E0BxUT;EACA;EhBGE;EMLE,0CARW;EWUX,wEDMJ;A3B2gGF;A4B7gGM;EDhBN;ICiBQ;E5BghGN;AACF;A2B9gGE;EACE;A3BghGJ;A2B9gGI;EACE;A3BghGN;A2B3gGE;EACE,6B1BwTU;E0BvTV,6C1BoTO;E0BnTP,2D1ByTuB;E0BxTvB;EVvBE,kFARW;AjB6iGjB;A2BrgGE;EAME;EAMA;EAKA;A3By/FJ;A2Bp/FE;EACE;EACA;A3Bs/FJ;A2Bl/FE;EACE,mD1BsRsB;E0BpRtB;A3Bm/FJ;A2B3+FE;EAEE,wC1BiQgB;E0B9PhB;A3B0+FJ;A2Bt+FE;EACE;EACA;EACA,uB1B+NkB;E0B9NlB,cf9FO;EiBAT,yBjBMS;Ee0FP;EACA;EACA;EACA;EACA,mDjBgsB0B;EiB/rB1B;ECzFE,qID0FF;A3Bw+FJ;A4B9jGM;ED0EJ;ICzEM;E5BikGN;AACF;A2B1+FE;EACE,yBfpGO;AZglGX;;A2Bn+FA;EACE;EACA;EACA;EACA;EACA,gBjBwf4B;EiBvf5B,cfrHS;EesHT;EACA;EACA;A3Bs+FF;A2Bp+FE;EACE;A3Bs+FJ;A2Bn+FE;EAEE;EACA;A3Bo+FJ;;A2Bz9FA;EACE,yEjB4wBsC;EiB3wBtC;EtByII,mBALI;EMvQN;AXimGJ;A2B19FE;EACE;EACA;EACA,0B1BsKqB;ADszFzB;;A2Bx9FA;EACE,wEjBgwBsC;EiB/vBtC;EtB4HI,iBALI;EMvQN;AX6mGJ;A2Bz9FE;EACE;EACA;EACA,0B1B4JqB;AD+zFzB;;A2Bn9FE;EACE,yEjB6uBoC;AVyuExC;A2Bn9FE;EACE,yEjB0uBoC;AV2uExC;A2Bl9FE;EACE,wEjBuuBoC;AV6uExC;;A2B/8FA;EACE,WjBquBsC;EiBpuBtC,qEjB8tBsC;EiB7tBtC,kB1B4HoB;ADs1FtB;A2Bh9FE;EACE;A3Bk9FJ;A2B/8FE;EACE;EhBvLA;AXyoGJ;A2B98FE;EACE;EhB5LA;AX6oGJ;A2B78FE;EAAoB,qEjB8sBkB;AVkwExC;A2B/8FE;EAAoB,oEjB8sBkB;AVowExC;;A8BjqGA;EACE;EAEA;EACA;EACA;EzBqRI,eALI;EyB7QR,gB7BoLmB;E6BnLnB,gBpBsmB4B;EoBrmB5B,6B7B2UY;E6B1UZ;EACA,6C7BsUS;E6BrUT;EACA;EACA,sCpB+9BkC;EoB99BlC,0BpB+9BkC;EoB99BlC;EnBHE;EMLE,0CARW;EWUX,wEESJ;A9BkqGF;A4BvqGM;EEfN;IFgBQ;E5B0qGN;AACF;A8BrqGE;EACE,2D7BiUuB;E6BhUvB;EbfE,kFARW;AjB+rGjB;A8B/pGE;EAEE,mB7BwRkB;E6BvRlB;A9BgqGJ;A8B7pGE;EAEE,wC7BgVsB;AD80F1B;A8BzpGE;EACE;EACA;A9B2pGJ;;A8BvpGA;EACE,sB7BwQuB;E6BvQvB,yB7BuQuB;E6BtQvB,qB7BuQuB;EIpCnB,mBALI;EMvQN;AXqsGJ;;A8BvpGA;EACE,qB7BmQuB;E6BlQvB,wB7BkQuB;E6BjQvB,qB7BkQuB;EIvCnB,iBALI;EMvQN;AX6sGJ;;A8BrpGI;EACE;A9BwpGN;;A+BhuGA;EACE;EACA,kBrBq6BwC;EqBp6BxC,mBrBq6BwC;EqBp6BxC,yB9BgXyB;ADm3F3B;A+BjuGE;EACE;EACA;A/BmuGJ;;A+B/tGA;EACE,oBrB25BwC;EqB15BxC;EACA;A/BkuGF;A+BhuGE;EACE;EACA;EACA;A/BkuGJ;;A+B9tGA;EACE;EAEA;EACA,UrB04BwC;EqBz4BxC,WrBy4BwC;EqBx4BxC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,wC9BgVwB;E8B/UxB;A/BguGF;A+B7tGE;EpB3BE;AX2vGJ;A+B5tGE;EAEE,kBrBm4BsC;AV01E1C;A+B1tGE;EACE,uBrB03BsC;AVk2E1C;A+BztGE;EACE,2D9BiSuB;E8BhSvB;EACA,kDrB8foB;AV6tFxB;A+BxtGE;EACE,yBnBnCG;EmBoCH,qBnBpCG;AZ8vGP;A+BxtGI;EAII;A/ButGR;A+BntGI;EAII;A/BktGR;A+B7sGE;EACE,yBnBxDG;EmByDH,qBnBzDG;EmB8DD;A/B2sGN;A+BvsGE;EACE;EACA;EACA,YrBk2BuC;AVu2E3C;A+BlsGI;EACE;EACA,YrBy1BqC;AV22E3C;;A+BtrGA;EACE,mBrBo1BgC;AVq2ElC;A+BvrGE;EACE;EAEA,UrB80B8B;EqB70B9B;EACA;EACA;EpBjHA;EiBHE,iDGsHF;A/BwrGJ;A4B1yGM;EG0GJ;IHzGM;E5B6yGN;AACF;A+B3rGI;EACE;A/B6rGN;A+B1rGI;EACE,iCrB60B4B;EqBx0B1B;A/BwrGR;A+BnrGE;EACE,oBrBwzB8B;EqBvzB9B;A/BqrGJ;A+BnrGI;EACE;EACA;A/BqrGN;;A+BhrGA;EACE;EACA,kBrBsyBgC;AV64ElC;;A+BhrGA;EACE;EACA;EACA;A/BmrGF;A+B/qGI;;;;;EACE;EACA;EACA,Y9BgKiB;ADqhGvB;;A+B9qGI;EACE;A/BirGN;;AgCp2GA;EACE;EACA;EACA;EACA;EACA;AhCu2GF;AgCr2GE;EACE;AhCu2GJ;AgCn2GI;EAA0B,qEtB8gCa;AVw1E3C;AgCr2GI;EAA0B,qEtB6gCa;AV21E3C;AgCr2GE;EACE;AhCu2GJ;AgCp2GE;EACE,WtB+/BuC;EsB9/BvC,YtB8/BuC;EsB7/BvC;EACA;EH1BF,yBjB2BK;EoBCH,StB6/BuC;EC1gCvC;EMLE,+CARW;EWUX,4GImBF;AhCs2GJ;A4Br3GM;EIMJ;IJLM;E5Bw3GN;AACF;AgCz2GI;EHjCF,yB5BqY2B;ADwgG7B;AgCv2GE;EACE,WtBw+B8B;EsBv+B9B,ctBw+B8B;EsBv+B9B;EACA,etBu+B8B;EsBt+B9B,wC/ByVkB;E+BxVlB;ErB7BA;EMLE,0CARW;AjBq5GjB;AgCt2GE;EACE,WtBo+BuC;EsBn+BvC,YtBm+BuC;EsBl+BvC;EHpDF,yBjB2BK;EoB2BH,StBm+BuC;EC1gCvC;EMLE,+CARW;EWUX,4GI6CF;AhCw2GJ;A4Bj5GM;EIiCJ;IJhCM;E5Bo5GN;AACF;AgC32GI;EH3DF,yB5BqY2B;ADoiG7B;AgCz2GE;EACE,WtB88B8B;EsB78B9B,ctB88B8B;EsB78B9B;EACA,etB68B8B;EsB58B9B,wC/B+TkB;E+B9TlB;ErBvDA;EMLE,0CARW;AjBi7GjB;AgCx2GE;EACE;AhC02GJ;AgCx2GI;EACE,yBpB7EK;AZu7GX;AgCv2GI;EACE,yBpBjFK;AZ07GX;;AiCh8GA;EACE;AjCm8GF;AiCj8GE;;;EAGE,2DvBwiCoC;EuBviCpC,+DvBuiCoC;EuBtiCpC,iBvBuiCoC;AV45ExC;AiCh8GE;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ELRE,gEKSF;AjCk8GJ;A4Bv8GM;EKTJ;ILUM;E5B08GN;AACF;AiCp8GE;;EAEE;AjCs8GJ;AiCp8GI;;EACE;AjCu8GN;AiCp8GI;;;EAEE,qBvB4gCkC;EuB3gClC,wBvB4gCkC;AV27ExC;AiCp8GI;;EACE,qBvBugCkC;EuBtgClC,wBvBugCkC;AVg8ExC;AiCn8GE;EACE,qBvBigCoC;EuBhgCpC,wBvBigCoC;AVo8ExC;AiC97GI;;;;;EACE;EACA,8DvB2/BkC;AVy8ExC;AiCl8GM;;;;;EACE;EACA;EACA;EACA,avBm/BgC;EuBl/BhC;EACA,6ChCoRG;EUpUP;AXy/GJ;AiCl8GI;EACE;EACA,8DvB0+BkC;AV09ExC;AiC/7GI;EACE;AjCi8GN;AiC77GE;;EAEE,crBjFO;AZghHX;AiC77GI;;EACE,wChC6Pc;ADmsGpB;;AkCvhHA;EACE;EACA;EACA;EACA;EACA;AlC0hHF;AkCxhHE;;;EAGE;EACA;EACA;EACA;AlC0hHJ;AkCthHE;;;EAGE;AlCwhHJ;AkClhHE;;;;;EACE;EACA;AlCwhHJ;AkCthHI;;;;;EACE;AlC4hHN;;AkCjhHA;EACE;EACA;EACA;E7B8OI,eALI;E6BvOR,gBjC8ImB;EiC7InB,gBxBgkB4B;EwB/jB5B,6BjCqSY;EiCpSZ;EACA;EACA,wCjC6SqB;EiC5SrB;EvBtCE;AX2jHJ;;AkC3gHA;;;;;;;;EAIE;E7BwNI,iBALI;EMvQN;AXwkHJ;;AkC/gHA;;;;;;;;EAIE;E7B+MI,mBALI;EMvQN;AXqlHJ;;AkCnhHA;;EAEE;AlCshHF;;AkCzgHI;;;;;EvBjEA;EACA;AXklHJ;AkCzgHI;;;;;EvB1EA;EACA;AX0lHJ;AkCpgHE;EACE;EvB1EA;EACA;AXilHJ;AkCpgHE;;EvB9EE;EACA;AXslHJ;;AmC9mHE;EACE;EACA;EACA,mBzBu0BoC;ELrkBlC,cALI;E8B1PN,qCzBkjCqB;AV8jFzB;;AmC7mHE;EACE;EACA;EACA;EACA;EACA;EACA;EACA;E9BqPE,0BALI;E8B7ON,WzBqiCqB;EyBpiCrB,uCzBoiCqB;EC/jCrB;AX2oHJ;;AmC3mHI;;;;EAEE;AnCgnHN;;AmC/pHI;EAqDE,mDzBuhCmB;EyBphCjB,qCzB81BgC;EyB71BhC;EACA;EACA;EACA;AnC4mHR;AmCzmHM;EACE,mDzB4gCiB;EOpkCnB,+FARW;AjB4qHjB;;AmC5qHI;EA+EI,qCzBu0BgC;EyBt0BhC;AnCimHR;;AmCjrHI;EAuFE,mDzBq/BmB;AVymFzB;AmC3lHQ;EAEE;EACA,qBzBq5B8B;EyBp5B9B;EACA;AnC4lHV;AmCxlHM;EACE,mDzBw+BiB;EOpkCnB,+FARW;AjB+rHjB;;AmC/rHI;EAkHI;AnCilHR;;AmCnsHI;EAyHE,mDzBm9BmB;AV2nFzB;AmC5kHM;EACE,gDzBg9BiB;AV8nFzB;AmC3kHM;EACE,+DzB48BiB;AVioFzB;AmC1kHM;EACE,qCzBw8BiB;AVooFzB;;AmCvkHI;EACE;AnC0kHN;;AmCptHI;;;;;EAoJM;AnCwkHV;;AmCxsHE;EACE;EACA;EACA,mBzBu0BoC;ELrkBlC,cALI;E8B1PN,uCzBkjCqB;AVwpFzB;;AmCvsHE;EACE;EACA;EACA;EACA;EACA;EACA;EACA;E9BqPE,0BALI;E8B7ON,WzBqiCqB;EyBpiCrB,sCzBoiCqB;EC/jCrB;AXquHJ;;AmCrsHI;;;;EAEE;AnC0sHN;;AmCzvHI;EAqDE,qDzBuhCmB;EyBphCjB,qCzB81BgC;EyB71BhC;EACA;EACA;EACA;AnCssHR;AmCnsHM;EACE,qDzB4gCiB;EOpkCnB,8FARW;AjBswHjB;;AmCtwHI;EA+EI,qCzBu0BgC;EyBt0BhC;AnC2rHR;;AmC3wHI;EAuFE,qDzBq/BmB;AVmsFzB;AmCrrHQ;EAEE;EACA,qBzBq5B8B;EyBp5B9B;EACA;AnCsrHV;AmClrHM;EACE,qDzBw+BiB;EOpkCnB,8FARW;AjByxHjB;;AmCzxHI;EAkHI;AnC2qHR;;AmC7xHI;EAyHE,qDzBm9BmB;AVqtFzB;AmCtqHM;EACE,kDzBg9BiB;AVwtFzB;AmCrqHM;EACE,8DzB48BiB;AV2tFzB;AmCpqHM;EACE,uCzBw8BiB;AV8tFzB;;AmCjqHI;EACE;AnCoqHN;;AmC9yHI;;;;;EAsJM;AnCgqHV;;AoCxzHA;;;EAEE;EACA;EACA;E/BuRI,4BALI;E+BhRR;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;E/BsQI,sCALI;E+B/PR;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EzBjBE;EkBfF,sCOkCqB;EnBxBjB,wCARW;EWUX,qIQwBJ;ApCwzHF;A4B50HM;EQhBN;;;IRiBQ;E5Bi1HN;AACF;AoC7zHE;;;EACE;EACA;EACA;EACA;ApCi0HJ;AoC9zHE;;;EAEE;EACA;EACA;ApCi0HJ;AoC9zHE;;;EACE;EPrDF,4COsDuB;EACrB;EACA;EAGE;ApCg0HN;AoC1zHE;;;EACE;EACA;EAGE;ApC4zHN;AoCtzHE;;;;;;;;;;;EAKE;EACA;EAGA;EnB3EE,2CARW;AjBg5HjB;AoC1zHI;;;;;;;;;;;EAGI;ApCo0HR;AoC7zHE;;;EAGI;ApC+zHN;AoCzzHE;;;;;;;;;EAGE;EACA;EACA;EAEA;EACA;EnBzGE,gBARW;AjBk7HjB;;AoCrzHE;;EC/GA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ArCy6HF;;AoCv0HE;EC/GA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ArC07HF;;AoCx1HE;EC/GA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ArC28HF;;AoCz2HE;EC/GA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ArC49HF;;AoC13HE;EC/GA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ArC6+HF;;AoC34HE;EC/GA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ArC8/HF;;AoC55HE;;EC/GA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ArCghIF;;AoC96HE;;;EC/GA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ArCmiIF;;AoCv6HE;EChHA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ArC2hIF;;AoCx7HE;EChHA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ArC4iIF;;AoCz8HE;EChHA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ArC6jIF;;AoC19HE;EChHA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ArC8kIF;;AoC3+HE;EChHA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ArC+lIF;;AoC5/HE;EChHA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ArCgnIF;;AoC7gIE;EChHA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ArCioIF;;AoC9hIE;EChHA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ArCkpIF;;AoCniIA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA,qBnC7CgB;ADklIlB;AoChiIE;EAEE,0BnCnDoB;ADolIxB;AoC9hIE;EACE;ApCgiIJ;AoC7hIE;EACE;ApC+hIJ;;AoCphIA;;;ECjJE;EACA;EhC8NI,8BALI;EgCvNR;ArC2qIF;;AoCzhIA;;;ECrJE;EACA;EhC8NI,gCALI;EgCvNR;ArCorIF;;AsCvvIA;EVgBM,gCUfJ;AtC0vIF;A4BvuIM;EUpBN;IVqBQ;E5B0uIN;AACF;AsC7vIE;EACE;AtC+vIJ;;AsCzvIE;EACE;AtC4vIJ;;AsCxvIA;EACE;EACA;EVDI,6BUEJ;AtC2vIF;A4BzvIM;EULN;IVMQ;E5B4vIN;AACF;AsC9vIE;EACE;EACA;EVNE,4BUOF;AtCgwIJ;A4BnwIM;EUAJ;IVCM;E5BswIN;AACF;;AuC3xIA;;;;;;EAME;AvC8xIF;;AuC3xIA;EACE;AvC8xIF;AwCtwII;EACE;EACA,oB9B6hBwB;E8B5hBxB,uB9B2hBwB;E8B1hBxB;EArCJ;EACA;EACA;EACA;AxC8yIF;AwCpvII;EACE;AxCsvIN;;AuCpyIA;EAEE;EACA;EACA;EACA;EACA;ElCuQI,4CALI;EkChQR;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;ElC0OI,2CALI;EkCnOR;EACA;EACA;EACA;EACA;EACA;E5BzCE;EMLE,6CARW;AjB41IjB;AuClyIE;EACE;EACA;EACA;AvCoyIJ;;AuC5wII;EACE;AvC+wIN;AuC7wIM;EACE;EACA;AvC+wIR;;AuC3wII;EACE;AvC8wIN;AuC5wIM;EACE;EACA;AvC8wIR;;AoBxzII;EmB4BA;IACE;EvCgyIJ;EuC9xII;IACE;IACA;EvCgyIN;EuC5xIE;IACE;EvC8xIJ;EuC5xII;IACE;IACA;EvC8xIN;AACF;AoBz0II;EmB4BA;IACE;EvCgzIJ;EuC9yII;IACE;IACA;EvCgzIN;EuC5yIE;IACE;EvC8yIJ;EuC5yII;IACE;IACA;EvC8yIN;AACF;AoBz1II;EmB4BA;IACE;EvCg0IJ;EuC9zII;IACE;IACA;EvCg0IN;EuC5zIE;IACE;EvC8zIJ;EuC5zII;IACE;IACA;EvC8zIN;AACF;AoBz2II;EmB4BA;IACE;EvCg1IJ;EuC90II;IACE;IACA;EvCg1IN;EuC50IE;IACE;EvC80IJ;EuC50II;IACE;IACA;EvC80IN;AACF;AoBz3II;EmB4BA;IACE;EvCg2IJ;EuC91II;IACE;IACA;EvCg2IN;EuC51IE;IACE;EvC81IJ;EuC51II;IACE;IACA;EvC81IN;AACF;AuCr1IE;EACE;EACA;EACA;EACA;AvCu1IJ;AwC36II;EACE;EACA,oB9B6hBwB;E8B5hBxB,uB9B2hBwB;E8B1hBxB;EA9BJ;EACA;EACA;EACA;AxC48IF;AwCz5II;EACE;AxC25IN;;AuC31IE;EACE;EACA;EACA;EACA;EACA;AvC81IJ;AwCh8II;EACE;EACA,oB9B6hBwB;E8B5hBxB,uB9B2hBwB;E8B1hBxB;EAvBJ;EACA;EACA;EACA;AxC09IF;AwC96II;EACE;AxCg7IN;AuCt2II;EACE;AvCw2IN;;AuCl2IE;EACE;EACA;EACA;EACA;EACA;AvCq2IJ;AwCx9II;EACE;EACA,oB9B6hBwB;E8B5hBxB,uB9B2hBwB;E8B1hBxB;AxC09IN;AwC/8IM;EACE;AxCi9IR;AwC98IM;EACE;EACA,qB9B0gBsB;E8BzgBtB,uB9BwgBsB;E8BvgBtB;EAnCN;EACA;EACA;AxCo/IF;AwC98II;EACE;AxCg9IN;AuCr3II;EACE;AvCu3IN;;AuCh3IA;EACE;EACA;EACA;EACA;EACA;AvCm3IF;;AuC72IA;EACE;EACA;EACA;EACA;EACA,gBtCcmB;EsCbnB;EACA;EAEA;EACA;EACA;E5BtKE;AXshJJ;AuC72IE;EAEE;EACA;EV3LF,sDU4LuB;AvC82IzB;AuC32IE;EAEE;EACA;EVlMF,uDUmMuB;AvC42IzB;AuCz2IE;EAEE;EACA;EACA;AvC02IJ;;AuCp2IA;EACE;AvCu2IF;;AuCn2IA;EACE;EACA;EACA;ElCmEI,mBALI;EkC5DR;EACA;AvCs2IF;;AuCl2IA;EACE;EACA;EACA;AvCq2IF;;AuCj2IA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AvCm2IF;;AyCzlJA;;EAEE;EACA;EACA;AzC4lJF;AyC1lJE;;;;;;;;EACE;EACA;AzCmmJJ;AyC9lJE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAME;AzCopJJ;;AyC/oJA;EACE;EACA;EACA;AzCkpJF;AyChpJE;EACE;AzCkpJJ;;AyC9oJA;E9BhBI;AXkqJJ;AyC9oJE;;;;EAEE;AzCkpJJ;AyC9oJE;;;;;;;;;;;;;E9BVE;EACA;AXuqJJ;AyCppJE;;;;;;;;;;;;;E9BNE;EACA;AXyqJJ;;AyCjpJA;EACE;EACA;AzCopJF;AyClpJE;EAGE;AzCkpJJ;AyC/oJE;EACE;AzCipJJ;;AyC7oJA;;;EACE;EACA;AzCkpJF;;AyC/oJA;;;EACE;EACA;AzCopJF;;AyC9oJA;ExBxFM,gDARW;AjBkvJjB;AyC9oJE;ExB5FI,gBARW;AjBqvJjB;;AyCvoJA;EACE;EACA;EACA;AzC0oJF;AyCxoJE;;;;EAEE;AzC4oJJ;AyCzoJE;;;;EAEE;AzC6oJJ;AyCzoJE;;;;;;;;E9B1FE;EACA;AX6uJJ;AyC/oJE;;;;;;;;;;;;;;E9B7GE;EACA;AX4wJJ;;A0CpyJA;EAEE;EACA;EAEA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;A1CmyJF;;A0ChyJA;EACE;EACA;ErCsQI,2CALI;EqC/PR;EACA;EAEA;EACA;EdfI,uGcgBJ;A1CkyJF;A4B9yJM;EcGN;IdFQ;E5BizJN;AACF;A0CryJE;EAEE;EACA;A1CsyJJ;A0CnyJE;EACE;EACA,kDhCkhBoB;AVmxIxB;A0CjyJE;EAEE;EACA;EACA;A1CkyJJ;;A0C1xJA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;A1C0xJF;A0CxxJE;EACE;EACA;E/B7CA;EACA;AXw0JJ;A0CzxJI;EAGE;EACA;A1CyxJN;A0CrxJE;;EAEE;EACA;EACA;A1CuxJJ;A0CpxJE;EAEE;E/BjEA;EACA;AXu1JJ;;A0C5wJA;EAEE;EACA;EACA;A1C8wJF;A0C3wJE;E/B5FE;AX02JJ;A0C1wJE;;EAEE;EbjHF,wDakHuB;A1C4wJzB;;A0CnwJA;EAEE;EACA;EACA;EAGA;A1CmwJF;A0CjwJE;EACE;EACA;EACA;A1CmwJJ;A0CjwJI;EAEE;A1CkwJN;A0C9vJE;;EAEE,gBzC+Ce;EyC9Cf;EACA;A1CgwJJ;;A0CtvJE;;EAEE;EACA;A1CyvJJ;;A0CpvJE;;EAEE;EACA;EACA;A1CuvJJ;;A0CjvJE;;EACE;A1CqvJJ;;A0C3uJE;EACE;A1C8uJJ;A0C5uJE;EACE;A1C8uJJ;;A2C36JA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;A3C26JF;A2Cr6JE;;;;;;;EACE;EACA;EACA;EACA;A3C66JJ;A2Cz5JA;EACE;EACA;EACA;EtC4NI,+CALI;EsCrNR;EAEA;A3C05JF;A2Cx5JE;EAEE;EACA;A3Cy5JJ;;A2Ch5JA;EAEE;EACA;EAEA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;A3C+4JF;A2C54JI;EAEE;A3C64JN;A2Cz4JE;EACE;A3C24JJ;;A2Cl4JA;EACE,mBjC8gCkC;EiC7gClC,sBjC6gCkC;EiC5gClC;A3Cq4JF;A2Cn4JE;;;EAGE;A3Cq4JJ;;A2Cx3JA;EACE;EACA;EAGA;A3Cy3JF;;A2Cr3JA;EACE;EtCyII,iDALI;EsClIR;EACA;EACA;EACA;EhCxIE;EiBHE,mDe6IJ;A3Cw3JF;A4BjgKM;EeiIN;IfhIQ;E5BogKN;AACF;A2C33JE;EACE;A3C63JJ;A2C13JE;EACE;EACA;EACA;A3C43JJ;;A2Ct3JA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;A3Cy3JF;;A2Ct3JA;EACE;EACA;A3Cy3JF;;AoBn/JI;EuBsIA;IAEI;IACA;E3Cg3JN;E2C92JM;IACE;E3Cg3JR;E2C92JQ;IACE;E3Cg3JV;E2C72JQ;IACE;IACA;E3C+2JV;E2C32JM;IACE;E3C62JR;E2C12JM;IACE;IACA;E3C42JR;E2Cz2JM;IACE;E3C22JR;E2Cx2JM;IAEE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;I1BhOJ,gBARW;IWUX,gBegOI;E3Cy2JR;E2Ct2JQ;IACE;E3Cw2JV;E2Cr2JQ;IACE;IACA;IACA;IACA;E3Cu2JV;AACF;AoBpiKI;EuBsIA;IAEI;IACA;E3Cg6JN;E2C95JM;IACE;E3Cg6JR;E2C95JQ;IACE;E3Cg6JV;E2C75JQ;IACE;IACA;E3C+5JV;E2C35JM;IACE;E3C65JR;E2C15JM;IACE;IACA;E3C45JR;E2Cz5JM;IACE;E3C25JR;E2Cx5JM;IAEE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;I1BhOJ,gBARW;IWUX,gBegOI;E3Cy5JR;E2Ct5JQ;IACE;E3Cw5JV;E2Cr5JQ;IACE;IACA;IACA;IACA;E3Cu5JV;AACF;AoBplKI;EuBsIA;IAEI;IACA;E3Cg9JN;E2C98JM;IACE;E3Cg9JR;E2C98JQ;IACE;E3Cg9JV;E2C78JQ;IACE;IACA;E3C+8JV;E2C38JM;IACE;E3C68JR;E2C18JM;IACE;IACA;E3C48JR;E2Cz8JM;IACE;E3C28JR;E2Cx8JM;IAEE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;I1BhOJ,gBARW;IWUX,gBegOI;E3Cy8JR;E2Ct8JQ;IACE;E3Cw8JV;E2Cr8JQ;IACE;IACA;IACA;IACA;E3Cu8JV;AACF;AoBpoKI;EuBsIA;IAEI;IACA;E3CggKN;E2C9/JM;IACE;E3CggKR;E2C9/JQ;IACE;E3CggKV;E2C7/JQ;IACE;IACA;E3C+/JV;E2C3/JM;IACE;E3C6/JR;E2C1/JM;IACE;IACA;E3C4/JR;E2Cz/JM;IACE;E3C2/JR;E2Cx/JM;IAEE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;I1BhOJ,gBARW;IWUX,gBegOI;E3Cy/JR;E2Ct/JQ;IACE;E3Cw/JV;E2Cr/JQ;IACE;IACA;IACA;IACA;E3Cu/JV;AACF;AoBprKI;EuBsIA;IAEI;IACA;E3CgjKN;E2C9iKM;IACE;E3CgjKR;E2C9iKQ;IACE;E3CgjKV;E2C7iKQ;IACE;IACA;E3C+iKV;E2C3iKM;IACE;E3C6iKR;E2C1iKM;IACE;IACA;E3C4iKR;E2CziKM;IACE;E3C2iKR;E2CxiKM;IAEE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;I1BhOJ,gBARW;IWUX,gBegOI;E3CyiKR;E2CtiKQ;IACE;E3CwiKV;E2CriKQ;IACE;IACA;IACA;IACA;E3CuiKV;AACF;A2C9lKI;EAEI;EACA;A3C+lKR;A2C7lKQ;EACE;A3C+lKV;A2C7lKU;EACE;A3C+lKZ;A2C5lKU;EACE;EACA;A3C8lKZ;A2C1lKQ;EACE;A3C4lKV;A2CzlKQ;EACE;EACA;A3C2lKV;A2CxlKQ;EACE;A3C0lKV;A2CvlKQ;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;E1BhOJ,gBARW;EWUX,gBegOI;A3CwlKV;A2CrlKU;EACE;A3CulKZ;A2CplKU;EACE;EACA;EACA;EACA;A3CslKZ;;A2CrkKA;;EAGE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;A3CukKF;;A2CjkKI;EACE;A3CokKN;;A4C71KA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EjCjBE;EMLE,yCARW;AjB63KjB;A4C31KE;EACE;EACA;A5C61KJ;A4C11KE;EACE;EACA;A5C41KJ;A4C11KI;EACE;EjCtBF;EACA;AXm3KJ;A4C11KI;EACE;EjCbF;EACA;AX02KJ;A4Cv1KE;;EAEE;A5Cy1KJ;;A4Cr1KA;EAGE;EACA;EACA;A5Cs1KF;;A4Cn1KA;EACE;EACA;A5Cs1KF;;A4Cn1KA;EACE;EACA;EACA;A5Cs1KF;;A4Cn1KA;EACE;A5Cs1KF;;A4Cl1KE;EACE;A5Cq1KJ;A4Cl1KE;EACE;A5Co1KJ;;A4C50KA;EACE;EACA;EACA;EACA;EACA;A5C+0KF;A4C70KE;EjC7FE;AX66KJ;;A4C30KA;EACE;EACA;EACA;EACA;A5C80KF;A4C50KE;EjCxGE;AXu7KJ;;A4Cr0KA;EACE;EACA;EACA;EACA;A5Cw0KF;A4Ct0KE;EACE;EACA;A5Cw0KJ;;A4Cp0KA;EACE;EACA;A5Cu0KF;;A4Cn0KA;EACE;EACA;EACA;EACA;EACA;EACA;EjC1IE;AXi9KJ;;A4Cn0KA;;;EAGE;A5Cs0KF;;A4Cn0KA;;EjC3II;EACA;AXm9KJ;;A4Cp0KA;;EjClII;EACA;AX28KJ;;A4C7zKE;EACE;A5Cg0KJ;AoB37KI;EwBuHJ;IAQI;IACA;E5Cg0KF;E4C7zKE;IAEE;IACA;E5C8zKJ;E4C5zKI;IACE;IACA;E5C8zKN;E4CzzKM;IjC3KJ;IACA;EXu+KF;E4C1zKQ;;IAGE;E5C2zKV;E4CzzKQ;;IAGE;E5C0zKV;E4CtzKM;IjC5KJ;IACA;EXq+KF;E4CvzKQ;;IAGE;E5CwzKV;E4CtzKQ;;IAGE;E5CuzKV;AACF;;A6C5hLA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;A7C8hLF;;A6C1hLA;EACE;EACA;EACA;EACA;EACA;ExC4PI,eALI;EwCrPR;EACA;EACA;EACA;ElCrBE;EkCuBF;EjB1BI,8CiB2BJ;A7C6hLF;A4BpjLM;EiBUN;IjBTQ;E5BujLN;AACF;A6ChiLE;EACE;EACA;EACA;A7CkiLJ;A6ChiLI;EACE;EACA;A7CkiLN;A6C7hLE;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EjBjDE,uDiBkDF;A7C+hLJ;A4B7kLM;EiBqCJ;IjBpCM;E5BglLN;AACF;A6CjiLE;EACE;A7CmiLJ;A6ChiLE;EACE;EACA;EACA;A7CkiLJ;;A6C9hLA;EACE;A7CiiLF;;A6C9hLA;EACE;EACA;EACA;A7CiiLF;A6C/hLE;ElC7DE;EACA;AX+lLJ;A6ChiLI;ElChEA;EACA;AXmmLJ;A6C/hLE;EACE;A7CiiLJ;A6C7hLE;ElC5DE;EACA;AX4lLJ;A6C7hLM;ElChEF;EACA;AXgmLJ;A6C5hLI;ElCrEA;EACA;AXomLJ;;A6C1hLA;EACE;A7C6hLF;;A6CphLE;EACE;EACA;ElC9GA;AXsoLJ;A6CrhLI;EAAgB;A7CwhLpB;A6CvhLI;EAAe;A7C0hLnB;A6CthLM;ElCtHF;AX+oLJ;A6ClhLI;ElC7HA;AXkpLJ;;A6C7gLI;EACE;EACA;A7CghLN;;A8C1qLA;EAEE;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EzC+QI,6CALI;EyCxQR;EACA;EnCAE;AX0qLJ;;A8CpqLE;EACE;A9CuqLJ;A8CrqLI;EACE;EACA;EACA;EACA;A9CuqLN;A8CnqLE;EACE;A9CqqLJ;;A+C1sLA;EAEE;EACA;E1C4RI,mCALI;E0CrRR;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EjCpBA;EACA;Ad+tLF;;A+CxsLA;EACE;EACA;EACA;E1CgQI,6CALI;E0CzPR;EAEA;EACA;EnBpBI,qImBqBJ;A/C0sLF;A4B3tLM;EmBQN;InBPQ;E5B8tLN;AACF;A+C7sLE;EACE;EACA;EACA;EACA;EACA;A/C+sLJ;A+C5sLE;EACE;EACA;EACA;EACA,UrC2uCgC;EqC1uChC;A/C8sLJ;A+C3sLE;EAEE;EACA;ElBtDF,oDkBuDuB;EACrB;A/C4sLJ;A+CzsLE;EAEE;EACA;EACA;EACA;A/C0sLJ;;A+CrsLE;EACE,kDrC8sCgC;AV0/IpC;A+CnsLM;EpC9BF;EACA;AXouLJ;A+CjsLM;EpClDF;EACA;AXsvLJ;;A+CprLA;EClGE;EACA;E3C0RI,qCALI;E2CnRR;AhD0xLF;;A+CvrLA;ECtGE;EACA;E3C0RI,uCALI;E2CnRR;AhDiyLF;;AiDnyLA;EAEE;EACA;E5CuRI,gCALI;E4ChRR;EACA;EACA;EAGA;EACA;E5C+QI,wCALI;E4CxQR;EACA;EACA;EACA;EACA;EACA;EtCJE;AXwyLJ;AiD/xLE;EACE;AjDiyLJ;;AiD5xLA;;;EACE;EACA;AjDiyLF;;AkDj0LA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;EvCHE;AXq0LJ;;AkD7zLA;EAEE;AlD+zLF;;AkD3zLA;EACE,gBjDkKiB;EiDjKjB;AlD8zLF;;AkDtzLA;EACE,mBxCs+C8B;AVm1IhC;AkDtzLE;EACE;EACA;EACA;EACA;EACA;AlDwzLJ;;AkDhzLE;EACE;EACA;EACA;EACA;AlDmzLJ;;AkDvzLE;EACE;EACA;EACA;EACA;AlD0zLJ;;AkD9zLE;EACE;EACA;EACA;EACA;AlDi0LJ;;AkDr0LE;EACE;EACA;EACA;EACA;AlDw0LJ;;AkD50LE;EACE;EACA;EACA;EACA;AlD+0LJ;;AkDn1LE;EACE;EACA;EACA;EACA;AlDs1LJ;;AkD11LE;EACE;EACA;EACA;EACA;AlD61LJ;;AkDj2LE;EACE;EACA;EACA;EACA;AlDo2LJ;;AmDh6LE;EACE;IAAK,2BzCyhD2B;EV24IlC;AACF;AmDh6LA;;EAGE;E9CkRI,oCALI;E8C3QR;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;E9CsQI,2CALI;E8C/PR;ExCRE;EMLE,6CARW;AjBs7LjB;;AmD55LA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EvBxBI,iDuByBJ;AnD+5LF;A4Bp7LM;EuBYN;IvBXQ;E5Bu7LN;AACF;;AmDj6LA;EtBAE;EsBEA;AnDo6LF;;AmDj6LA;EACE;AnDo6LF;;AmDj6LA;EACE;AnDo6LF;;AmDh6LE;EACE;AnDm6LJ;AmDh6LM;EAJJ;IAKM;EnDm6LN;AACF;;AoD/9LA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EAGA;EACA;EzCXE;AXy+LJ;;AoD19LA;EACE;EACA;ApD69LF;AoD39LE;EAEE;EACA;ApD49LJ;;AoDn9LA;EACE;EACA;EACA;ApDs9LF;AoDn9LE;EAEE;EACA;EACA;EACA;ApDo9LJ;AoDj9LE;EACE;EACA;ApDm9LJ;;AoD38LA;EACE;EACA;EACA;EACA;EAEA;EACA;ApD68LF;AoD38LE;EzCvDE;EACA;AXqgMJ;AoD38LE;EzC7CE;EACA;AX2/LJ;AoD38LE;EAEE;EACA;EACA;ApD48LJ;AoDx8LE;EACE;EACA;EACA;EACA;ApD08LJ;AoDt8LE;EACE;ApDw8LJ;AoDt8LI;EACE;EACA;ApDw8LN;;AoD37LI;EACE;ApD87LN;AoD37LQ;EzCvDJ;EAZA;AXkgMJ;AoD17LQ;EzCxEJ;EAYA;AX0/LJ;AoDz7LQ;EACE;ApD27LV;AoDx7LQ;EACE;EACA;ApD07LV;AoDx7LU;EACE;EACA;ApD07LZ;;AoBhhMI;EgC8DA;IACE;EpDs9LJ;EoDn9LM;IzCvDJ;IAZA;EX0hMF;EoDl9LM;IzCxEJ;IAYA;EXkhMF;EoDj9LM;IACE;EpDm9LR;EoDh9LM;IACE;IACA;EpDk9LR;EoDh9LQ;IACE;IACA;EpDk9LV;AACF;AoBziMI;EgC8DA;IACE;EpD8+LJ;EoD3+LM;IzCvDJ;IAZA;EXkjMF;EoD1+LM;IzCxEJ;IAYA;EX0iMF;EoDz+LM;IACE;EpD2+LR;EoDx+LM;IACE;IACA;EpD0+LR;EoDx+LQ;IACE;IACA;EpD0+LV;AACF;AoBjkMI;EgC8DA;IACE;EpDsgMJ;EoDngMM;IzCvDJ;IAZA;EX0kMF;EoDlgMM;IzCxEJ;IAYA;EXkkMF;EoDjgMM;IACE;EpDmgMR;EoDhgMM;IACE;IACA;EpDkgMR;EoDhgMQ;IACE;IACA;EpDkgMV;AACF;AoBzlMI;EgC8DA;IACE;EpD8hMJ;EoD3hMM;IzCvDJ;IAZA;EXkmMF;EoD1hMM;IzCxEJ;IAYA;EX0lMF;EoDzhMM;IACE;EpD2hMR;EoDxhMM;IACE;IACA;EpD0hMR;EoDxhMQ;IACE;IACA;EpD0hMV;AACF;AoBjnMI;EgC8DA;IACE;EpDsjMJ;EoDnjMM;IzCvDJ;IAZA;EX0nMF;EoDljMM;IzCxEJ;IAYA;EXknMF;EoDjjMM;IACE;EpDmjMR;EoDhjMM;IACE;IACA;EpDkjMR;EoDhjMQ;IACE;IACA;EpDkjMV;AACF;AoDriMA;EzChJI;AXwrMJ;AoDriME;EACE;ApDuiMJ;AoDriMI;EACE;ApDuiMN;;AoD1hME;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ApD6hMJ;;AoDviME;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ApD0iMJ;;AoDpjME;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ApDujMJ;;AoDjkME;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ApDokMJ;;AoD9kME;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ApDilMJ;;AoD3lME;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ApD8lMJ;;AoDxmME;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ApD2mMJ;;AoDrnME;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ApDwnMJ;;AqDpzMA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA,U3CqpD2B;E2CppD3B,W3CopD2B;E2CnpD3B;EACA;EACA;EACA;E1CJE;E0CMF;ArDozMF;AqDjzME;EACE;EACA;EACA;ArDmzMJ;AqDhzME;EACE;EACA;EACA;ArDkzMJ;AqD/yME;EAEE;EACA;EACA;ArDgzMJ;;AqDxyMA;EAHE;ArD+yMF;;AqDtyMI;EATF;ArDmzMF;;AsDp2MA;EAEE;EACA;EACA;EACA;EACA;EjDyRI,kCALI;EiDlRR;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EjD2QI,wCALI;EiDpQR;EACA;EACA;EACA;EACA;EACA;E3CRE;AX62MJ;AsDl2ME;EACE;AtDo2MJ;AsDj2ME;EACE;AtDm2MJ;;AsD/1MA;EACE;EAEA;EACA;EACA;EACA;EACA;AtDi2MF;AsD/1ME;EACE;AtDi2MJ;;AsD71MA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;E3ChCE;EACA;AXi4MJ;AsD/1ME;EACE;EACA;AtDi2MJ;;AsD71MA;EACE;EACA;AtDg2MF;;AuD95MA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;AvD45MF;;AuDr5MA;EACE;EACA;EACA;EAEA;AvDu5MF;AuDp5ME;E3B5CI,mC2B6CF;EACA,8B7Ck8CgC;AVo9JpC;A4Bh8MM;E2BwCJ;I3BvCM;E5Bm8MN;AACF;AuDz5ME;EACE,e7Cg8CgC;AV29JpC;AuDv5ME;EACE,sB7C67CgC;AV49JpC;;AuDr5MA;EACE;AvDw5MF;AuDt5ME;EACE;EACA;AvDw5MJ;AuDr5ME;EACE;AvDu5MJ;;AuDn5MA;EACE;EACA;EACA;AvDs5MF;;AuDl5MA;EACE;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;E5CrFE;EMLE,0CARW;EsCsGf;AvDm5MF;;AuD/4MA;EAEE;EACA;EACA;EClHA;EACA;EACA;EACA,sCDkH0B;ECjH1B;EACA;EACA,2CD+G4D;AvDq5M9D;AwDjgNE;EAAS;AxDogNX;AwDngNE;EAAS,uCD2GiF;AvD25M5F;;AuDt5MA;EACE;EACA;EACA;EACA;EACA;E5CrGE;EACA;AX+/MJ;AuDx5ME;EACE;EACA;AvD05MJ;;AuDr5MA;EACE;EACA;AvDw5MF;;AuDn5MA;EACE;EAGA;EACA;AvDo5MF;;AuDh5MA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;E5CzHE;EACA;AX6gNJ;AuD/4ME;EACE;AvDi5MJ;;AoB5/MI;EmCiHF;IACE;IACA;EvD+4MF;EuD34MA;IACE;IACA;IACA;EvD64MF;EuD14MA;IACE;EvD44MF;AACF;AoB3gNI;EmCmIF;;IAEE;EvD24MF;AACF;AoBjhNI;EmC0IF;IACE;EvD04MF;AACF;AuDj4MI;EACE;EACA;EACA;EACA;AvDm4MN;AuDj4MM;EACE;EACA;E5CzMJ;AX6kNJ;AuDh4MM;;E5C7MF;AXilNJ;AuD/3MM;EACE;AvDi4MR;;AoB3hNI;EmCwIA;IACE;IACA;IACA;IACA;EvDu5MJ;EuDr5MI;IACE;IACA;I5CzMJ;EXimNF;EuDp5MI;;I5C7MF;EXqmNF;EuDn5MI;IACE;EvDq5MN;AACF;AoBhjNI;EmCwIA;IACE;IACA;IACA;IACA;EvD26MJ;EuDz6MI;IACE;IACA;I5CzMJ;EXqnNF;EuDx6MI;;I5C7MF;EXynNF;EuDv6MI;IACE;EvDy6MN;AACF;AoBpkNI;EmCwIA;IACE;IACA;IACA;IACA;EvD+7MJ;EuD77MI;IACE;IACA;I5CzMJ;EXyoNF;EuD57MI;;I5C7MF;EX6oNF;EuD37MI;IACE;EvD67MN;AACF;AoBxlNI;EmCwIA;IACE;IACA;IACA;IACA;EvDm9MJ;EuDj9MI;IACE;IACA;I5CzMJ;EX6pNF;EuDh9MI;;I5C7MF;EXiqNF;EuD/8MI;IACE;EvDi9MN;AACF;AoB5mNI;EmCwIA;IACE;IACA;IACA;IACA;EvDu+MJ;EuDr+MI;IACE;IACA;I5CzMJ;EXirNF;EuDp+MI;;I5C7MF;EXqrNF;EuDn+MI;IACE;EvDq+MN;AACF;AyD3sNA;EAEE;EACA;EACA;EACA;EACA;EpDwRI,2CALI;EoDjRR;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EClBA,8KzDuJiB;EyDrJjB;EACA,gBzD6LmB;EyD5LnB,gBhD+mB4B;EgD9mB5B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ErDgRI,0CALI;EoDhQR;EACA;AzDmtNF;AyDjtNE;EAAS;AzDotNX;AyDltNE;EACE;EACA;EACA;AzDotNJ;AyDltNI;EACE;EACA;EACA;EACA;AzDotNN;;AyD/sNA;EACE;AzDktNF;AyDhtNE;EACE;EACA;EACA;AzDktNJ;;AyD9sNA;AACA;EACE;EACA;EACA;AzDitNF;AyD/sNE;EACE;EACA;EACA;AzDitNJ;;AyD7sNA;AAEA;EACE;AzD+sNF;AyD7sNE;EACE;EACA;EACA;AzD+sNJ;;AyD3sNA;AACA;EACE;EACA;EACA;AzD8sNF;AyD5sNE;EACE;EACA;EACA;AzD8sNJ;;AyD1sNA;AAkBA;EACE;EACA;EACA;EACA;EACA;E9CjGE;AX8xNJ;;A2DjzNA;EAEE;EACA;EtD4RI,oCALI;EsDrRR;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EtDmRI,uCALI;EsD5QR;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EDzBA,8KzDuJiB;EyDrJjB;EACA,gBzD6LmB;EyD5LnB,gBhD+mB4B;EgD9mB5B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ErDgRI,0CALI;EsD1PR;EACA;EACA;EACA;EhDhBE;EMLE,4CARW;AjB01NjB;A2DzzNE;EACE;EACA;EACA;A3D2zNJ;A2DzzNI;EAEE;EACA;EACA;EACA;EACA;EACA;A3D0zNN;;A2DpzNE;EACE;A3DuzNJ;A2DrzNI;EAEE;A3DszNN;A2DnzNI;EACE;EACA;A3DqzNN;A2DlzNI;EACE;EACA;A3DozNN;;A2D/yNA;AAEE;EACE;EACA;EACA;A3DizNJ;A2D/yNI;EAEE;A3DgzNN;A2D7yNI;EACE;EACA;A3D+yNN;A2D5yNI;EACE;EACA;A3D8yNN;;A2DzyNA;AAGE;EACE;A3D0yNJ;A2DxyNI;EAEE;A3DyyNN;A2DtyNI;EACE;EACA;A3DwyNN;A2DryNI;EACE;EACA;A3DuyNN;A2DlyNE;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;A3DoyNJ;;A2DhyNA;AAEE;EACE;EACA;EACA;A3DkyNJ;A2DhyNI;EAEE;A3DiyNN;A2D9xNI;EACE;EACA;A3DgyNN;A2D7xNI;EACE;EACA;A3D+xNN;;A2D1xNA;AAkBA;EACE;EACA;EtD2GI,iDALI;EsDpGR;EACA;EACA;EhD5JE;EACA;AXy6NJ;A2D3wNE;EACE;A3D6wNJ;;A2DzwNA;EACE;EACA;A3D4wNF;;A4Dj8NA;EACE;A5Do8NF;;A4Dj8NA;EACE;A5Do8NF;;A4Dj8NA;EACE;EACA;EACA;A5Do8NF;A6D19NE;EACE;EACA;EACA;A7D49NJ;;A4Dr8NA;EACE;EACA;EACA;EACA;EACA;EACA;EhClBI,sCgCmBJ;A5Dw8NF;A4Bv9NM;EgCQN;IhCPQ;E5B09NN;AACF;;A4D18NA;;;EAGE;A5D68NF;;A4D18NA;;EAEE;A5D68NF;;A4D18NA;;EAEE;A5D68NF;;A4Dp8NE;EACE;EACA;EACA;A5Du8NJ;A4Dp8NE;;;EAGE;EACA;A5Ds8NJ;A4Dn8NE;;EAEE;EACA;EhC5DE,2BgC6DF;A5Dq8NJ;A4B9/NM;EgCqDJ;;IhCpDM;E5BkgON;AACF;;A4Dl8NA;;EAEE;EACA;EACA;EACA;EAEA;EACA;EACA;EACA,UlDkhDmC;EkDjhDnC;EACA,WhDjGM;EgDkGN;EACA;EACA;EACA,YlD6gDmC;EkBnmD/B,8BgCuFJ;A5Do8NF;A4BvhOM;EgCkEN;;IhCjEQ;E5B2hON;AACF;A4Dv8NE;;;EAEE,WhD3GI;EgD4GJ;EACA;EACA,YlDqgDiC;AVq8KrC;;A4Dv8NA;EACE;A5D08NF;;A4Dv8NA;EACE;A5D08NF;;A4Dr8NA;;EAEE;EACA,WlDsgDmC;EkDrgDnC,YlDqgDmC;EkDpgDnC;EACA;EACA;A5Dw8NF;;A4Dr8NA;EACE;A5Dw8NF;;A4Dt8NA;EACE;A5Dy8NF;;A4Dj8NA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA,iBlDs9CmC;EkDr9CnC;EACA,gBlDo9CmC;AV++KrC;A4Dj8NE;EACE;EACA;EACA,WlDo9CiC;EkDn9CjC,WlDo9CiC;EkDn9CjC;EACA,iBlDo9CiC;EkDn9CjC,gBlDm9CiC;EkDl9CjC;EACA;EACA,sBhDzKI;EgD0KJ;EACA;EAEA;EACA;EACA,YlD28CiC;EkB3mD/B,6BgCiKF;A5Dk8NJ;A4B/lOM;EgC4IJ;IhC3IM;E5BkmON;AACF;A4Dp8NE;EACE,UlDw8CiC;AV8/KrC;;A4D77NA;EACE;EACA;EACA,elDk8CmC;EkDj8CnC;EACA,oBlD+7CmC;EkD97CnC,uBlD87CmC;EkD77CnC,WhDpMM;EgDqMN;A5Dg8NF;;A4D17NE;;EAEE,gClDm8CiC;AV0/KrC;A4D17NE;EACE,sBhDrMI;AZioOR;A4Dz7NE;EACE,WhDzMI;AZooOR;;A4Dr8NE;;;EAEE,gClDm8CiC;AVsgLrC;A4Dt8NE;EACE,sBhDrMI;AZ6oOR;A4Dr8NE;EACE,WhDzMI;AZgpOR;;A8DzpOA;;EAEE;EACA;EACA;EACA;EAEA;EACA;A9D2pOF;;A8DvpOA;EACE;IAAK;E9D2pOL;AACF;A8DxpOA;EAEE;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;A9DupOF;;A8DppOA;EAEE;EACA;EACA;A9DspOF;;A8D7oOA;EACE;IACE;E9DgpOF;E8D9oOA;IACE;IACA;E9DgpOF;AACF;A8D5oOA;EAEE;EACA;EACA;EACA;EACA;EAGA;EACA;A9D2oOF;;A8DxoOA;EACE;EACA;A9D2oOF;;A8DvoOE;EACE;;IAEE;E9D0oOJ;AACF;A+D1tOA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;A/D2tOF;;AoB9pOI;E2C5CF;IAEI;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;I9C9BA,8CARW;IWUX,8CmC8BA;E/D6sOJ;AACF;A4BxuOM;EmCYJ;InCXM;E5B2uON;AACF;AoBrrOI;E2C5BE;IACE;IACA;IACA;IACA;IACA;E/DotON;E+DjtOI;IACE;IACA;IACA;IACA;IACA;E/DmtON;E+DhtOI;IACE;IACA;IACA;IACA;IACA;IACA;IACA;E/DktON;E+D/sOI;IACE;IACA;IACA;IACA;IACA;IACA;E/DitON;E+D9sOI;IAEE;E/D+sON;E+D5sOI;IAGE;E/D4sON;AACF;AoBzuOI;E2C/BF;IAiEM;IACA;IACA;E/D2sON;E+DzsOM;IACE;E/D2sOR;E+DxsOM;IACE;IACA;IACA;IACA;IAEA;E/DysOR;AACF;;AoB7uOI;E2C5CF;IAEI;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;I9C9BA,8CARW;IWUX,8CmC8BA;E/D4xOJ;AACF;A4BvzOM;EmCYJ;InCXM;E5B0zON;AACF;AoBpwOI;E2C5BE;IACE;IACA;IACA;IACA;IACA;E/DmyON;E+DhyOI;IACE;IACA;IACA;IACA;IACA;E/DkyON;E+D/xOI;IACE;IACA;IACA;IACA;IACA;IACA;IACA;E/DiyON;E+D9xOI;IACE;IACA;IACA;IACA;IACA;IACA;E/DgyON;E+D7xOI;IAEE;E/D8xON;E+D3xOI;IAGE;E/D2xON;AACF;AoBxzOI;E2C/BF;IAiEM;IACA;IACA;E/D0xON;E+DxxOM;IACE;E/D0xOR;E+DvxOM;IACE;IACA;IACA;IACA;IAEA;E/DwxOR;AACF;;AoB5zOI;E2C5CF;IAEI;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;I9C9BA,8CARW;IWUX,8CmC8BA;E/D22OJ;AACF;A4Bt4OM;EmCYJ;InCXM;E5By4ON;AACF;AoBn1OI;E2C5BE;IACE;IACA;IACA;IACA;IACA;E/Dk3ON;E+D/2OI;IACE;IACA;IACA;IACA;IACA;E/Di3ON;E+D92OI;IACE;IACA;IACA;IACA;IACA;IACA;IACA;E/Dg3ON;E+D72OI;IACE;IACA;IACA;IACA;IACA;IACA;E/D+2ON;E+D52OI;IAEE;E/D62ON;E+D12OI;IAGE;E/D02ON;AACF;AoBv4OI;E2C/BF;IAiEM;IACA;IACA;E/Dy2ON;E+Dv2OM;IACE;E/Dy2OR;E+Dt2OM;IACE;IACA;IACA;IACA;IAEA;E/Du2OR;AACF;;AoB34OI;E2C5CF;IAEI;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;I9C9BA,8CARW;IWUX,8CmC8BA;E/D07OJ;AACF;A4Br9OM;EmCYJ;InCXM;E5Bw9ON;AACF;AoBl6OI;E2C5BE;IACE;IACA;IACA;IACA;IACA;E/Di8ON;E+D97OI;IACE;IACA;IACA;IACA;IACA;E/Dg8ON;E+D77OI;IACE;IACA;IACA;IACA;IACA;IACA;IACA;E/D+7ON;E+D57OI;IACE;IACA;IACA;IACA;IACA;IACA;E/D87ON;E+D37OI;IAEE;E/D47ON;E+Dz7OI;IAGE;E/Dy7ON;AACF;AoBt9OI;E2C/BF;IAiEM;IACA;IACA;E/Dw7ON;E+Dt7OM;IACE;E/Dw7OR;E+Dr7OM;IACE;IACA;IACA;IACA;IAEA;E/Ds7OR;AACF;;AoB19OI;E2C5CF;IAEI;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;I9C9BA,8CARW;IWUX,8CmC8BA;E/DygPJ;AACF;A4BpiPM;EmCYJ;InCXM;E5BuiPN;AACF;AoBj/OI;E2C5BE;IACE;IACA;IACA;IACA;IACA;E/DghPN;E+D7gPI;IACE;IACA;IACA;IACA;IACA;E/D+gPN;E+D5gPI;IACE;IACA;IACA;IACA;IACA;IACA;IACA;E/D8gPN;E+D3gPI;IACE;IACA;IACA;IACA;IACA;IACA;E/D6gPN;E+D1gPI;IAEE;E/D2gPN;E+DxgPI;IAGE;E/DwgPN;AACF;AoBriPI;E2C/BF;IAiEM;IACA;IACA;E/DugPN;E+DrgPM;IACE;E/DugPR;E+DpgPM;IACE;IACA;IACA;IACA;IAEA;E/DqgPR;AACF;;A+DrlPE;EAEI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;E9C9BA,8CARW;EWUX,8CmC8BA;A/DulPN;A4BjnPM;EmCYJ;InCXM;E5BonPN;AACF;A+D1lPM;EACE;EACA;EACA;EACA;EACA;A/D4lPR;A+DzlPM;EACE;EACA;EACA;EACA;EACA;A/D2lPR;A+DxlPM;EACE;EACA;EACA;EACA;EACA;EACA;EACA;A/D0lPR;A+DvlPM;EACE;EACA;EACA;EACA;EACA;EACA;A/DylPR;A+DtlPM;EAEE;A/DulPR;A+DplPM;EAGE;A/DolPR;;A+DzjPA;EPpHE;EACA;EACA;EACA,a9C0mCkC;E8CzmClC;EACA;EACA,sB5CKM;AZ4qPR;AwD9qPE;EAAS;AxDirPX;AwDhrPE;EAAS,Y9Cm+CyB;AVgtMpC;;A+DrkPA;EACE;EACA;EACA;A/DwkPF;A+DtkPE;EACE;EACA;A/DwkPJ;;A+DpkPA;EACE;EACA;A/DukPF;;A+DpkPA;EACE;EACA;EACA;A/DukPF;;AgEptPA;EACE;EACA;EACA;EACA;EACA;EACA,YtDgzCkC;AVu6MpC;AgErtPE;;;EACE;EACA;AhEytPJ;;AgEptPA;EACE;AhEutPF;;AgEptPA;EACE;AhEutPF;;AgEptPA;EACE;AhEutPF;;AgEltPE;EACE;AhEqtPJ;;AgEjtPA;EACE;IACE,YtDmxCgC;EVi8MlC;AACF;AgEjtPA;EACE;EACA;EACA;AhEmtPF;;AgEhtPA;EACE;IACE;EhEmtPF;AACF;A6DlwPE;EACE;EACA;EACA;A7DowPJ;;AiEvwPE;EACE;EACA;AjE0wPJ;;AiE5wPE;EACE;EACA;AjE+wPJ;;AiEjxPE;EACE;EACA;AjEoxPJ;;AiEtxPE;EACE;EACA;AjEyxPJ;;AiE3xPE;EACE;EACA;AjE8xPJ;;AiEhyPE;EACE;EACA;AjEmyPJ;;AiEryPE;EACE;EACA;AjEwyPJ;;AiE1yPE;EACE;EACA;AjE6yPJ;;AkE/yPE;EACE;EACA;AlEkzPJ;AkE/yPM;EAGE;EACA;AlE+yPR;;AkExzPE;EACE;EACA;AlE2zPJ;AkExzPM;EAGE;EACA;AlEwzPR;;AkEj0PE;EACE;EACA;AlEo0PJ;AkEj0PM;EAGE;EACA;AlEi0PR;;AkE10PE;EACE;EACA;AlE60PJ;AkE10PM;EAGE;EACA;AlE00PR;;AkEn1PE;EACE;EACA;AlEs1PJ;AkEn1PM;EAGE;EACA;AlEm1PR;;AkE51PE;EACE;EACA;AlE+1PJ;AkE51PM;EAGE;EACA;AlE41PR;;AkEr2PE;EACE;EACA;AlEw2PJ;AkEr2PM;EAGE;EACA;AlEq2PR;;AkE92PE;EACE;EACA;AlEi3PJ;AkE92PM;EAGE;EACA;AlE82PR;;AkEv2PA;EACE;EACA;AlE02PF;AkEv2PI;EAEE;EACA;AlEw2PN;;AmEl4PA;EACE;EAEA;AnEo4PF;;AoEv4PA;EACE;EACA,a1D6c4B;E0D5c5B;EACA;EACA,6B1D2c4B;E0D1c5B;ApE04PF;AoEx4PE;EACE;EACA,U1Duc0B;E0Dtc1B,W1Dsc0B;E0Drc1B;ExCIE,sCwCHF;ApE04PJ;A4Bn4PM;EwCZJ;IxCaM;E5Bs4PN;AACF;;AoEx4PI;EACE;ApE24PN;;AqE95PA;EACE;EACA;ArEi6PF;AqE/5PE;EACE;EACA;EACA;ArEi6PJ;AqE95PE;EACE;EACA;EACA;EACA;EACA;ArEg6PJ;;AqE35PE;EACE;ArE85PJ;;AqE/5PE;EACE;ArEk6PJ;;AqEn6PE;EACE;ArEs6PJ;;AqEv6PE;EACE;ArE06PJ;;AsE/7PA;EACE;EACA;EACA;EACA;EACA,a5DumCkC;AV21NpC;;AsE/7PA;EACE;EACA;EACA;EACA;EACA,a5D+lCkC;AVm2NpC;;AsE17PI;EACE;EACA;EACA,arEsXU;ADukPhB;;AsE17PI;EACE;EACA;EACA,arEgXU;AD6kPhB;;AoB95PI;EkDxCA;IACE;IACA;IACA,arEsXU;EDolPd;EsEv8PE;IACE;IACA;IACA,arEgXU;EDylPd;AACF;AoB36PI;EkDxCA;IACE;IACA;IACA,arEsXU;EDgmPd;EsEn9PE;IACE;IACA;IACA,arEgXU;EDqmPd;AACF;AoBv7PI;EkDxCA;IACE;IACA;IACA,arEsXU;ED4mPd;EsE/9PE;IACE;IACA;IACA,arEgXU;EDinPd;AACF;AoBn8PI;EkDxCA;IACE;IACA;IACA,arEsXU;EDwnPd;EsE3+PE;IACE;IACA;IACA,arEgXU;ED6nPd;AACF;AoB/8PI;EkDxCA;IACE;IACA;IACA,arEsXU;EDooPd;EsEv/PE;IACE;IACA;IACA,arEgXU;EDyoPd;AACF;AuEzhQA;EACE;EACA;EACA;EACA;AvE2hQF;;AuExhQA;EACE;EACA;EACA;EACA;AvE2hQF;;AwEniQA;;ECIE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AzEoiQF;AyEjiQE;;EACE;AzEoiQJ;;A0EljQE;EACE;EACA;EACA;EACA;EACA;EACA,UhEgcsC;EgE/btC;A1EqjQJ;;A2E7jQA;ECAE;EACA;EACA;A5EikQF;;A6EvkQA;EACE;EACA;EACA,iCnEisB4B;EmEhsB5B;EACA;EACA,iC5EgPW;AD01Pb;;A8E9gQQ;EAOI;A9E2gQZ;;A8ElhQQ;EAOI;A9E+gQZ;;A8EthQQ;EAOI;A9EmhQZ;;A8E1hQQ;EAOI;A9EuhQZ;;A8E9hQQ;EAOI;A9E2hQZ;;A8EliQQ;EAOI;A9E+hQZ;;A8EtiQQ;EAOI;A9EmiQZ;;A8E1iQQ;EAOI;A9EuiQZ;;A8E9iQQ;EAOI;A9E2iQZ;;A8EljQQ;EAOI;A9E+iQZ;;A8EtjQQ;EAOI;A9EmjQZ;;A8E1jQQ;EAOI;A9EujQZ;;A8E9jQQ;EAOI;A9E2jQZ;;A8ElkQQ;EAOI;A9E+jQZ;;A8EtkQQ;EAOI;A9EmkQZ;;A8E1kQQ;EAOI;A9EukQZ;;A8E9kQQ;EAOI;A9E2kQZ;;A8EllQQ;EAOI;A9E+kQZ;;A8EtlQQ;EAOI;A9EmlQZ;;A8E1lQQ;EAOI;A9EulQZ;;A8E9lQQ;EAOI;A9E2lQZ;;A8ElmQQ;EAOI;A9E+lQZ;;A8EtmQQ;EAOI;A9EmmQZ;;A8E1mQQ;EAOI;A9EumQZ;;A8E9mQQ;EAOI;A9E2mQZ;;A8ElnQQ;EAOI;A9E+mQZ;;A8EtnQQ;EAOI;A9EmnQZ;;A8E1nQQ;EAOI;A9EunQZ;;A8E9nQQ;EAOI;A9E2nQZ;;A8EloQQ;EAOI;A9E+nQZ;;A8EtoQQ;EAOI;A9EmoQZ;;A8E1oQQ;EAOI;A9EuoQZ;;A8E9oQQ;EAOI;A9E2oQZ;;A8ElpQQ;EAOI;A9E+oQZ;;A8EtpQQ;EAOI;A9EmpQZ;;A8E1pQQ;EAOI;A9EupQZ;;A8E9pQQ;EAOI;A9E2pQZ;;A8ElqQQ;EAOI;A9E+pQZ;;A8EtqQQ;EAOI;A9EmqQZ;;A8E1qQQ;EAOI;A9EuqQZ;;A8E9qQQ;EAOI;A9E2qQZ;;A8ElrQQ;EAOI;A9E+qQZ;;A8EtrQQ;EAOI;A9EmrQZ;;A8E1rQQ;EAOI;A9EurQZ;;A8E9rQQ;EAOI;A9E2rQZ;;A8ElsQQ;EAOI;A9E+rQZ;;A8EtsQQ;EAOI;A9EmsQZ;;A8EptQQ;EACE;A9EutQV;;A8ExtQQ;EACE;A9E2tQV;;A8E5tQQ;EACE;A9E+tQV;;A8EhuQQ;EACE;A9EmuQV;;A8EpuQQ;EACE;A9EuuQV;;A8ExuQQ;EACE;A9E2uQV;;A8E5uQQ;EACE;A9E+uQV;;A8EhvQQ;EACE;A9EmvQV;;A8E1uQQ;EAOI;A9EuuQZ;;A8E9uQQ;EAOI;A9E2uQZ;;A8ElvQQ;EAOI;A9E+uQZ;;A8EtvQQ;EAOI;A9EmvQZ;;A8E1vQQ;EAOI;A9EuvQZ;;A8E9vQQ;EAOI;A9E2vQZ;;A8ElwQQ;EAOI;A9E+vQZ;;A8EtwQQ;EAOI;A9EmwQZ;;A8E1wQQ;EAOI;A9EuwQZ;;A8E9wQQ;EAOI;A9E2wQZ;;A8ElxQQ;EAOI;A9E+wQZ;;A8EtxQQ;EAOI;A9EmxQZ;;A8E1xQQ;EAOI;A9EuxQZ;;A8E9xQQ;EAOI;A9E2xQZ;;A8ElyQQ;EAOI;A9E+xQZ;;A8EtyQQ;EAOI;A9EmyQZ;;A8E1yQQ;EAOI;A9EuyQZ;;A8E9yQQ;EAOI;A9E2yQZ;;A8ElzQQ;EAOI;A9E+yQZ;;A8EtzQQ;EAOI;A9EmzQZ;;A8E1zQQ;EAOI;A9EuzQZ;;A8E9zQQ;EAOI;A9E2zQZ;;A8El0QQ;EAOI;A9E+zQZ;;A8Et0QQ;EAOI;A9Em0QZ;;A8E10QQ;EAOI;A9Eu0QZ;;A8E90QQ;EAOI;A9E20QZ;;A8El1QQ;EAOI;A9E+0QZ;;A8Et1QQ;EAOI;A9Em1QZ;;A8E11QQ;EAOI;A9Eu1QZ;;A8E91QQ;EAOI;A9E21QZ;;A8El2QQ;EAOI;A9E+1QZ;;A8Et2QQ;EAOI;A9Em2QZ;;A8E12QQ;EAOI;A9Eu2QZ;;A8E92QQ;EAOI;A9E22QZ;;A8El3QQ;EAOI;A9E+2QZ;;A8Et3QQ;EAOI;A9Em3QZ;;A8E13QQ;EAOI;A9Eu3QZ;;A8E93QQ;EAOI;A9E23QZ;;A8El4QQ;EAOI;A9E+3QZ;;A8Et4QQ;EAOI;A9Em4QZ;;A8E14QQ;EAOI;A9Eu4QZ;;A8E94QQ;EAOI;A9E24QZ;;A8El5QQ;EAOI;A9E+4QZ;;A8Eh6QQ;EACE;A9Em6QV;;A8Ep6QQ;EACE;A9Eu6QV;;A8Ex6QQ;EACE;A9E26QV;;A8E56QQ;EACE;A9E+6QV;;A8Eh7QQ;EACE;A9Em7QV;;A8E16QQ;EAOI;A9Eu6QZ;;A8E96QQ;EAOI;A9E26QZ;;A8El7QQ;EAOI;A9E+6QZ;;A8Et7QQ;EAOI;A9Em7QZ;;A8E17QQ;EAOI;A9Eu7QZ;;A8E97QQ;EAOI;A9E27QZ;;A8El8QQ;EAOI;A9E+7QZ;;A8Et8QQ;EAOI;A9Em8QZ;;A8E18QQ;EAOI;A9Eu8QZ;;A8E98QQ;EAOI;A9E28QZ;;A8El9QQ;EAOI;A9E+8QZ;;A8Et9QQ;EAOI;A9Em9QZ;;A8E19QQ;EAOI;A9Eu9QZ;;A8E99QQ;EAOI;A9E29QZ;;A8El+QQ;EAOI;A9E+9QZ;;A8Et+QQ;EAOI;A9Em+QZ;;A8E1+QQ;EAOI;A9Eu+QZ;;A8E9+QQ;EAOI;A9E2+QZ;;A8El/QQ;EAOI;A9E++QZ;;A8Et/QQ;EAOI;A9Em/QZ;;A8E1/QQ;EAOI;A9Eu/QZ;;A8E9/QQ;EAOI;A9E2/QZ;;A8ElgRQ;EAOI;A9E+/QZ;;A8EtgRQ;EAOI;A9EmgRZ;;A8E1gRQ;EAOI;A9EugRZ;;A8E9gRQ;EAOI;A9E2gRZ;;A8ElhRQ;EAOI;A9E+gRZ;;A8EthRQ;EAOI;A9EmhRZ;;A8E1hRQ;EAOI;A9EuhRZ;;A8E9hRQ;EAOI;A9E2hRZ;;A8EliRQ;EAOI;A9E+hRZ;;A8EtiRQ;EAOI;A9EmiRZ;;A8E1iRQ;EAOI;A9EuiRZ;;A8E9iRQ;EAOI;A9E2iRZ;;A8EljRQ;EAOI;A9E+iRZ;;A8EtjRQ;EAOI;A9EmjRZ;;A8E1jRQ;EAOI;A9EujRZ;;A8E9jRQ;EAOI;A9E2jRZ;;A8ElkRQ;EAOI;A9E+jRZ;;A8EtkRQ;EAOI;A9EmkRZ;;A8E1kRQ;EAOI;A9EukRZ;;A8E9kRQ;EAOI;A9E2kRZ;;A8EllRQ;EAOI;A9E+kRZ;;A8EtlRQ;EAOI;A9EmlRZ;;A8E1lRQ;EAOI;A9EulRZ;;A8E9lRQ;EAOI;A9E2lRZ;;A8ElmRQ;EAOI;A9E+lRZ;;A8EtmRQ;EAOI;A9EmmRZ;;A8E1mRQ;EAOI;A9EumRZ;;A8E9mRQ;EAOI;A9E2mRZ;;A8ElnRQ;EAOI;A9E+mRZ;;A8EtnRQ;EAOI;A9EmnRZ;;A8E1nRQ;EAOI;A9EunRZ;;A8E9nRQ;EAOI;A9E2nRZ;;A8EloRQ;EAOI;A9E+nRZ;;A8EtoRQ;EAOI;A9EmoRZ;;A8E1oRQ;EAOI;A9EuoRZ;;A8E9oRQ;EAOI;A9E2oRZ;;A8ElpRQ;EAOI;A9E+oRZ;;A8EtpRQ;EAOI;A9EmpRZ;;A8E1pRQ;EAOI;A9EupRZ;;A8E9pRQ;EAOI;A9E2pRZ;;A8ElqRQ;EAOI;A9E+pRZ;;A8EtqRQ;EAOI;A9EmqRZ;;A8E1qRQ;EAOI;A9EuqRZ;;A8E9qRQ;EAOI;A9E2qRZ;;A8ElrRQ;EAOI;A9E+qRZ;;A8EtrRQ;EAOI;A9EmrRZ;;A8E1rRQ;EAOI;A9EurRZ;;A8E9rRQ;EAOI;A9E2rRZ;;A8ElsRQ;EAOI;A9E+rRZ;;A8EtsRQ;EAOI;A9EmsRZ;;A8E1sRQ;EAOI;A9EusRZ;;A8E9sRQ;EAOI;A9E2sRZ;;A8EltRQ;EAOI;A9E+sRZ;;A8EttRQ;EAOI;A9EmtRZ;;A8E1tRQ;EAOI;A9EutRZ;;A8E9tRQ;EAOI;A9E2tRZ;;A8EluRQ;EAOI;A9E+tRZ;;A8EtuRQ;EAOI;A9EmuRZ;;A8E1uRQ;EAOI;A9EuuRZ;;A8E9uRQ;EAOI;A9E2uRZ;;A8ElvRQ;EAOI;EAAA;A9EgvRZ;;A8EvvRQ;EAOI;EAAA;A9EqvRZ;;A8E5vRQ;EAOI;EAAA;A9E0vRZ;;A8EjwRQ;EAOI;EAAA;A9E+vRZ;;A8EtwRQ;EAOI;EAAA;A9EowRZ;;A8E3wRQ;EAOI;EAAA;A9EywRZ;;A8EhxRQ;EAOI;EAAA;A9E8wRZ;;A8ErxRQ;EAOI;EAAA;A9EmxRZ;;A8E1xRQ;EAOI;EAAA;A9EwxRZ;;A8E/xRQ;EAOI;EAAA;A9E6xRZ;;A8EpyRQ;EAOI;EAAA;A9EkyRZ;;A8EzyRQ;EAOI;EAAA;A9EuyRZ;;A8E9yRQ;EAOI;EAAA;A9E4yRZ;;A8EnzRQ;EAOI;EAAA;A9EizRZ;;A8ExzRQ;EAOI;EAAA;A9EszRZ;;A8E7zRQ;EAOI;EAAA;A9E2zRZ;;A8El0RQ;EAOI;EAAA;A9Eg0RZ;;A8Ev0RQ;EAOI;EAAA;A9Eq0RZ;;A8E50RQ;EAOI;EAAA;A9E00RZ;;A8Ej1RQ;EAOI;EAAA;A9E+0RZ;;A8Et1RQ;EAOI;EAAA;A9Eo1RZ;;A8E31RQ;EAOI;EAAA;A9Ey1RZ;;A8Eh2RQ;EAOI;EAAA;A9E81RZ;;A8Er2RQ;EAOI;EAAA;A9Em2RZ;;A8E12RQ;EAOI;EAAA;A9Ew2RZ;;A8E/2RQ;EAOI;EAAA;A9E62RZ;;A8Ep3RQ;EAOI;EAAA;A9Ek3RZ;;A8Ez3RQ;EAOI;EAAA;A9Eu3RZ;;A8E93RQ;EAOI;A9E23RZ;;A8El4RQ;EAOI;A9E+3RZ;;A8Et4RQ;EAOI;A9Em4RZ;;A8E14RQ;EAOI;A9Eu4RZ;;A8E94RQ;EAOI;A9E24RZ;;A8El5RQ;EAOI;A9E+4RZ;;A8Et5RQ;EAOI;A9Em5RZ;;A8E15RQ;EAOI;A9Eu5RZ;;A8E95RQ;EAOI;A9E25RZ;;A8El6RQ;EAOI;A9E+5RZ;;A8Et6RQ;EAOI;A9Em6RZ;;A8E16RQ;EAOI;A9Eu6RZ;;A8E96RQ;EAOI;A9E26RZ;;A8El7RQ;EAOI;A9E+6RZ;;A8Et7RQ;EAOI;A9Em7RZ;;A8E17RQ;EAOI;A9Eu7RZ;;A8E97RQ;EAOI;A9E27RZ;;A8El8RQ;EAOI;A9E+7RZ;;A8Et8RQ;EAOI;A9Em8RZ;;A8E18RQ;EAOI;A9Eu8RZ;;A8E98RQ;EAOI;A9E28RZ;;A8El9RQ;EAOI;A9E+8RZ;;A8Et9RQ;EAOI;A9Em9RZ;;A8E19RQ;EAOI;A9Eu9RZ;;A8E99RQ;EAOI;A9E29RZ;;A8El+RQ;EAOI;A9E+9RZ;;A8Et+RQ;EAOI;A9Em+RZ;;A8E1+RQ;EAOI;A9Eu+RZ;;A8E9+RQ;EAOI;A9E2+RZ;;A8El/RQ;EAOI;A9E++RZ;;A8Et/RQ;EAOI;A9Em/RZ;;A8E1/RQ;EAOI;A9Eu/RZ;;A8E9/RQ;EAOI;A9E2/RZ;;A8ElgSQ;EAOI;A9E+/RZ;;A8EtgSQ;EAOI;A9EmgSZ;;A8E1gSQ;EAOI;A9EugSZ;;A8E9gSQ;EAOI;A9E2gSZ;;A8ElhSQ;EAOI;A9E+gSZ;;A8EthSQ;EAOI;A9EmhSZ;;A8E1hSQ;EAOI;A9EuhSZ;;A8E9hSQ;EAOI;A9E2hSZ;;A8EliSQ;EAOI;A9E+hSZ;;A8EtiSQ;EAOI;A9EmiSZ;;A8E1iSQ;EAOI;A9EuiSZ;;A8E9iSQ;EAOI;A9E2iSZ;;A8EljSQ;EAOI;A9E+iSZ;;A8EtjSQ;EAOI;A9EmjSZ;;A8E1jSQ;EAOI;A9EujSZ;;A8E9jSQ;EAOI;A9E2jSZ;;A8ElkSQ;EAOI;A9E+jSZ;;A8EtkSQ;EAOI;A9EmkSZ;;A8E1kSQ;EAOI;A9EukSZ;;A8E9kSQ;EAOI;A9E2kSZ;;A8EllSQ;EAOI;A9E+kSZ;;A8EtlSQ;EAOI;A9EmlSZ;;A8E1lSQ;EAOI;A9EulSZ;;A8E9lSQ;EAOI;A9E2lSZ;;A8ElmSQ;EAOI;A9E+lSZ;;A8EtmSQ;EAOI;A9EmmSZ;;A8E1mSQ;EAOI;A9EumSZ;;A8E9mSQ;EAOI;A9E2mSZ;;A8ElnSQ;EAOI;A9E+mSZ;;A8EtnSQ;EAOI;A9EmnSZ;;A8E1nSQ;EAOI;A9EunSZ;;A8E9nSQ;EAOI;A9E2nSZ;;A8EloSQ;EAOI;A9E+nSZ;;A8EtoSQ;EAOI;A9EmoSZ;;A8E1oSQ;EAOI;A9EuoSZ;;A8E9oSQ;EAOI;EAAA;A9E4oSZ;;A8EnpSQ;EAOI;EAAA;A9EipSZ;;A8ExpSQ;EAOI;EAAA;A9EspSZ;;A8E7pSQ;EAOI;EAAA;A9E2pSZ;;A8ElqSQ;EAOI;EAAA;A9EgqSZ;;A8EvqSQ;EAOI;EAAA;A9EqqSZ;;A8E5qSQ;EAOI;EAAA;A9E0qSZ;;A8EjrSQ;EAOI;EAAA;A9E+qSZ;;A8EtrSQ;EAOI;EAAA;A9EorSZ;;A8E3rSQ;EAOI;EAAA;A9EyrSZ;;A8EhsSQ;EAOI;EAAA;A9E8rSZ;;A8ErsSQ;EAOI;EAAA;A9EmsSZ;;A8E1sSQ;EAOI;EAAA;A9EwsSZ;;A8E/sSQ;EAOI;EAAA;A9E6sSZ;;A8EptSQ;EAOI;EAAA;A9EktSZ;;A8EztSQ;EAOI;EAAA;A9EutSZ;;A8E9tSQ;EAOI;EAAA;A9E4tSZ;;A8EnuSQ;EAOI;EAAA;A9EiuSZ;;A8ExuSQ;EAOI;EAAA;A9EsuSZ;;A8E7uSQ;EAOI;EAAA;A9E2uSZ;;A8ElvSQ;EAOI;EAAA;A9EgvSZ;;A8EvvSQ;EAOI;EAAA;A9EqvSZ;;A8E5vSQ;EAOI;EAAA;A9E0vSZ;;A8EjwSQ;EAOI;EAAA;A9E+vSZ;;A8EtwSQ;EAOI;A9EmwSZ;;A8E1wSQ;EAOI;A9EuwSZ;;A8E9wSQ;EAOI;A9E2wSZ;;A8ElxSQ;EAOI;A9E+wSZ;;A8EtxSQ;EAOI;A9EmxSZ;;A8E1xSQ;EAOI;A9EuxSZ;;A8E9xSQ;EAOI;A9E2xSZ;;A8ElySQ;EAOI;A9E+xSZ;;A8EtySQ;EAOI;A9EmySZ;;A8E1ySQ;EAOI;A9EuySZ;;A8E9ySQ;EAOI;A9E2ySZ;;A8ElzSQ;EAOI;A9E+ySZ;;A8EtzSQ;EAOI;A9EmzSZ;;A8E1zSQ;EAOI;A9EuzSZ;;A8E9zSQ;EAOI;A9E2zSZ;;A8El0SQ;EAOI;A9E+zSZ;;A8Et0SQ;EAOI;A9Em0SZ;;A8E10SQ;EAOI;A9Eu0SZ;;A8E90SQ;EAOI;A9E20SZ;;A8El1SQ;EAOI;A9E+0SZ;;A8Et1SQ;EAOI;A9Em1SZ;;A8E11SQ;EAOI;A9Eu1SZ;;A8E91SQ;EAOI;A9E21SZ;;A8El2SQ;EAOI;A9E+1SZ;;A8Et2SQ;EAOI;A9Em2SZ;;A8E12SQ;EAOI;A9Eu2SZ;;A8E92SQ;EAOI;A9E22SZ;;A8El3SQ;EAOI;A9E+2SZ;;A8Et3SQ;EAOI;A9Em3SZ;;A8E13SQ;EAOI;A9Eu3SZ;;A8E93SQ;EAOI;A9E23SZ;;A8El4SQ;EAOI;A9E+3SZ;;A8Et4SQ;EAOI;A9Em4SZ;;A8E14SQ;EAOI;A9Eu4SZ;;A8E94SQ;EAOI;A9E24SZ;;A8El5SQ;EAOI;A9E+4SZ;;A8Et5SQ;EAOI;A9Em5SZ;;A8E15SQ;EAOI;A9Eu5SZ;;A8E95SQ;EAOI;A9E25SZ;;A8El6SQ;EAOI;A9E+5SZ;;A8Et6SQ;EAOI;A9Em6SZ;;A8E16SQ;EAOI;A9Eu6SZ;;A8E96SQ;EAOI;A9E26SZ;;A8El7SQ;EAOI;A9E+6SZ;;A8Et7SQ;EAOI;A9Em7SZ;;A8E17SQ;EAOI;A9Eu7SZ;;A8E97SQ;EAOI;A9E27SZ;;A8El8SQ;EAOI;A9E+7SZ;;A8Et8SQ;EAOI;A9Em8SZ;;A8E18SQ;EAOI;A9Eu8SZ;;A8E98SQ;EAOI;A9E28SZ;;A8El9SQ;EAOI;A9E+8SZ;;A8Et9SQ;EAOI;A9Em9SZ;;A8E19SQ;EAOI;A9Eu9SZ;;A8E99SQ;EAOI;A9E29SZ;;A8El+SQ;EAOI;A9E+9SZ;;A8Et+SQ;EAOI;A9Em+SZ;;A8E1+SQ;EAOI;A9Eu+SZ;;A8E9+SQ;EAOI;A9E2+SZ;;A8El/SQ;EAOI;A9E++SZ;;A8Et/SQ;EAOI;A9Em/SZ;;A8E1/SQ;EAOI;EAAA;A9Ew/SZ;;A8E//SQ;EAOI;EAAA;A9E6/SZ;;A8EpgTQ;EAOI;EAAA;A9EkgTZ;;A8EzgTQ;EAOI;EAAA;A9EugTZ;;A8E9gTQ;EAOI;EAAA;A9E4gTZ;;A8EnhTQ;EAOI;EAAA;A9EihTZ;;A8ExhTQ;EAOI;EAAA;A9EshTZ;;A8E7hTQ;EAOI;EAAA;A9E2hTZ;;A8EliTQ;EAOI;EAAA;A9EgiTZ;;A8EviTQ;EAOI;EAAA;A9EqiTZ;;A8E5iTQ;EAOI;EAAA;A9E0iTZ;;A8EjjTQ;EAOI;EAAA;A9E+iTZ;;A8EtjTQ;EAOI;EAAA;A9EojTZ;;A8E3jTQ;EAOI;EAAA;A9EyjTZ;;A8EhkTQ;EAOI;EAAA;A9E8jTZ;;A8ErkTQ;EAOI;EAAA;A9EmkTZ;;A8E1kTQ;EAOI;EAAA;A9EwkTZ;;A8E/kTQ;EAOI;EAAA;A9E6kTZ;;A8EplTQ;EAOI;EAAA;A9EklTZ;;A8EzlTQ;EAOI;EAAA;A9EulTZ;;A8E9lTQ;EAOI;EAAA;A9E4lTZ;;A8EnmTQ;EAOI;EAAA;A9EimTZ;;A8ExmTQ;EAOI;EAAA;A9EsmTZ;;A8E7mTQ;EAOI;EAAA;A9E2mTZ;;A8ElnTQ;EAOI;EAAA;A9EgnTZ;;A8EvnTQ;EAOI;EAAA;A9EqnTZ;;A8E5nTQ;EAOI;A9EynTZ;;A8EhoTQ;EAOI;A9E6nTZ;;A8EpoTQ;EAOI;A9EioTZ;;A8ExoTQ;EAOI;A9EqoTZ;;A8E5oTQ;EAOI;A9EyoTZ;;A8EhpTQ;EAOI;A9E6oTZ;;A8EppTQ;EAOI;A9EipTZ;;A8ExpTQ;EAOI;A9EqpTZ;;A8E5pTQ;EAOI;A9EypTZ;;A8EhqTQ;EAOI;A9E6pTZ;;A8EpqTQ;EAOI;A9EiqTZ;;A8ExqTQ;EAOI;A9EqqTZ;;A8E5qTQ;EAOI;A9EyqTZ;;A8EhrTQ;EAOI;A9E6qTZ;;A8EprTQ;EAOI;A9EirTZ;;A8ExrTQ;EAOI;A9EqrTZ;;A8E5rTQ;EAOI;A9EyrTZ;;A8EhsTQ;EAOI;A9E6rTZ;;A8EpsTQ;EAOI;A9EisTZ;;A8ExsTQ;EAOI;A9EqsTZ;;A8E5sTQ;EAOI;A9EysTZ;;A8EhtTQ;EAOI;A9E6sTZ;;A8EptTQ;EAOI;A9EitTZ;;A8ExtTQ;EAOI;A9EqtTZ;;A8E5tTQ;EAOI;A9EytTZ;;A8EhuTQ;EAOI;A9E6tTZ;;A8EpuTQ;EAOI;A9EiuTZ;;A8ExuTQ;EAOI;A9EquTZ;;A8E5uTQ;EAOI;A9EyuTZ;;A8EhvTQ;EAOI;A9E6uTZ;;A8EpvTQ;EAOI;A9EivTZ;;A8ExvTQ;EAOI;A9EqvTZ;;A8E5vTQ;EAOI;A9EyvTZ;;A8EhwTQ;EAOI;A9E6vTZ;;A8EpwTQ;EAOI;A9EiwTZ;;A8ExwTQ;EAOI;A9EqwTZ;;A8E5wTQ;EAOI;A9EywTZ;;A8EhxTQ;EAOI;A9E6wTZ;;A8EpxTQ;EAOI;A9EixTZ;;A8ExxTQ;EAOI;A9EqxTZ;;A8E5xTQ;EAOI;A9EyxTZ;;A8EhyTQ;EAOI;A9E6xTZ;;A8EpyTQ;EAOI;A9EiyTZ;;A8ExyTQ;EAOI;A9EqyTZ;;A8E5yTQ;EAOI;A9EyyTZ;;A8EhzTQ;EAOI;A9E6yTZ;;A8EpzTQ;EAOI;A9EizTZ;;A8ExzTQ;EAOI;A9EqzTZ;;A8E5zTQ;EAOI;A9EyzTZ;;A8Eh0TQ;EAOI;A9E6zTZ;;A8Ep0TQ;EAOI;A9Ei0TZ;;A8Ex0TQ;EAOI;A9Eq0TZ;;A8E50TQ;EAOI;A9Ey0TZ;;A8Eh1TQ;EAOI;A9E60TZ;;A8Ep1TQ;EAOI;A9Ei1TZ;;A8Ex1TQ;EAOI;A9Eq1TZ;;A8E51TQ;EAOI;A9Ey1TZ;;A8Eh2TQ;EAOI;A9E61TZ;;A8Ep2TQ;EAOI;A9Ei2TZ;;A8Ex2TQ;EAOI;A9Eq2TZ;;A8E52TQ;EAOI;A9Ey2TZ;;A8Eh3TQ;EAOI;A9E62TZ;;A8Ep3TQ;EAOI;A9Ei3TZ;;A8Ex3TQ;EAOI;A9Eq3TZ;;A8E53TQ;EAOI;A9Ey3TZ;;A8Eh4TQ;EAOI;A9E63TZ;;A8Ep4TQ;EAOI;A9Ei4TZ;;A8Ex4TQ;EAOI;A9Eq4TZ;;A8E54TQ;EAOI;A9Ey4TZ;;A8Eh5TQ;EAOI;A9E64TZ;;A8Ep5TQ;EAOI;A9Ei5TZ;;A8Ex5TQ;EAOI;A9Eq5TZ;;A8E55TQ;EAOI;A9Ey5TZ;;A8Eh6TQ;EAOI;A9E65TZ;;A8Ep6TQ;EAOI;A9Ei6TZ;;A8Ex6TQ;EAOI;A9Eq6TZ;;A8E56TQ;EAOI;A9Ey6TZ;;A8Eh7TQ;EAOI;A9E66TZ;;A8Ep7TQ;EAOI;A9Ei7TZ;;A8Ex7TQ;EAOI;A9Eq7TZ;;A8E57TQ;EAOI;A9Ey7TZ;;A8Eh8TQ;EAOI;A9E67TZ;;A8Ep8TQ;EAOI;A9Ei8TZ;;A8Ex8TQ;EAOI;A9Eq8TZ;;A8E58TQ;EAOI;A9Ey8TZ;;A8Eh9TQ;EAOI;A9E68TZ;;A8Ep9TQ;EAOI;A9Ei9TZ;;A8Ex9TQ;EAOI;A9Eq9TZ;;A8E59TQ;EAOI;A9Ey9TZ;;A8Eh+TQ;EAOI;A9E69TZ;;A8Ep+TQ;EAOI;A9Ei+TZ;;A8Ex+TQ;EAOI;A9Eq+TZ;;A8E5+TQ;EAOI;A9Ey+TZ;;A8Eh/TQ;EAOI;A9E6+TZ;;A8Ep/TQ;EAOI;A9Ei/TZ;;A8Ex/TQ;EAOI;A9Eq/TZ;;A8E5/TQ;EAOI;A9Ey/TZ;;A8EhgUQ;EAOI;A9E6/TZ;;A8EpgUQ;EAOI;A9EigUZ;;A8ExgUQ;EAOI;A9EqgUZ;;A8E5gUQ;EAOI;A9EygUZ;;A8EhhUQ;EAOI;A9E6gUZ;;A8EphUQ;EAOI;A9EihUZ;;A8ExhUQ;EAOI;A9EqhUZ;;A8E5hUQ;EAOI;A9EyhUZ;;A8EhiUQ;EAOI;A9E6hUZ;;A8EpiUQ;EAOI;A9EiiUZ;;A8ExiUQ;EAOI;A9EqiUZ;;A8E5iUQ;EAOI;A9EyiUZ;;A8EhjUQ;EAOI;A9E6iUZ;;A8EpjUQ;EAOI;A9EijUZ;;A8ExjUQ;EAOI;A9EqjUZ;;A8E5jUQ;EAOI;A9EyjUZ;;A8EhkUQ;EAOI;A9E6jUZ;;A8EpkUQ;EAOI;A9EikUZ;;A8ExkUQ;EAOI;A9EqkUZ;;A8E5kUQ;EAOI;A9EykUZ;;A8EhlUQ;EAOI;A9E6kUZ;;A8EplUQ;EAOI;A9EilUZ;;A8ExlUQ;EAOI;A9EqlUZ;;A8E5lUQ;EAOI;A9EylUZ;;A8EhmUQ;EAOI;A9E6lUZ;;A8EpmUQ;EAOI;A9EimUZ;;A8ExmUQ;EAOI;A9EqmUZ;;A8E5mUQ;EAOI;A9EymUZ;;A8EhnUQ;EAOI;A9E6mUZ;;A8EpnUQ;EAOI;A9EinUZ;;A8ExnUQ;EAOI;A9EqnUZ;;A8E5nUQ;EAOI;A9EynUZ;;A8E9oUQ;AAcA;EAOI;EAAA;A9E+nUZ;;A8E5mUQ;AA1BA;EAIQ;EAGJ;A9EqoUZ;;A8E5oUQ;EAIQ;EAGJ;A9E0oUZ;;A8EjpUQ;EAIQ;EAGJ;A9E+oUZ;;A8EtpUQ;EAIQ;EAGJ;A9EopUZ;;A8E3pUQ;EAIQ;EAGJ;A9EypUZ;;A8EhqUQ;EAIQ;EAGJ;A9E8pUZ;;A8ErqUQ;EAIQ;EAGJ;A9EmqUZ;;A8E1qUQ;EAIQ;EAGJ;A9EwqUZ;;A8E/qUQ;EAIQ;EAGJ;A9E6qUZ;;A8EprUQ;EAIQ;EAGJ;A9EkrUZ;;A8EzrUQ;EAIQ;EAGJ;A9EurUZ;;A8E9rUQ;EAIQ;EAGJ;A9E4rUZ;;A8EnsUQ;EAIQ;EAGJ;A9EisUZ;;A8ExsUQ;EAIQ;EAGJ;A9EssUZ;;A8E7sUQ;EAIQ;EAGJ;A9E2sUZ;;A8EltUQ;EAIQ;EAGJ;A9EgtUZ;;A8EvtUQ;EAIQ;EAGJ;A9EqtUZ;;A8E5tUQ;EAIQ;EAGJ;A9E0tUZ;;A8EjuUQ;EAIQ;EAGJ;A9E+tUZ;;A8EtuUQ;EAIQ;EAGJ;A9EouUZ;;A8E3uUQ;EAIQ;EAGJ;A9EyuUZ;;A8EhvUQ;EAIQ;EAGJ;A9E8uUZ;;A8ErvUQ;EAIQ;EAGJ;A9EmvUZ;;A8E1vUQ;EAIQ;EAGJ;A9EwvUZ;;A8E/vUQ;EAIQ;EAGJ;A9E6vUZ;;A8EpwUQ;EAIQ;EAGJ;A9EkwUZ;;A8EzwUQ;EAIQ;EAGJ;A9EuwUZ;;A8E9wUQ;EAIQ;EAGJ;A9E4wUZ;;A8EnxUQ;EAIQ;EAGJ;A9EixUZ;;A8ExxUQ;EAIQ;EAGJ;A9EsxUZ;;A8E7xUQ;EAIQ;EAGJ;A9E2xUZ;;A8ElyUQ;EAIQ;EAGJ;A9EgyUZ;;A8EvyUQ;EAIQ;EAGJ;A9EqyUZ;;A8E5yUQ;EAIQ;EAGJ;A9E0yUZ;;A8EjzUQ;EAIQ;EAGJ;A9E+yUZ;;A8Eh0UQ;EACE;A9Em0UV;;A8Ep0UQ;EACE;A9Eu0UV;;A8Ex0UQ;EACE;A9E20UV;;A8E50UQ;EACE;A9E+0UV;;A8Et0UQ;EAOI;A9Em0UZ;;A8E10UQ;EAOI;A9Eu0UZ;;A8E90UQ;EAOI;A9E20UZ;;A8El1UQ;EAOI;A9E+0UZ;;A8Et1UQ;EAOI;A9Em1UZ;;A8E11UQ;EAOI;A9Eu1UZ;;A8E91UQ;EAOI;A9E21UZ;;A8El2UQ;EAOI;A9E+1UZ;;A8Eh3UQ;EACE;A9Em3UV;;A8E/2UU;EACE;A9Ek3UZ;;A8Ex3UQ;EACE;A9E23UV;;A8Ev3UU;EACE;A9E03UZ;;A8Eh4UQ;EACE;A9Em4UV;;A8E/3UU;EACE;A9Ek4UZ;;A8Ex4UQ;EACE;A9E24UV;;A8Ev4UU;EACE;A9E04UZ;;A8Eh5UQ;EACE;A9Em5UV;;A8E/4UU;EACE;A9Ek5UZ;;A8E94UQ;EAOI;A9E24UZ;;A8Et4UU;EAOI;A9Em4Ud;;A8Et5UQ;EAOI;A9Em5UZ;;A8E94UU;EAOI;A9E24Ud;;A8E95UQ;EAOI;A9E25UZ;;A8Et5UU;EAOI;A9Em5Ud;;A8Et6UQ;EAIQ;EAGJ;A9Eo6UZ;;A8E36UQ;EAIQ;EAGJ;A9Ey6UZ;;A8Eh7UQ;EAIQ;EAGJ;A9E86UZ;;A8Er7UQ;EAIQ;EAGJ;A9Em7UZ;;A8E17UQ;EAIQ;EAGJ;A9Ew7UZ;;A8E/7UQ;EAIQ;EAGJ;A9E67UZ;;A8Ep8UQ;EAIQ;EAGJ;A9Ek8UZ;;A8Ez8UQ;EAIQ;EAGJ;A9Eu8UZ;;A8E98UQ;EAIQ;EAGJ;A9E48UZ;;A8E79UQ;EACE;A9Eg+UV;;A8E59UU;EACE;A9E+9UZ;;A8Er+UQ;EACE;A9Ew+UV;;A8Ep+UU;EACE;A9Eu+UZ;;A8E7+UQ;EACE;A9Eg/UV;;A8E5+UU;EACE;A9E++UZ;;A8Er/UQ;EACE;A9Ew/UV;;A8Ep/UU;EACE;A9Eu/UZ;;A8E7/UQ;EACE;A9EggVV;;A8E5/UU;EACE;A9E+/UZ;;A8ErgVQ;EACE;A9EwgVV;;A8EpgVU;EACE;A9EugVZ;;A8EngVQ;EAIQ;EAGJ;A9EigVZ;;A8ExgVQ;EAIQ;EAGJ;A9EsgVZ;;A8E7gVQ;EAIQ;EAGJ;A9E2gVZ;;A8ElhVQ;EAIQ;EAGJ;A9EghVZ;;A8EvhVQ;EAIQ;EAGJ;A9EqhVZ;;A8E5hVQ;EAIQ;EAGJ;A9E0hVZ;;A8EjiVQ;EAIQ;EAGJ;A9E+hVZ;;A8EtiVQ;EAIQ;EAGJ;A9EoiVZ;;A8E3iVQ;EAIQ;EAGJ;A9EyiVZ;;A8EhjVQ;EAIQ;EAGJ;A9E8iVZ;;A8ErjVQ;EAIQ;EAGJ;A9EmjVZ;;A8E1jVQ;EAIQ;EAGJ;A9EwjVZ;;A8E/jVQ;EAIQ;EAGJ;A9E6jVZ;;A8EpkVQ;EAIQ;EAGJ;A9EkkVZ;;A8EzkVQ;EAIQ;EAGJ;A9EukVZ;;A8E9kVQ;EAIQ;EAGJ;A9E4kVZ;;A8EnlVQ;EAIQ;EAGJ;A9EilVZ;;A8ExlVQ;EAIQ;EAGJ;A9EslVZ;;A8E7lVQ;EAIQ;EAGJ;A9E2lVZ;;A8ElmVQ;EAIQ;EAGJ;A9EgmVZ;;A8EvmVQ;EAIQ;EAGJ;A9EqmVZ;;A8E5mVQ;EAIQ;EAGJ;A9E0mVZ;;A8EjnVQ;EAIQ;EAGJ;A9E+mVZ;;A8EtnVQ;EAIQ;EAGJ;A9EonVZ;;A8E3nVQ;EAIQ;EAGJ;A9EynVZ;;A8EhoVQ;EAIQ;EAGJ;A9E8nVZ;;A8EroVQ;EAIQ;EAGJ;A9EmoVZ;;A8E1oVQ;EAIQ;EAGJ;A9EwoVZ;;A8E/oVQ;EAIQ;EAGJ;A9E6oVZ;;A8EppVQ;EAIQ;EAGJ;A9EkpVZ;;A8EzpVQ;EAIQ;EAGJ;A9EupVZ;;A8E9pVQ;EAIQ;EAGJ;A9E4pVZ;;A8EnqVQ;EAIQ;EAGJ;A9EiqVZ;;A8ElrVQ;EACE;A9EqrVV;;A8EtrVQ;EACE;A9EyrVV;;A8E1rVQ;EACE;A9E6rVV;;A8E9rVQ;EACE;A9EisVV;;A8ElsVQ;EACE;A9EqsVV;;A8E5rVQ;EAOI;A9EyrVZ;;A8EhsVQ;EAOI;A9E6rVZ;;A8EpsVQ;EAOI;A9EisVZ;;A8ExsVQ;EAOI;A9EqsVZ;;A8E5sVQ;EAOI;A9EysVZ;;A8EhtVQ;EAOI;A9E6sVZ;;A8EptVQ;EAOI;A9EitVZ;;A8ExtVQ;EAOI;A9EqtVZ;;A8E5tVQ;EAOI;A9EytVZ;;A8EhuVQ;EAOI;A9E6tVZ;;A8EpuVQ;EAOI;A9EiuVZ;;A8ExuVQ;EAOI;A9EquVZ;;A8E5uVQ;EAOI;A9EyuVZ;;A8EhvVQ;EAOI;A9E6uVZ;;A8EpvVQ;EAOI;A9EivVZ;;A8ExvVQ;EAOI;A9EqvVZ;;A8E5vVQ;EAOI;A9EyvVZ;;A8EhwVQ;EAOI;A9E6vVZ;;A8EpwVQ;EAOI;A9EiwVZ;;A8ExwVQ;EAOI;A9EqwVZ;;A8E5wVQ;EAOI;A9EywVZ;;A8EhxVQ;EAOI;A9E6wVZ;;A8EpxVQ;EAOI;A9EixVZ;;A8ExxVQ;EAOI;EAAA;A9EsxVZ;;A8E7xVQ;EAOI;EAAA;A9E2xVZ;;A8ElyVQ;EAOI;EAAA;A9EgyVZ;;A8EvyVQ;EAOI;EAAA;A9EqyVZ;;A8E5yVQ;EAOI;EAAA;A9E0yVZ;;A8EjzVQ;EAOI;EAAA;A9E+yVZ;;A8EtzVQ;EAOI;EAAA;A9EozVZ;;A8E3zVQ;EAOI;EAAA;A9EyzVZ;;A8Eh0VQ;EAOI;EAAA;A9E8zVZ;;A8Er0VQ;EAOI;EAAA;A9Em0VZ;;A8E10VQ;EAOI;EAAA;A9Ew0VZ;;A8E/0VQ;EAOI;EAAA;A9E60VZ;;A8Ep1VQ;EAOI;A9Ei1VZ;;A8Ex1VQ;EAOI;A9Eq1VZ;;A8E51VQ;EAOI;A9Ey1VZ;;A8Eh2VQ;EAOI;A9E61VZ;;A8Ep2VQ;EAOI;A9Ei2VZ;;A8Ex2VQ;EAOI;A9Eq2VZ;;A8E52VQ;EAOI;A9Ey2VZ;;A8Eh3VQ;EAOI;A9E62VZ;;A8Ep3VQ;EAOI;A9Ei3VZ;;A8Ex3VQ;EAOI;A9Eq3VZ;;A8E53VQ;EAOI;A9Ey3VZ;;A8Eh4VQ;EAOI;EAAA;A9E83VZ;;A8Er4VQ;EAOI;EAAA;A9Em4VZ;;A8E14VQ;EAOI;EAAA;A9Ew4VZ;;A8E/4VQ;EAOI;EAAA;A9E64VZ;;A8Ep5VQ;EAIQ;EAGJ;A9Ek5VZ;;A8Ez5VQ;EAIQ;EAGJ;A9Eu5VZ;;A8E95VQ;EAIQ;EAGJ;A9E45VZ;;A8En6VQ;EAIQ;EAGJ;A9Ei6VZ;;A8Ex6VQ;EAIQ;EAGJ;A9Es6VZ;;A8E76VQ;EAIQ;EAGJ;A9E26VZ;;A8El7VQ;EAIQ;EAGJ;A9Eg7VZ;;A8Ev7VQ;EAIQ;EAGJ;A9Eq7VZ;;A8E57VQ;EAIQ;EAGJ;A9E07VZ;;A8Ej8VQ;EAIQ;EAGJ;A9E+7VZ;;A8Et8VQ;EAIQ;EAGJ;A9Eo8VZ;;A8E38VQ;EAIQ;EAGJ;A9Ey8VZ;;A8Eh9VQ;EAIQ;EAGJ;A9E88VZ;;A8Er9VQ;EAIQ;EAGJ;A9Em9VZ;;A8E19VQ;EAIQ;EAGJ;A9Ew9VZ;;A8E/9VQ;EAIQ;EAGJ;A9E69VZ;;A8Ep+VQ;EAIQ;EAGJ;A9Ek+VZ;;A8Ez+VQ;EAIQ;EAGJ;A9Eu+VZ;;A8E9+VQ;EAIQ;EAGJ;A9E4+VZ;;A8En/VQ;EAIQ;EAGJ;A9Ei/VZ;;A8Ex/VQ;EAIQ;EAGJ;A9Es/VZ;;A8E7/VQ;EAIQ;EAGJ;A9E2/VZ;;A8ElgWQ;EAIQ;EAGJ;A9EggWZ;;A8EvgWQ;EAIQ;EAGJ;A9EqgWZ;;A8E5gWQ;EAIQ;EAGJ;A9E0gWZ;;A8EjhWQ;EAIQ;EAGJ;A9E+gWZ;;A8EhiWQ;EACE;A9EmiWV;;A8EpiWQ;EACE;A9EuiWV;;A8ExiWQ;EACE;A9E2iWV;;A8E5iWQ;EACE;A9E+iWV;;A8EtiWQ;EAOI;A9EmiWZ;;AoB7iWI;E0DGI;IAOI;E9EwiWV;E8E/iWM;IAOI;E9E2iWV;E8EljWM;IAOI;E9E8iWV;E8ErjWM;IAOI;E9EijWV;E8ExjWM;IAOI;E9EojWV;E8E3jWM;IAOI;E9EujWV;E8E9jWM;IAOI;E9E0jWV;E8EjkWM;IAOI;E9E6jWV;E8EpkWM;IAOI;E9EgkWV;E8EvkWM;IAOI;E9EmkWV;E8E1kWM;IAOI;E9EskWV;E8E7kWM;IAOI;E9EykWV;E8EhlWM;IAOI;E9E4kWV;E8EnlWM;IAOI;E9E+kWV;E8EtlWM;IAOI;E9EklWV;E8EzlWM;IAOI;E9EqlWV;E8E5lWM;IAOI;E9EwlWV;E8E/lWM;IAOI;E9E2lWV;E8ElmWM;IAOI;E9E8lWV;E8ErmWM;IAOI;E9EimWV;E8ExmWM;IAOI;E9EomWV;E8E3mWM;IAOI;E9EumWV;E8E9mWM;IAOI;E9E0mWV;E8EjnWM;IAOI;E9E6mWV;E8EpnWM;IAOI;E9EgnWV;E8EvnWM;IAOI;E9EmnWV;E8E1nWM;IAOI;E9EsnWV;E8E7nWM;IAOI;E9EynWV;E8EhoWM;IAOI;E9E4nWV;E8EnoWM;IAOI;E9E+nWV;E8EtoWM;IAOI;E9EkoWV;E8EzoWM;IAOI;E9EqoWV;E8E5oWM;IAOI;E9EwoWV;E8E/oWM;IAOI;E9E2oWV;E8ElpWM;IAOI;E9E8oWV;E8ErpWM;IAOI;E9EipWV;E8ExpWM;IAOI;E9EopWV;E8E3pWM;IAOI;E9EupWV;E8E9pWM;IAOI;E9E0pWV;E8EjqWM;IAOI;E9E6pWV;E8EpqWM;IAOI;E9EgqWV;E8EvqWM;IAOI;E9EmqWV;E8E1qWM;IAOI;E9EsqWV;E8E7qWM;IAOI;E9EyqWV;E8EhrWM;IAOI;E9E4qWV;E8EnrWM;IAOI;E9E+qWV;E8EtrWM;IAOI;E9EkrWV;E8EzrWM;IAOI;E9EqrWV;E8E5rWM;IAOI;E9EwrWV;E8E/rWM;IAOI;E9E2rWV;E8ElsWM;IAOI;E9E8rWV;E8ErsWM;IAOI;E9EisWV;E8ExsWM;IAOI;E9EosWV;E8E3sWM;IAOI;E9EusWV;E8E9sWM;IAOI;E9E0sWV;E8EjtWM;IAOI;E9E6sWV;E8EptWM;IAOI;E9EgtWV;E8EvtWM;IAOI;E9EmtWV;E8E1tWM;IAOI;E9EstWV;E8E7tWM;IAOI;E9EytWV;E8EhuWM;IAOI;E9E4tWV;E8EnuWM;IAOI;E9E+tWV;E8EtuWM;IAOI;E9EkuWV;E8EzuWM;IAOI;E9EquWV;E8E5uWM;IAOI;E9EwuWV;E8E/uWM;IAOI;E9E2uWV;E8ElvWM;IAOI;E9E8uWV;E8ErvWM;IAOI;E9EivWV;E8ExvWM;IAOI;E9EovWV;E8E3vWM;IAOI;E9EuvWV;E8E9vWM;IAOI;E9E0vWV;E8EjwWM;IAOI;E9E6vWV;E8EpwWM;IAOI;E9EgwWV;E8EvwWM;IAOI;E9EmwWV;E8E1wWM;IAOI;E9EswWV;E8E7wWM;IAOI;E9EywWV;E8EhxWM;IAOI;E9E4wWV;E8EnxWM;IAOI;E9E+wWV;E8EtxWM;IAOI;E9EkxWV;E8EzxWM;IAOI;E9EqxWV;E8E5xWM;IAOI;E9EwxWV;E8E/xWM;IAOI;E9E2xWV;E8ElyWM;IAOI;E9E8xWV;E8EryWM;IAOI;E9EiyWV;E8ExyWM;IAOI;E9EoyWV;E8E3yWM;IAOI;E9EuyWV;E8E9yWM;IAOI;E9E0yWV;E8EjzWM;IAOI;E9E6yWV;E8EpzWM;IAOI;E9EgzWV;E8EvzWM;IAOI;E9EmzWV;E8E1zWM;IAOI;E9EszWV;E8E7zWM;IAOI;E9EyzWV;E8Eh0WM;IAOI;E9E4zWV;E8En0WM;IAOI;E9E+zWV;E8Et0WM;IAOI;E9Ek0WV;E8Ez0WM;IAOI;E9Eq0WV;E8E50WM;IAOI;E9Ew0WV;E8E/0WM;IAOI;E9E20WV;E8El1WM;IAOI;E9E80WV;E8Er1WM;IAOI;E9Ei1WV;E8Ex1WM;IAOI;E9Eo1WV;E8E31WM;IAOI;E9Eu1WV;E8E91WM;IAOI;E9E01WV;E8Ej2WM;IAOI;E9E61WV;E8Ep2WM;IAOI;E9Eg2WV;E8Ev2WM;IAOI;E9Em2WV;E8E12WM;IAOI;E9Es2WV;E8E72WM;IAOI;E9Ey2WV;E8Eh3WM;IAOI;E9E42WV;E8En3WM;IAOI;E9E+2WV;E8Et3WM;IAOI;E9Ek3WV;E8Ez3WM;IAOI;E9Eq3WV;E8E53WM;IAOI;E9Ew3WV;E8E/3WM;IAOI;E9E23WV;E8El4WM;IAOI;E9E83WV;E8Er4WM;IAOI;E9Ei4WV;E8Ex4WM;IAOI;E9Eo4WV;E8E34WM;IAOI;E9Eu4WV;E8E94WM;IAOI;E9E04WV;E8Ej5WM;IAOI;E9E64WV;E8Ep5WM;IAOI;E9Eg5WV;E8Ev5WM;IAOI;E9Em5WV;E8E15WM;IAOI;IAAA;E9Eu5WV;E8E95WM;IAOI;IAAA;E9E25WV;E8El6WM;IAOI;IAAA;E9E+5WV;E8Et6WM;IAOI;IAAA;E9Em6WV;E8E16WM;IAOI;IAAA;E9Eu6WV;E8E96WM;IAOI;IAAA;E9E26WV;E8El7WM;IAOI;IAAA;E9E+6WV;E8Et7WM;IAOI;IAAA;E9Em7WV;E8E17WM;IAOI;IAAA;E9Eu7WV;E8E97WM;IAOI;IAAA;E9E27WV;E8El8WM;IAOI;IAAA;E9E+7WV;E8Et8WM;IAOI;IAAA;E9Em8WV;E8E18WM;IAOI;IAAA;E9Eu8WV;E8E98WM;IAOI;IAAA;E9E28WV;E8El9WM;IAOI;IAAA;E9E+8WV;E8Et9WM;IAOI;IAAA;E9Em9WV;E8E19WM;IAOI;IAAA;E9Eu9WV;E8E99WM;IAOI;IAAA;E9E29WV;E8El+WM;IAOI;IAAA;E9E+9WV;E8Et+WM;IAOI;IAAA;E9Em+WV;E8E1+WM;IAOI;IAAA;E9Eu+WV;E8E9+WM;IAOI;IAAA;E9E2+WV;E8El/WM;IAOI;IAAA;E9E++WV;E8Et/WM;IAOI;IAAA;E9Em/WV;E8E1/WM;IAOI;IAAA;E9Eu/WV;E8E9/WM;IAOI;IAAA;E9E2/WV;E8ElgXM;IAOI;IAAA;E9E+/WV;E8EtgXM;IAOI;IAAA;E9EmgXV;E8E1gXM;IAOI;E9EsgXV;E8E7gXM;IAOI;E9EygXV;E8EhhXM;IAOI;E9E4gXV;E8EnhXM;IAOI;E9E+gXV;E8EthXM;IAOI;E9EkhXV;E8EzhXM;IAOI;E9EqhXV;E8E5hXM;IAOI;E9EwhXV;E8E/hXM;IAOI;E9E2hXV;E8EliXM;IAOI;E9E8hXV;E8EriXM;IAOI;E9EiiXV;E8ExiXM;IAOI;E9EoiXV;E8E3iXM;IAOI;E9EuiXV;E8E9iXM;IAOI;E9E0iXV;E8EjjXM;IAOI;E9E6iXV;E8EpjXM;IAOI;E9EgjXV;E8EvjXM;IAOI;E9EmjXV;E8E1jXM;IAOI;E9EsjXV;E8E7jXM;IAOI;E9EyjXV;E8EhkXM;IAOI;E9E4jXV;E8EnkXM;IAOI;E9E+jXV;E8EtkXM;IAOI;E9EkkXV;E8EzkXM;IAOI;E9EqkXV;E8E5kXM;IAOI;E9EwkXV;E8E/kXM;IAOI;E9E2kXV;E8EllXM;IAOI;E9E8kXV;E8ErlXM;IAOI;E9EilXV;E8ExlXM;IAOI;E9EolXV;E8E3lXM;IAOI;E9EulXV;E8E9lXM;IAOI;E9E0lXV;E8EjmXM;IAOI;E9E6lXV;E8EpmXM;IAOI;E9EgmXV;E8EvmXM;IAOI;E9EmmXV;E8E1mXM;IAOI;E9EsmXV;E8E7mXM;IAOI;E9EymXV;E8EhnXM;IAOI;E9E4mXV;E8EnnXM;IAOI;E9E+mXV;E8EtnXM;IAOI;E9EknXV;E8EznXM;IAOI;E9EqnXV;E8E5nXM;IAOI;E9EwnXV;E8E/nXM;IAOI;E9E2nXV;E8EloXM;IAOI;E9E8nXV;E8EroXM;IAOI;E9EioXV;E8ExoXM;IAOI;E9EooXV;E8E3oXM;IAOI;E9EuoXV;E8E9oXM;IAOI;E9E0oXV;E8EjpXM;IAOI;E9E6oXV;E8EppXM;IAOI;E9EgpXV;E8EvpXM;IAOI;E9EmpXV;E8E1pXM;IAOI;E9EspXV;E8E7pXM;IAOI;E9EypXV;E8EhqXM;IAOI;E9E4pXV;E8EnqXM;IAOI;E9E+pXV;E8EtqXM;IAOI;E9EkqXV;E8EzqXM;IAOI;E9EqqXV;E8E5qXM;IAOI;E9EwqXV;E8E/qXM;IAOI;E9E2qXV;E8ElrXM;IAOI;E9E8qXV;E8ErrXM;IAOI;E9EirXV;E8ExrXM;IAOI;E9EorXV;E8E3rXM;IAOI;E9EurXV;E8E9rXM;IAOI;E9E0rXV;E8EjsXM;IAOI;E9E6rXV;E8EpsXM;IAOI;E9EgsXV;E8EvsXM;IAOI;E9EmsXV;E8E1sXM;IAOI;E9EssXV;E8E7sXM;IAOI;E9EysXV;E8EhtXM;IAOI;E9E4sXV;E8EntXM;IAOI;E9E+sXV;E8EttXM;IAOI;IAAA;E9EmtXV;E8E1tXM;IAOI;IAAA;E9EutXV;E8E9tXM;IAOI;IAAA;E9E2tXV;E8EluXM;IAOI;IAAA;E9E+tXV;E8EtuXM;IAOI;IAAA;E9EmuXV;E8E1uXM;IAOI;IAAA;E9EuuXV;E8E9uXM;IAOI;IAAA;E9E2uXV;E8ElvXM;IAOI;IAAA;E9E+uXV;E8EtvXM;IAOI;IAAA;E9EmvXV;E8E1vXM;IAOI;IAAA;E9EuvXV;E8E9vXM;IAOI;IAAA;E9E2vXV;E8ElwXM;IAOI;IAAA;E9E+vXV;E8EtwXM;IAOI;IAAA;E9EmwXV;E8E1wXM;IAOI;IAAA;E9EuwXV;E8E9wXM;IAOI;IAAA;E9E2wXV;E8ElxXM;IAOI;IAAA;E9E+wXV;E8EtxXM;IAOI;IAAA;E9EmxXV;E8E1xXM;IAOI;IAAA;E9EuxXV;E8E9xXM;IAOI;IAAA;E9E2xXV;E8ElyXM;IAOI;IAAA;E9E+xXV;E8EtyXM;IAOI;IAAA;E9EmyXV;E8E1yXM;IAOI;IAAA;E9EuyXV;E8E9yXM;IAOI;IAAA;E9E2yXV;E8ElzXM;IAOI;IAAA;E9E+yXV;E8EtzXM;IAOI;E9EkzXV;E8EzzXM;IAOI;E9EqzXV;E8E5zXM;IAOI;E9EwzXV;E8E/zXM;IAOI;E9E2zXV;E8El0XM;IAOI;E9E8zXV;E8Er0XM;IAOI;E9Ei0XV;E8Ex0XM;IAOI;E9Eo0XV;E8E30XM;IAOI;E9Eu0XV;E8E90XM;IAOI;E9E00XV;E8Ej1XM;IAOI;E9E60XV;E8Ep1XM;IAOI;E9Eg1XV;E8Ev1XM;IAOI;E9Em1XV;E8E11XM;IAOI;E9Es1XV;E8E71XM;IAOI;E9Ey1XV;E8Eh2XM;IAOI;E9E41XV;E8En2XM;IAOI;E9E+1XV;E8Et2XM;IAOI;E9Ek2XV;E8Ez2XM;IAOI;E9Eq2XV;E8E52XM;IAOI;E9Ew2XV;E8E/2XM;IAOI;E9E22XV;E8El3XM;IAOI;E9E82XV;E8Er3XM;IAOI;E9Ei3XV;E8Ex3XM;IAOI;E9Eo3XV;E8E33XM;IAOI;E9Eu3XV;E8E93XM;IAOI;E9E03XV;E8Ej4XM;IAOI;E9E63XV;E8Ep4XM;IAOI;E9Eg4XV;E8Ev4XM;IAOI;E9Em4XV;E8E14XM;IAOI;E9Es4XV;E8E74XM;IAOI;E9Ey4XV;E8Eh5XM;IAOI;E9E44XV;E8En5XM;IAOI;E9E+4XV;E8Et5XM;IAOI;E9Ek5XV;E8Ez5XM;IAOI;E9Eq5XV;E8E55XM;IAOI;E9Ew5XV;E8E/5XM;IAOI;E9E25XV;E8El6XM;IAOI;E9E85XV;E8Er6XM;IAOI;E9Ei6XV;E8Ex6XM;IAOI;E9Eo6XV;E8E36XM;IAOI;E9Eu6XV;E8E96XM;IAOI;E9E06XV;E8Ej7XM;IAOI;E9E66XV;E8Ep7XM;IAOI;E9Eg7XV;E8Ev7XM;IAOI;E9Em7XV;E8E17XM;IAOI;E9Es7XV;E8E77XM;IAOI;E9Ey7XV;E8Eh8XM;IAOI;E9E47XV;E8En8XM;IAOI;E9E+7XV;E8Et8XM;IAOI;E9Ek8XV;E8Ez8XM;IAOI;E9Eq8XV;E8E58XM;IAOI;E9Ew8XV;E8E/8XM;IAOI;E9E28XV;E8El9XM;IAOI;E9E88XV;E8Er9XM;IAOI;E9Ei9XV;E8Ex9XM;IAOI;E9Eo9XV;E8E39XM;IAOI;E9Eu9XV;E8E99XM;IAOI;E9E09XV;E8Ej+XM;IAOI;E9E69XV;E8Ep+XM;IAOI;E9Eg+XV;E8Ev+XM;IAOI;E9Em+XV;E8E1+XM;IAOI;E9Es+XV;E8E7+XM;IAOI;IAAA;E9E0+XV;E8Ej/XM;IAOI;IAAA;E9E8+XV;E8Er/XM;IAOI;IAAA;E9Ek/XV;E8Ez/XM;IAOI;IAAA;E9Es/XV;E8E7/XM;IAOI;IAAA;E9E0/XV;E8EjgYM;IAOI;IAAA;E9E8/XV;E8ErgYM;IAOI;IAAA;E9EkgYV;E8EzgYM;IAOI;IAAA;E9EsgYV;E8E7gYM;IAOI;IAAA;E9E0gYV;E8EjhYM;IAOI;IAAA;E9E8gYV;E8ErhYM;IAOI;IAAA;E9EkhYV;E8EzhYM;IAOI;IAAA;E9EshYV;E8E7hYM;IAOI;IAAA;E9E0hYV;E8EjiYM;IAOI;IAAA;E9E8hYV;E8EriYM;IAOI;IAAA;E9EkiYV;E8EziYM;IAOI;IAAA;E9EsiYV;E8E7iYM;IAOI;IAAA;E9E0iYV;E8EjjYM;IAOI;IAAA;E9E8iYV;E8ErjYM;IAOI;IAAA;E9EkjYV;E8EzjYM;IAOI;IAAA;E9EsjYV;E8E7jYM;IAOI;IAAA;E9E0jYV;E8EjkYM;IAOI;IAAA;E9E8jYV;E8ErkYM;IAOI;IAAA;E9EkkYV;E8EzkYM;IAOI;IAAA;E9EskYV;E8E7kYM;IAOI;IAAA;E9E0kYV;E8EjlYM;IAOI;IAAA;E9E8kYV;E8ErlYM;IAOI;E9EilYV;E8ExlYM;IAOI;E9EolYV;E8E3lYM;IAOI;E9EulYV;E8E9lYM;IAOI;E9E0lYV;E8EjmYM;IAOI;E9E6lYV;E8EpmYM;IAOI;E9EgmYV;E8EvmYM;IAOI;E9EmmYV;E8E1mYM;IAOI;E9EsmYV;E8E7mYM;IAOI;E9EymYV;E8EhnYM;IAOI;E9E4mYV;E8EnnYM;IAOI;E9E+mYV;E8EtnYM;IAOI;E9EknYV;E8EznYM;IAOI;E9EqnYV;E8E5nYM;IAOI;E9EwnYV;E8E/nYM;IAOI;E9E2nYV;E8EloYM;IAOI;E9E8nYV;E8EroYM;IAOI;E9EioYV;E8ExoYM;IAOI;E9EooYV;E8E3oYM;IAOI;E9EuoYV;E8E9oYM;IAOI;E9E0oYV;E8EjpYM;IAOI;E9E6oYV;E8EppYM;IAOI;E9EgpYV;E8EvpYM;IAOI;E9EmpYV;E8E1pYM;IAOI;E9EspYV;E8E7pYM;IAOI;E9EypYV;E8EhqYM;IAOI;E9E4pYV;E8EnqYM;IAOI;E9E+pYV;E8EtqYM;IAOI;E9EkqYV;E8EzqYM;IAOI;E9EqqYV;E8E5qYM;IAOI;E9EwqYV;E8E/qYM;IAOI;E9E2qYV;E8ElrYM;IAOI;E9E8qYV;E8ErrYM;IAOI;E9EirYV;E8ExrYM;IAOI;E9EorYV;E8E3rYM;IAOI;E9EurYV;E8E9rYM;IAOI;E9E0rYV;E8EjsYM;IAOI;E9E6rYV;E8EpsYM;IAOI;E9EgsYV;E8EvsYM;IAOI;E9EmsYV;E8E1sYM;IAOI;E9EssYV;E8E7sYM;IAOI;E9EysYV;E8EhtYM;IAOI;E9E4sYV;E8EntYM;IAOI;E9E+sYV;E8EttYM;IAOI;E9EktYV;E8EztYM;IAOI;E9EqtYV;E8E5tYM;IAOI;E9EwtYV;E8E/tYM;IAOI;E9E2tYV;E8EluYM;IAOI;E9E8tYV;E8EruYM;IAOI;E9EiuYV;E8ExuYM;IAOI;E9EouYV;E8E3uYM;IAOI;E9EuuYV;E8E9uYM;IAOI;E9E0uYV;E8EjvYM;IAOI;E9E6uYV;E8EpvYM;IAOI;E9EgvYV;E8EvvYM;IAOI;E9EmvYV;E8E1vYM;IAOI;E9EsvYV;E8E7vYM;IAOI;E9EyvYV;E8EhwYM;IAOI;E9E4vYV;E8EnwYM;IAOI;E9E+vYV;E8EtwYM;IAOI;E9EkwYV;E8EzwYM;IAOI;E9EqwYV;E8E5wYM;IAOI;E9EwwYV;E8E/wYM;IAOI;E9E2wYV;E8ElxYM;IAOI;E9E8wYV;E8ErxYM;IAOI;E9EixYV;E8ExxYM;IAOI;E9EoxYV;E8E3xYM;IAOI;E9EuxYV;E8E9xYM;IAOI;E9E0xYV;E8EjyYM;IAOI;E9E6xYV;E8EpyYM;IAOI;E9EgyYV;E8EvyYM;IAOI;E9EmyYV;E8E1yYM;IAOI;E9EsyYV;E8E7yYM;IAOI;E9EyyYV;E8EhzYM;IAOI;E9E4yYV;E8EnzYM;IAOI;E9E+yYV;E8EtzYM;IAOI;E9EkzYV;E8EzzYM;IAOI;E9EqzYV;E8E5zYM;IAOI;E9EwzYV;E8E/zYM;IAOI;E9E2zYV;E8El0YM;IAOI;E9E8zYV;E8Er0YM;IAOI;E9Ei0YV;E8Ex0YM;IAOI;E9Eo0YV;E8E30YM;IAOI;E9Eu0YV;E8E90YM;IAOI;E9E00YV;E8Ej1YM;IAOI;E9E60YV;E8Ep1YM;IAOI;E9Eg1YV;E8Ev1YM;IAOI;E9Em1YV;E8E11YM;IAOI;E9Es1YV;E8E71YM;IAOI;E9Ey1YV;E8Eh2YM;IAOI;E9E41YV;E8En2YM;IAOI;E9E+1YV;E8Et2YM;IAOI;E9Ek2YV;E8Ez2YM;IAOI;E9Eq2YV;E8E52YM;IAOI;E9Ew2YV;E8E/2YM;IAOI;E9E22YV;E8El3YM;IAOI;E9E82YV;E8Er3YM;IAOI;E9Ei3YV;E8Ex3YM;IAOI;E9Eo3YV;E8E33YM;IAOI;E9Eu3YV;E8E93YM;IAOI;E9E03YV;E8Ej4YM;IAOI;E9E63YV;E8Ep4YM;IAOI;E9Eg4YV;E8Ev4YM;IAOI;E9Em4YV;E8E14YM;IAOI;E9Es4YV;E8E74YM;IAOI;E9Ey4YV;E8Eh5YM;IAOI;IAAA;E9E64YV;E8Ep5YM;IAOI;IAAA;E9Ei5YV;E8Ex5YM;IAOI;IAAA;E9Eq5YV;E8E55YM;IAOI;IAAA;E9Ey5YV;E8Eh6YM;IAOI;IAAA;E9E65YV;E8Ep6YM;IAOI;IAAA;E9Ei6YV;E8Ex6YM;IAOI;IAAA;E9Eq6YV;E8E56YM;IAOI;IAAA;E9Ey6YV;E8Eh7YM;IAOI;IAAA;E9E66YV;E8Ep7YM;IAOI;IAAA;E9Ei7YV;E8Ex7YM;IAOI;IAAA;E9Eq7YV;E8E57YM;IAOI;IAAA;E9Ey7YV;E8Eh8YM;IAOI;E9E47YV;E8En8YM;IAOI;E9E+7YV;E8Et8YM;IAOI;E9Ek8YV;E8Ez8YM;IAOI;E9Eq8YV;E8E58YM;IAOI;IAAA;E9Ey8YV;E8Eh9YM;IAOI;IAAA;E9E68YV;E8Ep9YM;IAOI;IAAA;E9Ei9YV;E8Ex9YM;IAOI;IAAA;E9Eq9YV;E8E59YM;IAIQ;IAGJ;E9Ey9YV;E8Eh+YM;IAIQ;IAGJ;E9E69YV;E8Ep+YM;IAIQ;IAGJ;E9Ei+YV;E8Ex+YM;IAIQ;IAGJ;E9Eq+YV;E8E5+YM;IAIQ;IAGJ;E9Ey+YV;E8Eh/YM;IAIQ;IAGJ;E9E6+YV;E8Ep/YM;IAIQ;IAGJ;E9Ei/YV;E8Ex/YM;IAIQ;IAGJ;E9Eq/YV;E8E5/YM;IAIQ;IAGJ;E9Ey/YV;E8EhgZM;IAIQ;IAGJ;E9E6/YV;E8EpgZM;IAIQ;IAGJ;E9EigZV;E8ExgZM;IAIQ;IAGJ;E9EqgZV;E8E5gZM;IAIQ;IAGJ;E9EygZV;E8EhhZM;IAIQ;IAGJ;E9E6gZV;E8EphZM;IAIQ;IAGJ;E9EihZV;E8ExhZM;IAIQ;IAGJ;E9EqhZV;E8E5hZM;IAIQ;IAGJ;E9EyhZV;E8EhiZM;IAIQ;IAGJ;E9E6hZV;E8EpiZM;IAIQ;IAGJ;E9EiiZV;E8ExiZM;IAIQ;IAGJ;E9EqiZV;E8E5iZM;IAIQ;IAGJ;E9EyiZV;E8EhjZM;IAIQ;IAGJ;E9E6iZV;E8EpjZM;IAIQ;IAGJ;E9EijZV;E8ExjZM;IAIQ;IAGJ;E9EqjZV;E8E5jZM;IAIQ;IAGJ;E9EyjZV;E8EhkZM;IAIQ;IAGJ;E9E6jZV;E8EpkZM;IAOI;E9EgkZV;AACF;AoB3kZI;E0DGI;IAOI;E9EqkZV;E8E5kZM;IAOI;E9EwkZV;E8E/kZM;IAOI;E9E2kZV;E8EllZM;IAOI;E9E8kZV;E8ErlZM;IAOI;E9EilZV;E8ExlZM;IAOI;E9EolZV;E8E3lZM;IAOI;E9EulZV;E8E9lZM;IAOI;E9E0lZV;E8EjmZM;IAOI;E9E6lZV;E8EpmZM;IAOI;E9EgmZV;E8EvmZM;IAOI;E9EmmZV;E8E1mZM;IAOI;E9EsmZV;E8E7mZM;IAOI;E9EymZV;E8EhnZM;IAOI;E9E4mZV;E8EnnZM;IAOI;E9E+mZV;E8EtnZM;IAOI;E9EknZV;E8EznZM;IAOI;E9EqnZV;E8E5nZM;IAOI;E9EwnZV;E8E/nZM;IAOI;E9E2nZV;E8EloZM;IAOI;E9E8nZV;E8EroZM;IAOI;E9EioZV;E8ExoZM;IAOI;E9EooZV;E8E3oZM;IAOI;E9EuoZV;E8E9oZM;IAOI;E9E0oZV;E8EjpZM;IAOI;E9E6oZV;E8EppZM;IAOI;E9EgpZV;E8EvpZM;IAOI;E9EmpZV;E8E1pZM;IAOI;E9EspZV;E8E7pZM;IAOI;E9EypZV;E8EhqZM;IAOI;E9E4pZV;E8EnqZM;IAOI;E9E+pZV;E8EtqZM;IAOI;E9EkqZV;E8EzqZM;IAOI;E9EqqZV;E8E5qZM;IAOI;E9EwqZV;E8E/qZM;IAOI;E9E2qZV;E8ElrZM;IAOI;E9E8qZV;E8ErrZM;IAOI;E9EirZV;E8ExrZM;IAOI;E9EorZV;E8E3rZM;IAOI;E9EurZV;E8E9rZM;IAOI;E9E0rZV;E8EjsZM;IAOI;E9E6rZV;E8EpsZM;IAOI;E9EgsZV;E8EvsZM;IAOI;E9EmsZV;E8E1sZM;IAOI;E9EssZV;E8E7sZM;IAOI;E9EysZV;E8EhtZM;IAOI;E9E4sZV;E8EntZM;IAOI;E9E+sZV;E8EttZM;IAOI;E9EktZV;E8EztZM;IAOI;E9EqtZV;E8E5tZM;IAOI;E9EwtZV;E8E/tZM;IAOI;E9E2tZV;E8EluZM;IAOI;E9E8tZV;E8EruZM;IAOI;E9EiuZV;E8ExuZM;IAOI;E9EouZV;E8E3uZM;IAOI;E9EuuZV;E8E9uZM;IAOI;E9E0uZV;E8EjvZM;IAOI;E9E6uZV;E8EpvZM;IAOI;E9EgvZV;E8EvvZM;IAOI;E9EmvZV;E8E1vZM;IAOI;E9EsvZV;E8E7vZM;IAOI;E9EyvZV;E8EhwZM;IAOI;E9E4vZV;E8EnwZM;IAOI;E9E+vZV;E8EtwZM;IAOI;E9EkwZV;E8EzwZM;IAOI;E9EqwZV;E8E5wZM;IAOI;E9EwwZV;E8E/wZM;IAOI;E9E2wZV;E8ElxZM;IAOI;E9E8wZV;E8ErxZM;IAOI;E9EixZV;E8ExxZM;IAOI;E9EoxZV;E8E3xZM;IAOI;E9EuxZV;E8E9xZM;IAOI;E9E0xZV;E8EjyZM;IAOI;E9E6xZV;E8EpyZM;IAOI;E9EgyZV;E8EvyZM;IAOI;E9EmyZV;E8E1yZM;IAOI;E9EsyZV;E8E7yZM;IAOI;E9EyyZV;E8EhzZM;IAOI;E9E4yZV;E8EnzZM;IAOI;E9E+yZV;E8EtzZM;IAOI;E9EkzZV;E8EzzZM;IAOI;E9EqzZV;E8E5zZM;IAOI;E9EwzZV;E8E/zZM;IAOI;E9E2zZV;E8El0ZM;IAOI;E9E8zZV;E8Er0ZM;IAOI;E9Ei0ZV;E8Ex0ZM;IAOI;E9Eo0ZV;E8E30ZM;IAOI;E9Eu0ZV;E8E90ZM;IAOI;E9E00ZV;E8Ej1ZM;IAOI;E9E60ZV;E8Ep1ZM;IAOI;E9Eg1ZV;E8Ev1ZM;IAOI;E9Em1ZV;E8E11ZM;IAOI;E9Es1ZV;E8E71ZM;IAOI;E9Ey1ZV;E8Eh2ZM;IAOI;E9E41ZV;E8En2ZM;IAOI;E9E+1ZV;E8Et2ZM;IAOI;E9Ek2ZV;E8Ez2ZM;IAOI;E9Eq2ZV;E8E52ZM;IAOI;E9Ew2ZV;E8E/2ZM;IAOI;E9E22ZV;E8El3ZM;IAOI;E9E82ZV;E8Er3ZM;IAOI;E9Ei3ZV;E8Ex3ZM;IAOI;E9Eo3ZV;E8E33ZM;IAOI;E9Eu3ZV;E8E93ZM;IAOI;E9E03ZV;E8Ej4ZM;IAOI;E9E63ZV;E8Ep4ZM;IAOI;E9Eg4ZV;E8Ev4ZM;IAOI;E9Em4ZV;E8E14ZM;IAOI;E9Es4ZV;E8E74ZM;IAOI;E9Ey4ZV;E8Eh5ZM;IAOI;E9E44ZV;E8En5ZM;IAOI;E9E+4ZV;E8Et5ZM;IAOI;E9Ek5ZV;E8Ez5ZM;IAOI;E9Eq5ZV;E8E55ZM;IAOI;E9Ew5ZV;E8E/5ZM;IAOI;E9E25ZV;E8El6ZM;IAOI;E9E85ZV;E8Er6ZM;IAOI;E9Ei6ZV;E8Ex6ZM;IAOI;E9Eo6ZV;E8E36ZM;IAOI;E9Eu6ZV;E8E96ZM;IAOI;E9E06ZV;E8Ej7ZM;IAOI;E9E66ZV;E8Ep7ZM;IAOI;E9Eg7ZV;E8Ev7ZM;IAOI;IAAA;E9Eo7ZV;E8E37ZM;IAOI;IAAA;E9Ew7ZV;E8E/7ZM;IAOI;IAAA;E9E47ZV;E8En8ZM;IAOI;IAAA;E9Eg8ZV;E8Ev8ZM;IAOI;IAAA;E9Eo8ZV;E8E38ZM;IAOI;IAAA;E9Ew8ZV;E8E/8ZM;IAOI;IAAA;E9E48ZV;E8En9ZM;IAOI;IAAA;E9Eg9ZV;E8Ev9ZM;IAOI;IAAA;E9Eo9ZV;E8E39ZM;IAOI;IAAA;E9Ew9ZV;E8E/9ZM;IAOI;IAAA;E9E49ZV;E8En+ZM;IAOI;IAAA;E9Eg+ZV;E8Ev+ZM;IAOI;IAAA;E9Eo+ZV;E8E3+ZM;IAOI;IAAA;E9Ew+ZV;E8E/+ZM;IAOI;IAAA;E9E4+ZV;E8En/ZM;IAOI;IAAA;E9Eg/ZV;E8Ev/ZM;IAOI;IAAA;E9Eo/ZV;E8E3/ZM;IAOI;IAAA;E9Ew/ZV;E8E//ZM;IAOI;IAAA;E9E4/ZV;E8EngaM;IAOI;IAAA;E9EggaV;E8EvgaM;IAOI;IAAA;E9EogaV;E8E3gaM;IAOI;IAAA;E9EwgaV;E8E/gaM;IAOI;IAAA;E9E4gaV;E8EnhaM;IAOI;IAAA;E9EghaV;E8EvhaM;IAOI;IAAA;E9EohaV;E8E3haM;IAOI;IAAA;E9EwhaV;E8E/haM;IAOI;IAAA;E9E4haV;E8EniaM;IAOI;IAAA;E9EgiaV;E8EviaM;IAOI;E9EmiaV;E8E1iaM;IAOI;E9EsiaV;E8E7iaM;IAOI;E9EyiaV;E8EhjaM;IAOI;E9E4iaV;E8EnjaM;IAOI;E9E+iaV;E8EtjaM;IAOI;E9EkjaV;E8EzjaM;IAOI;E9EqjaV;E8E5jaM;IAOI;E9EwjaV;E8E/jaM;IAOI;E9E2jaV;E8ElkaM;IAOI;E9E8jaV;E8ErkaM;IAOI;E9EikaV;E8ExkaM;IAOI;E9EokaV;E8E3kaM;IAOI;E9EukaV;E8E9kaM;IAOI;E9E0kaV;E8EjlaM;IAOI;E9E6kaV;E8EplaM;IAOI;E9EglaV;E8EvlaM;IAOI;E9EmlaV;E8E1laM;IAOI;E9EslaV;E8E7laM;IAOI;E9EylaV;E8EhmaM;IAOI;E9E4laV;E8EnmaM;IAOI;E9E+laV;E8EtmaM;IAOI;E9EkmaV;E8EzmaM;IAOI;E9EqmaV;E8E5maM;IAOI;E9EwmaV;E8E/maM;IAOI;E9E2maV;E8ElnaM;IAOI;E9E8maV;E8ErnaM;IAOI;E9EinaV;E8ExnaM;IAOI;E9EonaV;E8E3naM;IAOI;E9EunaV;E8E9naM;IAOI;E9E0naV;E8EjoaM;IAOI;E9E6naV;E8EpoaM;IAOI;E9EgoaV;E8EvoaM;IAOI;E9EmoaV;E8E1oaM;IAOI;E9EsoaV;E8E7oaM;IAOI;E9EyoaV;E8EhpaM;IAOI;E9E4oaV;E8EnpaM;IAOI;E9E+oaV;E8EtpaM;IAOI;E9EkpaV;E8EzpaM;IAOI;E9EqpaV;E8E5paM;IAOI;E9EwpaV;E8E/paM;IAOI;E9E2paV;E8ElqaM;IAOI;E9E8paV;E8ErqaM;IAOI;E9EiqaV;E8ExqaM;IAOI;E9EoqaV;E8E3qaM;IAOI;E9EuqaV;E8E9qaM;IAOI;E9E0qaV;E8EjraM;IAOI;E9E6qaV;E8EpraM;IAOI;E9EgraV;E8EvraM;IAOI;E9EmraV;E8E1raM;IAOI;E9EsraV;E8E7raM;IAOI;E9EyraV;E8EhsaM;IAOI;E9E4raV;E8EnsaM;IAOI;E9E+raV;E8EtsaM;IAOI;E9EksaV;E8EzsaM;IAOI;E9EqsaV;E8E5saM;IAOI;E9EwsaV;E8E/saM;IAOI;E9E2saV;E8EltaM;IAOI;E9E8saV;E8ErtaM;IAOI;E9EitaV;E8ExtaM;IAOI;E9EotaV;E8E3taM;IAOI;E9EutaV;E8E9taM;IAOI;E9E0taV;E8EjuaM;IAOI;E9E6taV;E8EpuaM;IAOI;E9EguaV;E8EvuaM;IAOI;E9EmuaV;E8E1uaM;IAOI;E9EsuaV;E8E7uaM;IAOI;E9EyuaV;E8EhvaM;IAOI;E9E4uaV;E8EnvaM;IAOI;IAAA;E9EgvaV;E8EvvaM;IAOI;IAAA;E9EovaV;E8E3vaM;IAOI;IAAA;E9EwvaV;E8E/vaM;IAOI;IAAA;E9E4vaV;E8EnwaM;IAOI;IAAA;E9EgwaV;E8EvwaM;IAOI;IAAA;E9EowaV;E8E3waM;IAOI;IAAA;E9EwwaV;E8E/waM;IAOI;IAAA;E9E4waV;E8EnxaM;IAOI;IAAA;E9EgxaV;E8EvxaM;IAOI;IAAA;E9EoxaV;E8E3xaM;IAOI;IAAA;E9EwxaV;E8E/xaM;IAOI;IAAA;E9E4xaV;E8EnyaM;IAOI;IAAA;E9EgyaV;E8EvyaM;IAOI;IAAA;E9EoyaV;E8E3yaM;IAOI;IAAA;E9EwyaV;E8E/yaM;IAOI;IAAA;E9E4yaV;E8EnzaM;IAOI;IAAA;E9EgzaV;E8EvzaM;IAOI;IAAA;E9EozaV;E8E3zaM;IAOI;IAAA;E9EwzaV;E8E/zaM;IAOI;IAAA;E9E4zaV;E8En0aM;IAOI;IAAA;E9Eg0aV;E8Ev0aM;IAOI;IAAA;E9Eo0aV;E8E30aM;IAOI;IAAA;E9Ew0aV;E8E/0aM;IAOI;IAAA;E9E40aV;E8En1aM;IAOI;E9E+0aV;E8Et1aM;IAOI;E9Ek1aV;E8Ez1aM;IAOI;E9Eq1aV;E8E51aM;IAOI;E9Ew1aV;E8E/1aM;IAOI;E9E21aV;E8El2aM;IAOI;E9E81aV;E8Er2aM;IAOI;E9Ei2aV;E8Ex2aM;IAOI;E9Eo2aV;E8E32aM;IAOI;E9Eu2aV;E8E92aM;IAOI;E9E02aV;E8Ej3aM;IAOI;E9E62aV;E8Ep3aM;IAOI;E9Eg3aV;E8Ev3aM;IAOI;E9Em3aV;E8E13aM;IAOI;E9Es3aV;E8E73aM;IAOI;E9Ey3aV;E8Eh4aM;IAOI;E9E43aV;E8En4aM;IAOI;E9E+3aV;E8Et4aM;IAOI;E9Ek4aV;E8Ez4aM;IAOI;E9Eq4aV;E8E54aM;IAOI;E9Ew4aV;E8E/4aM;IAOI;E9E24aV;E8El5aM;IAOI;E9E84aV;E8Er5aM;IAOI;E9Ei5aV;E8Ex5aM;IAOI;E9Eo5aV;E8E35aM;IAOI;E9Eu5aV;E8E95aM;IAOI;E9E05aV;E8Ej6aM;IAOI;E9E65aV;E8Ep6aM;IAOI;E9Eg6aV;E8Ev6aM;IAOI;E9Em6aV;E8E16aM;IAOI;E9Es6aV;E8E76aM;IAOI;E9Ey6aV;E8Eh7aM;IAOI;E9E46aV;E8En7aM;IAOI;E9E+6aV;E8Et7aM;IAOI;E9Ek7aV;E8Ez7aM;IAOI;E9Eq7aV;E8E57aM;IAOI;E9Ew7aV;E8E/7aM;IAOI;E9E27aV;E8El8aM;IAOI;E9E87aV;E8Er8aM;IAOI;E9Ei8aV;E8Ex8aM;IAOI;E9Eo8aV;E8E38aM;IAOI;E9Eu8aV;E8E98aM;IAOI;E9E08aV;E8Ej9aM;IAOI;E9E68aV;E8Ep9aM;IAOI;E9Eg9aV;E8Ev9aM;IAOI;E9Em9aV;E8E19aM;IAOI;E9Es9aV;E8E79aM;IAOI;E9Ey9aV;E8Eh+aM;IAOI;E9E49aV;E8En+aM;IAOI;E9E+9aV;E8Et+aM;IAOI;E9Ek+aV;E8Ez+aM;IAOI;E9Eq+aV;E8E5+aM;IAOI;E9Ew+aV;E8E/+aM;IAOI;E9E2+aV;E8El/aM;IAOI;E9E8+aV;E8Er/aM;IAOI;E9Ei/aV;E8Ex/aM;IAOI;E9Eo/aV;E8E3/aM;IAOI;E9Eu/aV;E8E9/aM;IAOI;E9E0/aV;E8EjgbM;IAOI;E9E6/aV;E8EpgbM;IAOI;E9EggbV;E8EvgbM;IAOI;E9EmgbV;E8E1gbM;IAOI;IAAA;E9EugbV;E8E9gbM;IAOI;IAAA;E9E2gbV;E8ElhbM;IAOI;IAAA;E9E+gbV;E8EthbM;IAOI;IAAA;E9EmhbV;E8E1hbM;IAOI;IAAA;E9EuhbV;E8E9hbM;IAOI;IAAA;E9E2hbV;E8ElibM;IAOI;IAAA;E9E+hbV;E8EtibM;IAOI;IAAA;E9EmibV;E8E1ibM;IAOI;IAAA;E9EuibV;E8E9ibM;IAOI;IAAA;E9E2ibV;E8EljbM;IAOI;IAAA;E9E+ibV;E8EtjbM;IAOI;IAAA;E9EmjbV;E8E1jbM;IAOI;IAAA;E9EujbV;E8E9jbM;IAOI;IAAA;E9E2jbV;E8ElkbM;IAOI;IAAA;E9E+jbV;E8EtkbM;IAOI;IAAA;E9EmkbV;E8E1kbM;IAOI;IAAA;E9EukbV;E8E9kbM;IAOI;IAAA;E9E2kbV;E8EllbM;IAOI;IAAA;E9E+kbV;E8EtlbM;IAOI;IAAA;E9EmlbV;E8E1lbM;IAOI;IAAA;E9EulbV;E8E9lbM;IAOI;IAAA;E9E2lbV;E8ElmbM;IAOI;IAAA;E9E+lbV;E8EtmbM;IAOI;IAAA;E9EmmbV;E8E1mbM;IAOI;IAAA;E9EumbV;E8E9mbM;IAOI;IAAA;E9E2mbV;E8ElnbM;IAOI;E9E8mbV;E8ErnbM;IAOI;E9EinbV;E8ExnbM;IAOI;E9EonbV;E8E3nbM;IAOI;E9EunbV;E8E9nbM;IAOI;E9E0nbV;E8EjobM;IAOI;E9E6nbV;E8EpobM;IAOI;E9EgobV;E8EvobM;IAOI;E9EmobV;E8E1obM;IAOI;E9EsobV;E8E7obM;IAOI;E9EyobV;E8EhpbM;IAOI;E9E4obV;E8EnpbM;IAOI;E9E+obV;E8EtpbM;IAOI;E9EkpbV;E8EzpbM;IAOI;E9EqpbV;E8E5pbM;IAOI;E9EwpbV;E8E/pbM;IAOI;E9E2pbV;E8ElqbM;IAOI;E9E8pbV;E8ErqbM;IAOI;E9EiqbV;E8ExqbM;IAOI;E9EoqbV;E8E3qbM;IAOI;E9EuqbV;E8E9qbM;IAOI;E9E0qbV;E8EjrbM;IAOI;E9E6qbV;E8EprbM;IAOI;E9EgrbV;E8EvrbM;IAOI;E9EmrbV;E8E1rbM;IAOI;E9EsrbV;E8E7rbM;IAOI;E9EyrbV;E8EhsbM;IAOI;E9E4rbV;E8EnsbM;IAOI;E9E+rbV;E8EtsbM;IAOI;E9EksbV;E8EzsbM;IAOI;E9EqsbV;E8E5sbM;IAOI;E9EwsbV;E8E/sbM;IAOI;E9E2sbV;E8EltbM;IAOI;E9E8sbV;E8ErtbM;IAOI;E9EitbV;E8ExtbM;IAOI;E9EotbV;E8E3tbM;IAOI;E9EutbV;E8E9tbM;IAOI;E9E0tbV;E8EjubM;IAOI;E9E6tbV;E8EpubM;IAOI;E9EgubV;E8EvubM;IAOI;E9EmubV;E8E1ubM;IAOI;E9EsubV;E8E7ubM;IAOI;E9EyubV;E8EhvbM;IAOI;E9E4ubV;E8EnvbM;IAOI;E9E+ubV;E8EtvbM;IAOI;E9EkvbV;E8EzvbM;IAOI;E9EqvbV;E8E5vbM;IAOI;E9EwvbV;E8E/vbM;IAOI;E9E2vbV;E8ElwbM;IAOI;E9E8vbV;E8ErwbM;IAOI;E9EiwbV;E8ExwbM;IAOI;E9EowbV;E8E3wbM;IAOI;E9EuwbV;E8E9wbM;IAOI;E9E0wbV;E8EjxbM;IAOI;E9E6wbV;E8EpxbM;IAOI;E9EgxbV;E8EvxbM;IAOI;E9EmxbV;E8E1xbM;IAOI;E9EsxbV;E8E7xbM;IAOI;E9EyxbV;E8EhybM;IAOI;E9E4xbV;E8EnybM;IAOI;E9E+xbV;E8EtybM;IAOI;E9EkybV;E8EzybM;IAOI;E9EqybV;E8E5ybM;IAOI;E9EwybV;E8E/ybM;IAOI;E9E2ybV;E8ElzbM;IAOI;E9E8ybV;E8ErzbM;IAOI;E9EizbV;E8ExzbM;IAOI;E9EozbV;E8E3zbM;IAOI;E9EuzbV;E8E9zbM;IAOI;E9E0zbV;E8Ej0bM;IAOI;E9E6zbV;E8Ep0bM;IAOI;E9Eg0bV;E8Ev0bM;IAOI;E9Em0bV;E8E10bM;IAOI;E9Es0bV;E8E70bM;IAOI;E9Ey0bV;E8Eh1bM;IAOI;E9E40bV;E8En1bM;IAOI;E9E+0bV;E8Et1bM;IAOI;E9Ek1bV;E8Ez1bM;IAOI;E9Eq1bV;E8E51bM;IAOI;E9Ew1bV;E8E/1bM;IAOI;E9E21bV;E8El2bM;IAOI;E9E81bV;E8Er2bM;IAOI;E9Ei2bV;E8Ex2bM;IAOI;E9Eo2bV;E8E32bM;IAOI;E9Eu2bV;E8E92bM;IAOI;E9E02bV;E8Ej3bM;IAOI;E9E62bV;E8Ep3bM;IAOI;E9Eg3bV;E8Ev3bM;IAOI;E9Em3bV;E8E13bM;IAOI;E9Es3bV;E8E73bM;IAOI;E9Ey3bV;E8Eh4bM;IAOI;E9E43bV;E8En4bM;IAOI;E9E+3bV;E8Et4bM;IAOI;E9Ek4bV;E8Ez4bM;IAOI;E9Eq4bV;E8E54bM;IAOI;E9Ew4bV;E8E/4bM;IAOI;E9E24bV;E8El5bM;IAOI;E9E84bV;E8Er5bM;IAOI;E9Ei5bV;E8Ex5bM;IAOI;E9Eo5bV;E8E35bM;IAOI;E9Eu5bV;E8E95bM;IAOI;E9E05bV;E8Ej6bM;IAOI;E9E65bV;E8Ep6bM;IAOI;E9Eg6bV;E8Ev6bM;IAOI;E9Em6bV;E8E16bM;IAOI;E9Es6bV;E8E76bM;IAOI;IAAA;E9E06bV;E8Ej7bM;IAOI;IAAA;E9E86bV;E8Er7bM;IAOI;IAAA;E9Ek7bV;E8Ez7bM;IAOI;IAAA;E9Es7bV;E8E77bM;IAOI;IAAA;E9E07bV;E8Ej8bM;IAOI;IAAA;E9E87bV;E8Er8bM;IAOI;IAAA;E9Ek8bV;E8Ez8bM;IAOI;IAAA;E9Es8bV;E8E78bM;IAOI;IAAA;E9E08bV;E8Ej9bM;IAOI;IAAA;E9E88bV;E8Er9bM;IAOI;IAAA;E9Ek9bV;E8Ez9bM;IAOI;IAAA;E9Es9bV;E8E79bM;IAOI;E9Ey9bV;E8Eh+bM;IAOI;E9E49bV;E8En+bM;IAOI;E9E+9bV;E8Et+bM;IAOI;E9Ek+bV;E8Ez+bM;IAOI;IAAA;E9Es+bV;E8E7+bM;IAOI;IAAA;E9E0+bV;E8Ej/bM;IAOI;IAAA;E9E8+bV;E8Er/bM;IAOI;IAAA;E9Ek/bV;E8Ez/bM;IAIQ;IAGJ;E9Es/bV;E8E7/bM;IAIQ;IAGJ;E9E0/bV;E8EjgcM;IAIQ;IAGJ;E9E8/bV;E8ErgcM;IAIQ;IAGJ;E9EkgcV;E8EzgcM;IAIQ;IAGJ;E9EsgcV;E8E7gcM;IAIQ;IAGJ;E9E0gcV;E8EjhcM;IAIQ;IAGJ;E9E8gcV;E8ErhcM;IAIQ;IAGJ;E9EkhcV;E8EzhcM;IAIQ;IAGJ;E9EshcV;E8E7hcM;IAIQ;IAGJ;E9E0hcV;E8EjicM;IAIQ;IAGJ;E9E8hcV;E8EricM;IAIQ;IAGJ;E9EkicV;E8EzicM;IAIQ;IAGJ;E9EsicV;E8E7icM;IAIQ;IAGJ;E9E0icV;E8EjjcM;IAIQ;IAGJ;E9E8icV;E8ErjcM;IAIQ;IAGJ;E9EkjcV;E8EzjcM;IAIQ;IAGJ;E9EsjcV;E8E7jcM;IAIQ;IAGJ;E9E0jcV;E8EjkcM;IAIQ;IAGJ;E9E8jcV;E8ErkcM;IAIQ;IAGJ;E9EkkcV;E8EzkcM;IAIQ;IAGJ;E9EskcV;E8E7kcM;IAIQ;IAGJ;E9E0kcV;E8EjlcM;IAIQ;IAGJ;E9E8kcV;E8ErlcM;IAIQ;IAGJ;E9EklcV;E8EzlcM;IAIQ;IAGJ;E9EslcV;E8E7lcM;IAIQ;IAGJ;E9E0lcV;E8EjmcM;IAOI;E9E6lcV;AACF;AoBxmcI;E0DGI;IAOI;E9EkmcV;E8EzmcM;IAOI;E9EqmcV;E8E5mcM;IAOI;E9EwmcV;E8E/mcM;IAOI;E9E2mcV;E8ElncM;IAOI;E9E8mcV;E8ErncM;IAOI;E9EincV;E8ExncM;IAOI;E9EoncV;E8E3ncM;IAOI;E9EuncV;E8E9ncM;IAOI;E9E0ncV;E8EjocM;IAOI;E9E6ncV;E8EpocM;IAOI;E9EgocV;E8EvocM;IAOI;E9EmocV;E8E1ocM;IAOI;E9EsocV;E8E7ocM;IAOI;E9EyocV;E8EhpcM;IAOI;E9E4ocV;E8EnpcM;IAOI;E9E+ocV;E8EtpcM;IAOI;E9EkpcV;E8EzpcM;IAOI;E9EqpcV;E8E5pcM;IAOI;E9EwpcV;E8E/pcM;IAOI;E9E2pcV;E8ElqcM;IAOI;E9E8pcV;E8ErqcM;IAOI;E9EiqcV;E8ExqcM;IAOI;E9EoqcV;E8E3qcM;IAOI;E9EuqcV;E8E9qcM;IAOI;E9E0qcV;E8EjrcM;IAOI;E9E6qcV;E8EprcM;IAOI;E9EgrcV;E8EvrcM;IAOI;E9EmrcV;E8E1rcM;IAOI;E9EsrcV;E8E7rcM;IAOI;E9EyrcV;E8EhscM;IAOI;E9E4rcV;E8EnscM;IAOI;E9E+rcV;E8EtscM;IAOI;E9EkscV;E8EzscM;IAOI;E9EqscV;E8E5scM;IAOI;E9EwscV;E8E/scM;IAOI;E9E2scV;E8EltcM;IAOI;E9E8scV;E8ErtcM;IAOI;E9EitcV;E8ExtcM;IAOI;E9EotcV;E8E3tcM;IAOI;E9EutcV;E8E9tcM;IAOI;E9E0tcV;E8EjucM;IAOI;E9E6tcV;E8EpucM;IAOI;E9EgucV;E8EvucM;IAOI;E9EmucV;E8E1ucM;IAOI;E9EsucV;E8E7ucM;IAOI;E9EyucV;E8EhvcM;IAOI;E9E4ucV;E8EnvcM;IAOI;E9E+ucV;E8EtvcM;IAOI;E9EkvcV;E8EzvcM;IAOI;E9EqvcV;E8E5vcM;IAOI;E9EwvcV;E8E/vcM;IAOI;E9E2vcV;E8ElwcM;IAOI;E9E8vcV;E8ErwcM;IAOI;E9EiwcV;E8ExwcM;IAOI;E9EowcV;E8E3wcM;IAOI;E9EuwcV;E8E9wcM;IAOI;E9E0wcV;E8EjxcM;IAOI;E9E6wcV;E8EpxcM;IAOI;E9EgxcV;E8EvxcM;IAOI;E9EmxcV;E8E1xcM;IAOI;E9EsxcV;E8E7xcM;IAOI;E9EyxcV;E8EhycM;IAOI;E9E4xcV;E8EnycM;IAOI;E9E+xcV;E8EtycM;IAOI;E9EkycV;E8EzycM;IAOI;E9EqycV;E8E5ycM;IAOI;E9EwycV;E8E/ycM;IAOI;E9E2ycV;E8ElzcM;IAOI;E9E8ycV;E8ErzcM;IAOI;E9EizcV;E8ExzcM;IAOI;E9EozcV;E8E3zcM;IAOI;E9EuzcV;E8E9zcM;IAOI;E9E0zcV;E8Ej0cM;IAOI;E9E6zcV;E8Ep0cM;IAOI;E9Eg0cV;E8Ev0cM;IAOI;E9Em0cV;E8E10cM;IAOI;E9Es0cV;E8E70cM;IAOI;E9Ey0cV;E8Eh1cM;IAOI;E9E40cV;E8En1cM;IAOI;E9E+0cV;E8Et1cM;IAOI;E9Ek1cV;E8Ez1cM;IAOI;E9Eq1cV;E8E51cM;IAOI;E9Ew1cV;E8E/1cM;IAOI;E9E21cV;E8El2cM;IAOI;E9E81cV;E8Er2cM;IAOI;E9Ei2cV;E8Ex2cM;IAOI;E9Eo2cV;E8E32cM;IAOI;E9Eu2cV;E8E92cM;IAOI;E9E02cV;E8Ej3cM;IAOI;E9E62cV;E8Ep3cM;IAOI;E9Eg3cV;E8Ev3cM;IAOI;E9Em3cV;E8E13cM;IAOI;E9Es3cV;E8E73cM;IAOI;E9Ey3cV;E8Eh4cM;IAOI;E9E43cV;E8En4cM;IAOI;E9E+3cV;E8Et4cM;IAOI;E9Ek4cV;E8Ez4cM;IAOI;E9Eq4cV;E8E54cM;IAOI;E9Ew4cV;E8E/4cM;IAOI;E9E24cV;E8El5cM;IAOI;E9E84cV;E8Er5cM;IAOI;E9Ei5cV;E8Ex5cM;IAOI;E9Eo5cV;E8E35cM;IAOI;E9Eu5cV;E8E95cM;IAOI;E9E05cV;E8Ej6cM;IAOI;E9E65cV;E8Ep6cM;IAOI;E9Eg6cV;E8Ev6cM;IAOI;E9Em6cV;E8E16cM;IAOI;E9Es6cV;E8E76cM;IAOI;E9Ey6cV;E8Eh7cM;IAOI;E9E46cV;E8En7cM;IAOI;E9E+6cV;E8Et7cM;IAOI;E9Ek7cV;E8Ez7cM;IAOI;E9Eq7cV;E8E57cM;IAOI;E9Ew7cV;E8E/7cM;IAOI;E9E27cV;E8El8cM;IAOI;E9E87cV;E8Er8cM;IAOI;E9Ei8cV;E8Ex8cM;IAOI;E9Eo8cV;E8E38cM;IAOI;E9Eu8cV;E8E98cM;IAOI;E9E08cV;E8Ej9cM;IAOI;E9E68cV;E8Ep9cM;IAOI;IAAA;E9Ei9cV;E8Ex9cM;IAOI;IAAA;E9Eq9cV;E8E59cM;IAOI;IAAA;E9Ey9cV;E8Eh+cM;IAOI;IAAA;E9E69cV;E8Ep+cM;IAOI;IAAA;E9Ei+cV;E8Ex+cM;IAOI;IAAA;E9Eq+cV;E8E5+cM;IAOI;IAAA;E9Ey+cV;E8Eh/cM;IAOI;IAAA;E9E6+cV;E8Ep/cM;IAOI;IAAA;E9Ei/cV;E8Ex/cM;IAOI;IAAA;E9Eq/cV;E8E5/cM;IAOI;IAAA;E9Ey/cV;E8EhgdM;IAOI;IAAA;E9E6/cV;E8EpgdM;IAOI;IAAA;E9EigdV;E8ExgdM;IAOI;IAAA;E9EqgdV;E8E5gdM;IAOI;IAAA;E9EygdV;E8EhhdM;IAOI;IAAA;E9E6gdV;E8EphdM;IAOI;IAAA;E9EihdV;E8ExhdM;IAOI;IAAA;E9EqhdV;E8E5hdM;IAOI;IAAA;E9EyhdV;E8EhidM;IAOI;IAAA;E9E6hdV;E8EpidM;IAOI;IAAA;E9EiidV;E8ExidM;IAOI;IAAA;E9EqidV;E8E5idM;IAOI;IAAA;E9EyidV;E8EhjdM;IAOI;IAAA;E9E6idV;E8EpjdM;IAOI;IAAA;E9EijdV;E8ExjdM;IAOI;IAAA;E9EqjdV;E8E5jdM;IAOI;IAAA;E9EyjdV;E8EhkdM;IAOI;IAAA;E9E6jdV;E8EpkdM;IAOI;E9EgkdV;E8EvkdM;IAOI;E9EmkdV;E8E1kdM;IAOI;E9EskdV;E8E7kdM;IAOI;E9EykdV;E8EhldM;IAOI;E9E4kdV;E8EnldM;IAOI;E9E+kdV;E8EtldM;IAOI;E9EkldV;E8EzldM;IAOI;E9EqldV;E8E5ldM;IAOI;E9EwldV;E8E/ldM;IAOI;E9E2ldV;E8ElmdM;IAOI;E9E8ldV;E8ErmdM;IAOI;E9EimdV;E8ExmdM;IAOI;E9EomdV;E8E3mdM;IAOI;E9EumdV;E8E9mdM;IAOI;E9E0mdV;E8EjndM;IAOI;E9E6mdV;E8EpndM;IAOI;E9EgndV;E8EvndM;IAOI;E9EmndV;E8E1ndM;IAOI;E9EsndV;E8E7ndM;IAOI;E9EyndV;E8EhodM;IAOI;E9E4ndV;E8EnodM;IAOI;E9E+ndV;E8EtodM;IAOI;E9EkodV;E8EzodM;IAOI;E9EqodV;E8E5odM;IAOI;E9EwodV;E8E/odM;IAOI;E9E2odV;E8ElpdM;IAOI;E9E8odV;E8ErpdM;IAOI;E9EipdV;E8ExpdM;IAOI;E9EopdV;E8E3pdM;IAOI;E9EupdV;E8E9pdM;IAOI;E9E0pdV;E8EjqdM;IAOI;E9E6pdV;E8EpqdM;IAOI;E9EgqdV;E8EvqdM;IAOI;E9EmqdV;E8E1qdM;IAOI;E9EsqdV;E8E7qdM;IAOI;E9EyqdV;E8EhrdM;IAOI;E9E4qdV;E8EnrdM;IAOI;E9E+qdV;E8EtrdM;IAOI;E9EkrdV;E8EzrdM;IAOI;E9EqrdV;E8E5rdM;IAOI;E9EwrdV;E8E/rdM;IAOI;E9E2rdV;E8ElsdM;IAOI;E9E8rdV;E8ErsdM;IAOI;E9EisdV;E8ExsdM;IAOI;E9EosdV;E8E3sdM;IAOI;E9EusdV;E8E9sdM;IAOI;E9E0sdV;E8EjtdM;IAOI;E9E6sdV;E8EptdM;IAOI;E9EgtdV;E8EvtdM;IAOI;E9EmtdV;E8E1tdM;IAOI;E9EstdV;E8E7tdM;IAOI;E9EytdV;E8EhudM;IAOI;E9E4tdV;E8EnudM;IAOI;E9E+tdV;E8EtudM;IAOI;E9EkudV;E8EzudM;IAOI;E9EqudV;E8E5udM;IAOI;E9EwudV;E8E/udM;IAOI;E9E2udV;E8ElvdM;IAOI;E9E8udV;E8ErvdM;IAOI;E9EivdV;E8ExvdM;IAOI;E9EovdV;E8E3vdM;IAOI;E9EuvdV;E8E9vdM;IAOI;E9E0vdV;E8EjwdM;IAOI;E9E6vdV;E8EpwdM;IAOI;E9EgwdV;E8EvwdM;IAOI;E9EmwdV;E8E1wdM;IAOI;E9EswdV;E8E7wdM;IAOI;E9EywdV;E8EhxdM;IAOI;IAAA;E9E6wdV;E8EpxdM;IAOI;IAAA;E9EixdV;E8ExxdM;IAOI;IAAA;E9EqxdV;E8E5xdM;IAOI;IAAA;E9EyxdV;E8EhydM;IAOI;IAAA;E9E6xdV;E8EpydM;IAOI;IAAA;E9EiydV;E8ExydM;IAOI;IAAA;E9EqydV;E8E5ydM;IAOI;IAAA;E9EyydV;E8EhzdM;IAOI;IAAA;E9E6ydV;E8EpzdM;IAOI;IAAA;E9EizdV;E8ExzdM;IAOI;IAAA;E9EqzdV;E8E5zdM;IAOI;IAAA;E9EyzdV;E8Eh0dM;IAOI;IAAA;E9E6zdV;E8Ep0dM;IAOI;IAAA;E9Ei0dV;E8Ex0dM;IAOI;IAAA;E9Eq0dV;E8E50dM;IAOI;IAAA;E9Ey0dV;E8Eh1dM;IAOI;IAAA;E9E60dV;E8Ep1dM;IAOI;IAAA;E9Ei1dV;E8Ex1dM;IAOI;IAAA;E9Eq1dV;E8E51dM;IAOI;IAAA;E9Ey1dV;E8Eh2dM;IAOI;IAAA;E9E61dV;E8Ep2dM;IAOI;IAAA;E9Ei2dV;E8Ex2dM;IAOI;IAAA;E9Eq2dV;E8E52dM;IAOI;IAAA;E9Ey2dV;E8Eh3dM;IAOI;E9E42dV;E8En3dM;IAOI;E9E+2dV;E8Et3dM;IAOI;E9Ek3dV;E8Ez3dM;IAOI;E9Eq3dV;E8E53dM;IAOI;E9Ew3dV;E8E/3dM;IAOI;E9E23dV;E8El4dM;IAOI;E9E83dV;E8Er4dM;IAOI;E9Ei4dV;E8Ex4dM;IAOI;E9Eo4dV;E8E34dM;IAOI;E9Eu4dV;E8E94dM;IAOI;E9E04dV;E8Ej5dM;IAOI;E9E64dV;E8Ep5dM;IAOI;E9Eg5dV;E8Ev5dM;IAOI;E9Em5dV;E8E15dM;IAOI;E9Es5dV;E8E75dM;IAOI;E9Ey5dV;E8Eh6dM;IAOI;E9E45dV;E8En6dM;IAOI;E9E+5dV;E8Et6dM;IAOI;E9Ek6dV;E8Ez6dM;IAOI;E9Eq6dV;E8E56dM;IAOI;E9Ew6dV;E8E/6dM;IAOI;E9E26dV;E8El7dM;IAOI;E9E86dV;E8Er7dM;IAOI;E9Ei7dV;E8Ex7dM;IAOI;E9Eo7dV;E8E37dM;IAOI;E9Eu7dV;E8E97dM;IAOI;E9E07dV;E8Ej8dM;IAOI;E9E67dV;E8Ep8dM;IAOI;E9Eg8dV;E8Ev8dM;IAOI;E9Em8dV;E8E18dM;IAOI;E9Es8dV;E8E78dM;IAOI;E9Ey8dV;E8Eh9dM;IAOI;E9E48dV;E8En9dM;IAOI;E9E+8dV;E8Et9dM;IAOI;E9Ek9dV;E8Ez9dM;IAOI;E9Eq9dV;E8E59dM;IAOI;E9Ew9dV;E8E/9dM;IAOI;E9E29dV;E8El+dM;IAOI;E9E89dV;E8Er+dM;IAOI;E9Ei+dV;E8Ex+dM;IAOI;E9Eo+dV;E8E3+dM;IAOI;E9Eu+dV;E8E9+dM;IAOI;E9E0+dV;E8Ej/dM;IAOI;E9E6+dV;E8Ep/dM;IAOI;E9Eg/dV;E8Ev/dM;IAOI;E9Em/dV;E8E1/dM;IAOI;E9Es/dV;E8E7/dM;IAOI;E9Ey/dV;E8EhgeM;IAOI;E9E4/dV;E8EngeM;IAOI;E9E+/dV;E8EtgeM;IAOI;E9EkgeV;E8EzgeM;IAOI;E9EqgeV;E8E5geM;IAOI;E9EwgeV;E8E/geM;IAOI;E9E2geV;E8ElheM;IAOI;E9E8geV;E8ErheM;IAOI;E9EiheV;E8ExheM;IAOI;E9EoheV;E8E3heM;IAOI;E9EuheV;E8E9heM;IAOI;E9E0heV;E8EjieM;IAOI;E9E6heV;E8EpieM;IAOI;E9EgieV;E8EvieM;IAOI;IAAA;E9EoieV;E8E3ieM;IAOI;IAAA;E9EwieV;E8E/ieM;IAOI;IAAA;E9E4ieV;E8EnjeM;IAOI;IAAA;E9EgjeV;E8EvjeM;IAOI;IAAA;E9EojeV;E8E3jeM;IAOI;IAAA;E9EwjeV;E8E/jeM;IAOI;IAAA;E9E4jeV;E8EnkeM;IAOI;IAAA;E9EgkeV;E8EvkeM;IAOI;IAAA;E9EokeV;E8E3keM;IAOI;IAAA;E9EwkeV;E8E/keM;IAOI;IAAA;E9E4keV;E8EnleM;IAOI;IAAA;E9EgleV;E8EvleM;IAOI;IAAA;E9EoleV;E8E3leM;IAOI;IAAA;E9EwleV;E8E/leM;IAOI;IAAA;E9E4leV;E8EnmeM;IAOI;IAAA;E9EgmeV;E8EvmeM;IAOI;IAAA;E9EomeV;E8E3meM;IAOI;IAAA;E9EwmeV;E8E/meM;IAOI;IAAA;E9E4meV;E8EnneM;IAOI;IAAA;E9EgneV;E8EvneM;IAOI;IAAA;E9EoneV;E8E3neM;IAOI;IAAA;E9EwneV;E8E/neM;IAOI;IAAA;E9E4neV;E8EnoeM;IAOI;IAAA;E9EgoeV;E8EvoeM;IAOI;IAAA;E9EooeV;E8E3oeM;IAOI;IAAA;E9EwoeV;E8E/oeM;IAOI;E9E2oeV;E8ElpeM;IAOI;E9E8oeV;E8ErpeM;IAOI;E9EipeV;E8ExpeM;IAOI;E9EopeV;E8E3peM;IAOI;E9EupeV;E8E9peM;IAOI;E9E0peV;E8EjqeM;IAOI;E9E6peV;E8EpqeM;IAOI;E9EgqeV;E8EvqeM;IAOI;E9EmqeV;E8E1qeM;IAOI;E9EsqeV;E8E7qeM;IAOI;E9EyqeV;E8EhreM;IAOI;E9E4qeV;E8EnreM;IAOI;E9E+qeV;E8EtreM;IAOI;E9EkreV;E8EzreM;IAOI;E9EqreV;E8E5reM;IAOI;E9EwreV;E8E/reM;IAOI;E9E2reV;E8ElseM;IAOI;E9E8reV;E8ErseM;IAOI;E9EiseV;E8ExseM;IAOI;E9EoseV;E8E3seM;IAOI;E9EuseV;E8E9seM;IAOI;E9E0seV;E8EjteM;IAOI;E9E6seV;E8EpteM;IAOI;E9EgteV;E8EvteM;IAOI;E9EmteV;E8E1teM;IAOI;E9EsteV;E8E7teM;IAOI;E9EyteV;E8EhueM;IAOI;E9E4teV;E8EnueM;IAOI;E9E+teV;E8EtueM;IAOI;E9EkueV;E8EzueM;IAOI;E9EqueV;E8E5ueM;IAOI;E9EwueV;E8E/ueM;IAOI;E9E2ueV;E8ElveM;IAOI;E9E8ueV;E8ErveM;IAOI;E9EiveV;E8ExveM;IAOI;E9EoveV;E8E3veM;IAOI;E9EuveV;E8E9veM;IAOI;E9E0veV;E8EjweM;IAOI;E9E6veV;E8EpweM;IAOI;E9EgweV;E8EvweM;IAOI;E9EmweV;E8E1weM;IAOI;E9EsweV;E8E7weM;IAOI;E9EyweV;E8EhxeM;IAOI;E9E4weV;E8EnxeM;IAOI;E9E+weV;E8EtxeM;IAOI;E9EkxeV;E8EzxeM;IAOI;E9EqxeV;E8E5xeM;IAOI;E9EwxeV;E8E/xeM;IAOI;E9E2xeV;E8ElyeM;IAOI;E9E8xeV;E8EryeM;IAOI;E9EiyeV;E8ExyeM;IAOI;E9EoyeV;E8E3yeM;IAOI;E9EuyeV;E8E9yeM;IAOI;E9E0yeV;E8EjzeM;IAOI;E9E6yeV;E8EpzeM;IAOI;E9EgzeV;E8EvzeM;IAOI;E9EmzeV;E8E1zeM;IAOI;E9EszeV;E8E7zeM;IAOI;E9EyzeV;E8Eh0eM;IAOI;E9E4zeV;E8En0eM;IAOI;E9E+zeV;E8Et0eM;IAOI;E9Ek0eV;E8Ez0eM;IAOI;E9Eq0eV;E8E50eM;IAOI;E9Ew0eV;E8E/0eM;IAOI;E9E20eV;E8El1eM;IAOI;E9E80eV;E8Er1eM;IAOI;E9Ei1eV;E8Ex1eM;IAOI;E9Eo1eV;E8E31eM;IAOI;E9Eu1eV;E8E91eM;IAOI;E9E01eV;E8Ej2eM;IAOI;E9E61eV;E8Ep2eM;IAOI;E9Eg2eV;E8Ev2eM;IAOI;E9Em2eV;E8E12eM;IAOI;E9Es2eV;E8E72eM;IAOI;E9Ey2eV;E8Eh3eM;IAOI;E9E42eV;E8En3eM;IAOI;E9E+2eV;E8Et3eM;IAOI;E9Ek3eV;E8Ez3eM;IAOI;E9Eq3eV;E8E53eM;IAOI;E9Ew3eV;E8E/3eM;IAOI;E9E23eV;E8El4eM;IAOI;E9E83eV;E8Er4eM;IAOI;E9Ei4eV;E8Ex4eM;IAOI;E9Eo4eV;E8E34eM;IAOI;E9Eu4eV;E8E94eM;IAOI;E9E04eV;E8Ej5eM;IAOI;E9E64eV;E8Ep5eM;IAOI;E9Eg5eV;E8Ev5eM;IAOI;E9Em5eV;E8E15eM;IAOI;E9Es5eV;E8E75eM;IAOI;E9Ey5eV;E8Eh6eM;IAOI;E9E45eV;E8En6eM;IAOI;E9E+5eV;E8Et6eM;IAOI;E9Ek6eV;E8Ez6eM;IAOI;E9Eq6eV;E8E56eM;IAOI;E9Ew6eV;E8E/6eM;IAOI;E9E26eV;E8El7eM;IAOI;E9E86eV;E8Er7eM;IAOI;E9Ei7eV;E8Ex7eM;IAOI;E9Eo7eV;E8E37eM;IAOI;E9Eu7eV;E8E97eM;IAOI;E9E07eV;E8Ej8eM;IAOI;E9E67eV;E8Ep8eM;IAOI;E9Eg8eV;E8Ev8eM;IAOI;E9Em8eV;E8E18eM;IAOI;IAAA;E9Eu8eV;E8E98eM;IAOI;IAAA;E9E28eV;E8El9eM;IAOI;IAAA;E9E+8eV;E8Et9eM;IAOI;IAAA;E9Em9eV;E8E19eM;IAOI;IAAA;E9Eu9eV;E8E99eM;IAOI;IAAA;E9E29eV;E8El+eM;IAOI;IAAA;E9E+9eV;E8Et+eM;IAOI;IAAA;E9Em+eV;E8E1+eM;IAOI;IAAA;E9Eu+eV;E8E9+eM;IAOI;IAAA;E9E2+eV;E8El/eM;IAOI;IAAA;E9E++eV;E8Et/eM;IAOI;IAAA;E9Em/eV;E8E1/eM;IAOI;E9Es/eV;E8E7/eM;IAOI;E9Ey/eV;E8EhgfM;IAOI;E9E4/eV;E8EngfM;IAOI;E9E+/eV;E8EtgfM;IAOI;IAAA;E9EmgfV;E8E1gfM;IAOI;IAAA;E9EugfV;E8E9gfM;IAOI;IAAA;E9E2gfV;E8ElhfM;IAOI;IAAA;E9E+gfV;E8EthfM;IAIQ;IAGJ;E9EmhfV;E8E1hfM;IAIQ;IAGJ;E9EuhfV;E8E9hfM;IAIQ;IAGJ;E9E2hfV;E8ElifM;IAIQ;IAGJ;E9E+hfV;E8EtifM;IAIQ;IAGJ;E9EmifV;E8E1ifM;IAIQ;IAGJ;E9EuifV;E8E9ifM;IAIQ;IAGJ;E9E2ifV;E8EljfM;IAIQ;IAGJ;E9E+ifV;E8EtjfM;IAIQ;IAGJ;E9EmjfV;E8E1jfM;IAIQ;IAGJ;E9EujfV;E8E9jfM;IAIQ;IAGJ;E9E2jfV;E8ElkfM;IAIQ;IAGJ;E9E+jfV;E8EtkfM;IAIQ;IAGJ;E9EmkfV;E8E1kfM;IAIQ;IAGJ;E9EukfV;E8E9kfM;IAIQ;IAGJ;E9E2kfV;E8EllfM;IAIQ;IAGJ;E9E+kfV;E8EtlfM;IAIQ;IAGJ;E9EmlfV;E8E1lfM;IAIQ;IAGJ;E9EulfV;E8E9lfM;IAIQ;IAGJ;E9E2lfV;E8ElmfM;IAIQ;IAGJ;E9E+lfV;E8EtmfM;IAIQ;IAGJ;E9EmmfV;E8E1mfM;IAIQ;IAGJ;E9EumfV;E8E9mfM;IAIQ;IAGJ;E9E2mfV;E8ElnfM;IAIQ;IAGJ;E9E+mfV;E8EtnfM;IAIQ;IAGJ;E9EmnfV;E8E1nfM;IAIQ;IAGJ;E9EunfV;E8E9nfM;IAOI;E9E0nfV;AACF;AoBrofI;E0DGI;IAOI;E9E+nfV;E8EtofM;IAOI;E9EkofV;E8EzofM;IAOI;E9EqofV;E8E5ofM;IAOI;E9EwofV;E8E/ofM;IAOI;E9E2ofV;E8ElpfM;IAOI;E9E8ofV;E8ErpfM;IAOI;E9EipfV;E8ExpfM;IAOI;E9EopfV;E8E3pfM;IAOI;E9EupfV;E8E9pfM;IAOI;E9E0pfV;E8EjqfM;IAOI;E9E6pfV;E8EpqfM;IAOI;E9EgqfV;E8EvqfM;IAOI;E9EmqfV;E8E1qfM;IAOI;E9EsqfV;E8E7qfM;IAOI;E9EyqfV;E8EhrfM;IAOI;E9E4qfV;E8EnrfM;IAOI;E9E+qfV;E8EtrfM;IAOI;E9EkrfV;E8EzrfM;IAOI;E9EqrfV;E8E5rfM;IAOI;E9EwrfV;E8E/rfM;IAOI;E9E2rfV;E8ElsfM;IAOI;E9E8rfV;E8ErsfM;IAOI;E9EisfV;E8ExsfM;IAOI;E9EosfV;E8E3sfM;IAOI;E9EusfV;E8E9sfM;IAOI;E9E0sfV;E8EjtfM;IAOI;E9E6sfV;E8EptfM;IAOI;E9EgtfV;E8EvtfM;IAOI;E9EmtfV;E8E1tfM;IAOI;E9EstfV;E8E7tfM;IAOI;E9EytfV;E8EhufM;IAOI;E9E4tfV;E8EnufM;IAOI;E9E+tfV;E8EtufM;IAOI;E9EkufV;E8EzufM;IAOI;E9EqufV;E8E5ufM;IAOI;E9EwufV;E8E/ufM;IAOI;E9E2ufV;E8ElvfM;IAOI;E9E8ufV;E8ErvfM;IAOI;E9EivfV;E8ExvfM;IAOI;E9EovfV;E8E3vfM;IAOI;E9EuvfV;E8E9vfM;IAOI;E9E0vfV;E8EjwfM;IAOI;E9E6vfV;E8EpwfM;IAOI;E9EgwfV;E8EvwfM;IAOI;E9EmwfV;E8E1wfM;IAOI;E9EswfV;E8E7wfM;IAOI;E9EywfV;E8EhxfM;IAOI;E9E4wfV;E8EnxfM;IAOI;E9E+wfV;E8EtxfM;IAOI;E9EkxfV;E8EzxfM;IAOI;E9EqxfV;E8E5xfM;IAOI;E9EwxfV;E8E/xfM;IAOI;E9E2xfV;E8ElyfM;IAOI;E9E8xfV;E8EryfM;IAOI;E9EiyfV;E8ExyfM;IAOI;E9EoyfV;E8E3yfM;IAOI;E9EuyfV;E8E9yfM;IAOI;E9E0yfV;E8EjzfM;IAOI;E9E6yfV;E8EpzfM;IAOI;E9EgzfV;E8EvzfM;IAOI;E9EmzfV;E8E1zfM;IAOI;E9EszfV;E8E7zfM;IAOI;E9EyzfV;E8Eh0fM;IAOI;E9E4zfV;E8En0fM;IAOI;E9E+zfV;E8Et0fM;IAOI;E9Ek0fV;E8Ez0fM;IAOI;E9Eq0fV;E8E50fM;IAOI;E9Ew0fV;E8E/0fM;IAOI;E9E20fV;E8El1fM;IAOI;E9E80fV;E8Er1fM;IAOI;E9Ei1fV;E8Ex1fM;IAOI;E9Eo1fV;E8E31fM;IAOI;E9Eu1fV;E8E91fM;IAOI;E9E01fV;E8Ej2fM;IAOI;E9E61fV;E8Ep2fM;IAOI;E9Eg2fV;E8Ev2fM;IAOI;E9Em2fV;E8E12fM;IAOI;E9Es2fV;E8E72fM;IAOI;E9Ey2fV;E8Eh3fM;IAOI;E9E42fV;E8En3fM;IAOI;E9E+2fV;E8Et3fM;IAOI;E9Ek3fV;E8Ez3fM;IAOI;E9Eq3fV;E8E53fM;IAOI;E9Ew3fV;E8E/3fM;IAOI;E9E23fV;E8El4fM;IAOI;E9E83fV;E8Er4fM;IAOI;E9Ei4fV;E8Ex4fM;IAOI;E9Eo4fV;E8E34fM;IAOI;E9Eu4fV;E8E94fM;IAOI;E9E04fV;E8Ej5fM;IAOI;E9E64fV;E8Ep5fM;IAOI;E9Eg5fV;E8Ev5fM;IAOI;E9Em5fV;E8E15fM;IAOI;E9Es5fV;E8E75fM;IAOI;E9Ey5fV;E8Eh6fM;IAOI;E9E45fV;E8En6fM;IAOI;E9E+5fV;E8Et6fM;IAOI;E9Ek6fV;E8Ez6fM;IAOI;E9Eq6fV;E8E56fM;IAOI;E9Ew6fV;E8E/6fM;IAOI;E9E26fV;E8El7fM;IAOI;E9E86fV;E8Er7fM;IAOI;E9Ei7fV;E8Ex7fM;IAOI;E9Eo7fV;E8E37fM;IAOI;E9Eu7fV;E8E97fM;IAOI;E9E07fV;E8Ej8fM;IAOI;E9E67fV;E8Ep8fM;IAOI;E9Eg8fV;E8Ev8fM;IAOI;E9Em8fV;E8E18fM;IAOI;E9Es8fV;E8E78fM;IAOI;E9Ey8fV;E8Eh9fM;IAOI;E9E48fV;E8En9fM;IAOI;E9E+8fV;E8Et9fM;IAOI;E9Ek9fV;E8Ez9fM;IAOI;E9Eq9fV;E8E59fM;IAOI;E9Ew9fV;E8E/9fM;IAOI;E9E29fV;E8El+fM;IAOI;E9E89fV;E8Er+fM;IAOI;E9Ei+fV;E8Ex+fM;IAOI;E9Eo+fV;E8E3+fM;IAOI;E9Eu+fV;E8E9+fM;IAOI;E9E0+fV;E8Ej/fM;IAOI;IAAA;E9E8+fV;E8Er/fM;IAOI;IAAA;E9Ek/fV;E8Ez/fM;IAOI;IAAA;E9Es/fV;E8E7/fM;IAOI;IAAA;E9E0/fV;E8EjggBM;IAOI;IAAA;E9E8/fV;E8ErggBM;IAOI;IAAA;E9EkggBV;E8EzggBM;IAOI;IAAA;E9EsggBV;E8E7ggBM;IAOI;IAAA;E9E0ggBV;E8EjhgBM;IAOI;IAAA;E9E8ggBV;E8ErhgBM;IAOI;IAAA;E9EkhgBV;E8EzhgBM;IAOI;IAAA;E9EshgBV;E8E7hgBM;IAOI;IAAA;E9E0hgBV;E8EjigBM;IAOI;IAAA;E9E8hgBV;E8ErigBM;IAOI;IAAA;E9EkigBV;E8EzigBM;IAOI;IAAA;E9EsigBV;E8E7igBM;IAOI;IAAA;E9E0igBV;E8EjjgBM;IAOI;IAAA;E9E8igBV;E8ErjgBM;IAOI;IAAA;E9EkjgBV;E8EzjgBM;IAOI;IAAA;E9EsjgBV;E8E7jgBM;IAOI;IAAA;E9E0jgBV;E8EjkgBM;IAOI;IAAA;E9E8jgBV;E8ErkgBM;IAOI;IAAA;E9EkkgBV;E8EzkgBM;IAOI;IAAA;E9EskgBV;E8E7kgBM;IAOI;IAAA;E9E0kgBV;E8EjlgBM;IAOI;IAAA;E9E8kgBV;E8ErlgBM;IAOI;IAAA;E9EklgBV;E8EzlgBM;IAOI;IAAA;E9EslgBV;E8E7lgBM;IAOI;IAAA;E9E0lgBV;E8EjmgBM;IAOI;E9E6lgBV;E8EpmgBM;IAOI;E9EgmgBV;E8EvmgBM;IAOI;E9EmmgBV;E8E1mgBM;IAOI;E9EsmgBV;E8E7mgBM;IAOI;E9EymgBV;E8EhngBM;IAOI;E9E4mgBV;E8EnngBM;IAOI;E9E+mgBV;E8EtngBM;IAOI;E9EkngBV;E8EzngBM;IAOI;E9EqngBV;E8E5ngBM;IAOI;E9EwngBV;E8E/ngBM;IAOI;E9E2ngBV;E8ElogBM;IAOI;E9E8ngBV;E8ErogBM;IAOI;E9EiogBV;E8ExogBM;IAOI;E9EoogBV;E8E3ogBM;IAOI;E9EuogBV;E8E9ogBM;IAOI;E9E0ogBV;E8EjpgBM;IAOI;E9E6ogBV;E8EppgBM;IAOI;E9EgpgBV;E8EvpgBM;IAOI;E9EmpgBV;E8E1pgBM;IAOI;E9EspgBV;E8E7pgBM;IAOI;E9EypgBV;E8EhqgBM;IAOI;E9E4pgBV;E8EnqgBM;IAOI;E9E+pgBV;E8EtqgBM;IAOI;E9EkqgBV;E8EzqgBM;IAOI;E9EqqgBV;E8E5qgBM;IAOI;E9EwqgBV;E8E/qgBM;IAOI;E9E2qgBV;E8ElrgBM;IAOI;E9E8qgBV;E8ErrgBM;IAOI;E9EirgBV;E8ExrgBM;IAOI;E9EorgBV;E8E3rgBM;IAOI;E9EurgBV;E8E9rgBM;IAOI;E9E0rgBV;E8EjsgBM;IAOI;E9E6rgBV;E8EpsgBM;IAOI;E9EgsgBV;E8EvsgBM;IAOI;E9EmsgBV;E8E1sgBM;IAOI;E9EssgBV;E8E7sgBM;IAOI;E9EysgBV;E8EhtgBM;IAOI;E9E4sgBV;E8EntgBM;IAOI;E9E+sgBV;E8EttgBM;IAOI;E9EktgBV;E8EztgBM;IAOI;E9EqtgBV;E8E5tgBM;IAOI;E9EwtgBV;E8E/tgBM;IAOI;E9E2tgBV;E8ElugBM;IAOI;E9E8tgBV;E8ErugBM;IAOI;E9EiugBV;E8ExugBM;IAOI;E9EougBV;E8E3ugBM;IAOI;E9EuugBV;E8E9ugBM;IAOI;E9E0ugBV;E8EjvgBM;IAOI;E9E6ugBV;E8EpvgBM;IAOI;E9EgvgBV;E8EvvgBM;IAOI;E9EmvgBV;E8E1vgBM;IAOI;E9EsvgBV;E8E7vgBM;IAOI;E9EyvgBV;E8EhwgBM;IAOI;E9E4vgBV;E8EnwgBM;IAOI;E9E+vgBV;E8EtwgBM;IAOI;E9EkwgBV;E8EzwgBM;IAOI;E9EqwgBV;E8E5wgBM;IAOI;E9EwwgBV;E8E/wgBM;IAOI;E9E2wgBV;E8ElxgBM;IAOI;E9E8wgBV;E8ErxgBM;IAOI;E9EixgBV;E8ExxgBM;IAOI;E9EoxgBV;E8E3xgBM;IAOI;E9EuxgBV;E8E9xgBM;IAOI;E9E0xgBV;E8EjygBM;IAOI;E9E6xgBV;E8EpygBM;IAOI;E9EgygBV;E8EvygBM;IAOI;E9EmygBV;E8E1ygBM;IAOI;E9EsygBV;E8E7ygBM;IAOI;IAAA;E9E0ygBV;E8EjzgBM;IAOI;IAAA;E9E8ygBV;E8ErzgBM;IAOI;IAAA;E9EkzgBV;E8EzzgBM;IAOI;IAAA;E9EszgBV;E8E7zgBM;IAOI;IAAA;E9E0zgBV;E8Ej0gBM;IAOI;IAAA;E9E8zgBV;E8Er0gBM;IAOI;IAAA;E9Ek0gBV;E8Ez0gBM;IAOI;IAAA;E9Es0gBV;E8E70gBM;IAOI;IAAA;E9E00gBV;E8Ej1gBM;IAOI;IAAA;E9E80gBV;E8Er1gBM;IAOI;IAAA;E9Ek1gBV;E8Ez1gBM;IAOI;IAAA;E9Es1gBV;E8E71gBM;IAOI;IAAA;E9E01gBV;E8Ej2gBM;IAOI;IAAA;E9E81gBV;E8Er2gBM;IAOI;IAAA;E9Ek2gBV;E8Ez2gBM;IAOI;IAAA;E9Es2gBV;E8E72gBM;IAOI;IAAA;E9E02gBV;E8Ej3gBM;IAOI;IAAA;E9E82gBV;E8Er3gBM;IAOI;IAAA;E9Ek3gBV;E8Ez3gBM;IAOI;IAAA;E9Es3gBV;E8E73gBM;IAOI;IAAA;E9E03gBV;E8Ej4gBM;IAOI;IAAA;E9E83gBV;E8Er4gBM;IAOI;IAAA;E9Ek4gBV;E8Ez4gBM;IAOI;IAAA;E9Es4gBV;E8E74gBM;IAOI;E9Ey4gBV;E8Eh5gBM;IAOI;E9E44gBV;E8En5gBM;IAOI;E9E+4gBV;E8Et5gBM;IAOI;E9Ek5gBV;E8Ez5gBM;IAOI;E9Eq5gBV;E8E55gBM;IAOI;E9Ew5gBV;E8E/5gBM;IAOI;E9E25gBV;E8El6gBM;IAOI;E9E85gBV;E8Er6gBM;IAOI;E9Ei6gBV;E8Ex6gBM;IAOI;E9Eo6gBV;E8E36gBM;IAOI;E9Eu6gBV;E8E96gBM;IAOI;E9E06gBV;E8Ej7gBM;IAOI;E9E66gBV;E8Ep7gBM;IAOI;E9Eg7gBV;E8Ev7gBM;IAOI;E9Em7gBV;E8E17gBM;IAOI;E9Es7gBV;E8E77gBM;IAOI;E9Ey7gBV;E8Eh8gBM;IAOI;E9E47gBV;E8En8gBM;IAOI;E9E+7gBV;E8Et8gBM;IAOI;E9Ek8gBV;E8Ez8gBM;IAOI;E9Eq8gBV;E8E58gBM;IAOI;E9Ew8gBV;E8E/8gBM;IAOI;E9E28gBV;E8El9gBM;IAOI;E9E88gBV;E8Er9gBM;IAOI;E9Ei9gBV;E8Ex9gBM;IAOI;E9Eo9gBV;E8E39gBM;IAOI;E9Eu9gBV;E8E99gBM;IAOI;E9E09gBV;E8Ej+gBM;IAOI;E9E69gBV;E8Ep+gBM;IAOI;E9Eg+gBV;E8Ev+gBM;IAOI;E9Em+gBV;E8E1+gBM;IAOI;E9Es+gBV;E8E7+gBM;IAOI;E9Ey+gBV;E8Eh/gBM;IAOI;E9E4+gBV;E8En/gBM;IAOI;E9E++gBV;E8Et/gBM;IAOI;E9Ek/gBV;E8Ez/gBM;IAOI;E9Eq/gBV;E8E5/gBM;IAOI;E9Ew/gBV;E8E//gBM;IAOI;E9E2/gBV;E8ElghBM;IAOI;E9E8/gBV;E8ErghBM;IAOI;E9EighBV;E8ExghBM;IAOI;E9EoghBV;E8E3ghBM;IAOI;E9EughBV;E8E9ghBM;IAOI;E9E0ghBV;E8EjhhBM;IAOI;E9E6ghBV;E8EphhBM;IAOI;E9EghhBV;E8EvhhBM;IAOI;E9EmhhBV;E8E1hhBM;IAOI;E9EshhBV;E8E7hhBM;IAOI;E9EyhhBV;E8EhihBM;IAOI;E9E4hhBV;E8EnihBM;IAOI;E9E+hhBV;E8EtihBM;IAOI;E9EkihBV;E8EzihBM;IAOI;E9EqihBV;E8E5ihBM;IAOI;E9EwihBV;E8E/ihBM;IAOI;E9E2ihBV;E8EljhBM;IAOI;E9E8ihBV;E8ErjhBM;IAOI;E9EijhBV;E8ExjhBM;IAOI;E9EojhBV;E8E3jhBM;IAOI;E9EujhBV;E8E9jhBM;IAOI;E9E0jhBV;E8EjkhBM;IAOI;E9E6jhBV;E8EpkhBM;IAOI;IAAA;E9EikhBV;E8ExkhBM;IAOI;IAAA;E9EqkhBV;E8E5khBM;IAOI;IAAA;E9EykhBV;E8EhlhBM;IAOI;IAAA;E9E6khBV;E8EplhBM;IAOI;IAAA;E9EilhBV;E8ExlhBM;IAOI;IAAA;E9EqlhBV;E8E5lhBM;IAOI;IAAA;E9EylhBV;E8EhmhBM;IAOI;IAAA;E9E6lhBV;E8EpmhBM;IAOI;IAAA;E9EimhBV;E8ExmhBM;IAOI;IAAA;E9EqmhBV;E8E5mhBM;IAOI;IAAA;E9EymhBV;E8EhnhBM;IAOI;IAAA;E9E6mhBV;E8EpnhBM;IAOI;IAAA;E9EinhBV;E8ExnhBM;IAOI;IAAA;E9EqnhBV;E8E5nhBM;IAOI;IAAA;E9EynhBV;E8EhohBM;IAOI;IAAA;E9E6nhBV;E8EpohBM;IAOI;IAAA;E9EiohBV;E8ExohBM;IAOI;IAAA;E9EqohBV;E8E5ohBM;IAOI;IAAA;E9EyohBV;E8EhphBM;IAOI;IAAA;E9E6ohBV;E8EpphBM;IAOI;IAAA;E9EiphBV;E8ExphBM;IAOI;IAAA;E9EqphBV;E8E5phBM;IAOI;IAAA;E9EyphBV;E8EhqhBM;IAOI;IAAA;E9E6phBV;E8EpqhBM;IAOI;IAAA;E9EiqhBV;E8ExqhBM;IAOI;IAAA;E9EqqhBV;E8E5qhBM;IAOI;E9EwqhBV;E8E/qhBM;IAOI;E9E2qhBV;E8ElrhBM;IAOI;E9E8qhBV;E8ErrhBM;IAOI;E9EirhBV;E8ExrhBM;IAOI;E9EorhBV;E8E3rhBM;IAOI;E9EurhBV;E8E9rhBM;IAOI;E9E0rhBV;E8EjshBM;IAOI;E9E6rhBV;E8EpshBM;IAOI;E9EgshBV;E8EvshBM;IAOI;E9EmshBV;E8E1shBM;IAOI;E9EsshBV;E8E7shBM;IAOI;E9EyshBV;E8EhthBM;IAOI;E9E4shBV;E8EnthBM;IAOI;E9E+shBV;E8EtthBM;IAOI;E9EkthBV;E8EzthBM;IAOI;E9EqthBV;E8E5thBM;IAOI;E9EwthBV;E8E/thBM;IAOI;E9E2thBV;E8EluhBM;IAOI;E9E8thBV;E8EruhBM;IAOI;E9EiuhBV;E8ExuhBM;IAOI;E9EouhBV;E8E3uhBM;IAOI;E9EuuhBV;E8E9uhBM;IAOI;E9E0uhBV;E8EjvhBM;IAOI;E9E6uhBV;E8EpvhBM;IAOI;E9EgvhBV;E8EvvhBM;IAOI;E9EmvhBV;E8E1vhBM;IAOI;E9EsvhBV;E8E7vhBM;IAOI;E9EyvhBV;E8EhwhBM;IAOI;E9E4vhBV;E8EnwhBM;IAOI;E9E+vhBV;E8EtwhBM;IAOI;E9EkwhBV;E8EzwhBM;IAOI;E9EqwhBV;E8E5whBM;IAOI;E9EwwhBV;E8E/whBM;IAOI;E9E2whBV;E8ElxhBM;IAOI;E9E8whBV;E8ErxhBM;IAOI;E9EixhBV;E8ExxhBM;IAOI;E9EoxhBV;E8E3xhBM;IAOI;E9EuxhBV;E8E9xhBM;IAOI;E9E0xhBV;E8EjyhBM;IAOI;E9E6xhBV;E8EpyhBM;IAOI;E9EgyhBV;E8EvyhBM;IAOI;E9EmyhBV;E8E1yhBM;IAOI;E9EsyhBV;E8E7yhBM;IAOI;E9EyyhBV;E8EhzhBM;IAOI;E9E4yhBV;E8EnzhBM;IAOI;E9E+yhBV;E8EtzhBM;IAOI;E9EkzhBV;E8EzzhBM;IAOI;E9EqzhBV;E8E5zhBM;IAOI;E9EwzhBV;E8E/zhBM;IAOI;E9E2zhBV;E8El0hBM;IAOI;E9E8zhBV;E8Er0hBM;IAOI;E9Ei0hBV;E8Ex0hBM;IAOI;E9Eo0hBV;E8E30hBM;IAOI;E9Eu0hBV;E8E90hBM;IAOI;E9E00hBV;E8Ej1hBM;IAOI;E9E60hBV;E8Ep1hBM;IAOI;E9Eg1hBV;E8Ev1hBM;IAOI;E9Em1hBV;E8E11hBM;IAOI;E9Es1hBV;E8E71hBM;IAOI;E9Ey1hBV;E8Eh2hBM;IAOI;E9E41hBV;E8En2hBM;IAOI;E9E+1hBV;E8Et2hBM;IAOI;E9Ek2hBV;E8Ez2hBM;IAOI;E9Eq2hBV;E8E52hBM;IAOI;E9Ew2hBV;E8E/2hBM;IAOI;E9E22hBV;E8El3hBM;IAOI;E9E82hBV;E8Er3hBM;IAOI;E9Ei3hBV;E8Ex3hBM;IAOI;E9Eo3hBV;E8E33hBM;IAOI;E9Eu3hBV;E8E93hBM;IAOI;E9E03hBV;E8Ej4hBM;IAOI;E9E63hBV;E8Ep4hBM;IAOI;E9Eg4hBV;E8Ev4hBM;IAOI;E9Em4hBV;E8E14hBM;IAOI;E9Es4hBV;E8E74hBM;IAOI;E9Ey4hBV;E8Eh5hBM;IAOI;E9E44hBV;E8En5hBM;IAOI;E9E+4hBV;E8Et5hBM;IAOI;E9Ek5hBV;E8Ez5hBM;IAOI;E9Eq5hBV;E8E55hBM;IAOI;E9Ew5hBV;E8E/5hBM;IAOI;E9E25hBV;E8El6hBM;IAOI;E9E85hBV;E8Er6hBM;IAOI;E9Ei6hBV;E8Ex6hBM;IAOI;E9Eo6hBV;E8E36hBM;IAOI;E9Eu6hBV;E8E96hBM;IAOI;E9E06hBV;E8Ej7hBM;IAOI;E9E66hBV;E8Ep7hBM;IAOI;E9Eg7hBV;E8Ev7hBM;IAOI;E9Em7hBV;E8E17hBM;IAOI;E9Es7hBV;E8E77hBM;IAOI;E9Ey7hBV;E8Eh8hBM;IAOI;E9E47hBV;E8En8hBM;IAOI;E9E+7hBV;E8Et8hBM;IAOI;E9Ek8hBV;E8Ez8hBM;IAOI;E9Eq8hBV;E8E58hBM;IAOI;E9Ew8hBV;E8E/8hBM;IAOI;E9E28hBV;E8El9hBM;IAOI;E9E88hBV;E8Er9hBM;IAOI;E9Ei9hBV;E8Ex9hBM;IAOI;E9Eo9hBV;E8E39hBM;IAOI;E9Eu9hBV;E8E99hBM;IAOI;E9E09hBV;E8Ej+hBM;IAOI;E9E69hBV;E8Ep+hBM;IAOI;E9Eg+hBV;E8Ev+hBM;IAOI;IAAA;E9Eo+hBV;E8E3+hBM;IAOI;IAAA;E9Ew+hBV;E8E/+hBM;IAOI;IAAA;E9E4+hBV;E8En/hBM;IAOI;IAAA;E9Eg/hBV;E8Ev/hBM;IAOI;IAAA;E9Eo/hBV;E8E3/hBM;IAOI;IAAA;E9Ew/hBV;E8E//hBM;IAOI;IAAA;E9E4/hBV;E8EngiBM;IAOI;IAAA;E9EggiBV;E8EvgiBM;IAOI;IAAA;E9EogiBV;E8E3giBM;IAOI;IAAA;E9EwgiBV;E8E/giBM;IAOI;IAAA;E9E4giBV;E8EnhiBM;IAOI;IAAA;E9EghiBV;E8EvhiBM;IAOI;E9EmhiBV;E8E1hiBM;IAOI;E9EshiBV;E8E7hiBM;IAOI;E9EyhiBV;E8EhiiBM;IAOI;E9E4hiBV;E8EniiBM;IAOI;IAAA;E9EgiiBV;E8EviiBM;IAOI;IAAA;E9EoiiBV;E8E3iiBM;IAOI;IAAA;E9EwiiBV;E8E/iiBM;IAOI;IAAA;E9E4iiBV;E8EnjiBM;IAIQ;IAGJ;E9EgjiBV;E8EvjiBM;IAIQ;IAGJ;E9EojiBV;E8E3jiBM;IAIQ;IAGJ;E9EwjiBV;E8E/jiBM;IAIQ;IAGJ;E9E4jiBV;E8EnkiBM;IAIQ;IAGJ;E9EgkiBV;E8EvkiBM;IAIQ;IAGJ;E9EokiBV;E8E3kiBM;IAIQ;IAGJ;E9EwkiBV;E8E/kiBM;IAIQ;IAGJ;E9E4kiBV;E8EnliBM;IAIQ;IAGJ;E9EgliBV;E8EvliBM;IAIQ;IAGJ;E9EoliBV;E8E3liBM;IAIQ;IAGJ;E9EwliBV;E8E/liBM;IAIQ;IAGJ;E9E4liBV;E8EnmiBM;IAIQ;IAGJ;E9EgmiBV;E8EvmiBM;IAIQ;IAGJ;E9EomiBV;E8E3miBM;IAIQ;IAGJ;E9EwmiBV;E8E/miBM;IAIQ;IAGJ;E9E4miBV;E8EnniBM;IAIQ;IAGJ;E9EgniBV;E8EvniBM;IAIQ;IAGJ;E9EoniBV;E8E3niBM;IAIQ;IAGJ;E9EwniBV;E8E/niBM;IAIQ;IAGJ;E9E4niBV;E8EnoiBM;IAIQ;IAGJ;E9EgoiBV;E8EvoiBM;IAIQ;IAGJ;E9EooiBV;E8E3oiBM;IAIQ;IAGJ;E9EwoiBV;E8E/oiBM;IAIQ;IAGJ;E9E4oiBV;E8EnpiBM;IAIQ;IAGJ;E9EgpiBV;E8EvpiBM;IAIQ;IAGJ;E9EopiBV;E8E3piBM;IAOI;E9EupiBV;AACF;AoBlqiBI;E0DGI;IAOI;E9E4piBV;E8EnqiBM;IAOI;E9E+piBV;E8EtqiBM;IAOI;E9EkqiBV;E8EzqiBM;IAOI;E9EqqiBV;E8E5qiBM;IAOI;E9EwqiBV;E8E/qiBM;IAOI;E9E2qiBV;E8ElriBM;IAOI;E9E8qiBV;E8ErriBM;IAOI;E9EiriBV;E8ExriBM;IAOI;E9EoriBV;E8E3riBM;IAOI;E9EuriBV;E8E9riBM;IAOI;E9E0riBV;E8EjsiBM;IAOI;E9E6riBV;E8EpsiBM;IAOI;E9EgsiBV;E8EvsiBM;IAOI;E9EmsiBV;E8E1siBM;IAOI;E9EssiBV;E8E7siBM;IAOI;E9EysiBV;E8EhtiBM;IAOI;E9E4siBV;E8EntiBM;IAOI;E9E+siBV;E8EttiBM;IAOI;E9EktiBV;E8EztiBM;IAOI;E9EqtiBV;E8E5tiBM;IAOI;E9EwtiBV;E8E/tiBM;IAOI;E9E2tiBV;E8EluiBM;IAOI;E9E8tiBV;E8EruiBM;IAOI;E9EiuiBV;E8ExuiBM;IAOI;E9EouiBV;E8E3uiBM;IAOI;E9EuuiBV;E8E9uiBM;IAOI;E9E0uiBV;E8EjviBM;IAOI;E9E6uiBV;E8EpviBM;IAOI;E9EgviBV;E8EvviBM;IAOI;E9EmviBV;E8E1viBM;IAOI;E9EsviBV;E8E7viBM;IAOI;E9EyviBV;E8EhwiBM;IAOI;E9E4viBV;E8EnwiBM;IAOI;E9E+viBV;E8EtwiBM;IAOI;E9EkwiBV;E8EzwiBM;IAOI;E9EqwiBV;E8E5wiBM;IAOI;E9EwwiBV;E8E/wiBM;IAOI;E9E2wiBV;E8ElxiBM;IAOI;E9E8wiBV;E8ErxiBM;IAOI;E9EixiBV;E8ExxiBM;IAOI;E9EoxiBV;E8E3xiBM;IAOI;E9EuxiBV;E8E9xiBM;IAOI;E9E0xiBV;E8EjyiBM;IAOI;E9E6xiBV;E8EpyiBM;IAOI;E9EgyiBV;E8EvyiBM;IAOI;E9EmyiBV;E8E1yiBM;IAOI;E9EsyiBV;E8E7yiBM;IAOI;E9EyyiBV;E8EhziBM;IAOI;E9E4yiBV;E8EnziBM;IAOI;E9E+yiBV;E8EtziBM;IAOI;E9EkziBV;E8EzziBM;IAOI;E9EqziBV;E8E5ziBM;IAOI;E9EwziBV;E8E/ziBM;IAOI;E9E2ziBV;E8El0iBM;IAOI;E9E8ziBV;E8Er0iBM;IAOI;E9Ei0iBV;E8Ex0iBM;IAOI;E9Eo0iBV;E8E30iBM;IAOI;E9Eu0iBV;E8E90iBM;IAOI;E9E00iBV;E8Ej1iBM;IAOI;E9E60iBV;E8Ep1iBM;IAOI;E9Eg1iBV;E8Ev1iBM;IAOI;E9Em1iBV;E8E11iBM;IAOI;E9Es1iBV;E8E71iBM;IAOI;E9Ey1iBV;E8Eh2iBM;IAOI;E9E41iBV;E8En2iBM;IAOI;E9E+1iBV;E8Et2iBM;IAOI;E9Ek2iBV;E8Ez2iBM;IAOI;E9Eq2iBV;E8E52iBM;IAOI;E9Ew2iBV;E8E/2iBM;IAOI;E9E22iBV;E8El3iBM;IAOI;E9E82iBV;E8Er3iBM;IAOI;E9Ei3iBV;E8Ex3iBM;IAOI;E9Eo3iBV;E8E33iBM;IAOI;E9Eu3iBV;E8E93iBM;IAOI;E9E03iBV;E8Ej4iBM;IAOI;E9E63iBV;E8Ep4iBM;IAOI;E9Eg4iBV;E8Ev4iBM;IAOI;E9Em4iBV;E8E14iBM;IAOI;E9Es4iBV;E8E74iBM;IAOI;E9Ey4iBV;E8Eh5iBM;IAOI;E9E44iBV;E8En5iBM;IAOI;E9E+4iBV;E8Et5iBM;IAOI;E9Ek5iBV;E8Ez5iBM;IAOI;E9Eq5iBV;E8E55iBM;IAOI;E9Ew5iBV;E8E/5iBM;IAOI;E9E25iBV;E8El6iBM;IAOI;E9E85iBV;E8Er6iBM;IAOI;E9Ei6iBV;E8Ex6iBM;IAOI;E9Eo6iBV;E8E36iBM;IAOI;E9Eu6iBV;E8E96iBM;IAOI;E9E06iBV;E8Ej7iBM;IAOI;E9E66iBV;E8Ep7iBM;IAOI;E9Eg7iBV;E8Ev7iBM;IAOI;E9Em7iBV;E8E17iBM;IAOI;E9Es7iBV;E8E77iBM;IAOI;E9Ey7iBV;E8Eh8iBM;IAOI;E9E47iBV;E8En8iBM;IAOI;E9E+7iBV;E8Et8iBM;IAOI;E9Ek8iBV;E8Ez8iBM;IAOI;E9Eq8iBV;E8E58iBM;IAOI;E9Ew8iBV;E8E/8iBM;IAOI;E9E28iBV;E8El9iBM;IAOI;E9E88iBV;E8Er9iBM;IAOI;E9Ei9iBV;E8Ex9iBM;IAOI;E9Eo9iBV;E8E39iBM;IAOI;E9Eu9iBV;E8E99iBM;IAOI;E9E09iBV;E8Ej+iBM;IAOI;E9E69iBV;E8Ep+iBM;IAOI;E9Eg+iBV;E8Ev+iBM;IAOI;E9Em+iBV;E8E1+iBM;IAOI;E9Es+iBV;E8E7+iBM;IAOI;E9Ey+iBV;E8Eh/iBM;IAOI;E9E4+iBV;E8En/iBM;IAOI;E9E++iBV;E8Et/iBM;IAOI;E9Ek/iBV;E8Ez/iBM;IAOI;E9Eq/iBV;E8E5/iBM;IAOI;E9Ew/iBV;E8E//iBM;IAOI;E9E2/iBV;E8ElgjBM;IAOI;E9E8/iBV;E8ErgjBM;IAOI;E9EigjBV;E8ExgjBM;IAOI;E9EogjBV;E8E3gjBM;IAOI;E9EugjBV;E8E9gjBM;IAOI;IAAA;E9E2gjBV;E8ElhjBM;IAOI;IAAA;E9E+gjBV;E8EthjBM;IAOI;IAAA;E9EmhjBV;E8E1hjBM;IAOI;IAAA;E9EuhjBV;E8E9hjBM;IAOI;IAAA;E9E2hjBV;E8ElijBM;IAOI;IAAA;E9E+hjBV;E8EtijBM;IAOI;IAAA;E9EmijBV;E8E1ijBM;IAOI;IAAA;E9EuijBV;E8E9ijBM;IAOI;IAAA;E9E2ijBV;E8EljjBM;IAOI;IAAA;E9E+ijBV;E8EtjjBM;IAOI;IAAA;E9EmjjBV;E8E1jjBM;IAOI;IAAA;E9EujjBV;E8E9jjBM;IAOI;IAAA;E9E2jjBV;E8ElkjBM;IAOI;IAAA;E9E+jjBV;E8EtkjBM;IAOI;IAAA;E9EmkjBV;E8E1kjBM;IAOI;IAAA;E9EukjBV;E8E9kjBM;IAOI;IAAA;E9E2kjBV;E8ElljBM;IAOI;IAAA;E9E+kjBV;E8EtljBM;IAOI;IAAA;E9EmljBV;E8E1ljBM;IAOI;IAAA;E9EuljBV;E8E9ljBM;IAOI;IAAA;E9E2ljBV;E8ElmjBM;IAOI;IAAA;E9E+ljBV;E8EtmjBM;IAOI;IAAA;E9EmmjBV;E8E1mjBM;IAOI;IAAA;E9EumjBV;E8E9mjBM;IAOI;IAAA;E9E2mjBV;E8ElnjBM;IAOI;IAAA;E9E+mjBV;E8EtnjBM;IAOI;IAAA;E9EmnjBV;E8E1njBM;IAOI;IAAA;E9EunjBV;E8E9njBM;IAOI;E9E0njBV;E8EjojBM;IAOI;E9E6njBV;E8EpojBM;IAOI;E9EgojBV;E8EvojBM;IAOI;E9EmojBV;E8E1ojBM;IAOI;E9EsojBV;E8E7ojBM;IAOI;E9EyojBV;E8EhpjBM;IAOI;E9E4ojBV;E8EnpjBM;IAOI;E9E+ojBV;E8EtpjBM;IAOI;E9EkpjBV;E8EzpjBM;IAOI;E9EqpjBV;E8E5pjBM;IAOI;E9EwpjBV;E8E/pjBM;IAOI;E9E2pjBV;E8ElqjBM;IAOI;E9E8pjBV;E8ErqjBM;IAOI;E9EiqjBV;E8ExqjBM;IAOI;E9EoqjBV;E8E3qjBM;IAOI;E9EuqjBV;E8E9qjBM;IAOI;E9E0qjBV;E8EjrjBM;IAOI;E9E6qjBV;E8EprjBM;IAOI;E9EgrjBV;E8EvrjBM;IAOI;E9EmrjBV;E8E1rjBM;IAOI;E9EsrjBV;E8E7rjBM;IAOI;E9EyrjBV;E8EhsjBM;IAOI;E9E4rjBV;E8EnsjBM;IAOI;E9E+rjBV;E8EtsjBM;IAOI;E9EksjBV;E8EzsjBM;IAOI;E9EqsjBV;E8E5sjBM;IAOI;E9EwsjBV;E8E/sjBM;IAOI;E9E2sjBV;E8EltjBM;IAOI;E9E8sjBV;E8ErtjBM;IAOI;E9EitjBV;E8ExtjBM;IAOI;E9EotjBV;E8E3tjBM;IAOI;E9EutjBV;E8E9tjBM;IAOI;E9E0tjBV;E8EjujBM;IAOI;E9E6tjBV;E8EpujBM;IAOI;E9EgujBV;E8EvujBM;IAOI;E9EmujBV;E8E1ujBM;IAOI;E9EsujBV;E8E7ujBM;IAOI;E9EyujBV;E8EhvjBM;IAOI;E9E4ujBV;E8EnvjBM;IAOI;E9E+ujBV;E8EtvjBM;IAOI;E9EkvjBV;E8EzvjBM;IAOI;E9EqvjBV;E8E5vjBM;IAOI;E9EwvjBV;E8E/vjBM;IAOI;E9E2vjBV;E8ElwjBM;IAOI;E9E8vjBV;E8ErwjBM;IAOI;E9EiwjBV;E8ExwjBM;IAOI;E9EowjBV;E8E3wjBM;IAOI;E9EuwjBV;E8E9wjBM;IAOI;E9E0wjBV;E8EjxjBM;IAOI;E9E6wjBV;E8EpxjBM;IAOI;E9EgxjBV;E8EvxjBM;IAOI;E9EmxjBV;E8E1xjBM;IAOI;E9EsxjBV;E8E7xjBM;IAOI;E9EyxjBV;E8EhyjBM;IAOI;E9E4xjBV;E8EnyjBM;IAOI;E9E+xjBV;E8EtyjBM;IAOI;E9EkyjBV;E8EzyjBM;IAOI;E9EqyjBV;E8E5yjBM;IAOI;E9EwyjBV;E8E/yjBM;IAOI;E9E2yjBV;E8ElzjBM;IAOI;E9E8yjBV;E8ErzjBM;IAOI;E9EizjBV;E8ExzjBM;IAOI;E9EozjBV;E8E3zjBM;IAOI;E9EuzjBV;E8E9zjBM;IAOI;E9E0zjBV;E8Ej0jBM;IAOI;E9E6zjBV;E8Ep0jBM;IAOI;E9Eg0jBV;E8Ev0jBM;IAOI;E9Em0jBV;E8E10jBM;IAOI;IAAA;E9Eu0jBV;E8E90jBM;IAOI;IAAA;E9E20jBV;E8El1jBM;IAOI;IAAA;E9E+0jBV;E8Et1jBM;IAOI;IAAA;E9Em1jBV;E8E11jBM;IAOI;IAAA;E9Eu1jBV;E8E91jBM;IAOI;IAAA;E9E21jBV;E8El2jBM;IAOI;IAAA;E9E+1jBV;E8Et2jBM;IAOI;IAAA;E9Em2jBV;E8E12jBM;IAOI;IAAA;E9Eu2jBV;E8E92jBM;IAOI;IAAA;E9E22jBV;E8El3jBM;IAOI;IAAA;E9E+2jBV;E8Et3jBM;IAOI;IAAA;E9Em3jBV;E8E13jBM;IAOI;IAAA;E9Eu3jBV;E8E93jBM;IAOI;IAAA;E9E23jBV;E8El4jBM;IAOI;IAAA;E9E+3jBV;E8Et4jBM;IAOI;IAAA;E9Em4jBV;E8E14jBM;IAOI;IAAA;E9Eu4jBV;E8E94jBM;IAOI;IAAA;E9E24jBV;E8El5jBM;IAOI;IAAA;E9E+4jBV;E8Et5jBM;IAOI;IAAA;E9Em5jBV;E8E15jBM;IAOI;IAAA;E9Eu5jBV;E8E95jBM;IAOI;IAAA;E9E25jBV;E8El6jBM;IAOI;IAAA;E9E+5jBV;E8Et6jBM;IAOI;IAAA;E9Em6jBV;E8E16jBM;IAOI;E9Es6jBV;E8E76jBM;IAOI;E9Ey6jBV;E8Eh7jBM;IAOI;E9E46jBV;E8En7jBM;IAOI;E9E+6jBV;E8Et7jBM;IAOI;E9Ek7jBV;E8Ez7jBM;IAOI;E9Eq7jBV;E8E57jBM;IAOI;E9Ew7jBV;E8E/7jBM;IAOI;E9E27jBV;E8El8jBM;IAOI;E9E87jBV;E8Er8jBM;IAOI;E9Ei8jBV;E8Ex8jBM;IAOI;E9Eo8jBV;E8E38jBM;IAOI;E9Eu8jBV;E8E98jBM;IAOI;E9E08jBV;E8Ej9jBM;IAOI;E9E68jBV;E8Ep9jBM;IAOI;E9Eg9jBV;E8Ev9jBM;IAOI;E9Em9jBV;E8E19jBM;IAOI;E9Es9jBV;E8E79jBM;IAOI;E9Ey9jBV;E8Eh+jBM;IAOI;E9E49jBV;E8En+jBM;IAOI;E9E+9jBV;E8Et+jBM;IAOI;E9Ek+jBV;E8Ez+jBM;IAOI;E9Eq+jBV;E8E5+jBM;IAOI;E9Ew+jBV;E8E/+jBM;IAOI;E9E2+jBV;E8El/jBM;IAOI;E9E8+jBV;E8Er/jBM;IAOI;E9Ei/jBV;E8Ex/jBM;IAOI;E9Eo/jBV;E8E3/jBM;IAOI;E9Eu/jBV;E8E9/jBM;IAOI;E9E0/jBV;E8EjgkBM;IAOI;E9E6/jBV;E8EpgkBM;IAOI;E9EggkBV;E8EvgkBM;IAOI;E9EmgkBV;E8E1gkBM;IAOI;E9EsgkBV;E8E7gkBM;IAOI;E9EygkBV;E8EhhkBM;IAOI;E9E4gkBV;E8EnhkBM;IAOI;E9E+gkBV;E8EthkBM;IAOI;E9EkhkBV;E8EzhkBM;IAOI;E9EqhkBV;E8E5hkBM;IAOI;E9EwhkBV;E8E/hkBM;IAOI;E9E2hkBV;E8ElikBM;IAOI;E9E8hkBV;E8ErikBM;IAOI;E9EiikBV;E8ExikBM;IAOI;E9EoikBV;E8E3ikBM;IAOI;E9EuikBV;E8E9ikBM;IAOI;E9E0ikBV;E8EjjkBM;IAOI;E9E6ikBV;E8EpjkBM;IAOI;E9EgjkBV;E8EvjkBM;IAOI;E9EmjkBV;E8E1jkBM;IAOI;E9EsjkBV;E8E7jkBM;IAOI;E9EyjkBV;E8EhkkBM;IAOI;E9E4jkBV;E8EnkkBM;IAOI;E9E+jkBV;E8EtkkBM;IAOI;E9EkkkBV;E8EzkkBM;IAOI;E9EqkkBV;E8E5kkBM;IAOI;E9EwkkBV;E8E/kkBM;IAOI;E9E2kkBV;E8EllkBM;IAOI;E9E8kkBV;E8ErlkBM;IAOI;E9EilkBV;E8ExlkBM;IAOI;E9EolkBV;E8E3lkBM;IAOI;E9EulkBV;E8E9lkBM;IAOI;E9E0lkBV;E8EjmkBM;IAOI;IAAA;E9E8lkBV;E8ErmkBM;IAOI;IAAA;E9EkmkBV;E8EzmkBM;IAOI;IAAA;E9EsmkBV;E8E7mkBM;IAOI;IAAA;E9E0mkBV;E8EjnkBM;IAOI;IAAA;E9E8mkBV;E8ErnkBM;IAOI;IAAA;E9EknkBV;E8EznkBM;IAOI;IAAA;E9EsnkBV;E8E7nkBM;IAOI;IAAA;E9E0nkBV;E8EjokBM;IAOI;IAAA;E9E8nkBV;E8ErokBM;IAOI;IAAA;E9EkokBV;E8EzokBM;IAOI;IAAA;E9EsokBV;E8E7okBM;IAOI;IAAA;E9E0okBV;E8EjpkBM;IAOI;IAAA;E9E8okBV;E8ErpkBM;IAOI;IAAA;E9EkpkBV;E8EzpkBM;IAOI;IAAA;E9EspkBV;E8E7pkBM;IAOI;IAAA;E9E0pkBV;E8EjqkBM;IAOI;IAAA;E9E8pkBV;E8ErqkBM;IAOI;IAAA;E9EkqkBV;E8EzqkBM;IAOI;IAAA;E9EsqkBV;E8E7qkBM;IAOI;IAAA;E9E0qkBV;E8EjrkBM;IAOI;IAAA;E9E8qkBV;E8ErrkBM;IAOI;IAAA;E9EkrkBV;E8EzrkBM;IAOI;IAAA;E9EsrkBV;E8E7rkBM;IAOI;IAAA;E9E0rkBV;E8EjskBM;IAOI;IAAA;E9E8rkBV;E8ErskBM;IAOI;IAAA;E9EkskBV;E8EzskBM;IAOI;E9EqskBV;E8E5skBM;IAOI;E9EwskBV;E8E/skBM;IAOI;E9E2skBV;E8EltkBM;IAOI;E9E8skBV;E8ErtkBM;IAOI;E9EitkBV;E8ExtkBM;IAOI;E9EotkBV;E8E3tkBM;IAOI;E9EutkBV;E8E9tkBM;IAOI;E9E0tkBV;E8EjukBM;IAOI;E9E6tkBV;E8EpukBM;IAOI;E9EgukBV;E8EvukBM;IAOI;E9EmukBV;E8E1ukBM;IAOI;E9EsukBV;E8E7ukBM;IAOI;E9EyukBV;E8EhvkBM;IAOI;E9E4ukBV;E8EnvkBM;IAOI;E9E+ukBV;E8EtvkBM;IAOI;E9EkvkBV;E8EzvkBM;IAOI;E9EqvkBV;E8E5vkBM;IAOI;E9EwvkBV;E8E/vkBM;IAOI;E9E2vkBV;E8ElwkBM;IAOI;E9E8vkBV;E8ErwkBM;IAOI;E9EiwkBV;E8ExwkBM;IAOI;E9EowkBV;E8E3wkBM;IAOI;E9EuwkBV;E8E9wkBM;IAOI;E9E0wkBV;E8EjxkBM;IAOI;E9E6wkBV;E8EpxkBM;IAOI;E9EgxkBV;E8EvxkBM;IAOI;E9EmxkBV;E8E1xkBM;IAOI;E9EsxkBV;E8E7xkBM;IAOI;E9EyxkBV;E8EhykBM;IAOI;E9E4xkBV;E8EnykBM;IAOI;E9E+xkBV;E8EtykBM;IAOI;E9EkykBV;E8EzykBM;IAOI;E9EqykBV;E8E5ykBM;IAOI;E9EwykBV;E8E/ykBM;IAOI;E9E2ykBV;E8ElzkBM;IAOI;E9E8ykBV;E8ErzkBM;IAOI;E9EizkBV;E8ExzkBM;IAOI;E9EozkBV;E8E3zkBM;IAOI;E9EuzkBV;E8E9zkBM;IAOI;E9E0zkBV;E8Ej0kBM;IAOI;E9E6zkBV;E8Ep0kBM;IAOI;E9Eg0kBV;E8Ev0kBM;IAOI;E9Em0kBV;E8E10kBM;IAOI;E9Es0kBV;E8E70kBM;IAOI;E9Ey0kBV;E8Eh1kBM;IAOI;E9E40kBV;E8En1kBM;IAOI;E9E+0kBV;E8Et1kBM;IAOI;E9Ek1kBV;E8Ez1kBM;IAOI;E9Eq1kBV;E8E51kBM;IAOI;E9Ew1kBV;E8E/1kBM;IAOI;E9E21kBV;E8El2kBM;IAOI;E9E81kBV;E8Er2kBM;IAOI;E9Ei2kBV;E8Ex2kBM;IAOI;E9Eo2kBV;E8E32kBM;IAOI;E9Eu2kBV;E8E92kBM;IAOI;E9E02kBV;E8Ej3kBM;IAOI;E9E62kBV;E8Ep3kBM;IAOI;E9Eg3kBV;E8Ev3kBM;IAOI;E9Em3kBV;E8E13kBM;IAOI;E9Es3kBV;E8E73kBM;IAOI;E9Ey3kBV;E8Eh4kBM;IAOI;E9E43kBV;E8En4kBM;IAOI;E9E+3kBV;E8Et4kBM;IAOI;E9Ek4kBV;E8Ez4kBM;IAOI;E9Eq4kBV;E8E54kBM;IAOI;E9Ew4kBV;E8E/4kBM;IAOI;E9E24kBV;E8El5kBM;IAOI;E9E84kBV;E8Er5kBM;IAOI;E9Ei5kBV;E8Ex5kBM;IAOI;E9Eo5kBV;E8E35kBM;IAOI;E9Eu5kBV;E8E95kBM;IAOI;E9E05kBV;E8Ej6kBM;IAOI;E9E65kBV;E8Ep6kBM;IAOI;E9Eg6kBV;E8Ev6kBM;IAOI;E9Em6kBV;E8E16kBM;IAOI;E9Es6kBV;E8E76kBM;IAOI;E9Ey6kBV;E8Eh7kBM;IAOI;E9E46kBV;E8En7kBM;IAOI;E9E+6kBV;E8Et7kBM;IAOI;E9Ek7kBV;E8Ez7kBM;IAOI;E9Eq7kBV;E8E57kBM;IAOI;E9Ew7kBV;E8E/7kBM;IAOI;E9E27kBV;E8El8kBM;IAOI;E9E87kBV;E8Er8kBM;IAOI;E9Ei8kBV;E8Ex8kBM;IAOI;E9Eo8kBV;E8E38kBM;IAOI;E9Eu8kBV;E8E98kBM;IAOI;E9E08kBV;E8Ej9kBM;IAOI;E9E68kBV;E8Ep9kBM;IAOI;E9Eg9kBV;E8Ev9kBM;IAOI;E9Em9kBV;E8E19kBM;IAOI;E9Es9kBV;E8E79kBM;IAOI;E9Ey9kBV;E8Eh+kBM;IAOI;E9E49kBV;E8En+kBM;IAOI;E9E+9kBV;E8Et+kBM;IAOI;E9Ek+kBV;E8Ez+kBM;IAOI;E9Eq+kBV;E8E5+kBM;IAOI;E9Ew+kBV;E8E/+kBM;IAOI;E9E2+kBV;E8El/kBM;IAOI;E9E8+kBV;E8Er/kBM;IAOI;E9Ei/kBV;E8Ex/kBM;IAOI;E9Eo/kBV;E8E3/kBM;IAOI;E9Eu/kBV;E8E9/kBM;IAOI;E9E0/kBV;E8EjglBM;IAOI;E9E6/kBV;E8EpglBM;IAOI;IAAA;E9EiglBV;E8ExglBM;IAOI;IAAA;E9EqglBV;E8E5glBM;IAOI;IAAA;E9EyglBV;E8EhhlBM;IAOI;IAAA;E9E6glBV;E8EphlBM;IAOI;IAAA;E9EihlBV;E8ExhlBM;IAOI;IAAA;E9EqhlBV;E8E5hlBM;IAOI;IAAA;E9EyhlBV;E8EhilBM;IAOI;IAAA;E9E6hlBV;E8EpilBM;IAOI;IAAA;E9EiilBV;E8ExilBM;IAOI;IAAA;E9EqilBV;E8E5ilBM;IAOI;IAAA;E9EyilBV;E8EhjlBM;IAOI;IAAA;E9E6ilBV;E8EpjlBM;IAOI;E9EgjlBV;E8EvjlBM;IAOI;E9EmjlBV;E8E1jlBM;IAOI;E9EsjlBV;E8E7jlBM;IAOI;E9EyjlBV;E8EhklBM;IAOI;IAAA;E9E6jlBV;E8EpklBM;IAOI;IAAA;E9EiklBV;E8ExklBM;IAOI;IAAA;E9EqklBV;E8E5klBM;IAOI;IAAA;E9EyklBV;E8EhllBM;IAIQ;IAGJ;E9E6klBV;E8EpllBM;IAIQ;IAGJ;E9EillBV;E8ExllBM;IAIQ;IAGJ;E9EqllBV;E8E5llBM;IAIQ;IAGJ;E9EyllBV;E8EhmlBM;IAIQ;IAGJ;E9E6llBV;E8EpmlBM;IAIQ;IAGJ;E9EimlBV;E8ExmlBM;IAIQ;IAGJ;E9EqmlBV;E8E5mlBM;IAIQ;IAGJ;E9EymlBV;E8EhnlBM;IAIQ;IAGJ;E9E6mlBV;E8EpnlBM;IAIQ;IAGJ;E9EinlBV;E8ExnlBM;IAIQ;IAGJ;E9EqnlBV;E8E5nlBM;IAIQ;IAGJ;E9EynlBV;E8EholBM;IAIQ;IAGJ;E9E6nlBV;E8EpolBM;IAIQ;IAGJ;E9EiolBV;E8ExolBM;IAIQ;IAGJ;E9EqolBV;E8E5olBM;IAIQ;IAGJ;E9EyolBV;E8EhplBM;IAIQ;IAGJ;E9E6olBV;E8EpplBM;IAIQ;IAGJ;E9EiplBV;E8ExplBM;IAIQ;IAGJ;E9EqplBV;E8E5plBM;IAIQ;IAGJ;E9EyplBV;E8EhqlBM;IAIQ;IAGJ;E9E6plBV;E8EpqlBM;IAIQ;IAGJ;E9EiqlBV;E8ExqlBM;IAIQ;IAGJ;E9EqqlBV;E8E5qlBM;IAIQ;IAGJ;E9EyqlBV;E8EhrlBM;IAIQ;IAGJ;E9E6qlBV;E8EprlBM;IAIQ;IAGJ;E9EirlBV;E8ExrlBM;IAOI;E9EorlBV;AACF;A+ExtlBA;ED4BQ;IAOI;E9EyrlBV;E8EhslBM;IAOI;E9E4rlBV;E8EnslBM;IAOI;E9E+rlBV;E8EtslBM;IAOI;E9EkslBV;E8EzslBM;IAOI;E9EqslBV;E8E5slBM;IAOI;E9EwslBV;E8E/slBM;IAOI;E9E2slBV;E8EltlBM;IAOI;E9E8slBV;E8ErtlBM;IAOI;E9EitlBV;E8ExtlBM;IAOI;E9EotlBV;E8E3tlBM;IAOI;E9EutlBV;AACF;AAlwlBA;;gDAAA;AgF/BA;;gDAAA;AAGA;EACE;EACA;AhFsylBF;;AgFnylBA;EACE;EACA,WpETM;AZ+ylBR;;AgFnylBA;EACE;AhFsylBF;;AgFnylBA;EACE;EACA;EACA;AhFsylBF;;AgFnylBA;;EAEE;EACA;AhFsylBF;;AgFnylBA;EACE;EACA;EACA;AhFsylBF;AoBvwlBI;E4DlCJ;IAMI;IACA;EhFuylBF;AACF;;AgFnylBA;;;;;;;;;;;;;;;;;;EAcE,4K/E4FuB;AD8slBzB;;AgFvylBA;EACE;EACA;AhF0ylBF;;AgFvylBA;EACE,gB/EmIqB;ADuqlBvB;;AgFvylBA;EACE;EACA;AhF0ylBF;;AgFvylBA;;;;EAIE,mB/E+Ga;AD2rlBf;;AgFvylBA;;;;EAIE;AhF0ylBF;;AiF73lBA;AACA;AACA;AAEA;EACE;AjF+3lBF;AoBr0lBI;E6DxDA;IACE;EjFg4lBJ;AACF;;AiF33lBE;EACE;AjF83lBJ;AiF53lBE;EACE;EACA;EACA;AjF83lBJ;AiF73lBI;EACE;EACA;EACA;EACA;EACA;EACA,gBrE1BE;EqE2BF;EACA;EACA;EACA;EACA;EACA;EACA;EACA,wChFifkB;EgFhflB,mDhF8FU;ADiylBhB;AiF73lBI;EACE;EACA;AjF+3lBN;AiF93lBM;EACE;EACA;AjFg4lBR;AiF33lBE;EACE,gBhFiJiB;AD4ulBrB;AkF76lBE;EDkDI;EACA;AjF83lBN;;AiF13lBA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;AjF63lBF;AkF37lBE;EDgEE;AjF83lBJ;;AiF33lBA;EACE;EACA;EACA;EACA,gCvE6f4B;EuE5f5B;EACA;EACA;AjF83lBF;AiF73lBE;EACE;EACA;EACA,sBhFcY;EgFbZ,gCvEqf0B;EuEpf1B;AjF+3lBJ;AiF73lBE;EAEE;EACA;EACA;EACA;EACA;EACA,gCvE2e0B;EuE1e1B,sBhFEY;EgFDZ;AjF83lBJ;AiF53lBE;EACE;AjF83lBJ;AiF53lBE;EACE;AjF83lBJ;;AiF33lBA;EACE,+ChFgVgB;AD8ilBlB;;AiF33lBA;EACE,gBhF2FmB;ADmylBrB;;AiF53lBA;EACE;AjF+3lBF;;AiF33lBA;AACA;AAII;EACE;AjF23lBN;;AiFv3lBA;EACE;EACA;AjF03lBF;;AiFx3lBA;EACE;EACA;AjF23lBF;;AiFx3lBA;EACE;AjF23lBF;;AmFhgmBA;AACA;AACA;AAeE;EAZA;EACA;AnFkgmBF;AkFvgmBE;ECQI;EACA;EACA;AnFkgmBN;;AmF5/lBE;EAZA;EACA;AnF4gmBF;AkFjhmBE;ECQI;EACA;EACA;AnF4gmBN;;AmFtgmBE;EAZA;EACA;AnFshmBF;AkF3hmBE;ECQI;EACA;EACA;AnFshmBN;;AmFhhmBE;EAZA;EACA;AnFgimBF;AkFrimBE;ECQI;EACA;EACA;AnFgimBN;;AmF1hmBE;EAZA;EACA;AnF0imBF;AkF/imBE;ECQI;EACA;EACA;AnF0imBN;;AmFpimBE;EAZA;EACA;AnFojmBF;AkFzjmBE;ECQI;EACA;EACA;AnFojmBN;;AmF9imBE;EAZA;EACA;AnF8jmBF;AkFnkmBE;ECQI;EACA;EACA;AnF8jmBN;;AmFxjmBE;EAZA;EACA;AnFwkmBF;AkF7kmBE;ECQI;EACA;EACA;AnFwkmBN;;AoFnlmBA;;gDAAA;AAGA;EACE;EACA;ApFslmBF;;AoFplmBA;EACE;EACA,gBnF0LqB;AD65lBvB;;AoFrlmBA;EACE,gBnFuLqB;EmFtLrB;ApFwlmBF;;AoFtlmBA;EACE,mCnF8EiB;EmF7EjB,oCnF6EiB;AD4gmBnB;;AoFtlmBA;;gDAAA;AAGA;;;EAGE;ApFylmBF;;AoFvlmBA;;;EAGE;ApF0lmBF;;AqFznmBA;AACA;AACA;AAIE;EAAuB;ArF0nmBzB;AqFznmBE;EACE;ArF2nmBJ;;AqFtnmBE;EACE;ArFynmBJ;;AsFvomBA;;gDAAA;AAIA;;gDAAA;AAKI;EACE;AtFuomBN;AsFromBM;EAGE;AtFqomBR;AsFjomBI;EACE;AtFmomBN;AsF/nmBE;EACE;AtFiomBJ;AsF9nmBI;EAGE;EACA;EACA;EACA;AtF8nmBN;AsFznmBI;EAEE;AtF0nmBN;;AsFrnmBA;;gDAAA;ApF1CE;EACE;EACA;EACA;EACA;AFqqmBJ;AkF5qmBE;EhFWE;EACA;EACA;AFoqmBJ;AElqmBI;EACE;EACA;AFoqmBN;AEjqmBE;EACE;EACA;AFmqmBJ;AEhqmBE;EAIE;EACA;EACA;AF+pmBJ;AE5pmBE;EAEE;EACA;EAGA;AF2pmBJ;;AEhsmBE;EACE;EACA;EACA;EACA;AFmsmBJ;AkF1smBE;EhFWE;EACA;EACA;AFksmBJ;AEhsmBI;EACE;EACA;AFksmBN;AE/rmBE;EACE;EACA;AFismBJ;AE9rmBE;EAIE;EACA;EACA;AF6rmBJ;AE1rmBE;EAEE;EACA;EAGA;AFyrmBJ;;AE9tmBE;EACE;EACA;EACA;EACA;AFiumBJ;AkFxumBE;EhFWE;EACA;EACA;AFgumBJ;AE9tmBI;EACE;EACA;AFgumBN;AE7tmBE;EACE;EACA;AF+tmBJ;AE5tmBE;EAIE;EACA;EACA;AF2tmBJ;AExtmBE;EAEE;EACA;EAGA;AFutmBJ;;AE5vmBE;EACE;EACA;EACA;EACA;AF+vmBJ;AkFtwmBE;EhFWE;EACA;EACA;AF8vmBJ;AE5vmBI;EACE;EACA;AF8vmBN;AE3vmBE;EACE;EACA;AF6vmBJ;AE1vmBE;EAIE;EACA;EACA;AFyvmBJ;AEtvmBE;EAEE;EACA;EAGA;AFqvmBJ;;AE1xmBE;EACE;EACA;EACA;EACA;AF6xmBJ;AkFpymBE;EhFWE;EACA;EACA;AF4xmBJ;AE1xmBI;EACE;EACA;AF4xmBN;AEzxmBE;EACE;EACA;AF2xmBJ;AExxmBE;EAIE;EACA;EACA;AFuxmBJ;AEpxmBE;EAEE;EACA;EAGA;AFmxmBJ;;AExzmBE;EACE;EACA;EACA;EACA;AF2zmBJ;AkFl0mBE;EhFWE;EACA;EACA;AF0zmBJ;AExzmBI;EACE;EACA;AF0zmBN;AEvzmBE;EACE;EACA;AFyzmBJ;AEtzmBE;EAIE;EACA;EACA;AFqzmBJ;AElzmBE;EAEE;EACA;EAGA;AFizmBJ;;AsF9wmBA;;gDAAA;AAGA;EjDlCE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ArCozmBF;;AsF5xmBA;EjDrCE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ArCq0mBF;;AsF1ymBA;EjDxCE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ArCs1mBF;;AsFvzmBA;;gDAAA;AAGA;EACE;AtF0zmBF;;AsFvzmBA;;gDAAA;AAIE;EACE;AtFyzmBJ;AsFtzmBI;EACE;AtFwzmBN;AsFtzmBI;EACE;AtFwzmBN;;AsFjzmBA;EACE;EACA;EAGA;AtFkzmBF;AsFhzmBE;EACE;AtFkzmBJ;AsF/ymBE;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;AtFgzmBJ;AsF7ymBE;EACE;AtF+ymBJ;AsF7ymBE;EACE;AtF+ymBJ;;AsF3ymBA;;;EACE;AtFgzmBF;;AsF9ymBA;EACE;AtFizmBF;;AsF7ymBE;;;;;ErE3II,wCARW;AjBw8mBjB;;AuF98mBA;;gDAAA;AAGA;EACE;EACA;AvFi9mBF;AuFh9mBE;EACE;EACA;EACA;EACA;AvFk9mBJ;;AuF98mBA;;EAEE;EACA;EACA,sBtF2Ec;ADs4mBhB;;AuF/8mBA;EACE;AvFk9mBF;;AuF/8mBA;;EAEE;EACA;EACA;AvFk9mBF;;AuFh9mBA;EACE;AvFm9mBF;;AuFh9mBE;EACE;EACA;AvFm9mBJ;AuFh9mBI;EACE;EACA;AvFk9mBN;;AuF98mBA;;;;;EAKE;AvFi9mBF;;AuF/8mBA;EACE;AvFk9mBF;;AuFh9mBA;EACE,4KtF2FuB;EsF1FvB;AvFm9mBF;;AuFh9mBA;;gDAAA;AAGA;;gDAAA;AAGA;EACE,4KtFgFuB;ADm4mBzB;AuFl9mBE;EACE;EACA;EACA;EACA;EACA;EACA;EACA;AvFo9mBJ;;AuFh9mBA;;gDAAA;AAIE;;EAEE;EACA;EACA;EACA;AvFk9mBJ;AuF/8mBE;EACE;AvFi9mBJ;AuF98mBE;EACE;AvFg9mBJ;;AuF38mBE;EACE;AvF88mBJ;;AwFpjnBA;;gDAAA;AAGA;EACE;EACA;AxFujnBF;AwFtjnBE;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AxFwjnBJ;AwFtjnBE;EACE;EACA;EACA;EACA;EACA;AxFwjnBJ;AwFrjnBI;EACE;AxFujnBN;AwFrjnBI;EACE;AxFujnBN;AwFrjnBI;EACE;AxFujnBN;;AwFljnBA;EACE;AxFqjnBF;;AyF3lnBA;;gDAAA;AAGA;EACE;AzF8lnBF;;AyF3lnBA;;gDAAA;AAGA;EACE;EACA,axFoYc;EwFnYd;AzF8lnBF;;AyF3lnBA;EACE,iCxFwYe;ADstmBjB;;AyF3lnBA;;gDAAA;AAGA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;AzF8lnBF;;AyF3lnBA;;gDAAA;APhCE;EOsCE;AzF4lnBJ;;AyFzlnBA;EACE;AzF4lnBF;;AyFzlnBA;EACE,gC/EshB4B;E+ErhB5B;AzF4lnBF;;AyF1lnBA;EACE,gC/EkhB4B;E+EjhB5B;AzF6lnBF;;AyFrlnBE;;;;;EACE;AzF4lnBJ;;AyFxlnBA;;gDAAA;AAIA;EACE;EACA;AzF0lnBF;AkFhqnBE;EOwEE;EACA;AzF2lnBJ;;AyFvlnBA;;gDAAA;AAIE;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AzFylnBJ;AyFtlnBI;EACE;AzFwlnBN;;AyFnlnBA;AACA;AACA;AAEA;EACE,gC/E6d4B;AVwnmB9B;;AyFnlnBA;EACE;AzFslnBF;;AyFnlnBA;EACE;AzFslnBF;;AyFnlnBA;AACA;AACA;AAGA;EACE;AzFolnBF;;AyFjlnBA;AACA;AACA;AAII;EACE;AzFilnBN;AyF/knBI;EACE;EACA,gBxF4De;EwF3Df,4KxFYmB;ADqknBzB;;AyF5knBA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA,4KxFDuB;EwFEvB;EACA;EACA;AzF+knBF;;AyF5knBA;EACE;AzF+knBF;;AyF7knBA;AACA;AACA;AACA;EACE;EACA;EACA;AzFglnBF;AoBprnBI;EqEiGJ;IAKI,yBxFwhBY;ED0jmBd;AACF;;AyFhlnBA;EACE;EACA;EACA;AzFmlnBF;;AyFhlnBA;AACA;AACA;AAEA;EACE;AzFklnBF;;AyF1knBA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AzF6knBF;;AyF3knBA;EACE;EACA;AzF8knBF;;AyF5knBA;EACE;EACA;EACA;EACA;EACA;AzF+knBF;;AyF7knBA;EACE;EACA;EACA;EACA;AzFglnBF;;AyF9knBA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AzFilnBF;;AyF/knBA;EACE;EACA;AzFklnBF;;AyFhlnBA;EACE;EACA;AzFmlnBF;;AyFjlnBA;EACE;EACA;AzFolnBF;;AyFllnBA;EACE;EACA;AzFqlnBF;;AyFnlnBA;EACE;AzFslnBF;;AyFplnBA;EACE;EACA;EACA;EACA;AzFulnBF;;AyFrlnBA;EACE;EACA;EACA;EACA;EACA;AzFwlnBF;;AyFtlnBA;EACE;EACA;EACA;EACA;EACA;EACA;AzFylnBF;;AyFvlnBA;EACE;AzF0lnBF;;AyFxlnBA;EACE;EACA;EACA;EACA;EACA;AzF2lnBF;;AyFzlnBA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AzF4lnBF;;AyF1lnBA;EACE;AzF6lnBF;;AyF3lnBA;EACE;AzF8lnBF;;AyF5lnBA;EACE;AzF+lnBF;;AyF7lnBA;EACE;AzFgmnBF;;AyF9lnBA;;EAEE;EACA;EACA;EACA;AzFimnBF;;AyF/lnBA;;EAEE;AzFkmnBF;;AyFhmnBA;EACE;EACA;EACA;AzFmmnBF;;AyFjmnBA;EACE;EACA;AzFomnBF;;AyFlmnBA;EACE;EACA;EACA;AzFqmnBF;;AyFnmnBA;EACE;EACA;EACA;AzFsmnBF;;AyFpmnBA;EACE;EACA;EACA;AzFumnBF;;AyFrmnBA;EACE;EACA;AzFwmnBF;;AyFtmnBA;EACE;AzFymnBF;;AyFvmnBA;;EAEE;EACA;EACA;EACA;AzF0mnBF;;AyFxmnBA;EACE;EACA;EACA;EACA;AzF2mnBF;;AyFzmnBA;;EAEE;EACA;AzF4mnBF;;AyF1mnBA;EACE;EACA;AzF6mnBF;;AyF3mnBA;;EAEE;EACA;AzF8mnBF;;AyF5mnBA;EACE;AzF+mnBF;;AyF7mnBA;EACE;IACE;IACA;IACA;EzFgnnBF;EyF9mnBA;IACE;IACA;EzFgnnBF;AACF;AyF9mnBA;EACE;IACE;IACA;EzFgnnBF;EyF9mnBA;IACE;IACA;IACA;EzFgnnBF;AACF;AyF9mnBA;EACE;EACA;EACA;EACA;EACA;EACA;AzFgnnBF;;AyF9mnBA;EACE;EACA;AzFinnBF;;AyF/mnBA;EACE;AzFknnBF;;AyFhnnBA;EACE;AzFmnnBF;;AyFjnnBA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AzFonnBF;;AyFlnnBA;EACE;EACA;EACA;EACA;EACA;AzFqnnBF;;AyFnnnBA;EACE;EACA;EACA;EACA;EACA;AzFsnnBF;;AyFlnnBE;EACE;EACA;AzFqnnBJ;;A0FjjoBA;AACA;AACA;AAEA;EACE;EACA,sB9ELM;E8EMN;EACA;EACA,uBzFqFiB;AD89nBnB;A0FjjoBI;EACE;EACA,gChFwjBwB;AV2/mB9B;A0FljoBM;EACE;A1FojoBR;A0FhjoBE;EACE;A1FkjoBJ;A0FhjoBE;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;A1FkjoBJ;A0FjjoBI;EACE;A1FmjoBN;A0FhjoBE;EACE;EACA;EACA;EACA;EACA,uBzFoDe;AD8/nBnB;A0F9ioBM;EACE;A1FgjoBR;A0F7ioBQ;EACE;A1F+ioBV;A0F7ioBQ;EACE;A1F+ioBV;A0F1ioBM;EACE;A1F4ioBR;A0FzioBI;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;A1F2ioBN;A0FxioBM;EACE;EACA;EACA;EACA,gChFsfsB;EgFrftB;A1F0ioBR;A0FxioBM;EACE;A1F0ioBR;A0FvioBQ;EACE;A1FyioBV;A0FpioBM;EACE;A1FsioBR;A0FlioBM;EACE;A1FoioBR;A0FhioBE;EACE;EACA;EACA;EACA;EACA;EACA;A1FkioBJ;A0FjioBI;EACE;A1FmioBN;A0FjioBI;EACE;EACA;EACA;EACA;EACA;A1FmioBN;A0FjioBI;EACE;EACA;EACA;EACA,uBzF7Ba;ADgkoBnB;A0F/hoBE;EACE;EACA;A1FiioBJ;A0FhioBI;EACE;EACA;EACA,uBzFvCa;ADykoBnB;A0FhioBI;;;;;EACE;A1FsioBN;A0FpioBI;EACE;A1FsioBN;A0FpioBI;EACE,sBzFjDU;EyFkDV;EACA;EACA;EACA;EACA;A1FsioBN;A0FpioBI;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;A1FsioBN;A0FnioBM;EACE;EACA;A1FqioBR;A0FhioBI;EACE;A1FkioBN;A0F/hoBE;EACE;A1FiioBJ;A0FhioBI;EACE;A1FkioBN;;A0F9hoBA;EACE;EACA,sBzF1Fc;EyF2Fd;EAIA;EACA;EACA;A1F8hoBF;A0F5hoBE;EAEE;A1F6hoBJ;;A2F7toBI;EACE;A3FguoBN;A2F7toBE;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;A3F+toBJ;A2F9toBI;EACE;A3FguoBN;AkFlvoBE;ESsBI;A3F+toBN;A2F5toBE;;EAEE;EACA;EACA;EACA;A3F8toBJ;A2F7toBI;;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;A3FguoBN;A2F5toBE;EACE;A3F8toBJ;A2F5toBE;EACE;A3F8toBJ;A2F3toBE;EACE;A3F6toBJ;A2F5toBI;;EAEE;EACA;A3F8toBN;A2F5toBI;EACE;A3F8toBN;A2F5toBI;EACE;A3F8toBN;;A2FztoBA;EACE;A3F4toBF;AoBluoBI;EuEKJ;IAGI;E3F8toBF;AACF;AoBvuoBI;EuEKJ;IAOI;E3F+toBF;AACF;AoB5uoBI;EuEKJ;IAWI;E3FguoBF;AACF;A2F9toBE;EACE;A3FguoBJ;;A2F1toBI;EACE;A3F6toBN;;A2FxtoBE;EACE;A3F2toBJ;A2FztoBI;EACE;A3F2toBN;A2FztoBM;EACE;A3F2toBR;A2FxtoBM;EACE;A3F0toBR;;A2FptoBA;EACE;EACA;EACA;EACA;EACA;A3FutoBF;A2FrtoBE;EACE;A3FutoBJ;A2FrtoBI;EACE;A3FutoBN;;A2FhtoBI;EACE;EACA;A3FmtoBN;A2FjtoBM;EACE;A3FmtoBR;;A4F11oBA;;gDAAA;AAGA;EACE;EACA;A5F61oBF;;A4F11oBE;EACE;A5F61oBJ;;AoBvyoBI;EyE/DJ;IAEI;E7Fy2oBF;AACF;;A6Ft2oBA;EACE;A7Fy2oBF;AoBjzoBI;EyEzDJ;IAGI;E7F22oBF;AACF;;AoBtzoBI;EyEjDJ;IAEI;E7F02oBF;AACF;;A8F33oBA;EACE;EACA;A9F83oBF;A8F73oBE;EACE;EACA;A9F+3oBJ;;A8F33oBE;EACE;EACA;A9F83oBJ;;A8F13oBE;EACE;EACA;A9F63oBJ;;A8Fv3oBI;EACE;A9F03oBN;;A8Fr3oBA;EACE;A9Fw3oBF;;A+Ft5oBA;EACE,uB9F6FiB;E8F5FjB;EACA;EACA;A/Fy5oBF;;AgG55oBE;EACE;AhG+5oBJ;;AgG15oBI;EACE;EACA;AhG65oBN;AgG15oBE;EACE;EACA;AhG45oBJ;AgG15oBE;EAEE;AhG25oBJ;AgGx5oBI;EACE;AhG05oBN;AgGx5oBI;;;EAGE;AhG05oBN;AgGv5oBE;EACE;AhGy5oBJ;AgGx5oBI;EACE;AhG05oBN;AgGv5oBE;EACE;AhGy5oBJ;AgGv5oBE;EACE;EACA;EACA,gCtF2hB0B;AV83nB9B;AgGx5oBI;EACE;AhG05oBN;AgGv5oBE;EACE;EACA;AhGy5oBJ;AgGv5oBE;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,gCtFwgB0B;AVi5nB9B;AkFr9oBE;Ec8DI;AhG05oBN;AgGv5oBE;EACE;AhGy5oBJ;AgGt5oBE;EACE;EACA;EACA;EACA;EACA;EACA;AhGw5oBJ;AgGt5oBE;EACE;AhGw5oBJ;AgGv5oBI;EACE;AhGy5oBN;AgGv5oBI;;EAEE;AhGy5oBN;AgGt5oBE;EACE;AhGw5oBJ;AgGt5oBE;EACE;AhGw5oBJ;AgGt5oBE;EACE;AhGw5oBJ;AgGv5oBI;EACE;AhGy5oBN;AgGv5oBI;EACE;EACA;AhGy5oBN;AkF7/oBE;EcsGM;AhG05oBR;AgGn5oBM;EAEE;EACA;AhGo5oBR;AgGh5oBE;EACE;EACA,+E/FUS;EU9GT;EqFsGA;AhGk5oBJ;AgGj5oBI;EACE,4K/FwBmB;AD23oBzB;AgGj5oBI;EACE;EACA;EACA;AhGm5oBN;AgGh5oBE;EACE;EACA;EACA;EACA,gB/F4DmB;E+F3DnB;ErF5GA;EACA;AX+/oBJ;AgGj5oBE;EACE;EACA;EACA;EACA;AhGm5oBJ;AkFjipBE;EcgJI;EACA;EACA;AhGo5oBN;AgGj5oBE;EACE;AhGm5oBJ;AkFzipBE;EcwJI;AhGo5oBN;AgGj5oBE;EACE;EACA;AhGm5oBJ;AgGl5oBI;;EAEE;AhGo5oBN;AgG94oBI;EACE;AhGg5oBN;AgG54oBI;EACE;AhG84oBN;AgG34oBE;EACE;AhG64oBJ;AgGz4oBI;;EACE;AhG44oBN;AgG14oBI;;EACE;EACA;AhG64oBN;AgG54oBM;;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AhG+4oBR;AgG34oBI;;EACE;EACA;EACA;EACA,uB/F7Ga;AD2/oBnB;AkFxlpBE;;;Ec4MM;AhGi5oBR;AgG94oBI;;EACE;AhGi5oBN;AgG/4oBI;;EACE;AhGk5oBN;AgGj5oBM;;EACE;AhGo5oBR;AgGj5oBI;;EACE;AhGo5oBN;AgGh5oBI;EACE;EACA;AhGk5oBN;AgG/4oBM;EACE;AhGi5oBR;AgG94oBI;EACE;AhGg5oBN;AgG94oBI;EACE;AhGg5oBN;AgG74oBE;EACE;AhG+4oBJ;AgG74oBE;EACE;AhG+4oBJ;;AgG14oBI;EACE;AhG64oBN;AgG34oBM;EACE;AhG64oBR;;AgGx4oBI;EACE;AhG24oBN;AgG14oBM;EACE;AhG44oBR;AgGz4oBI;;;EAEE;EACA;AhG44oBN;AgG14oBI;EACE;AhG44oBN;;AgGj6oBI;EACE;AhGo6oBN;AgGl6oBM;EACE;AhGo6oBR;;AgG/5oBI;EACE;AhGk6oBN;AgGj6oBM;EACE;AhGm6oBR;AgGh6oBI;;;EAEE;EACA;AhGm6oBN;AgGj6oBI;EACE;AhGm6oBN;;AgGx7oBI;EACE;AhG27oBN;AgGz7oBM;EACE;AhG27oBR;;AgGt7oBI;EACE;AhGy7oBN;AgGx7oBM;EACE;AhG07oBR;AgGv7oBI;;;EAEE;EACA;AhG07oBN;AgGx7oBI;EACE;AhG07oBN;;AgG/8oBI;EACE;AhGk9oBN;AgGh9oBM;EACE;AhGk9oBR;;AgG78oBI;EACE;AhGg9oBN;AgG/8oBM;EACE;AhGi9oBR;AgG98oBI;;;EAEE;EACA;AhGi9oBN;AgG/8oBI;EACE;AhGi9oBN;;AgGt+oBI;EACE;AhGy+oBN;AgGv+oBM;EACE;AhGy+oBR;;AgGp+oBI;EACE;AhGu+oBN;AgGt+oBM;EACE;AhGw+oBR;AgGr+oBI;;;EAEE;EACA;AhGw+oBN;AgGt+oBI;EACE;AhGw+oBN;;AgG7/oBI;EACE;AhGggpBN;AgG9/oBM;EACE;AhGggpBR;;AgG3/oBI;EACE;AhG8/oBN;AgG7/oBM;EACE;AhG+/oBR;AgG5/oBI;;;EAEE;EACA;AhG+/oBN;AgG7/oBI;EACE;AhG+/oBN;;AgGphpBI;EACE;AhGuhpBN;AgGrhpBM;EACE;AhGuhpBR;;AgGlhpBI;EACE;AhGqhpBN;AgGphpBM;EACE;AhGshpBR;AgGnhpBI;;;EAEE;EACA;AhGshpBN;AgGphpBI;EACE;AhGshpBN;;AgG3ipBI;EACE;AhG8ipBN;AgG5ipBM;EACE;AhG8ipBR;;AgGzipBI;EACE;AhG4ipBN;AgG3ipBM;EACE;AhG6ipBR;AgG1ipBI;;;EAEE;EACA;AhG6ipBN;AgG3ipBI;EACE;AhG6ipBN;;AgGzipBA;EACE;AhG4ipBF;;AgGzipBE;EAEE;AhG2ipBJ;AgGzipBE;EACE;EACA;AhG2ipBJ;AgG1ipBI;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AhG4ipBN;AgG1ipBI;EACE;EACA;EACA;EACA;EACA;EACA;EACA;AhG4ipBN;;AgGtipBI;EACE;ECvQJ;AjGizpBF;AiG/ypBE;EACE;EACA;EACA;EACA;EACA;AjGizpBJ;AiG/ypBE;EACE;EACA;EACA,4ChG0sBW;ADumoBf;AiG7ypBI;EAEE;AjG8ypBN;AgGpjpBI;EACE;ECrPJ;EACA;EACA;AjG4ypBF;;AoBpzpBI;E4EmQA;IACE;EhGqjpBJ;EgGljpBI;;IAEE;EhGojpBN;EgGjjpBE;IACE;IACA;IACA;EhGmjpBJ;EgGjjpBE;IACE;EhGmjpBJ;AACF;AgG/ipBE;EACE;AhGijpBJ;;AgG5ipBI;EACE;AhG+ipBN;AgG9ipBM;EACE;EACA;EACA;EACA;EACA;AhGgjpBR;;AgG1ipBA;;EAEE;AhG6ipBF;;AgGxipBA;;;EAGE;AhG2ipBF;;AgGzipBA;;gDAAA;AAKE;EACE;AhG0ipBJ;AgGvipBI;EACE;AhGyipBN;AgGvipBI;EACE;AhGyipBN;AgGvipBI;;EAEE;AhGyipBN;AgGripBM;EACE;AhGuipBR;AgGnipBI;EACE;AhGqipBN;AgGlipBI;EACE;AhGoipBN;AgGjipBI;EACE;EACA;AhGmipBN;AoB73pBI;E4E8VE;IACE;IACA;EhGkipBN;EgGjipBM;IACE;EhGmipBR;AACF;AgG/hpBI;EACE;EACA;AhGiipBN;AgG9hpBI;EACE;EACA,gB/F1OiB;AD0wpBvB;;AkG78pBA;EACE;EACA;EACA,8KjGqJiB;AD2zpBnB;AkG98pBE;EACE;EACA;EACA;EACA;AlGg9pBJ;AkG98pBI;EACE;AlGg9pBN;AkG78pBI;EACE;EACA;EACA;AlG+8pBN;AkG78pBM;EACE;EACA;AlG+8pBR;AkG78pBQ;EACE;AlG+8pBV;AkGz8pBE;EACE;AlG28pBJ;AkGx8pBE;EACE;AlG08pBJ;AkGv8pBM;EACE;AlGy8pBR;AkGr8pBM;EACE;EACA;AlGu8pBR;AkGp8pBI;EACE;EACA;EACA;AlGs8pBN;AkGj8pBI;EACE;AlGm8pBN;AkGj8pBI;EACE;EACA;EACA;EACA,gBjGiIe;ADk0pBrB;AkGh8pBM;EACE;EAMA;AlG67pBR;AkGl8pBQ;EACE;EACA;AlGo8pBV;AkG97pBI;EACE;EACA;EDlCJ;EAwBA;EACA;EACA;AjG48pBF;AiGp+pBE;EACE;EACA;EACA;EACA;EACA;AjGs+pBJ;AiGp+pBE;EACE;EACA;EACA,4ChG0sBW;AD4xoBf;AiGl+pBI;EAEE;AjGm+pBN;AkG98pBU;EACE;AlGg9pBZ;AkG78pBQ;EACE;AlG+8pBV;AkGz8pBM;EACE;EACA,gBjGgGa;AD22pBrB;AkGx8pBI;EACE;EACA;EACA;AlG08pBN;AoBr+pBI;E8EwBA;IAKI;ElG48pBN;AACF;AkG18pBI;EACE;AlG48pBN;AkG38pBM;EACE;EACA;AlG68pBR;AkG38pBM;EACE;AlG68pBR;AkG18pBI;EACE;EACA,gBjGyEe;ADm4pBrB;AkG18pBI;EACE;AlG48pBN;AoBxgqBI;E8E2DA;IAGI;ElG88pBN;AACF;AkG38pBQ;;;EAIE;EACA;AlG48pBV;AkGz8pBM;EACE;AlG28pBR;AkGz8pBM;EACE;EACA;AlG28pBR;AkGz8pBM;EACE;EACA,gBjGkDW;ADy5pBnB;AoB9hqBI;E8EiFE;IAII;ElG68pBR;AACF;AkG38pBM;EACE;AlG68pBR;AkG38pBM;EACE;EACA,gBjGoCY;ADy6pBpB;AkG38pBM;EAEE;EACA;AlG48pBR;AkG18pBM;EACE;EACA;AlG48pBR;AkG18pBM;EACE;EACA;AlG48pBR;AkGz8pBQ;;;EAKE;AlGy8pBV;AkGp8pBE;EACE;AlGs8pBJ;AkGp8pBE;EACE;EACA;AlGs8pBJ;AkGn8pBI;EACE;AlGq8pBN;;AmGnoqBE;EACE;EACA,qCzFy5BoC;EyFx5BpC;EACA;EACA;EACA;AnGsoqBJ;AmGpoqBI;EACE;EACA;AnGsoqBN;;AmGjoqBA;EACE;EACA;EAMA;EACA;ElFXI,0CARW;AjBmpqBjB;AmGtoqBE;EACE;EACA;EACA;AnGwoqBJ;AmGloqBE;EACE;AnGooqBJ;AmGjoqBE;EACE,mDlGgUsB;EkG/TtB;AnGmoqBJ;AkFpqqBE;EiBoCE;AnGmoqBJ;AmGjoqBE;EACE;AnGmoqBJ;AmGhoqBI;EACE;EACA;AnGkoqBN;AmG/nqBE;EACE,sBlG4CY;EkG3CZ;AnGioqBJ;AmGhoqBI;EAEE;AnGioqBN;AmGhoqBM;EACE;EACA;AnGkoqBR;AmG9nqBE;EACE;EACA;AnGgoqBJ;AmG9nqBE;EACE;AnGgoqBJ;;AmG7nqBA;EACE;EACA;AnGgoqBF;AmG9nqBE;EACE,qBlGxCQ;EkGyCR,sBlGzCQ;EkG0CR;EACA;AnGgoqBJ;;AmG5nqBA;EACE;AnG+nqBF;;AmG1nqBI;EACE;AnG6nqBN;;AmGxnqBA;EACE;AnG2nqBF;;AmGznqBA;EACE;EACA;AnG4nqBF;;AoG7tqBA;;gDAAA;AAKE;EACE;EACA;ApG8tqBJ;AoG5tqBI;EACE;EACA;EACA,iC1Fk5BkC;E0Fj5BlC;EACA;EACA,+B1F84BkC;E0F74BlC,gC1F64BkC;E0F54BlC;EACA;EACA;EACA;ApG8tqBN;;AoGxtqBE;EACE;ApG2tqBJ;;AoGxtqBA;;;EAGE;EACA;ApG2tqBF;;AoGztqBA;EACE;ApG4tqBF;;AoG1tqBA;;;;EAIE;ApG6tqBF;;AoG3tqBA;EACE;ApG8tqBF;;AoG5tqBA;EAIE;EACA;EACA,sBnGuCc;ADqrqBhB;;AoG1tqBA;EACE;EACA;ApG6tqBF;;AoG3tqBA;EACE;ApG8tqBF;;AoG5tqBA;EACE;ApG+tqBF;;AoG7tqBA;;;;EAIE;ApGguqBF;;AoG9tqBA;EACE;ApGiuqBF;;AoG/tqBA;;EAEE;ApGkuqBF;;AoGhuqBA;EACE;ApGmuqBF;;AoGjuqBA;EACE;ApGouqBF;;AoGluqBA;;EAME;ApGiuqBF;;AoG/tqBA;EACE;ApGkuqBF;;AoGhuqBA;EAEE;ApGkuqBF;;AoGhuqBA;EACE;ApGmuqBF;;AoG/tqBE;EACE;ApGkuqBJ;;AoG7tqBE;EACE;ApGguqBJ;AoG9tqBE;EACE;EACA;ApGguqBJ;AoG/tqBI;EACE;EACA;ApGiuqBN;AoG9tqBE;EACE;ApGguqBJ;AoG/tqBI;EAIE;EACA;EACA;ApG8tqBN;AoGnuqBM;EACE;ApGquqBR;AoG9tqBQ;EACE;ApGguqBV;AoG3tqBE;;EAEE;EACA;EACA;ApG6tqBJ;AoG5tqBI;;;EAEE;EACA;ApG+tqBN;AoGltqBE;EACE;ApGotqBJ;AoGltqBE;;;;EAIE;ApGotqBJ;AoGltqBE;EACE;ApGotqBJ;;AoGjtqBA;;EAEE;EACA;EACA;ApGotqBF;;AoGhtqBI;EACE;ApGmtqBN;AoGjtqBI;EACE;ApGmtqBN;AoGhtqBE;EACE;ApGktqBJ;AoGhtqBE;EACE;ApGktqBJ;AoGhtqBE;EACE;ApGktqBJ;;AoG/sqBA;;;;;EAKE;EACA;EACA;EACA;EACA;ApGktqBF;;AoG/sqBA;EACE;EACA;ApGktqBF;;AoGhtqBA;EACE;ApGmtqBF;AoGltqBE;EACE;EACA;ApGotqBJ;;AoGjtqBA;EACE;ApGotqBF;;AoGltqBA;EACE;ApGqtqBF;;AoGntqBA;EACE;EACA;ApGstqBF;;AoGptqBA;EACE;ApGutqBF;;AoGltqBI;EACE;EACA;EACA;ApGqtqBN;;AqGr8qBA;EACE;EACA;EACA;EACA;EACA,mBpGsLa;ADkxqBf;AqGv8qBE;EACE;ArGy8qBJ;AqGv8qBE;EACE;ArGy8qBJ;;AqGr8qBA;EACE;ArGw8qBF;;AqGt8qBA;EACE;EACA;ArGy8qBF;;AqGv8qBA;EACE;EACA;ArG08qBF;;AqGx8qBA;EACE;EACA;ArG28qBF;;AqGz8qBA;EACE;ArG48qBF;;AqGz8qBA;EACE;IACE;ErG48qBF;EqG18qBA;IACE;ErG48qBF;AACF;AqG18qBA;EACE;ArG48qBF;;AqGz8qBA;EACE;IACE;ErG48qBF;EqG18qBA;IACE;ErG48qBF;EqG18qBA;IACE;ErG48qBF;AACF;AqG18qBA;EACE;ArG48qBF;;AqGz8qBA;EACE;ArG48qBF;;AqGz8qBA;EACE;ArG48qBF;;AsG7grBA;AACA;AACA;AAEA;EACE;AtG+grBF;AsG7grBI;EAEE;EACA;EACA;EACA;AtG8grBN;AsG5grBI;EACE;AtG8grBN;;AsG1grBA;EACE;AtG6grBF;AsG5grBE;EACE;EACA;EACA;AtG8grBJ;;AsG3grBA;EACE;AtG8grBF;AsG7grBE;EACE;EACA;EACA;AtG+grBJ;;AsG5grBA;EACE;AtG+grBF;AsG9grBE;EACE;EACA;EACA;AtGghrBJ;;AsG7grBA;;EAEE;EACA,4CrGqFc;EqGpFd,sBrG8Cc;ADk+qBhB;;AsG9grBA;EACE;EACA;AtGihrBF;;AsG1grBA;EACE;AtG6grBF;;AsG3grBA;;EAEE;AtG8grBF;;AsG1grBE;EACE,oBrGnCQ;ADgjrBZ;;AsGzgrBE;EACE,qBrGxCQ;ADojrBZ;;AsGxgrBE;EACE,mBrG7CQ;ADwjrBZ;;AsGvgrBE;EACE,sBrGlDQ;AD4jrBZ;;AuG7lrBA;EACE;EACA;EACA;AvGgmrBF;AuG/lrBE;EACI;AvGimrBN;;AuG3lrBE;EACE;EACA;EACA;AvG8lrBJ;;AuG1lrBE;EACE;EACA;AvG6lrBJ;;AwGjnrBA;;;EAGE;EACA;AxGonrBF;;AwGjnrBA;;;;EAIE;AxGonrBF;;AwGjnrBA;EACE;EACA;AxGonrBF;AwGlnrBE;EACE;EACA;EACA;EACA;AxGonrBJ;;AyG1orBA;EACE;EACA;EACA;AzG6orBF;AyG5orBE;EACE,W/F8gC8B;E+F7gC9B,c/F8gC8B;E+F7gC9B;EACA;EACA,gDxG2He;EwG1Hf;AzG8orBJ;AyG3orBE;EACE;EACA;EACA,gB7FfI;E6FgBJ;EACA,sB/FihB0B;E+FhhB1B,mJxGmSoB;EwGlSpB;EACA;EACA;EACA;AzG6orBJ;AyG3orBI;EACE;AzG6orBN;AyG1orBI;EACE;AzG4orBN;AyG1orBI;EACE;AzG4orBN;AyG1orBI;EAEE;EACA;EACA,mB7FnCK;E6FoCL;EACA;AzG2orBN;AyGxorBI;EACE,mB7F3CK;AZqrrBX;AyGvorBI;EACE;AzGyorBN;AyGtorBI;EAIE;EACA;EACA;EACA;EACA,gB7F3DE;E6F4DF;EACA,0BxG8fc;EwG7fd,W7FlDE;E6FmDF,gBxGiIe;EU9KjB;AXmrrBJ;AyGjprBM;EACE;AzGmprBR;AyGtorBM;EACE;EACA,W7FpEA;AZ4srBR;;A0G7srBA;;gDAAA;AAIE;;;;EAIE,qBzGyBQ;ADsrrBZ;A0G7srBE;;;;EAIE,sBzGmBQ;AD4rrBZ;A0G7srBE;;;EAGE;A1G+srBJ;;A0G5srBA;EACE;EACA;A1G+srBF;;A0G7srBA;EACE,gBzGwKqB;ADwirBvB;;A0G7srBE;EAEE;A1G+srBJ;;A0G5srBA;EACE;A1G+srBF;A0G9srBE;EACE;A1GgtrBJ;;A2GtvrBA;;gDAAA;AAIA;EACE;A3GwvrBF;;A2GrvrBA;;gDAAA;AAGA;EACE;EACA;EACA;EACA;A3GwvrBF;;A2GpvrBA;;gDAAA;AAGA;EAAM;A3GwvrBN;;A2GvvrBA;EAAO;A3G2vrBP;;A2GvvrBA;;gDAAA;AAGA;EAAiB;A3G2vrBjB;;A2GxvrBA;EACE;EACA;EACA;A3G2vrBF;A2G1vrBE;EACE;EACA;EACA;EACA;EACA;EACA;EACA;A3G4vrBJ;;A2GxvrBA;;gDAAA;AAGA;EACE;EACA;A3G2vrBF;A2G1vrBE;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;A3G4vrBJ;;A2GvvrBE;EACE;EACA,gB1G4HiB;E0G3HjB;A3G0vrBJ;;A4Gh0rBA;;gDAAA;AAGA;EAAkB;A5Go0rBlB;;A4Gn0rBA;EAAiB;A5Gu0rBjB;;A6G10rBA;AACA;AACA;AAEA;EACE;A7G40rBF;;A6G10rBA;EACE;A7G60rBF;;A6G30rBA;EACE;A7G80rBF;;A6G10rBA;;gDAAA;AAIA;EACE,4K5G8HuB;AD8srBzB;;A6G10rBA;EACE,8K5GgIiB;AD6srBnB;;A6G10rBA;;gDAAA;AAGA;EACE;A7G60rBF;AoB7yrBI;EyFjCJ;IAGI;E7G+0rBF;AACF;;A6G50rBA;;gDAAA;AAGA;EACE;A7G+0rBF;;A8Gx3rBA;;gDAAA;AAGA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;A9G23rBF;A8Gz3rBE;EACE;EACA;A9G23rBJ;A8Gx3rBE;EACE;EACA;EACA;EACA;EACA;EACA;EACA;A9G03rBJ;A8Gx3rBE;EACE;A9G03rBJ;A8Gx3rBE;EACE;A9G03rBJ;A8Gx3rBE;EACE;A9G03rBJ;A8Gv3rBE;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;A9Gy3rBJ;A8Gt3rBE;EACE;EACA;EACA;EACA;EACA;A9Gw3rBJ;;A8Gp3rBA;EACE;A9Gu3rBF;;A8Gp3rBA;EACE;A9Gu3rBF;;A8Gp3rBA;EACE;EACA;EACA;EACA;A9Gu3rBF;A8Gr3rBE;EACE;EACA;EACA;EACA;A9Gu3rBJ;;A8Gn3rBA;;gDAAA;AAGA;EACE;EACA;A9Gs3rBF;;A8Gp3rBA;EACE;EACA;A9Gu3rBF;;A8Gr3rBA;EACE;EACA;A9Gw3rBF;;A8Gt3rBA;;EAEE;A9Gy3rBF;AoB95rBI;E0FmCJ;;IAII;E9G43rBF;AACF;;A8G13rBA;EACE;EACA;EACA;A9G63rBF;;A8G33rBA;EACE;EACA;EACA;A9G83rBF;;A8G53rBA;EACE;A9G+3rBF;AoBp7rBI;E0FoDJ;IAGI;E9Gi4rBF;AACF;;A8Gn3rBA;EAXE;EACA;EACA,2CAUe;A9Gw3rBjB;A8Gj4rBE;EAEE;EACA;EACA;A9Gk4rBJ;A8G53rBE;EACE;A9G83rBJ;A8G53rBE;EACE;A9G83rBJ;;A8Gz3rBE;EACE;EACA;EACA;EACA;A9G43rBJ;A8G13rBE;EACE;EACA;EACA;EACA;A9G43rBJ;;A8Gx3rBE;EACE;EACA;EACA;EACA;A9G23rBJ;A8Gz3rBE;EACE;EACA;EACA;EACA;A9G23rBJ;;A8Gx3rBA;EACE;A9G23rBF;;A8Gp3rBA;EACE,4D7Gsde;ADi6qBjB;;A+G1isBA;AACA;AACA;AAGA;EACE;A/G2isBF;;A+GxisBA;EAAe;A/G4isBf;;A+G3isBA;EAAe;A/G+isBf;;A+G9isBA;EAAkB;A/GkjsBlB;;A+GjjsBA;EAAiB;A/GqjsBjB;;AgHlksBA;AACA;AACA;AACA;;;;;;;EAEE;AhH0ksBF;;AgHxksBA;EACE;EACA;EACA;EACA;AhH2ksBF;;AiHtlsBA;AACA;AACA;AAEA;EACE;EACA;AjHwlsBF;;AiHtlsBA;EACE;EACA;AjHylsBF;;AiHvlsBA;EACE;EACA;AjH0lsBF;;AiHxlsBA;EACE;EACA;AjH2lsBF;;AiHxlsBA;EACE;AjH2lsBF;;AoBljsBI;E6FtCF;IACE;EjH4lsBF;AACF;AkHtnsBE;EACE;EACA;AlHwnsBJ;AkHrnsBM;EAEE;EACA;AlHsnsBR;;AkH9nsBE;EACE;EACA;AlHiosBJ;AkH9nsBM;EAEE;EACA;AlH+nsBR;;AkHvosBE;EACE;EACA;AlH0osBJ;AkHvosBM;EAEE;EACA;AlHwosBR;;AkHhpsBE;EACE;EACA;AlHmpsBJ;AkHhpsBM;EAEE;EACA;AlHipsBR;;AkHzpsBE;EACE;EACA;AlH4psBJ;AkHzpsBM;EAEE;EACA;AlH0psBR;;AkHlqsBE;EACE;EACA;AlHqqsBJ;AkHlqsBM;EAEE;EACA;AlHmqsBR;;AkH3qsBE;EACE;EACA;AlH8qsBJ;AkH3qsBM;EAEE;EACA;AlH4qsBR;;AkHprsBE;EACE;EACA;AlHursBJ;AkHprsBM;EAEE;EACA;AlHqrsBR;;AkH7rsBE;EACE;EACA;AlHgssBJ;AkH7rsBM;EAEE;EACA;AlH8rsBR;;AkHtssBE;EACE;EACA;AlHyssBJ;AkHtssBM;EAEE;EACA;AlHussBR;;AkH/ssBE;EACE;EACA;AlHktsBJ;AkH/ssBM;EAEE;EACA;AlHgtsBR;;AmHztsBA;;gDAAA;AAIA;EACE;EACA,uBlHwFiB;EkHvFjB,oClHwgBoB;ADmtrBtB;;AmHxtsBA;EACE;EACA;EACA;EACA,gBlHqLqB;EkHpLrB;EACA,4KlHmIuB;ADwlsBzB;;AmHxtsBA;EACE,gCzGijB4B;AV0qrB9B;;AmHptsBA;EACE;AnHutsBF;;AmHptsBA;EACE;AnHutsBF;;AmHptsBA;EACE;AnHutsBF;;AmHptsBA;EACE;AnHutsBF;AmHrtsBE;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,gCzGghB0B;EyG/gB1B;EACA;AnHutsBJ;AmHptsBE;EACE;AnHstsBJ;;AmHltsBA;EACE;AnHqtsBF;;AoHrxsBA;AACA;AACA;AAKM;EACE;ApHoxsBR;;AoH9wsBA;EACE;EACA;EACA;EACA;EACA,iCnHsYe;EmHrYf;EACA;EACA;EACA;EACA;ApHixsBF;AoH/wsBE;EACE;ApHixsBJ;AoH9wsBE;EACE;ApHgxsBJ;AoH9wsBE;EACE;EACA;EACA;ApHgxsBJ;AoH9wsBE;EACE;ApHgxsBJ;AoH/wsBI;EACE;EACA;EACA;ApHixsBN;AoHhxsBM;EACE;EACA;ApHkxsBR;AoH7wsBE;EACE;ApH+wsBJ;AoH5wsBI;EACE;EACA;EACA;ApH8wsBN;AoH1wsBE;EACE;ApH4wsBJ;AoH1wsBE;EACE;EACA;ApH4wsBJ;AoH1wsBE;EACE;ApH4wsBJ;AoH1wsBE;EACE,mBnHkHW;EmHjHX,gBnHwHiB;ADopsBrB;AoH3wsBI;EACE;EACA,gC1GwfwB;AVqxrB9B;AoH3wsBI;EACE,anHwXuB;EmHvXvB,iBnHuXuB;EmHtXvB;ApH6wsBN;AoH3wsBI;EACE;EACA,0BnHwX+B;ADq5rBrC;AoH3wsBQ;EACE;ApH6wsBV;AoH3wsBQ;EACE;ApH6wsBV;AoHzwsBQ;EACE;ApH2wsBV;AoHxwsBU;EACE;ApH0wsBZ;AoHvwsBY;EACE;ApHywsBd;AoHhwsBE;EAGE;EACA;ApHgwsBJ;AoH/vsBI;EACE,uBnH1Ba;AD2xsBnB;AoH/vsBI;;;;EAEE;ApHmwsBN;AqH93sBE;EAEI;ArH+3sBN;AqHj3sBI;EACE;ArHm3sBN;AqHj3sBI;EACE;ArHm3sBN;AqHj3sBI;EACE;ArHm3sBN;AqHl3sBM;EACE;ArHo3sBR;AkF74sBE;EmC4BM;ArHo3sBR;AqHn3sBQ;EACE;ArHq3sBV;AqHh3sBM;EACE;ArHk3sBR;AqHh3sBM;EACE;ArHk3sBR;AqH52sBE;EACE;ArH82sBJ;AqH55sBE;EAEI;ArH65sBN;AqH/4sBI;EACE;ArHi5sBN;AqH/4sBI;EACE;ArHi5sBN;AqH/4sBI;EACE;ArHi5sBN;AqHh5sBM;EACE;ArHk5sBR;AkF36sBE;EmC4BM;ArHk5sBR;AqHj5sBQ;EACE;ArHm5sBV;AqH94sBM;EACE;ArHg5sBR;AqH94sBM;EACE;ArHg5sBR;AqH14sBE;EACE;ArH44sBJ;AqH17sBE;EAEI;EAUA;ArHk7sBN;AqH96sBI;EACE;ArHg7sBN;AqH96sBI;EACE;ArHg7sBN;AqH96sBI;EACE;ArHg7sBN;AqH/6sBM;EACE;ArHi7sBR;AkF18sBE;EmC4BM;ArHi7sBR;AqHh7sBQ;EACE;ArHk7sBV;AqH76sBM;EACE;ArH+6sBR;AqH76sBM;EACE;ArH+6sBR;AqHz6sBE;EACE;ArH26sBJ;AqHz9sBE;EAKI;EACA;EACA;EACA;EACA;ArHu9sBN;AqHh9sBI;EACE;ArHk9sBN;AqHh9sBI;EACE;ArHk9sBN;AqHh9sBI;EACE;ArHk9sBN;AqHj9sBM;EACE;ArHm9sBR;AkF5+sBE;EmC4BM;ArHm9sBR;AqHl9sBQ;EACE;ArHo9sBV;AqH/8sBM;EACE;ArHi9sBR;AqH/8sBM;EACE;ArHi9sBR;AqH38sBE;EACE;ArH68sBJ;;AqHp8sBU;EACE;ArHu8sBZ;AqHv7sBU;EACE;ArHy7sBZ;;AqH38sBU;EACE;ArH88sBZ;AqH97sBU;EACE;ArHg8sBZ;;AqHl9sBU;EACE;ArHq9sBZ;AqHr8sBU;EACE;ArHu8sBZ;;AqHz9sBU;EACE;ArH49sBZ;AqH58sBU;EACE;ArH88sBZ;;AoBz9sBI;EgG4FA;IACE;EpHi4sBJ;AACF;AoB/9sBI;EgG4FA;IACE;EpHs4sBJ;AACF;AoBp+sBI;EgG4FA;IACE;EpH24sBJ;AACF;AoBz+sBI;EgG4FA;IACE;EpHg5sBJ;AACF;AoB9+sBI;EgG4FA;IACE;EpHq5sBJ;AACF;AoBn/sBI;EgGmGA;IACE,oBnHoSkB;ImHnSlB;IACA;IACA;EpHm5sBJ;EoHl5sBI;IACE;EpHo5sBN;EoHl5sBI;IACE;IACA;EpHo5sBN;EoHl5sBI;IACE;IACA;IACA;IACA;IACA,gBnHoRgB;EDgosBtB;EoHl5sBI;IACE,gBnHiRgB;ImHhRhB;IACA;EpHo5sBN;EoHl5sBI;IACE;EpHo5sBN;EoHj5sBI;IAGE;IACA;EpHi5sBN;EoHh5sBM;IACE;EpHk5sBR;EoHh5sBM;IACE;IACA;EpHk5sBR;EoHh5sBM;;;;IAEE;EpHo5sBR;EoHj5sBM;IACE;EpHm5sBR;EoH/4sBI;IACE;EpHi5sBN;EoHh5sBM;IACE;IACA;EpHk5sBR;EoHj5sBQ;;IAEE;EpHm5sBV;EoH54sBI;IACE;IACA,enHqO0B;ImHpO1B;EpH84sBN;EoH74sBM;IACE;IACA;IACA;EpH+4sBR;EoH74sBM;IACE;IACA;EpH+4sBR;EoH74sBM;IACE;IACA;EpH+4sBR;EoH74sBM;;;IAGE;IACA;EpH+4sBR;EoH74sBM;IACE;EpH+4sBR;EoH94sBQ;IACE;EpHg5sBV;EoH94sBQ;IACE;EpHg5sBV;EoH54sBM;IACE,qBnHqMwB;EDyssBhC;EoH74sBQ;IACE;EpH+4sBV;EoH14sBM;IAGE,enH8LkC;ED4ssB1C;EoHz4sBQ;IACE,enH4LgC;ImH3LhC;EpH24sBV;EoHz4sBQ;IACE,qBnHwLgC;EDmtsB1C;EoH14sBU;IACE;EpH44sBZ;EoHp4sBQ;;;;;IAKE;EpHs4sBV;EoHp4sBQ;IACE;EpHs4sBV;EoHh4sBI;IACE,gBnH6JsB;EDqusB5B;EoHj4sBM;IACE;EpHm4sBR;EoHj4sBM;IACE,6DnH6J+B;EDsusBvC;EoHh4sBM;;;IAGE;IACA;EpHk4sBR;EoHh4sBM;IACE;EpHk4sBR;EoH93sBM;IAGE,gBnHwIwB;EDsvsBhC;EoH73sBQ;;;;IAEE;EpHi4sBV;AACF;AoBzotBI;EgGmGA;IACE,oBnHoSkB;ImHnSlB;IACA;IACA;EpHyitBJ;EoHxitBI;IACE;EpH0itBN;EoHxitBI;IACE;IACA;EpH0itBN;EoHxitBI;IACE;IACA;IACA;IACA;IACA,gBnHoRgB;EDsxsBtB;EoHxitBI;IACE,gBnHiRgB;ImHhRhB;IACA;EpH0itBN;EoHxitBI;IACE;EpH0itBN;EoHvitBI;IAGE;IACA;EpHuitBN;EoHtitBM;IACE;EpHwitBR;EoHtitBM;IACE;IACA;EpHwitBR;EoHtitBM;;;;IAEE;EpH0itBR;EoHvitBM;IACE;EpHyitBR;EoHritBI;IACE;EpHuitBN;EoHtitBM;IACE;IACA;EpHwitBR;EoHvitBQ;;IAEE;EpHyitBV;EoHlitBI;IACE;IACA,enHqO0B;ImHpO1B;EpHoitBN;EoHnitBM;IACE;IACA;IACA;EpHqitBR;EoHnitBM;IACE;IACA;EpHqitBR;EoHnitBM;IACE;IACA;EpHqitBR;EoHnitBM;;;IAGE;IACA;EpHqitBR;EoHnitBM;IACE;EpHqitBR;EoHpitBQ;IACE;EpHsitBV;EoHpitBQ;IACE;EpHsitBV;EoHlitBM;IACE,qBnHqMwB;ED+1sBhC;EoHnitBQ;IACE;EpHqitBV;EoHhitBM;IAGE,enH8LkC;EDk2sB1C;EoH/htBQ;IACE,enH4LgC;ImH3LhC;EpHiitBV;EoH/htBQ;IACE,qBnHwLgC;EDy2sB1C;EoHhitBU;IACE;EpHkitBZ;EoH1htBQ;;;;;IAKE;EpH4htBV;EoH1htBQ;IACE;EpH4htBV;EoHthtBI;IACE,gBnH6JsB;ED23sB5B;EoHvhtBM;IACE;EpHyhtBR;EoHvhtBM;IACE,6DnH6J+B;ED43sBvC;EoHthtBM;;;IAGE;IACA;EpHwhtBR;EoHthtBM;IACE;EpHwhtBR;EoHphtBM;IAGE,gBnHwIwB;ED44sBhC;EoHnhtBQ;;;;IAEE;EpHuhtBV;AACF;AoB/xtBI;EgGmGA;IACE,oBnHoSkB;ImHnSlB;IACA;IACA;EpH+rtBJ;EoH9rtBI;IACE;EpHgstBN;EoH9rtBI;IACE;IACA;EpHgstBN;EoH9rtBI;IACE;IACA;IACA;IACA;IACA,gBnHoRgB;ED46sBtB;EoH9rtBI;IACE,gBnHiRgB;ImHhRhB;IACA;EpHgstBN;EoH9rtBI;IACE;EpHgstBN;EoH7rtBI;IAGE;IACA;EpH6rtBN;EoH5rtBM;IACE;EpH8rtBR;EoH5rtBM;IACE;IACA;EpH8rtBR;EoH5rtBM;;;;IAEE;EpHgstBR;EoH7rtBM;IACE;EpH+rtBR;EoH3rtBI;IACE;EpH6rtBN;EoH5rtBM;IACE;IACA;EpH8rtBR;EoH7rtBQ;;IAEE;EpH+rtBV;EoHxrtBI;IACE;IACA,enHqO0B;ImHpO1B;EpH0rtBN;EoHzrtBM;IACE;IACA;IACA;EpH2rtBR;EoHzrtBM;IACE;IACA;EpH2rtBR;EoHzrtBM;IACE;IACA;EpH2rtBR;EoHzrtBM;;;IAGE;IACA;EpH2rtBR;EoHzrtBM;IACE;EpH2rtBR;EoH1rtBQ;IACE;EpH4rtBV;EoH1rtBQ;IACE;EpH4rtBV;EoHxrtBM;IACE,qBnHqMwB;EDq/sBhC;EoHzrtBQ;IACE;EpH2rtBV;EoHtrtBM;IAGE,enH8LkC;EDw/sB1C;EoHrrtBQ;IACE,enH4LgC;ImH3LhC;EpHurtBV;EoHrrtBQ;IACE,qBnHwLgC;ED+/sB1C;EoHtrtBU;IACE;EpHwrtBZ;EoHhrtBQ;;;;;IAKE;EpHkrtBV;EoHhrtBQ;IACE;EpHkrtBV;EoH5qtBI;IACE,gBnH6JsB;EDihtB5B;EoH7qtBM;IACE;EpH+qtBR;EoH7qtBM;IACE,6DnH6J+B;EDkhtBvC;EoH5qtBM;;;IAGE;IACA;EpH8qtBR;EoH5qtBM;IACE;EpH8qtBR;EoH1qtBM;IAGE,gBnHwIwB;EDkitBhC;EoHzqtBQ;;;;IAEE;EpH6qtBV;AACF;AoBr7tBI;EgGmGA;IACE,oBnHoSkB;ImHnSlB;IACA;IACA;EpHq1tBJ;EoHp1tBI;IACE;EpHs1tBN;EoHp1tBI;IACE;IACA;EpHs1tBN;EoHp1tBI;IACE;IACA;IACA;IACA;IACA,gBnHoRgB;EDkktBtB;EoHp1tBI;IACE,gBnHiRgB;ImHhRhB;IACA;EpHs1tBN;EoHp1tBI;IACE;EpHs1tBN;EoHn1tBI;IAGE;IACA;EpHm1tBN;EoHl1tBM;IACE;EpHo1tBR;EoHl1tBM;IACE;IACA;EpHo1tBR;EoHl1tBM;;;;IAEE;EpHs1tBR;EoHn1tBM;IACE;EpHq1tBR;EoHj1tBI;IACE;EpHm1tBN;EoHl1tBM;IACE;IACA;EpHo1tBR;EoHn1tBQ;;IAEE;EpHq1tBV;EoH90tBI;IACE;IACA,enHqO0B;ImHpO1B;EpHg1tBN;EoH/0tBM;IACE;IACA;IACA;EpHi1tBR;EoH/0tBM;IACE;IACA;EpHi1tBR;EoH/0tBM;IACE;IACA;EpHi1tBR;EoH/0tBM;;;IAGE;IACA;EpHi1tBR;EoH/0tBM;IACE;EpHi1tBR;EoHh1tBQ;IACE;EpHk1tBV;EoHh1tBQ;IACE;EpHk1tBV;EoH90tBM;IACE,qBnHqMwB;ED2otBhC;EoH/0tBQ;IACE;EpHi1tBV;EoH50tBM;IAGE,enH8LkC;ED8otB1C;EoH30tBQ;IACE,enH4LgC;ImH3LhC;EpH60tBV;EoH30tBQ;IACE,qBnHwLgC;EDqptB1C;EoH50tBU;IACE;EpH80tBZ;EoHt0tBQ;;;;;IAKE;EpHw0tBV;EoHt0tBQ;IACE;EpHw0tBV;EoHl0tBI;IACE,gBnH6JsB;EDuqtB5B;EoHn0tBM;IACE;EpHq0tBR;EoHn0tBM;IACE,6DnH6J+B;EDwqtBvC;EoHl0tBM;;;IAGE;IACA;EpHo0tBR;EoHl0tBM;IACE;EpHo0tBR;EoHh0tBM;IAGE,gBnHwIwB;EDwrtBhC;EoH/ztBQ;;;;IAEE;EpHm0tBV;AACF;AoB3kuBI;EgGmGA;IACE,oBnHoSkB;ImHnSlB;IACA;IACA;EpH2+tBJ;EoH1+tBI;IACE;EpH4+tBN;EoH1+tBI;IACE;IACA;EpH4+tBN;EoH1+tBI;IACE;IACA;IACA;IACA;IACA,gBnHoRgB;EDwttBtB;EoH1+tBI;IACE,gBnHiRgB;ImHhRhB;IACA;EpH4+tBN;EoH1+tBI;IACE;EpH4+tBN;EoHz+tBI;IAGE;IACA;EpHy+tBN;EoHx+tBM;IACE;EpH0+tBR;EoHx+tBM;IACE;IACA;EpH0+tBR;EoHx+tBM;;;;IAEE;EpH4+tBR;EoHz+tBM;IACE;EpH2+tBR;EoHv+tBI;IACE;EpHy+tBN;EoHx+tBM;IACE;IACA;EpH0+tBR;EoHz+tBQ;;IAEE;EpH2+tBV;EoHp+tBI;IACE;IACA,enHqO0B;ImHpO1B;EpHs+tBN;EoHr+tBM;IACE;IACA;IACA;EpHu+tBR;EoHr+tBM;IACE;IACA;EpHu+tBR;EoHr+tBM;IACE;IACA;EpHu+tBR;EoHr+tBM;;;IAGE;IACA;EpHu+tBR;EoHr+tBM;IACE;EpHu+tBR;EoHt+tBQ;IACE;EpHw+tBV;EoHt+tBQ;IACE;EpHw+tBV;EoHp+tBM;IACE,qBnHqMwB;EDiytBhC;EoHr+tBQ;IACE;EpHu+tBV;EoHl+tBM;IAGE,enH8LkC;EDoytB1C;EoHj+tBQ;IACE,enH4LgC;ImH3LhC;EpHm+tBV;EoHj+tBQ;IACE,qBnHwLgC;ED2ytB1C;EoHl+tBU;IACE;EpHo+tBZ;EoH59tBQ;;;;;IAKE;EpH89tBV;EoH59tBQ;IACE;EpH89tBV;EoHx9tBI;IACE,gBnH6JsB;ED6ztB5B;EoHz9tBM;IACE;EpH29tBR;EoHz9tBM;IACE,6DnH6J+B;ED8ztBvC;EoHx9tBM;;;IAGE;IACA;EpH09tBR;EoHx9tBM;IACE;EpH09tBR;EoHt9tBM;IAGE,gBnHwIwB;ED80tBhC;EoHr9tBQ;;;;IAEE;EpHy9tBV;AACF;AoH9nuBI;EACE,oBnHoSkB;EmHnSlB;EACA;EACA;ApHgouBN;AoH/nuBM;EACE;ApHiouBR;AoH/nuBM;EACE;EACA;ApHiouBR;AoH/nuBM;EACE;EACA;EACA;EACA;EACA,gBnHoRgB;AD62tBxB;AoH/nuBM;EACE,gBnHiRgB;EmHhRhB;EACA;ApHiouBR;AoH/nuBM;EACE;ApHiouBR;AoH9nuBM;EAGE;EACA;ApH8nuBR;AoH7nuBQ;EACE;ApH+nuBV;AoH7nuBQ;EACE;EACA;ApH+nuBV;AoH7nuBQ;;;;EAEE;ApHiouBV;AoH9nuBQ;EACE;ApHgouBV;AoH5nuBM;EACE;ApH8nuBR;AoH7nuBQ;EACE;EACA;ApH+nuBV;AoH9nuBU;;EAEE;ApHgouBZ;;AoHznuBM;EACE;EACA,enHqO0B;EmHpO1B;ApH4nuBR;AoH3nuBQ;EACE;EACA;EACA;ApH6nuBV;AoH3nuBQ;EACE;EACA;ApH6nuBV;AoH3nuBQ;EACE;EACA;ApH6nuBV;AoH3nuBQ;;;EAGE;EACA;ApH6nuBV;AoH3nuBQ;EACE;ApH6nuBV;AoH5nuBU;EACE;ApH8nuBZ;AoH5nuBU;EACE;ApH8nuBZ;AoH1nuBQ;EACE,qBnHqMwB;ADu7tBlC;AoH3nuBU;EACE;ApH6nuBZ;AoHxnuBQ;EAGE,enH8LkC;AD07tB5C;AoHvnuBU;EACE,enH4LgC;EmH3LhC;ApHynuBZ;AoHvnuBU;EACE,qBnHwLgC;ADi8tB5C;AoHxnuBY;EACE;ApH0nuBd;AoHlnuBU;;;;;EAKE;ApHonuBZ;AoHlnuBU;EACE;ApHonuBZ;;AoH9muBM;EACE,gBnH6JsB;ADo9tB9B;AoHhnuBQ;EACE;ApHknuBV;AoHhnuBQ;EACE,6DnH6J+B;ADq9tBzC;AoH/muBQ;;;EAGE;EACA;ApHinuBV;AoH/muBQ;EACE;ApHinuBV;AoH7muBQ;EAGE,gBnHwIwB;ADq+tBlC;AoH5muBU;;;;EAEE;ApHgnuBZ;;AsHt7uBA;AACA;AACA;AAEA;EACE;EACA;EACA;EACA,gBrH2LqB;EqH1LrB;EACA;EACA;EACA;EACA,wCrH4Ye;AD4iuBjB;AsHt7uBI;EACE;AtHw7uBN;AsHr7uBE;EACE;EACA;EACA;EACA;EACA;EACA;AtHu7uBJ;AsHr7uBE;EACE;AtHu7uBJ;AsHr7uBE;EACE;AtHu7uBJ;;AsHp7uBA;EACE;AtHu7uBF;AsHt7uBE;EACE;AtHw7uBJ;;AsHr7uBA;EACE;EACA;AtHw7uBF;;AsHl7uBM;;EACE;AtHs7uBR;;AsHh7uBA;EACE;EACA;EACA;EACA;EACA;AtHm7uBF;;AoBh7uBI;EkGII;IACE;IACA;IACA;IACA;IACA;EtHg7uBR;EsH56uBM;IACE;EtH86uBR;EsH16uBM;IACE;EtH46uBR;EsHr6uBU;IACE;EtHu6uBZ;EsH95uBM;IACE;EtHg6uBR;AACF;AoBt8uBI;EkGII;IACE;IACA;IACA;IACA;IACA;EtHq8uBR;EsHj8uBM;IACE;EtHm8uBR;EsH/7uBM;IACE;EtHi8uBR;EsH17uBU;IACE;EtH47uBZ;EsHn7uBM;IACE;EtHq7uBR;AACF;AoB39uBI;EkGII;IACE;IACA;IACA;IACA;IACA;EtH09uBR;EsHt9uBM;IACE;EtHw9uBR;EsHp9uBM;IACE;EtHs9uBR;EsH/8uBU;IACE;EtHi9uBZ;EsHx8uBM;IACE;EtH08uBR;AACF;AoBh/uBI;EkGII;IACE;IACA;IACA;IACA;IACA;EtH++uBR;EsH3+uBM;IACE;EtH6+uBR;EsHz+uBM;IACE;EtH2+uBR;EsHp+uBU;IACE;EtHs+uBZ;EsH79uBM;IACE;EtH+9uBR;AACF;AoBrgvBI;EkGII;IACE;IACA;IACA;IACA;IACA;EtHogvBR;EsHhgvBM;IACE;EtHkgvBR;EsH9/uBM;IACE;EtHggvBR;EsHz/uBU;IACE;EtH2/uBZ;EsHl/uBM;IACE;EtHo/uBR;AACF;AsH/+uBA;EACE;EACA;EACA;AtHi/uBF;AsH/+uBE;EACE;AtHi/uBJ;;AoBlivBI;EkGsDF;IACE;EtHg/uBF;EsH9+uBA;IACE;EtHg/uBF;EsH9+uBA;IACE;EtHg/uBF;EsH9+uBA;IACE;EtHg/uBF;AACF;AoBjjvBI;EkGoEF;IACE;EtHg/uBF;AACF;AoBtjvBI;EkGyEF;IACE;EtHg/uBF;EsH9+uBA;IACE;EtHg/uBF;AACF;AoB9jvBI;EkGiFF;IACE;EtHg/uBF;AACF;AsH5+uBE;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,gC5Gqa0B;AVykuB9B;AsH7+uBI;EACE;AtH++uBN;AsH5+uBE;EACE;AtH8+uBJ;AsH7+uBI;EACE;AtH++uBN;AsH7+uBI;EACE;AtH++uBN;;AsH1+uBE;EACE;AtH6+uBJ;AsH3+uBI;EACE;AtH6+uBN;AoBlmvBI;EkGiHF;IAOI;EtH8+uBJ;AACF;;AsHx+uBI;EACE;AtH2+uBN;AsHx+uBE;EACE;AtH0+uBJ;AsHz+uBI;EACE;AtH2+uBN;AsHz+uBI;EACE;EACA;AtH2+uBN;AsH1+uBM;EACE;EACA,yB1GzMG;AZqrvBX;AsHz+uBQ;EACE;AtH2+uBV;;AsHl+uBI;EACE;AtHq+uBN;AoBnnvBI;EkGkJI;IACE;EtHo+uBR;AACF;AsHj+uBQ;EAEE;AtHk+uBV;AsH/9uBM;EACE;AtHi+uBR;AoB9nvBI;EkG+JM;IACE;EtHk+uBV;AACF;AsH59uBI;EACE;AtH89uBN;;AsHr9uBQ;EACE,yB1GlPE;AZ0svBZ;;AuHttvBA;;gDAAA;AAGA;EACE;EACA;EACA;AvHytvBF;AuHvtvBE;EACE;EACA;EACA;EACA;EACA;AvHytvBJ;AuHvtvBE;EACE;EACA;EACA;EACA;AvHytvBJ;AuHvtvBE;EACE;EACA;EACA;EACA;EACA;AvHytvBJ;AuHvtvBI;EACE;AvHytvBN;AuHrtvBE;EACE;EACA,8KtHqHe;EsHpHf;EACA;EACA;EACA;EACA;EACA;EACA;AvHutvBJ;AuHntvBI;EACE;AvHqtvBN;AuHjtvBE;EACE;EACA;AvHmtvBJ;;AuH9svBE;EACE;AvHitvBJ;;AwH5wvBA;AACA;AACA;AAEA;EACE;EACA;AxH8wvBF;AwH7wvBE;EACE;EACA;EACA;EACA,W5GVI;E4GWJ;EACA;EACA;AxH+wvBJ;AwH9wvBI;EACE;EACA;EACA;EACA;AxHgxvBN;AwH7wvBE;EACE;EACA;EACA;EACA;EACA;AxH+wvBJ;AwH9wvBI;EACE;EACA;AxHgxvBN;AwH7wvBE;EACE;AxH+wvBJ;AwH7wvBE;;EAEE;EACA;AxH+wvBJ;AwH7wvBE;EACE;AxH+wvBJ;AwH7wvBE;EACE;EACA;EACA;EACA;AxH+wvBJ;AwH7wvBE;EACE;AxH+wvBJ;AwH7wvBE;EACE;AxH+wvBJ;AwH7wvBE;EACE;AxH+wvBJ;AwH7wvBE;EACE;AxH+wvBJ;AwH7wvBE;EACE;EACA,gC9GqgB0B;E8GpgB1B;EACA;AxH+wvBJ;AkFh1vBE;EsCmEI;AxHgxvBN;;AwH3wvBE;EACE;AxH8wvBJ;;AwHzwvBE;EACE,evHonBgB;EuHnnBhB,cvHmnBgB;ADypuBpB;AwH3wvBI;EACE;AxH6wvBN;AwH3wvBI;EACE;AxH6wvBN;AwH1wvBM;EACE;EACA;EACA;EACA;EACA;AxH4wvBR;AwH5tvBI;EACE;AxH8tvBN;;AwH9xvBE;EACE,cvHonBgB;EuHnnBhB,avHmnBgB;AD8quBpB;AwHhyvBI;EACE;AxHkyvBN;AwHhyvBI;EACE;AxHkyvBN;AwH/xvBM;EACE;EACA;EACA;EACA;EACA;AxHiyvBR;AwHjvvBI;EACE;AxHmvvBN;;AwHnzvBE;EACE,evHonBgB;EuHnnBhB,cvHmnBgB;ADmsuBpB;AwHrzvBI;EACE;AxHuzvBN;AwHrzvBI;EACE;AxHuzvBN;AwHpzvBM;EACE;EACA;EACA;EACA;EACA;AxHszvBR;AwHtwvBI;EACE;AxHwwvBN;;AwHx0vBE;EACE,YvHonBgB;EuHnnBhB,WvHmnBgB;ADwtuBpB;AwH10vBI;EACE;AxH40vBN;AwH10vBI;EACE;AxH40vBN;AwHh0vBM;EACE;EACA;EACA;EACA;EACA;AxHk0vBR;AwH3xvBI;EACE;AxH6xvBN;;AwH71vBE;EACE,cvHonBgB;EuHnnBhB,avHmnBgB;AD6uuBpB;AwH/1vBI;EACE;AxHi2vBN;AwH/1vBI;EACE;AxHi2vBN;AwH50vBM;EACE;EACA;EACA;EACA;EACA;AxH80vBR;AwHhzvBI;EACE;AxHkzvBN;;AwHl3vBE;EACE,cvHonBgB;EuHnnBhB,avHmnBgB;ADkwuBpB;AwHp3vBI;EACE;AxHs3vBN;AwHp3vBI;EACE;AxHs3vBN;AwHx1vBM;EACE;EACA;EACA;EACA;EACA;AxH01vBR;AwHr0vBI;EACE;AxHu0vBN;;AwHv4vBE;EACE,gBvHonBgB;EuHnnBhB,evHmnBgB;ADuxuBpB;AwHz4vBI;EACE;AxH24vBN;AwHz4vBI;EACE;AxH24vBN;AwHp2vBM;EACE;EACA;EACA;EACA;EACA;AxHs2vBR;AwH11vBI;EACE;AxH41vBN;;AwH55vBE;EACE,evHonBgB;EuHnnBhB,cvHmnBgB;AD4yuBpB;AwH95vBI;EACE;AxHg6vBN;AwH95vBI;EACE;AxHg6vBN;AwHh3vBM;EACE;EACA;EACA;EACA;EACA;AxHk3vBR;AwH/2vBI;EACE;AxHi3vBN;;AwH52vBA;EACE;EACA;AxH+2vBF;AwHx2vBI;;;;;EACE;AxH82vBN;AwH12vBI;EACE;AxH42vBN;AwHx2vBI;EACE;AxH02vBN;AwHt2vBI;EACE;AxHw2vBN;AwHl2vBM;EACE;AxHo2vBR;AwHh2vBM;EACE;AxHk2vBR;AwH51vBM;;;EACE;AxHg2vBR;AwH51vBM;EACE;AxH81vBR;AwH11vBM;EACE;AxH41vBR;AwHx1vBM;EACE;AxH01vBR;;AyHziwBA;;gDAAA;AAGA;EACE;EACA;EACA;EACA;EACA;EACA,8KxH+IiB;EwH9IjB,gC/G2jB4B;AVi/uB9B;AyH3iwBE;EACE;EACA,mDxHqHY;EwHpHZ,uBxHgFe;EwH/Ef;AzH6iwBJ;AkF3jwBE;EuCiBE;EACA;AzH6iwBJ;;AyH1iwBA;EACE;AzH6iwBF;;AyH3iwBA;EACE;EACA;EACA;AzH8iwBF;;AyH5iwBA;EACE;AzH+iwBF;AkF7kwBE;EuCgCE;AzHgjwBJ;;AyH7iwBA;EACE;AzHgjwBF;AyH/iwBE;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AzHijwBJ;AyH/iwBE;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,gBxHyIe;ADw6vBnB;AyH7iwBM;EACE;AzH+iwBR;AyHhjwBM;EACE;AzHkjwBR;AyHnjwBM;EACE;AzHqjwBR;AyHtjwBM;EACE;AzHwjwBR;AyHzjwBM;EACE;AzH2jwBR;AyH5jwBM;EACE;AzH8jwBR;AyH/jwBM;EACE;AzHikwBR;AyHlkwBM;EACE;AzHokwBR;AyH/jwBI;EACE;AzHikwBN;;AyH1jwBA;EACE;EACA;AzH6jwBF;AyH5jwBE;;EAEE;EACA;AzH8jwBJ;AyH3jwBI;EACE;AzH6jwBN;AyH5jwBM;EACE;AzH8jwBR;AyH3jwBI;EACE;EACA,gBxHqGiB;EwHpGjB;EACA;EACA;AzH6jwBN;AoB/lwBI;EqGcJ;IAyBI;EzH4jwBF;AACF;;A0HnqwBA;;gDAAA;AAME;EACE;A1HmqwBJ;A0HjqwBE;EACE;A1HmqwBJ;;A0H/pwBE;EACE;A1HkqwBJ;;A0H9pwBA;EACE;A1HiqwBF;;A0H/nwBA;EzBTE;AjG4owBF;AiG1owBE;EACE;EACA;EACA;EACA;EACA;AjG4owBJ;AiG1owBE;EACE;EACA;EACA,4ChG0sBW;ADk8uBf;AiGxowBI;EAEE;AjGyowBN;;A0H/owBA;EACE;A1HkpwBF;;A0H/owBA;EACE;A1HkpwBF;;A0H/owBE;EzBpBA;AjGuqwBF;AiGrqwBE;EACE;EACA;EACA;EACA;EACA;AjGuqwBJ;AiGrqwBE;EACE;EACA;EACA,0CyBS0B;A1H8pwB9B;AiGnqwBI;EAEE;AjGoqwBN;;A0H5pwBE;EzBFA;EACA;EACA;AjGkqwBF;A0H9pwBI;EzBNF;EACA;EACA;AjGuqwBF;A0H/pwBE;EACE;A1HiqwBJ;A0H9pwBE;EACE;A1HgqwBJ;;A0H1pwBI;EACE,sCzHwqBS;ADq/uBf;A0H1pwBM;EACE,sCzHoqBO;ADw/uBf;;A2H3vwBA;;gDAAA;AAGA;EACE;EACA;A3H8vwBF;;A2H3vwBA;EACE;EACA;EACA;EAEA;A3H6vwBF;;A2H3vwBA;EACE;EACA;EACA;EACA;EACA;A3H8vwBF;;A2H3vwBA;;gDAAA;AAWA;;gDAAA;AAGA;EACE;A3HsvwBF;;A2HnvwBA;EACE;A3HsvwBF;;A2HnvwBA;EACE;A3HsvwBF;;A2HnvwBA;EACE;A3HsvwBF;;A2HlvwBE;EACE;A3HqvwBJ;A2HpvwBI;EACE;A3HsvwBN;;A2HjvwBA;AACA;AACA;AAGI;EACE;A3HkvwBN;A2HhvwBI;EACE;EACA;EACA;A3HkvwBN;;AoB5vwBI;EuGcJ;IAEI;E3HivwBF;AACF;AkFh0wBE;EyCmFI;A3HgvwBN;;A2H5uwBA;AACA;AACA;AACA;EACE;A3H+uwBF;;A2H3uwBE;EACE;EACA;EACA;EACA;A3H8uwBJ;A2H7uwBI;EACE;EACA;EACA;A3H+uwBN;A2H9uwBM;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,wC1H+ZgB;ADi1vBxB;;A2H1uwBA;AACA;AACA;AACA;EACE;A3H6uwBF;A2H5uwBE;EACE;A3H8uwBJ;;A2HzuwBA;EACE;A3H4uwBF;;A2HzuwBA;AACA;AACA;AACA;EACE;EAKA;EACA;EACA;A3HwuwBF;;A2HruwBA;EACE;EACA;EACA;A3HwuwBF;;A2HpuwBE;EACE;A3HuuwBJ;A2HtuwBI;EACE;A3HwuwBN;A2HtuwBI;EACE;EACA;EACA;A3HwuwBN;;A2HnuwBA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;A3HsuwBF;;A4H55wBA;AACA;AACA;AAEA;EACE;EACA;EACA;EACA;EACA;EACA,gB3HwLmB;ADsuwBrB;A4H35wBI;EACE;A5H65wBN;;A4Hx5wBA;EACE;EACA;A5H25wBF;A4Hz5wBE;EACE;A5H25wBJ;;A4Ht5wBE;;EAEE;A5Hy5wBJ;;A6Hx7wBA;;gDAAA;AAGA;EACE;EACA;EACA;EACA;EACA;EACA,4K5H0IuB;E4HzIvB,uB5HoFiB;ADu2wBnB;A6Hz7wBE;EACE,sC5HyqBa;E4HxqBb,WjHbI;EiHcJ;EACA;EACA,gB5HkLmB;ADywwBvB;A6Hx7wBE;EACE;EACA;EACA;EACA;EACA;EACA,cjHpBO;EiHqBP,gB5HyKe;ADixwBnB;;A8Hr9wBA;AACA;AACA;AAEA;EACE;EACA;A9Hu9wBF;A8Ht9wBE;EACE;A9Hw9wBJ;A8Ht9wBI;EACE;A9Hw9wBN;;AkFl+wBE;E4CkBI;A9Ho9wBN;;AkFt+wBE;E4C0BE;A9Hg9wBJ;;AkF1+wBE;E4CgCE;A9H88wBJ;;A8H38wBA;EACE;A9H88wBF;A8H38wBE;EACE;EACA;A9H68wBJ;A8Hz8wBI;EACE;EACA;A9H28wBN;A8H18wBM;;;;;;;;;EACE;A9Ho9wBR;A8Hh9wBI;EACE;A9Hk9wBN;;A8Hz8wBM;EACE;A9H48wBR;A8H78wBM;EACE;A9H+8wBR;A8Hh9wBM;EACE;A9Hk9wBR;A8Hn9wBM;EACE;A9Hq9wBR;A8Ht9wBM;EACE;A9Hw9wBR;A8Hz9wBM;EACE;A9H29wBR;A8H59wBM;EACE;A9H89wBR;A8H/9wBM;EACE;A9Hi+wBR;A8Hl+wBM;EACE;A9Ho+wBR;A8Hr+wBM;EACE;A9Hu+wBR;A8Hx+wBM;EACE;A9H0+wBR;;A8Hj+wBM;EACE;A9Ho+wBR;A8Hr+wBM;EACE;A9Hu+wBR;A8Hx+wBM;EACE;A9H0+wBR;A8H3+wBM;EACE;A9H6+wBR;A8H9+wBM;EACE;A9Hg/wBR;A8Hj/wBM;EACE;A9Hm/wBR;A8Hp/wBM;EACE;A9Hs/wBR;A8Hv/wBM;EACE;A9Hy/wBR;A8H1/wBM;EACE;A9H4/wBR;A8H7/wBM;EACE;A9H+/wBR;A8HhgxBM;EACE;A9HkgxBR;;A+H7kxBA;AACA;AACA;AAGA;EACE;A/H8kxBF;;A+H5kxBA;EACE;EACA;EACA;A/H+kxBF;A+H9kxBE;EACE;EACA;A/HglxBJ;;A+H5kxBA;EACE;A/H+kxBF;A+H7kxBE;EACE;A/H+kxBJ;A+H7kxBE;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;A/H8kxBJ;A+H5kxBE;EACE;EACA;A/H8kxBJ;;A+H1kxBA;EACE;IACE;IACA;E/H6kxBF;E+H3kxBA;IACE;IACA;IACA;E/H6kxBF;AACF;A+H1kxBA;EACE;IACE;E/H4kxBF;E+H1kxBA;IACE;E/H4kxBF;AACF;AgI1oxBA;AACA;AACA;AAEA;EACE;AhI2oxBF;AgI1oxBE;EACE;EACA;EACA;EACA;AhI4oxBJ;AgI1oxBE;EACE;AhI4oxBJ;AgI1oxBE;EACE;AhI4oxBJ;AgI1oxBE;EACE;AhI4oxBJ;;AgIzoxBA;EACE,wC/HkYe;E+HjYf;EACA;EACA;EACA;EACA;EACA;EAEA;AhI2oxBF;AgI1oxBE;EAIE;EACA;EACA;AhIyoxBJ;AgItoxBE;EACE;EACA;AhIwoxBJ;AgItoxBE;EACE;EACA;AhIwoxBJ;AgIroxBE;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AhIuoxBJ;AgIroxBM;EAEE;AhIsoxBR;;AiIrsxBA;;gDAAA;AAGA;EACE;AjIwsxBF;AiIvsxBE;EACE;AjIysxBJ;;AiItsxBA;EACE;EACA;EACA;EACA;EACA;EACA,gCvHsjB4B;EuHrjB5B;EACA;EACA;EACA,mBhIwKa;EgIvKb,mDhI8Gc;EgI7Gd;AjIysxBF;AkF7txBE;E+CuBE;AjIysxBJ;AiItsxBE;EACE;EACA;AjIwsxBJ;AiIrsxBE;EACE;EACA;AjIusxBJ;AiIrsxBE;EACE;EACA;EACA,iBhIqJW;ADkjxBf;;AiInsxBA;EACE;AjIssxBF;AiIrsxBE;EACE;AjIusxBJ;;AiIlsxBA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AjIqsxBF;;AiIjsxBE;EACE;EACA;AjIosxBJ;;AiItsxBE;EACE;EACA;AjIysxBJ;;AiI3sxBE;EACE;EACA;AjI8sxBJ;;AiIhtxBE;EACE;EACA;AjImtxBJ;;AkItxxBA;;gDAAA;AAGA;;EAEE,gCjIyFiB;EiIxFjB,iCjIwFiB;EiIvFjB;EACA;EACA;EACA;EACA;EACA,4CjIuHc;EiItHd;AlIyxxBF;AoBprxBI;E8G/GJ;;IAYI;ElI4xxBF;AACF;AoB1rxBI;E8G/GJ;;IAeI;ElI+xxBF;AACF;AoBhsxBI;E8G/GJ;;IAkBI;ElIkyxBF;AACF;AoB5uxBI;E8GzEJ;;IAqBI;ElIqyxBF;AACF;AkInyxBI;;EACE;AlIsyxBN;AkInyxBE;;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AlIsyxBJ;AkF50xBE;;;EgDyCE;AlIwyxBJ;AkIvyxBI;;;EACE;AlI2yxBN;;AoB3wxBI;E8G1BF;IACE;IACA;ElIyyxBF;AACF;AkItyxBA;;gDAAA;AAGA;EACE,yBtHhDU;EsHiDV;EACA;EACA;EACA,gCjI6Bc;EiI5Bd;EACA;EACA;EAIA;EACA;AlIqyxBF;AkIzyxBE;EACE;AlI2yxBJ;;AkIryxBA;;gDAAA;AAGA;EACE;AlIwyxBF;AkIvyxBE;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AlIyyxBJ;AkFn4xBE;EgD8FE;AlIwyxBJ;;AmIv4xBA;AACA;AACA;AAEA;EACE;EACA,gBlI6LqB;AD4sxBvB;AmIv4xBE;EACE;EACA;AnIy4xBJ;;AoIl5xBA;AACA;AACA;AAII;;;EAEE;EACA;ApIm5xBN;AoIh5xBE;;EAEE;EACA;EACA,gBxHhBI;EwHiBJ;EACA;EACA;EACA;EACA;EACA;EACA;ApIk5xBJ;AkFz6xBE;;;EkDyBI;ApIq5xBN;AoIl5xBE;EACE;ApIo5xBJ;AoIl5xBE;EACE;ApIo5xBJ;;AqIr7xBA;;gDAAA;AAGA;EACE;EACA,gBpI+LiB;EoI9LjB;ArIw7xBF;;AqIr7xBA;EACE;ArIw7xBF;;AqIr7xBA;EACE;ArIw7xBF;AqIv7xBE;EACE;ArIy7xBJ;;AqIr7xBA;;gDAAA;AAGA;;EAEE;EACA;ArIw7xBF;;AqIr7xBA;EACE;ArIw7xBF;;AqIr7xBA;;gDAAA;AAMM;EACE;ArIq7xBR;AqIp7xBQ;EACE;ArIs7xBV;AqIh7xBQ;EACE;ArIk7xBV;AqIh7xBQ;EACE;ArIk7xBV;AqI/6xBM;EACE,yBzHzBD;AZ08xBP;AqIl8xBM;EACE;ArIo8xBR;AqIn8xBQ;EACE;ArIq8xBV;AqI/7xBQ;EACE;ArIi8xBV;AqI/7xBQ;EACE;ArIi8xBV;AqI97xBM;EACE,yBzHzBD;AZy9xBP;AqIj9xBM;EACE;ArIm9xBR;AqIl9xBQ;EACE;ArIo9xBV;AqI98xBQ;EACE;ArIg9xBV;AqI98xBQ;EACE;ArIg9xBV;AqI78xBM;EACE,yBzHzBD;AZw+xBP;AqIh+xBM;EACE;ArIk+xBR;AqIj+xBQ;EACE;ArIm+xBV;AqI79xBQ;EACE;ArI+9xBV;AqI79xBQ;EACE;ArI+9xBV;AqI59xBM;EACE,yBzHzBD;AZu/xBP;AqI/+xBM;EACE;ArIi/xBR;AqIh/xBQ;EACE;ArIk/xBV;AqI5+xBQ;EACE;ArI8+xBV;AqI5+xBQ;EACE;ArI8+xBV;AqI3+xBM;EACE,yBzHzBD;AZsgyBP;AqI9/xBM;EACE;ArIggyBR;AqI//xBQ;EACE;ArIigyBV;AqI3/xBQ;EACE;ArI6/xBV;AqI3/xBQ;EACE;ArI6/xBV;AqI1/xBM;EACE,yBzHzBD;AZqhyBP;AqI7gyBM;EACE;ArI+gyBR;AqI9gyBQ;EACE;ArIghyBV;AqI1gyBQ;EACE;ArI4gyBV;AqI1gyBQ;EACE;ArI4gyBV;AqIzgyBM;EACE,yBzHzBD;AZoiyBP;AqI5hyBM;EACE;ArI8hyBR;AqI7hyBQ;EACE;ArI+hyBV;AqIzhyBQ;EACE;ArI2hyBV;AqIzhyBQ;EACE;ArI2hyBV;AqIxhyBM;EACE,yBzHzBD;AZmjyBP;;AqInhyBE;EACE;ArIshyBJ;;AqIjhyBE;EACE,gC3H+f0B;AVqhxB9B;AqIlhyBE;EACE,czHnEO;EyHoEP;ArIohyBJ;;AqI/gyBA;EACE;ArIkhyBF;;AqI/gyBA;EACE;ArIkhyBF;;AqI/gyBA;EACE;ArIkhyBF;;AqI/gyBA;EACE;ArIkhyBF;;AsI5myBA;EACE;AtI+myBF;;AsI7myBA;EACE;EACA;EACA,gC5H6jB4B;E4H5jB5B;EACA;EACA,gBrIsLmB;EqIrLnB,sBrIiFc;EqIhFd;EACA;AtIgnyBF;;AsI9myBA;EACE;AtIinyBF;;AsI/myBA;EAIE;EACA;AtI+myBF;;AsI5myBA;;EAEE;EACA;AtI+myBF;;AuI7oyBA;AACA;AACA;AAqEA;;gDAAA;AAIA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;AvI0kyBF;AuIzkyBE;EAIE;EACA;EACA;AvIwkyBJ;AuIrkyBE;EACE;EACA;AvIukyBJ;AuIrkyBE;EACE;EACA;AvIukyBJ;AuIpkyBE;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AvIskyBJ;AuIpkyBM;EAEE;AvIqkyBR;;AuI/jyBA;;EAEE;AvIkkyBF;AuIjkyBE;;EACE;EACA;EACA;AvIokyBJ;;AuIjkyBA;;EAEE;EACA;AvIokyBF;AuInkyBE;;;EAEE;AvIskyBJ;AuIpkyBE;;EACE;AvIukyBJ;AuIpkyBE;;EACE;EACA;EACA;EACA,uBtItDe;EsIuDf;AvIukyBJ;AuItkyBI;;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,gC7HsawB;AVmqxB9B;AuIpkyBM;;;EACE;AvIwkyBR;AuIpkyBE;;EACE;AvIukyBJ;AuItkyBI;;EACE;AvIykyBN;AuIrkyBE;;EACE;AvIwkyBJ;AuIrkyBM;;EACE;AvIwkyBR;AuIrkyBI;;EACE;EACA;AvIwkyBN;;AuInkyBA;EACE;EACA;AvIskyBF;;AuIpkyBA;EACE;AvIukyBF;;AuInkyBE;;;;;EACE;AvI0kyBJ;AuIzkyBI;;;;;EACE;EACA;EACA,uBtI/Ga;AD8ryBnB;AuI5kyBM;;;;;EACE;AvIklyBR;AuI/kyBI;;;;;;;;;EAEE;AvIwlyBN;AuItlyBI;;;;;EACE;AvI4lyBN;;AuIvlyBA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AvI0lyBF;AoBvvyBI;EmHkJJ;IAgBI;IACA;EvIylyBF;EuIxlyBE;IACE;EvI0lyBJ;EuIxlyBE;IACE;EvI0lyBJ;AACF;AuIvlyBE;EACE;AvIylyBJ;;AwIl1yBA;EACE;AxIq1yBF;AwIn1yBE;EACE;EACA;EACA;EACA,gBvI6Le;EuI5Lf,mBvImLW;EU/JX;EACA;AXk0yBJ;AwIp1yBI;EAEE;AxIq1yBN;AwIl1yBI;EACE;EACA;EACA;AxIo1yBN;AwI/0yBI;EACE,8KvI+Ha;ADktyBnB;AwI70yBE;;EAEE;EACA;EACA;AxI+0yBJ;;AwI30yBA;EACE;EACA;EAEA;EACA;EACA;AxI60yBF;AwI30yBE;EACE;AxI60yBJ;AwI10yBE;;;;;EACE;EACA;EACA;EACA;AxIg1yBJ;AwI90yBI;;;;;EACE;EAGA;EACA;AxIk1yBN;AwI/0yBI;;;;;EACE;AxIq1yBN;AkFp5yBE;;;;;;;;;EsDmEI;EACA;AxI41yBN;;AyIj6yBA;EACE;EACA;EACA;AzIo6yBF;;AyIl6yBA;EACE;AzIq6yBF;;AyIn6yBA;EACE;EACA;EACA;EACA;AzIs6yBF;;AyIp6yBA;EACE;AzIu6yBF;;AyIr6yBA;EACE;AzIw6yBF;;AyIt6yBA;EACE;AzIy6yBF;;AyIv6yBA;EACE;AzI06yBF;;A0Il8yBA;;gDAAA;AAIA;EACE;EACA;A1Io8yBF;A0In8yBE;EACE;EACA;A1Iq8yBJ;;A0Il8yBA;EACE;EACA;EACA;A1Iq8yBF;;A0In8yBA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;A1Is8yBF;;A0Ip8yBA;;gDAAA;AAGA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;A1Iu8yBF;;A0Ir8yBA;EACE;EACA;EACA;EACA;A1Iw8yBF;;A0It8yBA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;A1Iy8yBF;A0Ix8yBE;EACE;EACA;EACA;EACA;EACA;EACA;A1I08yBJ;A0Ix8yBE;EACE;A1I08yBJ;A0Iv8yBI;EACE;A1Iy8yBN;A0Ir8yBI;EACE;A1Iu8yBN;A0Ip8yBE;EAEE;A1Iq8yBJ;A0Il8yBE;EACE;A1Io8yBJ;A0Il8yBE;EACE;A1Io8yBJ;A0Ij8yBI;EAEE;A1Ik8yBN;;A0I97yBA;EACE;EACA;A1Ii8yBF;;A0I/7yBA;EACE,gBzI+FmB;ADm2yBrB;;A0Ih8yBA;EACE;A1Im8yBF;;A0Ij8yBA;EACE;EACA;EACA;EACA;EACA;A1Io8yBF;;A0Il8yBA;EACE;A1Iq8yBF;A0Ip8yBE;;EAEE,gBzIiFmB;EyIhFnB;A1Is8yBJ;A0Ip8yBE;EACE;A1Is8yBJ;;A0Ij8yBA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;A1Io8yBF;;A0Il8yBA;EACE;EACA;A1Iq8yBF;AkF3kzBE;EwDwIE;A1Is8yBJ;;A0In8yBA;EACE;EACA;EACA;EACA,c9H3IS;E8H4IT;EACA;A1Is8yBF;;A0Il8yBE;EACE;EACA;A1Iq8yBJ;;A0Ij8yBA;;gDAAA;AAGA;EACE;EACA;A1Io8yBF;;A0Il8yBA;EACE;A1Iq8yBF;A0Ip8yBE;EACE;A1Is8yBJ;;A0In8yBA;EACE;EACA;EACA;A1Is8yBF;;A0Ip8yBA;EACE;EACA;EACA;EACA;A1Iu8yBF;;A0Ir8yBA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;A1Iw8yBF;;A0It8yBA;EACE;A1Iy8yBF;;A0Iv8yBA;EACE;A1I08yBF;;A0Ix8yBA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;A1I28yBF;A0I18yBE;EACE;A1I48yBJ;A0I18yBE;EACE;EACA;A1I48yBJ;;A0Iz8yBA;EACE;EACA;EACA;EACA;A1I48yBF;AkFrqzBE;EwD2NE;A1I68yBJ;;A0I18yBA;EACE;EACA;EACA;A1I68yBF;;A0I38yBA;EACE;EACA;EACA;EACA;EACA;EACA;A1I88yBF;;A0I58yBA;EACE;EACA;EACA;EACA;A1I+8yBF;A0I98yBE;EACE;A1Ig9yBJ;A0I98yBE;EACE;EACA;EACA;EACA;A1Ig9yBJ;AkFvszBE;EwD0PI;A1Ig9yBN;A0I58yBE;EACE;EACA;EACA;EACA;EACA;EACA;EACA,0ChIqoBoC;AVy0xBxC;A0I78yBI;EACE;EACA;EACA;A1I+8yBN;;A0I38yBA;EACE;A1I88yBF;AkF5tzBE;EwDgRE;A1I+8yBJ;;AoBjqzBI;EsHsNF;IACE;E1I+8yBF;E0I78yBA;IACE;E1I+8yBF;E0I78yBA;IACE;E1I+8yBF;AACF;AoB7qzBI;EsHiOF;IACE;IACA;IACA;IACA;IACA;IACA;E1I+8yBF;AACF;AoBvrzBI;EsH2OF;IACE;IACA;E1I+8yBF;AACF;AoB7rzBI;EsHiPF;IACE;IACA;E1I+8yBF;AACF;A0I18yBE;EACE;A1I48yBJ;A0I18yBE;EACE;A1I48yBJ;;A0Ip8yBE;;;EACE;A1Iy8yBJ;;A2I/vzBA;EACE;A3IkwzBF;;A2IhwzBA;EACE;EACA;A3ImwzBF;;A2IjwzBA;EACE;EACA,iBAvBa;EAwBb;EACA;EACA;A3IowzBF;A2InwzBE;EACE;A3IqwzBJ;A2InwzBE;EACE;A3IqwzBJ;;A2IlwzBA;EACE;EACA;EACA;EACA;EACA;EACA,gC1IqDiB;E0IpDjB,iC1IoDiB;ADitzBnB;;A2InwzBA;EACE;EACA,mC1IgDiB;E0I/CjB,oC1I+CiB;E0I9CjB;A3IswzBF;;A2IpwzBA;EACE;EACA;EACA;EACA;EACA;EACA;A3IuwzBF;A2IrwzBE;;EAEE;A3IuwzBJ;;A2IpwzBA;EACE;EACA;EACA;EACA;A3IuwzBF;;A2IrwzBA;EACE;EACA;EACA;EACA;EACA,uB1IoBiB;E0InBjB,mD1IuDc;ADitzBhB;;A2ItwzBA;EACE;EACA;EACA;EACA;EACA;A3IywzBF;;A2IvwzBA;EACE;EACA;EACA;EACA;EACA;EACA;A3I0wzBF;;A2IvwzBE;EACE;EACA,mC1IDe;E0IEf,oC1IFe;AD4wzBnB;A2IxwzBE;EACE;A3I0wzBJ;;A2IvwzBA;EACE;EACA,uB1IViB;E0IWjB;EACA;EACA;A3I0wzBF;;AkFp3zBE;EyD8GE;A3I0wzBJ;;A2IvwzBA;EACE;EACA;EACA;EACA,sB1IzBc;E0I0Bd;EACA;EACA;EACA;EACA;EACA;A3I0wzBF;A2IzwzBE;EACE;EACA;A3I2wzBJ;AkFz4zBE;EyDiIE;A3I2wzBJ;A2I1wzBI;EACE;A3I4wzBN;;A2IvwzBE;EACE;A3I0wzBJ;;A2IrwzBA;EACE;A3IwwzBF;;A2ItwzBA;EACE;EAGA;EACA,uB1IzDiB;ADg0zBnB;A2ItwzBE;EACE;A3IwwzBJ;;A2IrwzBA;EACE;A3IwwzBF;;A2ItwzBA;EACE;A3IywzBF;A2IxwzBE;EACE;A3I0wzBJ;;A2IvwzBA;EACE;EACA;EACA;EACA,yB/HtKS;E+HuKT;EACA;EACA,mD1I1Cc;E0I2Cd;A3I0wzBF;AkFt7zBE;EyD8KE;EACA,yB/H5KO;AZu7zBX;;A2IxwzBA;EACE;EACA;EACA;A3I2wzBF;;A2IvwzBE;;EACE;A3I2wzBJ;;A2IxwzBA;EACE;EACA;EACA,gCjIoY4B;EiInY5B,sB1IrGc;E0IsGd;A3I2wzBF;AkF78zBE;EyDoME;EACA;A3I4wzBJ;;A2IpwzBE;;;EACE;A3IywzBJ;A2ItwzBI;;;EACE;A3I0wzBN;;A2IrwzBA;EACE;A3IwwzBF;;A2IrwzBA;EACE;EACA;A3IwwzBF;;A2IrwzBA;EACE;EACA;EACA;EACA;A3IwwzBF;;A4I7+zBA;;gDAAA;AAGA;EACE;EACA;EACA;A5Ig/zBF;;A4I7+zBA;EACE;EACA;EACA;EACA;EACA;EACA,gClIsjB4B;EkIrjB5B;A5Ig/zBF;;A4I7+zBA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,sB3IiEc;E2IhEd;EACA,WhI7BM;EgI8BN;EACA,mD3IkGc;E2IjGd;A5Ig/zBF;;A4I7+zBA;EACE;A5Ig/zBF;A4I/+zBE;EACE;EACA,gClI6hB0B;AVo9yB9B;;A6Ivh0BE;EACE;EACA;EACA;EACA;EACA;EACA;EACA;A7I0h0BJ;A6Izh0BI;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,gCnI+iBwB;AV4+yB9B;A6Ixh0BM;EACE;EACA;EACA;A7I0h0BR;A6Ixh0BM;EACE;A7I0h0BR;A6Ivh0BI;EASE;A7Iih0BN;A6Izh0BM;EACE;EACA;EACA;A7I2h0BR;A6I1h0BQ;EACE;A7I4h0BV;A6Ivh0BQ;EACE;A7Iyh0BV;A6Iph0BM;EACE;A7Ish0BR;A6Inh0BI;EACE;A7Iqh0BN;A6Iph0BM;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;A7Ish0BR;A6I/g0BQ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;A7Iih0BV;A6I5g0BE;EACE;EACA;A7I8g0BJ;A6I5g0BE;EACE;EACA;EACA;A7I8g0BJ;A6I3g0BE;EACE;EACA;EACA;EACA;EACA;A7I6g0BJ;A6Izg0BM;EACE;A7I2g0BR;A6Ivg0BM;EACE;A7Iyg0BR;A6Irg0BM;EACE;EACA;A7Iug0BR;A6Ilg0BE;EACE;EACA;A7Iog0BJ;A6Ilg0BE;EACE;EACA;EACA;EACA;A7Iog0BJ;A6Ing0BI;EACE;EACA;EACA;A7Iqg0BN;;A6Ihg0BA;EACE;A7Img0BF;;A8I9o0BA;;gDAAA;AAGA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,4C7IuHc;E6ItHd;A9Iip0BF;A8Ihp0BE;EACE,apIkmCgC;AVgjyBpC;A8Ihp0BE;EACE;A9Ikp0BJ;;A+Ipq0BA;AACA;AACA;AAIM;EACE;A/Ioq0BR;A+Ilq0BM;EACE;A/Ioq0BR;A+Ilq0BM;EACE;A/Ioq0BR;A+I3q0BM;EACE;A/I6q0BR;A+I3q0BM;EACE;A/I6q0BR;A+I3q0BM;EACE;A/I6q0BR;A+Ipr0BM;EACE;A/Isr0BR;A+Ipr0BM;EACE;A/Isr0BR;A+Ipr0BM;EACE;A/Isr0BR;A+I7r0BM;EACE;A/I+r0BR;A+I7r0BM;EACE;A/I+r0BR;A+I7r0BM;EACE;A/I+r0BR;A+Its0BM;EACE;A/Iws0BR;A+Its0BM;EACE;A/Iws0BR;A+Its0BM;EACE;A/Iws0BR;A+I/s0BM;EACE;A/Iit0BR;A+I/s0BM;EACE;A/Iit0BR;A+I/s0BM;EACE;A/Iit0BR;A+Ixt0BM;EACE;A/I0t0BR;A+Ixt0BM;EACE;A/I0t0BR;A+Ixt0BM;EACE;A/I0t0BR;A+Iju0BM;EACE;A/Imu0BR;A+Iju0BM;EACE;A/Imu0BR;A+Iju0BM;EACE;A/Imu0BR;A+I1u0BM;EACE;A/I4u0BR;A+I1u0BM;EACE;A/I4u0BR;A+I1u0BM;EACE;A/I4u0BR;A+Inv0BM;EACE;A/Iqv0BR;A+Inv0BM;EACE;A/Iqv0BR;A+Inv0BM;EACE;A/Iqv0BR;A+I5v0BM;EACE;A/I8v0BR;A+I5v0BM;EACE;A/I8v0BR;A+I5v0BM;EACE;A/I8v0BR;A+Irw0BM;EACE;A/Iuw0BR;A+Irw0BM;EACE;A/Iuw0BR;A+Irw0BM;EACE;A/Iuw0BR;A+I9w0BM;EACE;A/Igx0BR;A+I9w0BM;EACE;A/Igx0BR;A+I9w0BM;EACE;A/Igx0BR;A+Ivx0BM;EACE;A/Iyx0BR;A+Ivx0BM;EACE;A/Iyx0BR;A+Ivx0BM;EACE;A/Iyx0BR;A+Ihy0BM;EACE;A/Iky0BR;A+Ihy0BM;EACE;A/Iky0BR;A+Ihy0BM;EACE;A/Iky0BR;A+Izy0BM;EACE;A/I2y0BR;A+Izy0BM;EACE;A/I2y0BR;A+Izy0BM;EACE;A/I2y0BR;A+Ilz0BM;EACE;A/Ioz0BR;A+Ilz0BM;EACE;A/Ioz0BR;A+Ilz0BM;EACE;A/Ioz0BR;A+I3z0BM;EACE;A/I6z0BR;A+I3z0BM;EACE;A/I6z0BR;A+I3z0BM;EACE;A/I6z0BR;A+Ip00BM;EACE;A/Is00BR;A+Ip00BM;EACE;A/Is00BR;A+Ip00BM;EACE;A/Is00BR;A+I700BM;EACE;A/I+00BR;A+I700BM;EACE;A/I+00BR;A+I700BM;EACE;A/I+00BR;A+It10BM;EACE;A/Iw10BR;A+It10BM;EACE;A/Iw10BR;A+It10BM;EACE;A/Iw10BR;A+I/10BM;EACE;A/Ii20BR;A+I/10BM;EACE;A/Ii20BR;A+I/10BM;EACE;A/Ii20BR;A+Ix20BM;EACE;A/I020BR;A+Ix20BM;EACE;A/I020BR;A+Ix20BM;EACE;A/I020BR;A+Ij30BM;EACE;A/Im30BR;A+Ij30BM;EACE;A/Im30BR;A+Ij30BM;EACE;A/Im30BR;A+I130BM;EACE;A/I430BR;A+I130BM;EACE;A/I430BR;A+I130BM;EACE;A/I430BR;A+Iv30BM;EACE;A/Iy30BR;A+I130BM;EACE;A/I430BR;A+I730BM;EACE;A/I+30BR;A+Ih40BM;EACE;A/Ik40BR;A+In40BM;EACE;A/Iq40BR;A+It40BM;EACE;A/Iw40BR;A+Ip40BI;EACE;A/Is40BN;;AgJ950BA;EACE;AhJi60BF;AgJ/50BE;EAEE;EACA;AhJg60BJ;AgJ750BE;EACE;EACA;EACA,a/IqBQ;E+IpBR;EACA;EACA;AhJ+50BJ;AgJ550BE;EACE;AhJ850BJ;AgJ350BE;EACE;EACA;EACA;EACA;EACA;AhJ650BJ;AgJt50BQ;EACE,yBpIkBK;EoIjBL,qBpIiBK;AZu40Bf;AgJp50BM;EACE;EACA;EACA;AhJs50BR;AgJ/50BQ;EACE,yBpIkBK;EoIjBL,qBpIiBK;AZg50Bf;AgJ750BM;EACE;EACA;EACA;AhJ+50BR;AgJx60BQ;EACE,yBpIkBK;EoIjBL,qBpIiBK;AZy50Bf;AgJt60BM;EACE;EACA;EACA;AhJw60BR;AgJj70BQ;EACE,yBpIkBK;EoIjBL,qBpIiBK;AZk60Bf;AgJ/60BM;EACE;EACA;EACA;AhJi70BR;AgJ170BQ;EACE,yBpIkBK;EoIjBL,qBpIiBK;AZ260Bf;AgJx70BM;EACE;EACA;EACA;AhJ070BR;AgJn80BQ;EACE,yBpIkBK;EoIjBL,qBpIiBK;AZo70Bf;AgJj80BM;EACE;EACA;EACA;AhJm80BR;AgJ580BQ;EACE,yBpIkBK;EoIjBL,qBpIiBK;AZ670Bf;AgJ180BM;EACE;EACA;EACA;AhJ480BR;AgJr90BQ;EACE,yBpIkBK;EoIjBL,qBpIiBK;AZs80Bf;AgJn90BM;EACE;EACA;EACA;AhJq90BR;;AgJ/80BA;EACE;AhJk90BF;AgJh90BE;EAEE;EACA;AhJi90BJ;AgJ/80BI;EACE;AhJi90BN;AgJ980BI;EACE;EACA;EACA;EACA;EACA;EACA;AhJg90BN;;AgJz80BA;EACE;EACA;EACA;AhJ480BF;AgJ180BE;EAEE;EACA;AhJ280BJ;AoB990BI;E4HgBF;IAKI;EhJ680BJ;AACF;AgJ580BI;EACE;AhJ880BN;AgJ380BI;EACE;EACA;EACA;EACA;EACA;AhJ680BN;AoB7+0BI;E4H2BA;IAOI;IACA;EhJ+80BN;AACF;AgJ380BE;EACE;EACA;EACA,uB/IZe;E+Iaf;EACA;AhJ680BJ;AgJ580BI;EACE;EACA;EACA,uB/IlBa;ADg+0BnB;AoB//0BI;E4HqDI;IACE;EhJ680BR;EgJ580BQ;IACE;EhJ880BV;AACF;AoBvg1BI;E4H8DE;IACE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;EhJ480BN;AACF;AgJx80BE;EACE;EACA;AhJ080BJ;AoB3h1BI;E4HsFE;IACE;EhJw80BN;AACF;AoBhi1BI;E4H2FA;IAEI;IACA;EhJu80BN;EgJr80BM;IACE;EhJu80BR;AACF;AoBzi1BI;E4HqGA;IAEI;EhJs80BN;AACF;AgJl80BI;EACE;AhJo80BN;AoBjj1BI;E4H4GA;IAGI;EhJs80BN;AACF;AoBtj1BI;E4HkHA;IAEI;EhJs80BN;EgJr80BM;IACE;IACA;EhJu80BR;AACF;AoB/j1BI;E4H2HA;IAEI;EhJs80BN;AACF;AgJl80BE;EACE;EACA,mB/IRW;E+ISX;EACA;EACA;EACA;EACA;EACA;AhJo80BJ;AoB9k1BI;E4HkIF;IAWI;IACA;EhJq80BJ;AACF;;AgJ/70BA;EACE;EACA;EACA;EACA;AhJk80BF;AoB3l1BI;E4HqJJ;IAMI;EhJo80BF;AACF;AgJ/70BI;EACE;AhJi80BN;AoBnm1BI;E4HiKA;IAGI;EhJm80BN;AACF;AgJh80BM;EACE;AhJk80BR;AgJh80BQ;EACE;EACA;EACA;EACA;EACA;EACA;AhJk80BV;AoBnn1BI;E4H2KI;IASI;EhJm80BV;AACF;AgJ770BE;EACE;EACA;EACA;AhJ+70BJ;AoB7n1BI;E4H2LF;IAKI;EhJi80BJ;AACF;AgJ970BE;EACE;AhJg80BJ;AgJ970BI;EACE;AhJg80BN;AgJ570BM;EACE;AhJ870BR;AoB3o1BI;E4H4ME;IAGI;EhJg80BR;AACF;AgJ370BI;EACE;AhJ670BN;AoBnp1BI;E4HqNA;IAGI;IACA;EhJ+70BN;AACF;AoBzp1BI;E4H8NE;IAEI;IACA;EhJ670BR;AACF;AoB/p1BI;E4HsOA;IAEI;EhJ270BN;AACF;AgJv70BE;EACE;EACA;EACA;AhJy70BJ;AgJv70BI;EAEE;EACA;AhJw70BN;AgJr70BI;EAEE;EACA;EACA;EACA;EACA;EACA;AhJs70BN;AgJn70BI;EAEE;EACA;EACA;EACA;AhJo70BN;AoB3r1BI;E4HkQA;IAOI;EhJs70BN;AACF;AgJl70BE;EACE;EACA;EACA;AhJo70BJ;AoBrs1BI;E4H8QF;IAKI;EhJs70BJ;AACF;;AiJvw1BI;EACE;AjJ0w1BN;AiJvw1BE;EACE;AjJyw1BJ;AiJxw1BI;EACE;EACA;EACA;AjJ0w1BN;;AiJtw1BA;EACE;EACA;AjJyw1BF;AiJxw1BE;ErHFI,6BqHGF;AjJ0w1BJ;A4Bzw1BM;EqHFJ;IrHGM;E5B4w1BN;AACF;AiJ7w1BE;EACE;EACA;EACA;EACA;AjJ+w1BJ;AiJ7w1BE;EACE;AjJ+w1BJ;AiJ3w1BM;EACE;AjJ6w1BR;AiJzw1BE;EACE;AjJ2w1BJ;AiJ1w1BI;EACE;EACA;EACA;EACA;AjJ4w1BN;AiJ1w1BI;EACE,wChJkmBgB;AD0q0BtB;AiJ1w1BI;EACE,wChJgmBiB;AD4q0BvB;AiJ1w1BI;EACE;EACA;EACA;AjJ4w1BN;AiJ1w1BQ;EACE;AjJ4w1BV;AiJxw1BI;EACE;EACA;EACA,gBhJmIiB;EgJlIjB;EACA,6BhJglBgB;EgJ/kBhB;EACA;AjJ0w1BN;AiJvw1BE;EACE;AjJyw1BJ;AiJtw1BE;EACE;EACA;AjJww1BJ;AiJvw1BI;EACE;EACA;AjJyw1BN;AiJvw1BI;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,gCvIwewB;EuIvexB;EACA;AjJyw1BN;AiJvw1BI;EACE;AjJyw1BN;AiJtw1BI;EACE;AjJww1BN;AiJvw1BM;EACE;EACA;EACA;EACA;EACA;AjJyw1BR;AiJnw1BQ;EACE;EACA;EACA;EACA;EACA;AjJqw1BV;AiJhw1BE;EACE;AjJkw1BJ;;AoBpy1BI;E8H3FJ;IAEI;ElJk41BF;AACF;;AkJ/31BA;EACE;AlJk41BF;;AkJ/31BA;EACE;AlJk41BF;;AkJ/31BA;EACE;AlJk41BF;;AkJ/31BA;EACE;AlJk41BF;;AkJ/31BA;EACE;AlJk41BF;;AkJ/31BA;EACE;AlJk41BF;;AkJ931BE;EACE;EACA;AlJi41BJ;AkJh41BI;EACE;EACA;AlJk41BN;;AkJ731BE;EACE;EACA;AlJg41BJ;AkJ/31BI;EACE;EACA;AlJi41BN;;AkJ531BA;EACE;EACA;EACA;AlJ+31BF;;AoBt31BI;E8HPJ;IAEI;ElJg41BF;AACF;;AkJ931BA;EACE;AlJi41BF;;AkJ/31BA;EACE;AlJk41BF;;AkJ/31BA;EACE;AlJk41BF;AkJj41BE;EACE;AlJm41BJ;;AkJ531BI;;EACE;AlJg41BN;AkJ931BI;;EACE;EACA;EACA;AlJi41BN;AkJh41BM;;;;EAEE;AlJo41BR;AkJl41BM;;;EACE;AlJs41BR;;AkJj41BA;EACE;AlJo41BF;AkJj41BM;EACE;AlJm41BR;AkJl41BQ;EACE;EACA;EACA;EACA;EACA;AlJo41BV;AkJ/31BE;EACE;AlJi41BJ;;AmJ9+1BE;EACE;EACA;EACA;EACA;AnJi/1BJ;;AmJ7+1BA;EACE;IACE;EnJg/1BF;EmJ7+1BA;IACE;EnJ++1BF;AACF;AmJ1+1BA;EACE;AnJ4+1BF;AmJ3+1BE;EACE;AnJ6+1BJ;AmJ3+1BE;EACE;EACA;EACA;AnJ6+1BJ;AmJ1+1BE;EACE;EACA;EACA;AnJ4+1BJ;;AmJx+1BA;EACE;IACE;EnJ2+1BF;AACF;AoJvh2BA;AACA;AACA;AhI6DI;EgI5DJ;IAEI;IACA,anJ0YY;ImJzYZ;EpJyh2BF;AACF;;AoJth2BA;AACA;AACA;AAGE;;EACE;ApJwh2BJ;AoJvh2BI;;EACE;ApJ0h2BN;AoJvh2BE;;EACE;EACA;EACA;ApJ0h2BJ;;AoJth2BA;AACA;AACA;AACA;EACE;ApJyh2BF;AoB3/1BI;EgI/BJ;IAGI;IACA;IACA;EpJ2h2BF;AACF;;AqJjk2BA;EACE,gC3IokB4B;AVgg1B9B;AqJjk2BE;EACE;ArJmk2BJ;AqJhk2BE;EACE;ArJkk2BJ;;AsJ3k2BA;EACE;EACA;AtJ8k2BF;AsJ7k2BE;EACE;AtJ+k2BJ;AsJ7k2BI;EACE;AtJ+k2BN;;AsJ1k2BA;EACE;AtJ6k2BF;AsJ1k2BI;EACE;EACA;AtJ4k2BN;AsJzk2BI;EACE;AtJ2k2BN;;AsJrk2BE;EAGE;EACA;AtJsk2BJ;;AsJlk2BE;EAGE;EACA;AtJmk2BJ;;AuJ3m2BA;EACE;AvJ8m2BF;AuJ5m2BE;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA,gBtJuLiB;EsJtLjB;EACA,gC7IwjB0B;E6IvjB1B;AvJ8m2BJ;AuJ5m2BE;EACE;AvJ8m2BJ;AuJ5m2BE;EACE;EACA;EACA;EACA;AvJ8m2BJ,C","sources":["webpack://falcon-react/./node_modules/leaflet/dist/leaflet.css","webpack://falcon-react/./node_modules/simplebar-react/dist/simplebar.min.css","webpack://falcon-react/./src/assets/scss/theme.scss","webpack://falcon-react/./src/assets/scss/theme/_variables.scss","webpack://falcon-react/./src/assets/scss/theme/mixins/_button.scss","webpack://falcon-react/./src/assets/scss/theme/_utilities.scss","webpack://falcon-react/./node_modules/bootstrap/scss/_root.scss","webpack://falcon-react/./node_modules/bootstrap/scss/vendor/_rfs.scss","webpack://falcon-react/./node_modules/bootstrap/scss/mixins/_color-mode.scss","webpack://falcon-react/./src/assets/scss/theme/root/_light.scss","webpack://falcon-react/./src/assets/scss/theme/root/_dark.scss","webpack://falcon-react/./node_modules/bootstrap/scss/_reboot.scss","webpack://falcon-react/./node_modules/bootstrap/scss/_variables.scss","webpack://falcon-react/./node_modules/bootstrap/scss/mixins/_border-radius.scss","webpack://falcon-react/./src/assets/scss/theme/_colors.scss","webpack://falcon-react/./node_modules/bootstrap/scss/_type.scss","webpack://falcon-react/./node_modules/bootstrap/scss/mixins/_lists.scss","webpack://falcon-react/./node_modules/bootstrap/scss/_images.scss","webpack://falcon-react/./node_modules/bootstrap/scss/mixins/_image.scss","webpack://falcon-react/./node_modules/bootstrap/scss/mixins/_box-shadow.scss","webpack://falcon-react/./node_modules/bootstrap/scss/_containers.scss","webpack://falcon-react/./node_modules/bootstrap/scss/mixins/_container.scss","webpack://falcon-react/./node_modules/bootstrap/scss/mixins/_breakpoints.scss","webpack://falcon-react/./node_modules/bootstrap/scss/_grid.scss","webpack://falcon-react/./node_modules/bootstrap/scss/mixins/_grid.scss","webpack://falcon-react/./node_modules/bootstrap/scss/_tables.scss","webpack://falcon-react/./node_modules/bootstrap/scss/mixins/_table-variants.scss","webpack://falcon-react/./node_modules/bootstrap/scss/forms/_labels.scss","webpack://falcon-react/./node_modules/bootstrap/scss/forms/_form-text.scss","webpack://falcon-react/./node_modules/bootstrap/scss/forms/_form-control.scss","webpack://falcon-react/./node_modules/bootstrap/scss/mixins/_transition.scss","webpack://falcon-react/./node_modules/bootstrap/scss/mixins/_gradients.scss","webpack://falcon-react/./node_modules/bootstrap/scss/forms/_form-select.scss","webpack://falcon-react/./node_modules/bootstrap/scss/forms/_form-check.scss","webpack://falcon-react/./node_modules/bootstrap/scss/forms/_form-range.scss","webpack://falcon-react/./node_modules/bootstrap/scss/forms/_floating-labels.scss","webpack://falcon-react/./node_modules/bootstrap/scss/forms/_input-group.scss","webpack://falcon-react/./node_modules/bootstrap/scss/mixins/_forms.scss","webpack://falcon-react/./node_modules/bootstrap/scss/_buttons.scss","webpack://falcon-react/./node_modules/bootstrap/scss/mixins/_buttons.scss","webpack://falcon-react/./node_modules/bootstrap/scss/_transitions.scss","webpack://falcon-react/./node_modules/bootstrap/scss/_dropdown.scss","webpack://falcon-react/./node_modules/bootstrap/scss/mixins/_caret.scss","webpack://falcon-react/./node_modules/bootstrap/scss/_button-group.scss","webpack://falcon-react/./node_modules/bootstrap/scss/_nav.scss","webpack://falcon-react/./node_modules/bootstrap/scss/_navbar.scss","webpack://falcon-react/./node_modules/bootstrap/scss/_card.scss","webpack://falcon-react/./node_modules/bootstrap/scss/_accordion.scss","webpack://falcon-react/./node_modules/bootstrap/scss/_breadcrumb.scss","webpack://falcon-react/./node_modules/bootstrap/scss/_pagination.scss","webpack://falcon-react/./node_modules/bootstrap/scss/mixins/_pagination.scss","webpack://falcon-react/./node_modules/bootstrap/scss/_badge.scss","webpack://falcon-react/./node_modules/bootstrap/scss/_alert.scss","webpack://falcon-react/./node_modules/bootstrap/scss/_progress.scss","webpack://falcon-react/./node_modules/bootstrap/scss/_list-group.scss","webpack://falcon-react/./node_modules/bootstrap/scss/_close.scss","webpack://falcon-react/./node_modules/bootstrap/scss/_toasts.scss","webpack://falcon-react/./node_modules/bootstrap/scss/_modal.scss","webpack://falcon-react/./node_modules/bootstrap/scss/mixins/_backdrop.scss","webpack://falcon-react/./node_modules/bootstrap/scss/_tooltip.scss","webpack://falcon-react/./node_modules/bootstrap/scss/mixins/_reset-text.scss","webpack://falcon-react/./node_modules/bootstrap/scss/_popover.scss","webpack://falcon-react/./node_modules/bootstrap/scss/_carousel.scss","webpack://falcon-react/./node_modules/bootstrap/scss/mixins/_clearfix.scss","webpack://falcon-react/./node_modules/bootstrap/scss/_spinners.scss","webpack://falcon-react/./node_modules/bootstrap/scss/_offcanvas.scss","webpack://falcon-react/./node_modules/bootstrap/scss/_placeholders.scss","webpack://falcon-react/./node_modules/bootstrap/scss/helpers/_color-bg.scss","webpack://falcon-react/./node_modules/bootstrap/scss/helpers/_colored-links.scss","webpack://falcon-react/./node_modules/bootstrap/scss/helpers/_focus-ring.scss","webpack://falcon-react/./node_modules/bootstrap/scss/helpers/_icon-link.scss","webpack://falcon-react/./node_modules/bootstrap/scss/helpers/_ratio.scss","webpack://falcon-react/./node_modules/bootstrap/scss/helpers/_position.scss","webpack://falcon-react/./node_modules/bootstrap/scss/helpers/_stacks.scss","webpack://falcon-react/./node_modules/bootstrap/scss/helpers/_visually-hidden.scss","webpack://falcon-react/./node_modules/bootstrap/scss/mixins/_visually-hidden.scss","webpack://falcon-react/./node_modules/bootstrap/scss/helpers/_stretched-link.scss","webpack://falcon-react/./node_modules/bootstrap/scss/helpers/_text-truncation.scss","webpack://falcon-react/./node_modules/bootstrap/scss/mixins/_text-truncate.scss","webpack://falcon-react/./node_modules/bootstrap/scss/helpers/_vr.scss","webpack://falcon-react/./node_modules/bootstrap/scss/mixins/_utilities.scss","webpack://falcon-react/./node_modules/bootstrap/scss/utilities/_api.scss","webpack://falcon-react/./src/assets/scss/theme/_reboot.scss","webpack://falcon-react/./src/assets/scss/theme/_navbar.scss","webpack://falcon-react/./src/assets/scss/theme/mixins/_hover-focus.scss","webpack://falcon-react/./src/assets/scss/theme/_badge.scss","webpack://falcon-react/./src/assets/scss/theme/_card.scss","webpack://falcon-react/./src/assets/scss/theme/_browser-support.scss","webpack://falcon-react/./src/assets/scss/theme/_buttons.scss","webpack://falcon-react/./src/assets/scss/theme/_documentation.scss","webpack://falcon-react/./src/assets/scss/theme/_hoverbox.scss","webpack://falcon-react/./src/assets/scss/theme/_mixed.scss","webpack://falcon-react/./src/assets/scss/theme/plugins/_dropzone.scss","webpack://falcon-react/./src/assets/scss/theme/plugins/_slick.scss","webpack://falcon-react/./src/assets/scss/theme/plugins/_lottie.scss","webpack://falcon-react/./src/assets/scss/theme/plugins/_echarts.scss","webpack://falcon-react/./src/assets/scss/theme/plugins/_react-table.scss","webpack://falcon-react/./src/assets/scss/theme/plugins/_react-player.scss","webpack://falcon-react/./src/assets/scss/theme/plugins/_full-calendar.scss","webpack://falcon-react/./src/assets/scss/theme/_functions.scss","webpack://falcon-react/./src/assets/scss/theme/plugins/_react-datepicker.scss","webpack://falcon-react/./src/assets/scss/theme/plugins/_react-select.scss","webpack://falcon-react/./src/assets/scss/theme/plugins/_tinymce.scss","webpack://falcon-react/./src/assets/scss/theme/plugins/_toastify.scss","webpack://falcon-react/./src/assets/scss/theme/plugins/_leaflet.scss","webpack://falcon-react/./src/assets/scss/theme/plugins/_emoji-mart.scss","webpack://falcon-react/./src/assets/scss/theme/plugins/_google-map.scss","webpack://falcon-react/./src/assets/scss/theme/plugins/_react-range.scss","webpack://falcon-react/./src/assets/scss/theme/_table.scss","webpack://falcon-react/./src/assets/scss/theme/_type.scss","webpack://falcon-react/./src/assets/scss/theme/_cursor.scss","webpack://falcon-react/./src/assets/scss/theme/helpers/_text.scss","webpack://falcon-react/./src/assets/scss/theme/helpers/_background.scss","webpack://falcon-react/./src/assets/scss/theme/helpers/_borders.scss","webpack://falcon-react/./src/assets/scss/theme/helpers/_position.scss","webpack://falcon-react/./src/assets/scss/theme/helpers/_flex.scss","webpack://falcon-react/./src/assets/scss/theme/helpers/_colored-links.scss","webpack://falcon-react/./src/assets/scss/theme/_dropdown.scss","webpack://falcon-react/./src/assets/scss/theme/_navbar-vertical.scss","webpack://falcon-react/./src/assets/scss/theme/mixins/_navbar-vertical.scss","webpack://falcon-react/./src/assets/scss/theme/_navbar-top.scss","webpack://falcon-react/./src/assets/scss/theme/_search-box.scss","webpack://falcon-react/./src/assets/scss/theme/_avatar.scss","webpack://falcon-react/./src/assets/scss/theme/_notification.scss","webpack://falcon-react/./src/assets/scss/theme/_scrollbar.scss","webpack://falcon-react/./src/assets/scss/theme/_dashboard.scss","webpack://falcon-react/./src/assets/scss/theme/_accordion.scss","webpack://falcon-react/./src/assets/scss/theme/_calendar.scss","webpack://falcon-react/./src/assets/scss/theme/_hover.scss","webpack://falcon-react/./src/assets/scss/theme/_animations.scss","webpack://falcon-react/./src/assets/scss/theme/_modal.scss","webpack://falcon-react/./src/assets/scss/theme/_icon.scss","webpack://falcon-react/./src/assets/scss/theme/_landing.scss","webpack://falcon-react/./src/assets/scss/theme/_navbar-standard.scss","webpack://falcon-react/./src/assets/scss/theme/_carousel.scss","webpack://falcon-react/./src/assets/scss/theme/_forms.scss","webpack://falcon-react/./src/assets/scss/theme/_radio-select.scss","webpack://falcon-react/./src/assets/scss/theme/_settings-panel.scss","webpack://falcon-react/./src/assets/scss/theme/_nav-tab.scss","webpack://falcon-react/./src/assets/scss/theme/_rating.scss","webpack://falcon-react/./src/assets/scss/theme/_chat.scss","webpack://falcon-react/./src/assets/scss/theme/_kanban.scss","webpack://falcon-react/./src/assets/scss/theme/_account.scss","webpack://falcon-react/./src/assets/scss/theme/_wizard.scss","webpack://falcon-react/./src/assets/scss/theme/_notice.scss","webpack://falcon-react/./src/assets/scss/theme/root/_override.scss","webpack://falcon-react/./src/assets/scss/theme/_timeline.scss","webpack://falcon-react/./src/assets/scss/theme/_treeview.scss","webpack://falcon-react/./src/assets/scss/theme/_support-desk.scss","webpack://falcon-react/./src/assets/scss/theme/_progress.scss","webpack://falcon-react/./src/assets/scss/theme/_e-learning.scss","webpack://falcon-react/./src/assets/scss/theme/_bottom-bar.scss","webpack://falcon-react/./src/assets/scss/theme/_focus.scss","webpack://falcon-react/./src/assets/scss/theme/_collapse.scss"],"sourcesContent":["/* required styles */\r\n\r\n.leaflet-pane,\r\n.leaflet-tile,\r\n.leaflet-marker-icon,\r\n.leaflet-marker-shadow,\r\n.leaflet-tile-container,\r\n.leaflet-pane > svg,\r\n.leaflet-pane > canvas,\r\n.leaflet-zoom-box,\r\n.leaflet-image-layer,\r\n.leaflet-layer {\r\n\tposition: absolute;\r\n\tleft: 0;\r\n\ttop: 0;\r\n\t}\r\n.leaflet-container {\r\n\toverflow: hidden;\r\n\t}\r\n.leaflet-tile,\r\n.leaflet-marker-icon,\r\n.leaflet-marker-shadow {\r\n\t-webkit-user-select: none;\r\n\t -moz-user-select: none;\r\n\t user-select: none;\r\n\t -webkit-user-drag: none;\r\n\t}\r\n/* Prevents IE11 from highlighting tiles in blue */\r\n.leaflet-tile::selection {\r\n\tbackground: transparent;\r\n}\r\n/* Safari renders non-retina tile on retina better with this, but Chrome is worse */\r\n.leaflet-safari .leaflet-tile {\r\n\timage-rendering: -webkit-optimize-contrast;\r\n\t}\r\n/* hack that prevents hw layers \"stretching\" when loading new tiles */\r\n.leaflet-safari .leaflet-tile-container {\r\n\twidth: 1600px;\r\n\theight: 1600px;\r\n\t-webkit-transform-origin: 0 0;\r\n\t}\r\n.leaflet-marker-icon,\r\n.leaflet-marker-shadow {\r\n\tdisplay: block;\r\n\t}\r\n/* .leaflet-container svg: reset svg max-width decleration shipped in Joomla! (joomla.org) 3.x */\r\n/* .leaflet-container img: map is broken in FF if you have max-width: 100% on tiles */\r\n.leaflet-container .leaflet-overlay-pane svg {\r\n\tmax-width: none !important;\r\n\tmax-height: none !important;\r\n\t}\r\n.leaflet-container .leaflet-marker-pane img,\r\n.leaflet-container .leaflet-shadow-pane img,\r\n.leaflet-container .leaflet-tile-pane img,\r\n.leaflet-container img.leaflet-image-layer,\r\n.leaflet-container .leaflet-tile {\r\n\tmax-width: none !important;\r\n\tmax-height: none !important;\r\n\twidth: auto;\r\n\tpadding: 0;\r\n\t}\r\n\r\n.leaflet-container img.leaflet-tile {\r\n\t/* See: https://bugs.chromium.org/p/chromium/issues/detail?id=600120 */\r\n\tmix-blend-mode: plus-lighter;\r\n}\r\n\r\n.leaflet-container.leaflet-touch-zoom {\r\n\t-ms-touch-action: pan-x pan-y;\r\n\ttouch-action: pan-x pan-y;\r\n\t}\r\n.leaflet-container.leaflet-touch-drag {\r\n\t-ms-touch-action: pinch-zoom;\r\n\t/* Fallback for FF which doesn't support pinch-zoom */\r\n\ttouch-action: none;\r\n\ttouch-action: pinch-zoom;\r\n}\r\n.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom {\r\n\t-ms-touch-action: none;\r\n\ttouch-action: none;\r\n}\r\n.leaflet-container {\r\n\t-webkit-tap-highlight-color: transparent;\r\n}\r\n.leaflet-container a {\r\n\t-webkit-tap-highlight-color: rgba(51, 181, 229, 0.4);\r\n}\r\n.leaflet-tile {\r\n\tfilter: inherit;\r\n\tvisibility: hidden;\r\n\t}\r\n.leaflet-tile-loaded {\r\n\tvisibility: inherit;\r\n\t}\r\n.leaflet-zoom-box {\r\n\twidth: 0;\r\n\theight: 0;\r\n\t-moz-box-sizing: border-box;\r\n\t box-sizing: border-box;\r\n\tz-index: 800;\r\n\t}\r\n/* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */\r\n.leaflet-overlay-pane svg {\r\n\t-moz-user-select: none;\r\n\t}\r\n\r\n.leaflet-pane { z-index: 400; }\r\n\r\n.leaflet-tile-pane { z-index: 200; }\r\n.leaflet-overlay-pane { z-index: 400; }\r\n.leaflet-shadow-pane { z-index: 500; }\r\n.leaflet-marker-pane { z-index: 600; }\r\n.leaflet-tooltip-pane { z-index: 650; }\r\n.leaflet-popup-pane { z-index: 700; }\r\n\r\n.leaflet-map-pane canvas { z-index: 100; }\r\n.leaflet-map-pane svg { z-index: 200; }\r\n\r\n.leaflet-vml-shape {\r\n\twidth: 1px;\r\n\theight: 1px;\r\n\t}\r\n.lvml {\r\n\tbehavior: url(#default#VML);\r\n\tdisplay: inline-block;\r\n\tposition: absolute;\r\n\t}\r\n\r\n\r\n/* control positioning */\r\n\r\n.leaflet-control {\r\n\tposition: relative;\r\n\tz-index: 800;\r\n\tpointer-events: visiblePainted; /* IE 9-10 doesn't have auto */\r\n\tpointer-events: auto;\r\n\t}\r\n.leaflet-top,\r\n.leaflet-bottom {\r\n\tposition: absolute;\r\n\tz-index: 1000;\r\n\tpointer-events: none;\r\n\t}\r\n.leaflet-top {\r\n\ttop: 0;\r\n\t}\r\n.leaflet-right {\r\n\tright: 0;\r\n\t}\r\n.leaflet-bottom {\r\n\tbottom: 0;\r\n\t}\r\n.leaflet-left {\r\n\tleft: 0;\r\n\t}\r\n.leaflet-control {\r\n\tfloat: left;\r\n\tclear: both;\r\n\t}\r\n.leaflet-right .leaflet-control {\r\n\tfloat: right;\r\n\t}\r\n.leaflet-top .leaflet-control {\r\n\tmargin-top: 10px;\r\n\t}\r\n.leaflet-bottom .leaflet-control {\r\n\tmargin-bottom: 10px;\r\n\t}\r\n.leaflet-left .leaflet-control {\r\n\tmargin-left: 10px;\r\n\t}\r\n.leaflet-right .leaflet-control {\r\n\tmargin-right: 10px;\r\n\t}\r\n\r\n\r\n/* zoom and fade animations */\r\n\r\n.leaflet-fade-anim .leaflet-popup {\r\n\topacity: 0;\r\n\t-webkit-transition: opacity 0.2s linear;\r\n\t -moz-transition: opacity 0.2s linear;\r\n\t transition: opacity 0.2s linear;\r\n\t}\r\n.leaflet-fade-anim .leaflet-map-pane .leaflet-popup {\r\n\topacity: 1;\r\n\t}\r\n.leaflet-zoom-animated {\r\n\t-webkit-transform-origin: 0 0;\r\n\t -ms-transform-origin: 0 0;\r\n\t transform-origin: 0 0;\r\n\t}\r\nsvg.leaflet-zoom-animated {\r\n\twill-change: transform;\r\n}\r\n\r\n.leaflet-zoom-anim .leaflet-zoom-animated {\r\n\t-webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1);\r\n\t -moz-transition: -moz-transform 0.25s cubic-bezier(0,0,0.25,1);\r\n\t transition: transform 0.25s cubic-bezier(0,0,0.25,1);\r\n\t}\r\n.leaflet-zoom-anim .leaflet-tile,\r\n.leaflet-pan-anim .leaflet-tile {\r\n\t-webkit-transition: none;\r\n\t -moz-transition: none;\r\n\t transition: none;\r\n\t}\r\n\r\n.leaflet-zoom-anim .leaflet-zoom-hide {\r\n\tvisibility: hidden;\r\n\t}\r\n\r\n\r\n/* cursors */\r\n\r\n.leaflet-interactive {\r\n\tcursor: pointer;\r\n\t}\r\n.leaflet-grab {\r\n\tcursor: -webkit-grab;\r\n\tcursor: -moz-grab;\r\n\tcursor: grab;\r\n\t}\r\n.leaflet-crosshair,\r\n.leaflet-crosshair .leaflet-interactive {\r\n\tcursor: crosshair;\r\n\t}\r\n.leaflet-popup-pane,\r\n.leaflet-control {\r\n\tcursor: auto;\r\n\t}\r\n.leaflet-dragging .leaflet-grab,\r\n.leaflet-dragging .leaflet-grab .leaflet-interactive,\r\n.leaflet-dragging .leaflet-marker-draggable {\r\n\tcursor: move;\r\n\tcursor: -webkit-grabbing;\r\n\tcursor: -moz-grabbing;\r\n\tcursor: grabbing;\r\n\t}\r\n\r\n/* marker & overlays interactivity */\r\n.leaflet-marker-icon,\r\n.leaflet-marker-shadow,\r\n.leaflet-image-layer,\r\n.leaflet-pane > svg path,\r\n.leaflet-tile-container {\r\n\tpointer-events: none;\r\n\t}\r\n\r\n.leaflet-marker-icon.leaflet-interactive,\r\n.leaflet-image-layer.leaflet-interactive,\r\n.leaflet-pane > svg path.leaflet-interactive,\r\nsvg.leaflet-image-layer.leaflet-interactive path {\r\n\tpointer-events: visiblePainted; /* IE 9-10 doesn't have auto */\r\n\tpointer-events: auto;\r\n\t}\r\n\r\n/* visual tweaks */\r\n\r\n.leaflet-container {\r\n\tbackground: #ddd;\r\n\toutline-offset: 1px;\r\n\t}\r\n.leaflet-container a {\r\n\tcolor: #0078A8;\r\n\t}\r\n.leaflet-zoom-box {\r\n\tborder: 2px dotted #38f;\r\n\tbackground: rgba(255,255,255,0.5);\r\n\t}\r\n\r\n\r\n/* general typography */\r\n.leaflet-container {\r\n\tfont-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n\tfont-size: 12px;\r\n\tfont-size: 0.75rem;\r\n\tline-height: 1.5;\r\n\t}\r\n\r\n\r\n/* general toolbar styles */\r\n\r\n.leaflet-bar {\r\n\tbox-shadow: 0 1px 5px rgba(0,0,0,0.65);\r\n\tborder-radius: 4px;\r\n\t}\r\n.leaflet-bar a {\r\n\tbackground-color: #fff;\r\n\tborder-bottom: 1px solid #ccc;\r\n\twidth: 26px;\r\n\theight: 26px;\r\n\tline-height: 26px;\r\n\tdisplay: block;\r\n\ttext-align: center;\r\n\ttext-decoration: none;\r\n\tcolor: black;\r\n\t}\r\n.leaflet-bar a,\r\n.leaflet-control-layers-toggle {\r\n\tbackground-position: 50% 50%;\r\n\tbackground-repeat: no-repeat;\r\n\tdisplay: block;\r\n\t}\r\n.leaflet-bar a:hover,\r\n.leaflet-bar a:focus {\r\n\tbackground-color: #f4f4f4;\r\n\t}\r\n.leaflet-bar a:first-child {\r\n\tborder-top-left-radius: 4px;\r\n\tborder-top-right-radius: 4px;\r\n\t}\r\n.leaflet-bar a:last-child {\r\n\tborder-bottom-left-radius: 4px;\r\n\tborder-bottom-right-radius: 4px;\r\n\tborder-bottom: none;\r\n\t}\r\n.leaflet-bar a.leaflet-disabled {\r\n\tcursor: default;\r\n\tbackground-color: #f4f4f4;\r\n\tcolor: #bbb;\r\n\t}\r\n\r\n.leaflet-touch .leaflet-bar a {\r\n\twidth: 30px;\r\n\theight: 30px;\r\n\tline-height: 30px;\r\n\t}\r\n.leaflet-touch .leaflet-bar a:first-child {\r\n\tborder-top-left-radius: 2px;\r\n\tborder-top-right-radius: 2px;\r\n\t}\r\n.leaflet-touch .leaflet-bar a:last-child {\r\n\tborder-bottom-left-radius: 2px;\r\n\tborder-bottom-right-radius: 2px;\r\n\t}\r\n\r\n/* zoom control */\r\n\r\n.leaflet-control-zoom-in,\r\n.leaflet-control-zoom-out {\r\n\tfont: bold 18px 'Lucida Console', Monaco, monospace;\r\n\ttext-indent: 1px;\r\n\t}\r\n\r\n.leaflet-touch .leaflet-control-zoom-in, .leaflet-touch .leaflet-control-zoom-out {\r\n\tfont-size: 22px;\r\n\t}\r\n\r\n\r\n/* layers control */\r\n\r\n.leaflet-control-layers {\r\n\tbox-shadow: 0 1px 5px rgba(0,0,0,0.4);\r\n\tbackground: #fff;\r\n\tborder-radius: 5px;\r\n\t}\r\n.leaflet-control-layers-toggle {\r\n\tbackground-image: url(images/layers.png);\r\n\twidth: 36px;\r\n\theight: 36px;\r\n\t}\r\n.leaflet-retina .leaflet-control-layers-toggle {\r\n\tbackground-image: url(images/layers-2x.png);\r\n\tbackground-size: 26px 26px;\r\n\t}\r\n.leaflet-touch .leaflet-control-layers-toggle {\r\n\twidth: 44px;\r\n\theight: 44px;\r\n\t}\r\n.leaflet-control-layers .leaflet-control-layers-list,\r\n.leaflet-control-layers-expanded .leaflet-control-layers-toggle {\r\n\tdisplay: none;\r\n\t}\r\n.leaflet-control-layers-expanded .leaflet-control-layers-list {\r\n\tdisplay: block;\r\n\tposition: relative;\r\n\t}\r\n.leaflet-control-layers-expanded {\r\n\tpadding: 6px 10px 6px 6px;\r\n\tcolor: #333;\r\n\tbackground: #fff;\r\n\t}\r\n.leaflet-control-layers-scrollbar {\r\n\toverflow-y: scroll;\r\n\toverflow-x: hidden;\r\n\tpadding-right: 5px;\r\n\t}\r\n.leaflet-control-layers-selector {\r\n\tmargin-top: 2px;\r\n\tposition: relative;\r\n\ttop: 1px;\r\n\t}\r\n.leaflet-control-layers label {\r\n\tdisplay: block;\r\n\tfont-size: 13px;\r\n\tfont-size: 1.08333em;\r\n\t}\r\n.leaflet-control-layers-separator {\r\n\theight: 0;\r\n\tborder-top: 1px solid #ddd;\r\n\tmargin: 5px -10px 5px -6px;\r\n\t}\r\n\r\n/* Default icon URLs */\r\n.leaflet-default-icon-path { /* used only in path-guessing heuristic, see L.Icon.Default */\r\n\tbackground-image: url(images/marker-icon.png);\r\n\t}\r\n\r\n\r\n/* attribution and scale controls */\r\n\r\n.leaflet-container .leaflet-control-attribution {\r\n\tbackground: #fff;\r\n\tbackground: rgba(255, 255, 255, 0.8);\r\n\tmargin: 0;\r\n\t}\r\n.leaflet-control-attribution,\r\n.leaflet-control-scale-line {\r\n\tpadding: 0 5px;\r\n\tcolor: #333;\r\n\tline-height: 1.4;\r\n\t}\r\n.leaflet-control-attribution a {\r\n\ttext-decoration: none;\r\n\t}\r\n.leaflet-control-attribution a:hover,\r\n.leaflet-control-attribution a:focus {\r\n\ttext-decoration: underline;\r\n\t}\r\n.leaflet-attribution-flag {\r\n\tdisplay: inline !important;\r\n\tvertical-align: baseline !important;\r\n\twidth: 1em;\r\n\theight: 0.6669em;\r\n\t}\r\n.leaflet-left .leaflet-control-scale {\r\n\tmargin-left: 5px;\r\n\t}\r\n.leaflet-bottom .leaflet-control-scale {\r\n\tmargin-bottom: 5px;\r\n\t}\r\n.leaflet-control-scale-line {\r\n\tborder: 2px solid #777;\r\n\tborder-top: none;\r\n\tline-height: 1.1;\r\n\tpadding: 2px 5px 1px;\r\n\twhite-space: nowrap;\r\n\t-moz-box-sizing: border-box;\r\n\t box-sizing: border-box;\r\n\tbackground: rgba(255, 255, 255, 0.8);\r\n\ttext-shadow: 1px 1px #fff;\r\n\t}\r\n.leaflet-control-scale-line:not(:first-child) {\r\n\tborder-top: 2px solid #777;\r\n\tborder-bottom: none;\r\n\tmargin-top: -2px;\r\n\t}\r\n.leaflet-control-scale-line:not(:first-child):not(:last-child) {\r\n\tborder-bottom: 2px solid #777;\r\n\t}\r\n\r\n.leaflet-touch .leaflet-control-attribution,\r\n.leaflet-touch .leaflet-control-layers,\r\n.leaflet-touch .leaflet-bar {\r\n\tbox-shadow: none;\r\n\t}\r\n.leaflet-touch .leaflet-control-layers,\r\n.leaflet-touch .leaflet-bar {\r\n\tborder: 2px solid rgba(0,0,0,0.2);\r\n\tbackground-clip: padding-box;\r\n\t}\r\n\r\n\r\n/* popup */\r\n\r\n.leaflet-popup {\r\n\tposition: absolute;\r\n\ttext-align: center;\r\n\tmargin-bottom: 20px;\r\n\t}\r\n.leaflet-popup-content-wrapper {\r\n\tpadding: 1px;\r\n\ttext-align: left;\r\n\tborder-radius: 12px;\r\n\t}\r\n.leaflet-popup-content {\r\n\tmargin: 13px 24px 13px 20px;\r\n\tline-height: 1.3;\r\n\tfont-size: 13px;\r\n\tfont-size: 1.08333em;\r\n\tmin-height: 1px;\r\n\t}\r\n.leaflet-popup-content p {\r\n\tmargin: 17px 0;\r\n\tmargin: 1.3em 0;\r\n\t}\r\n.leaflet-popup-tip-container {\r\n\twidth: 40px;\r\n\theight: 20px;\r\n\tposition: absolute;\r\n\tleft: 50%;\r\n\tmargin-top: -1px;\r\n\tmargin-left: -20px;\r\n\toverflow: hidden;\r\n\tpointer-events: none;\r\n\t}\r\n.leaflet-popup-tip {\r\n\twidth: 17px;\r\n\theight: 17px;\r\n\tpadding: 1px;\r\n\r\n\tmargin: -10px auto 0;\r\n\tpointer-events: auto;\r\n\r\n\t-webkit-transform: rotate(45deg);\r\n\t -moz-transform: rotate(45deg);\r\n\t -ms-transform: rotate(45deg);\r\n\t transform: rotate(45deg);\r\n\t}\r\n.leaflet-popup-content-wrapper,\r\n.leaflet-popup-tip {\r\n\tbackground: white;\r\n\tcolor: #333;\r\n\tbox-shadow: 0 3px 14px rgba(0,0,0,0.4);\r\n\t}\r\n.leaflet-container a.leaflet-popup-close-button {\r\n\tposition: absolute;\r\n\ttop: 0;\r\n\tright: 0;\r\n\tborder: none;\r\n\ttext-align: center;\r\n\twidth: 24px;\r\n\theight: 24px;\r\n\tfont: 16px/24px Tahoma, Verdana, sans-serif;\r\n\tcolor: #757575;\r\n\ttext-decoration: none;\r\n\tbackground: transparent;\r\n\t}\r\n.leaflet-container a.leaflet-popup-close-button:hover,\r\n.leaflet-container a.leaflet-popup-close-button:focus {\r\n\tcolor: #585858;\r\n\t}\r\n.leaflet-popup-scrolled {\r\n\toverflow: auto;\r\n\t}\r\n\r\n.leaflet-oldie .leaflet-popup-content-wrapper {\r\n\t-ms-zoom: 1;\r\n\t}\r\n.leaflet-oldie .leaflet-popup-tip {\r\n\twidth: 24px;\r\n\tmargin: 0 auto;\r\n\r\n\t-ms-filter: \"progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)\";\r\n\tfilter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678);\r\n\t}\r\n\r\n.leaflet-oldie .leaflet-control-zoom,\r\n.leaflet-oldie .leaflet-control-layers,\r\n.leaflet-oldie .leaflet-popup-content-wrapper,\r\n.leaflet-oldie .leaflet-popup-tip {\r\n\tborder: 1px solid #999;\r\n\t}\r\n\r\n\r\n/* div icon */\r\n\r\n.leaflet-div-icon {\r\n\tbackground: #fff;\r\n\tborder: 1px solid #666;\r\n\t}\r\n\r\n\r\n/* Tooltip */\r\n/* Base styles for the element that has a tooltip */\r\n.leaflet-tooltip {\r\n\tposition: absolute;\r\n\tpadding: 6px;\r\n\tbackground-color: #fff;\r\n\tborder: 1px solid #fff;\r\n\tborder-radius: 3px;\r\n\tcolor: #222;\r\n\twhite-space: nowrap;\r\n\t-webkit-user-select: none;\r\n\t-moz-user-select: none;\r\n\t-ms-user-select: none;\r\n\tuser-select: none;\r\n\tpointer-events: none;\r\n\tbox-shadow: 0 1px 3px rgba(0,0,0,0.4);\r\n\t}\r\n.leaflet-tooltip.leaflet-interactive {\r\n\tcursor: pointer;\r\n\tpointer-events: auto;\r\n\t}\r\n.leaflet-tooltip-top:before,\r\n.leaflet-tooltip-bottom:before,\r\n.leaflet-tooltip-left:before,\r\n.leaflet-tooltip-right:before {\r\n\tposition: absolute;\r\n\tpointer-events: none;\r\n\tborder: 6px solid transparent;\r\n\tbackground: transparent;\r\n\tcontent: \"\";\r\n\t}\r\n\r\n/* Directions */\r\n\r\n.leaflet-tooltip-bottom {\r\n\tmargin-top: 6px;\r\n}\r\n.leaflet-tooltip-top {\r\n\tmargin-top: -6px;\r\n}\r\n.leaflet-tooltip-bottom:before,\r\n.leaflet-tooltip-top:before {\r\n\tleft: 50%;\r\n\tmargin-left: -6px;\r\n\t}\r\n.leaflet-tooltip-top:before {\r\n\tbottom: 0;\r\n\tmargin-bottom: -12px;\r\n\tborder-top-color: #fff;\r\n\t}\r\n.leaflet-tooltip-bottom:before {\r\n\ttop: 0;\r\n\tmargin-top: -12px;\r\n\tmargin-left: -6px;\r\n\tborder-bottom-color: #fff;\r\n\t}\r\n.leaflet-tooltip-left {\r\n\tmargin-left: -6px;\r\n}\r\n.leaflet-tooltip-right {\r\n\tmargin-left: 6px;\r\n}\r\n.leaflet-tooltip-left:before,\r\n.leaflet-tooltip-right:before {\r\n\ttop: 50%;\r\n\tmargin-top: -6px;\r\n\t}\r\n.leaflet-tooltip-left:before {\r\n\tright: 0;\r\n\tmargin-right: -12px;\r\n\tborder-left-color: #fff;\r\n\t}\r\n.leaflet-tooltip-right:before {\r\n\tleft: 0;\r\n\tmargin-left: -12px;\r\n\tborder-right-color: #fff;\r\n\t}\r\n\r\n/* Printing */\r\n\r\n@media print {\r\n\t/* Prevent printers from removing background-images of controls. */\r\n\t.leaflet-control {\r\n\t\t-webkit-print-color-adjust: exact;\r\n\t\tprint-color-adjust: exact;\r\n\t\t}\r\n\t}\r\n","[data-simplebar]{position:relative;flex-direction:column;flex-wrap:wrap;justify-content:flex-start;align-content:flex-start;align-items:flex-start}.simplebar-wrapper{overflow:hidden;width:inherit;height:inherit;max-width:inherit;max-height:inherit}.simplebar-mask{direction:inherit;position:absolute;overflow:hidden;padding:0;margin:0;left:0;top:0;bottom:0;right:0;width:auto!important;height:auto!important;z-index:0}.simplebar-offset{direction:inherit!important;box-sizing:inherit!important;resize:none!important;position:absolute;top:0;left:0;bottom:0;right:0;padding:0;margin:0;-webkit-overflow-scrolling:touch}.simplebar-content-wrapper{direction:inherit;box-sizing:border-box!important;position:relative;display:block;height:100%;width:auto;max-width:100%;max-height:100%;overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.simplebar-content-wrapper::-webkit-scrollbar,.simplebar-hide-scrollbar::-webkit-scrollbar{display:none;width:0;height:0}.simplebar-content:after,.simplebar-content:before{content:' ';display:table}.simplebar-placeholder{max-height:100%;max-width:100%;width:100%;pointer-events:none}.simplebar-height-auto-observer-wrapper{box-sizing:inherit!important;height:100%;width:100%;max-width:1px;position:relative;float:left;max-height:1px;overflow:hidden;z-index:-1;padding:0;margin:0;pointer-events:none;flex-grow:inherit;flex-shrink:0;flex-basis:0}.simplebar-height-auto-observer{box-sizing:inherit;display:block;opacity:0;position:absolute;top:0;left:0;height:1000%;width:1000%;min-height:1px;min-width:1px;overflow:hidden;pointer-events:none;z-index:-1}.simplebar-track{z-index:1;position:absolute;right:0;bottom:0;pointer-events:none;overflow:hidden}[data-simplebar].simplebar-dragging{pointer-events:none;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}[data-simplebar].simplebar-dragging .simplebar-content{pointer-events:none;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}[data-simplebar].simplebar-dragging .simplebar-track{pointer-events:all}.simplebar-scrollbar{position:absolute;left:0;right:0;min-height:10px}.simplebar-scrollbar:before{position:absolute;content:'';background:#000;border-radius:7px;left:2px;right:2px;opacity:0;transition:opacity .2s .5s linear}.simplebar-scrollbar.simplebar-visible:before{opacity:.5;transition-delay:0s;transition-duration:0s}.simplebar-track.simplebar-vertical{top:0;width:11px}.simplebar-scrollbar:before{top:2px;bottom:2px;left:2px;right:2px}.simplebar-track.simplebar-horizontal{left:0;height:11px}.simplebar-track.simplebar-horizontal .simplebar-scrollbar{right:auto;left:0;top:0;bottom:0;min-height:0;min-width:10px;width:auto}[data-simplebar-direction=rtl] .simplebar-track.simplebar-vertical{right:auto;left:0}.simplebar-dummy-scrollbar-size{direction:rtl;position:fixed;opacity:0;visibility:hidden;height:500px;width:500px;overflow-y:hidden;overflow-x:scroll;-ms-overflow-style:scrollbar!important}.simplebar-dummy-scrollbar-size>div{width:200%;height:200%;margin:10px 0}.simplebar-hide-scrollbar{position:fixed;left:0;visibility:hidden;overflow-y:scroll;scrollbar-width:none;-ms-overflow-style:none}\n","//* -------------------------------------------------------------------------- */\r\n/* Theme */\r\n/* -------------------------------------------------------------------------- */\r\n\r\n@import '~bootstrap/scss/_functions';\r\n@import 'theme/functions';\r\n\r\n@import 'user-variables';\r\n@import 'theme/colors';\r\n@import 'theme/variables';\r\n@import 'theme/variables-dark';\r\n@import '~bootstrap/scss/variables';\r\n@import '~bootstrap/scss/variables-dark';\r\n\r\n@import 'theme/maps';\r\n@import '~bootstrap/scss/maps'; // ---new---\r\n\r\n@import '~bootstrap/scss/mixins';\r\n@import 'theme/mixins';\r\n\r\n@import 'theme/_utilities';\r\n@import '~bootstrap/scss/utilities';\r\n\r\n@import '~bootstrap/scss/root';\r\n@import 'theme/root';\r\n\r\n/*-----------------------------------------------\r\n| Bootstrap Styles\r\n-----------------------------------------------*/\r\n@import 'bootstrap';\r\n\r\n/*-----------------------------------------------\r\n| Theme Styles\r\n-----------------------------------------------*/\r\n@import 'theme/theme';\r\n","/* prettier-ignore */\r\n@use 'sass:math';\r\n@use 'sass:string';\r\n$prefix: 'falcon-';\r\n\r\n// Grid containers\r\n//\r\n// Define the maximum width of `.container` for different screen sizes.\r\n// scss-docs-start container-max-widths\r\n\r\n// scss-docs-start container-max-widths\r\n$container-max-widths: (\r\n sm: 540px,\r\n md: 720px,\r\n lg: 960px,\r\n xl: 1140px,\r\n xxl: 1480px\r\n) !default;\r\n// scss-docs-end container-max-widths\r\n\r\n// scss-docs-start grid-breakpoints\r\n$grid-breakpoints: (\r\n xs: 0,\r\n sm: 576px,\r\n md: 768px,\r\n lg: 992px,\r\n xl: 1200px,\r\n xxl: 1540px\r\n) !default;\r\n// scss-docs-end grid-breakpoints\r\n\r\n// scss-docs-start spacer-variables-maps\r\n$spacer: 1rem !default;\r\n$spacer-x1: 1.25rem;\r\n$spacers: (\r\n 0: 0,\r\n 1: $spacer * 0.25,\r\n 2: $spacer * 0.5,\r\n 3: $spacer,\r\n 4: $spacer * 1.8,\r\n 5: $spacer * 3,\r\n 6: $spacer * 4,\r\n 7: $spacer * 5,\r\n 8: $spacer * 7.5,\r\n 9: $spacer * 10,\r\n 10: $spacer * 12.5,\r\n 11: $spacer * 15,\r\n x1: $spacer-x1\r\n) !default;\r\n// scss-docs-end spacer-variables-maps\r\n\r\n// Customize the light and dark text colors for use in our color contrast function.\r\n$color-contrast-dark: $gray-800 !default;\r\n\r\n// Min contrast ratio\r\n$min-contrast-ratio: 2 !default;\r\n\r\n// Grid columns\r\n//\r\n// Set the number of columns and specify the width of the gutters.\r\n$grid-gutter-width: 2rem !default;\r\n\r\n// Border\r\n//\r\n// Define border radius styles and more.\r\n$border-color: $gray-300 !default;\r\n$border-width: 1px !default;\r\n\r\n// scss-docs-start border-styles\r\n$border-styles: (\r\n dotted: 'dotted !important',\r\n dashed: 'dashed !important',\r\n none: 'none !important',\r\n hidden: 'hidden !important'\r\n) !default;\r\n// scss-docs-end border-styles\r\n\r\n$disabled-border: transparent !default;\r\n\r\n// scss-docs-start border-radius-variables\r\n$border-radiuses: (\r\n null: var(--#{$prefix}border-radius),\r\n 0: 0,\r\n 1: var(--#{$prefix}border-radius-sm),\r\n 2: var(--#{$prefix}border-radius),\r\n 3: var(--#{$prefix}border-radius-lg),\r\n 4: var(--#{$prefix}border-radius-xl),\r\n 5: var(--#{$prefix}border-radius-xxl),\r\n circle: 50%,\r\n pill: var(--#{$prefix}border-radius-pill)\r\n) !default;\r\n// scss-docs-end border-radius-variables\r\n\r\n$border-radius: 0.25rem !default;\r\n$border-radius-lg: 0.375rem !default;\r\n\r\n// Opacity\r\n//\r\n// scss-docs-start opacity-map\r\n$opacities: (\r\n 0: 0,\r\n 25: 0.25,\r\n 50: 0.5,\r\n 75: 0.75,\r\n 85: 0.85,\r\n 100: 1\r\n) !default;\r\n// scss-docs-end opacity-map\r\n\r\n// Position\r\n//\r\n// Define the edge positioning anchors of the position utilities.\r\n\r\n// scss-docs-start position-map\r\n$positions: (static, absolute, relative, fixed, sticky) !default;\r\n// scss-docs-end position-map\r\n\r\n// Options\r\n//\r\n// Quickly modify global styling by enabling or disabling optional features.\r\n\r\n$enable-shadows: true !default;\r\n$enable-gradients: false !default;\r\n$enable-negative-margins: true !default;\r\n$enable-dark-mode: true !default;\r\n\r\n$component-active-bg: $primary !default;\r\n\r\n// scss-docs-start box-shadow-variables\r\n$box-shadow: 0 7px 14px 0 rgba(65, 69, 88, 0.1), 0 3px 6px 0 rgba(0, 0, 0, 0.07) !default;\r\n$box-shadow-sm: 0 0.125rem 0.25rem rgba($black, 0.075) !default;\r\n$box-shadow-lg: 0 1rem 4rem rgba($black, 0.175) !default;\r\n$box-shadow-inset: inset 0 1px 2px rgba($black, 0.075) !default;\r\n// scss-docs-end box-shadow-variables\r\n\r\n// Links\r\n//\r\n// Style anchor elements.\r\n$link-decoration: none !default;\r\n$link-hover-decoration: underline !default;\r\n$link-shade-percentage: 20% !default;\r\n\r\n// Typography\r\n//\r\n// Font, line-height, and color for body text, headings, and more.\r\n\r\n// scss-docs-start font-variables\r\n$font-family-sans-serif: 'Poppins', -apple-system, BlinkMacSystemFont,\r\n 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif, 'Apple Color Emoji',\r\n 'Segoe UI Emoji', 'Segoe UI Symbol' !default;\r\n$font-family-monospace: 'SFMono-Regular', Menlo, Monaco, Consolas,\r\n 'Liberation Mono', 'Courier New', monospace !default;\r\n$font-family-base: 'Open Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI',\r\n Roboto, 'Helvetica Neue', Arial, sans-serif, 'Apple Color Emoji',\r\n 'Segoe UI Emoji', 'Segoe UI Symbol' !default;\r\n\r\n$type-scale: 1.2 !default;\r\n$font-size-base: 1rem !default;\r\n$font-sizes: () !default;\r\n$font-sizes: map-merge(\r\n (\r\n 11: math.div(1, pow($type-scale, 2)) * $font-size-base,\r\n //11.11\r\n 10: math.div(1, $type-scale) * $font-size-base,\r\n //13.33\r\n 9: $font-size-base,\r\n //16\r\n 8: pow($type-scale, 1) * $font-size-base,\r\n // 19.2\r\n 7: pow($type-scale, 2) * $font-size-base,\r\n // 23.04\r\n 6: pow($type-scale, 3) * $font-size-base,\r\n // 27.65\r\n 5: pow($type-scale, 4) * $font-size-base,\r\n // 33.18\r\n 4: pow($type-scale, 5) * $font-size-base,\r\n // 39.81\r\n 3: pow($type-scale, 6) * $font-size-base,\r\n // 47.78\r\n 2: pow($type-scale, 7) * $font-size-base,\r\n // 57.33\r\n 1: pow($type-scale, 8) * $font-size-base,\r\n // 68.79\r\n ),\r\n $font-sizes\r\n);\r\n\r\n$font-size-sm: $font-size-base * 0.875 !default;\r\n$font-size-lg: $font-size-base * 1.2 !default;\r\n\r\n$font-weight-thin: 100 !default;\r\n$font-weight-lighter: 200 !default;\r\n$font-weight-light: 300 !default;\r\n$font-weight-normal: 400 !default;\r\n$font-weight-medium: 500 !default;\r\n$font-weight-semibold: 600 !default;\r\n$font-weight-bold: 700 !default;\r\n$font-weight-bolder: 800 !default;\r\n$font-weight-black: 900 !default;\r\n\r\n$font-weights: (\r\n thin: $font-weight-thin,\r\n lighter: $font-weight-lighter,\r\n light: $font-weight-light,\r\n normal: $font-weight-normal,\r\n medium: $font-weight-medium,\r\n semibold: $font-weight-semibold,\r\n bold: $font-weight-bold,\r\n bolder: $font-weight-bolder,\r\n black: $font-weight-black\r\n) !default;\r\n\r\n$h1-font-size: map_get($font-sizes, 4) !default;\r\n$h2-font-size: map_get($font-sizes, 5) !default;\r\n$h3-font-size: map_get($font-sizes, 6) !default;\r\n$h4-font-size: map_get($font-sizes, 7) !default;\r\n$h5-font-size: map_get($font-sizes, 8) !default;\r\n$h6-font-size: map_get($font-sizes, 10) !default;\r\n\r\n$headings-font-family: var(--#{$prefix}font-sans-serif) !default;\r\n$headings-font-weight: $font-weight-medium !default;\r\n$headings-color: var(--#{$prefix}secondary-color) !default;\r\n\r\n// scss-docs-start display-headings\r\n$display-font-sizes: (\r\n 1: map_get($font-sizes, 1),\r\n 2: map_get($font-sizes, 2),\r\n 3: map_get($font-sizes, 3),\r\n 4: map_get($font-sizes, 4),\r\n 5: map_get($font-sizes, 5),\r\n 6: map_get($font-sizes, 6)\r\n) !default;\r\n\r\n$display-font-weight: $font-weight-black !default;\r\n$display-line-height: 1 !default;\r\n// scss-docs-end display-headings\r\n\r\n// scss-docs-start type-variables\r\n$lead-font-size: $font-size-lg !default;\r\n$lead-font-weight: $font-weight-normal !default;\r\n\r\n$small-font-size: 75% !default;\r\n\r\n$blockquote-font-size: $font-size-lg !default;\r\n\r\n$hr-color: var(--#{$prefix}border-color) !default;\r\n$hr-opacity: var(--#{$prefix}hr-opacity) !default;\r\n// scss-docs-end type-variables\r\n\r\n// Cards\r\n//\r\n// scss-docs-start card-variables\r\n$card-spacer-y: 1.25rem !default;\r\n$card-spacer-x: $spacer-x1 !default;\r\n$card-border-width: 0px !default;\r\n$card-border-radius: $border-radius-lg !default;\r\n$card-border-color: rgba(var(--#{$prefix}emphasis-color-rgb), 0.125) !default;\r\n$card-cap-bg: rgba($body-emphasis-color, 0) !default;\r\n$card-cap-padding-y: $spacer !default;\r\n$card-cap-padding-x: 1.25rem !default;\r\n$card-bg: $white !default;\r\n$card-bg-dark: tint-color($gray-1100, 2.9%) !default;\r\n$card-title-color: $headings-color !default;\r\n// scss-docs-end card-variables\r\n\r\n// Accordion\r\n//\r\n// scss-docs-start accordion-variables\r\n$accordion-icon-active-color: $body-color !default;\r\n$accordion-bg: var(--#{$prefix}emphasis-bg) !default;\r\n$accordion-border-color: rgba(\r\n var(--#{$prefix}emphasis-color-rgb),\r\n 0.125\r\n) !default;\r\n$accordion-button-active-color: shade-color($primary, 10%) !default;\r\n$accordion-button-active-bg: var(--#{$prefix}emphasis-bg) !default;\r\n$accordion-button-color: var(--#{$prefix}accordion-btn-color-global) !default;\r\n// scss-docs-end accordion-variables\r\n\r\n// Tables\r\n//\r\n// Customizes the `.table` component with basic values, each used across all table variations.\r\n\r\n// scss-docs-start table-variables\r\n$table-cell-padding-y: 0.75rem !default;\r\n$table-cell-padding-x: 0.75rem !default;\r\n\r\n$table-bg: transparent !default;\r\n$table-color: $gray-700 !default;\r\n$table-border-color: var(--#{$prefix}body-bg) !default;\r\n\r\n$table-active-color: var(--#{$prefix}body-color) !default;\r\n\r\n$table-hover-color: var(--#{$prefix}body-color) !default;\r\n\r\n$table-striped-order: even !default;\r\n$table-striped-bg: var(--#{$prefix}gray-100) !default;\r\n\r\n$table-group-separator-color: inherit !default;\r\n\r\n$table-caption-color: $gray-500 !default;\r\n\r\n$table-bg-scale: -80% !default;\r\n// scss-docs-end table-variables\r\n\r\n// Buttons + Forms\r\n//\r\n// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.\r\n\r\n// scss-docs-start btn-falcon-variables\r\n$btn-falcon-box-shadow: 0 0 0 1px rgba(43, 45, 80, 0.1),\r\n 0 2px 5px 0 rgba(43, 45, 80, 0.08), 0 1px 1.5px 0 rgba($black, 0.07),\r\n 0 1px 2px 0 rgba($black, 0.08) !default;\r\n$btn-falcon-hover-box-shadow: 0 0 0 1px rgba(43, 45, 80, 0.1),\r\n 0 2px 5px 0 rgba(43, 45, 80, 0.1), 0 3px 9px 0 rgba(43, 45, 80, 0.08),\r\n 0 1px 1.5px 0 rgba($black, 0.08), 0 1px 2px 0 rgba($black, 0.08) !default;\r\n// scss-docs-end btn-falcon-variables\r\n\r\n// scss-docs-start input-btn-variables\r\n$input-btn-padding-y: 0.3125rem !default;\r\n$input-btn-padding-x: 1rem !default;\r\n\r\n$input-btn-padding-y-sm: 0.1875rem !default;\r\n$input-btn-padding-x-sm: 0.75rem !default;\r\n\r\n$input-btn-padding-y-lg: 0.375rem !default;\r\n$input-btn-padding-x-lg: 1.25rem !default;\r\n\r\n$input-plaintext-color: $gray-700 !default;\r\n// scss-docs-end input-btn-variables\r\n\r\n// scss-docs-start btn-variables\r\n$btn-font-weight: $font-weight-medium !default;\r\n$btn-focus-width: 0 !default;\r\n\r\n$btn-color: $gray-700 !default;\r\n\r\n$btn-disabled-opacity: 0.5 !default;\r\n// scss-docs-end btn-variables\r\n\r\n// Forms\r\n//\r\n// scss-docs-start form-input-variables\r\n$input-bg: var(--#{$prefix}quaternary-bg) !default;\r\n$input-disabled-bg: var(--#{$prefix}gray-200) !default;\r\n\r\n$input-color: var(--#{$prefix}gray-900) !default;\r\n$input-border-color: var(--#{$prefix}gray-300) !default;\r\n\r\n$input-focus-border-color: var(\r\n --#{$prefix}input-focus-border-color-global\r\n) !default;\r\n\r\n$input-placeholder-color: var(\r\n --#{$prefix}input-placeholder-color-global\r\n) !default;\r\n\r\n$input-group-addon-bg: var(--#{$prefix}gray-200) !default;\r\n// scss-docs-end form-input-variables\r\n\r\n// scss-docs-start form-text-variables\r\n$form-text-color: $gray-500 !default;\r\n// scss-docs-end form-text-variables\r\n\r\n// scss-docs-start form-label-variables\r\n$form-label-font-size: map_get($font-sizes, 10) !default;\r\n$form-label-font-weight: $font-weight-medium !default;\r\n$form-label-margin-bottom: map-get($spacers, 2) !default;\r\n// scss-docs-end form-label-variables\r\n\r\n// scss-docs-start form-switch-variables\r\n$form-switch-color: $gray-500 !default;\r\n$form-switch-focus-color: tint-color($component-active-bg, 50%) !default;\r\n// scss-docs-end form-switch-variables\r\n\r\n// scss-docs-start form-check-variables\r\n$form-check-margin-bottom: 0.34375rem !default;\r\n$form-check-input-bg: transparent !default;\r\n$form-check-input-border: 1px solid var(--#{$prefix}gray-400) !default;\r\n// scss-docs-end form-check-variables\r\n\r\n// scss-docs-start form-select-variables\r\n$form-select-disabled-bg: var(--#{$prefix}gray-200) !default;\r\n// scss-docs-end form-select-variables\r\n\r\n// scss-docs-start form-file-variables\r\n$form-file-button-bg: $gray-900 !default;\r\n$form-file-button-hover-bg: $gray-900 !default;\r\n$form-file-button-color: $gray-300 !default;\r\n// scss-docs-start form-file-variables\r\n\r\n// scss-docs-start form-range-variables\r\n$form-range-track-bg: var(--#{$prefix}gray-300) !default;\r\n$form-range-thumb-active-bg: lighten($component-active-bg, 35%) !default;\r\n$form-range-thumb-disabled-bg: $gray-500 !default;\r\n// scss-docs-end form-range-variables\r\n\r\n// Z-index master list\r\n//\r\n// scss-docs-start zindex-stack\r\n$zindex-sticky: 1015 !default;\r\n// scss-docs-end zindex-stack\r\n\r\n// Navbar\r\n//\r\n// scss-docs-start navbar-variables\r\n$navbar-padding-y: map_get($spacers, 2) !default;\r\n$navbar-padding-x: $spacer !default;\r\n\r\n$top-nav-height: var(--#{$prefix}top-nav-height) !default;\r\n$standard-nav-height: 3.5625rem !default;\r\n\r\n$navbar-brand-font-size: map_get($font-sizes, 6) !default;\r\n$navbar-brand-font-weight: $font-weight-bolder !default;\r\n\r\n$navbar-light-color: #{rgba(var(--#{$prefix}emphasis-color-rgb), 0.55)} !default;\r\n$navbar-light-hover-color: #{rgba(var(--#{$prefix}emphasis-color-rgb), 0.7)} !default;\r\n$navbar-light-active-color: #{rgba(var(--#{$prefix}emphasis-color-rgb), 0.9)} !default;\r\n$navbar-light-disabled-color: #{rgba(var(--#{$prefix}emphasis-color-rgb), 0.3)} !default;\r\n$navbar-light-toggler-border-color: #{rgba(\r\n var(--#{$prefix}emphasis-color-rgb),\r\n 0.1\r\n )} !default;\r\n$navbar-light-toggler-icon-bg: str-replace(\r\n url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='#9da9bb' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M0 6h30M0 14h30M0 22h30'/%3E%3C/svg%3E\"),\r\n '#',\r\n '%23'\r\n) !default;\r\n\r\n$navbar-dark-toggler-icon-bg: str-replace(\r\n url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='#9da9bb' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M0 6h30M0 14h30M0 22h30'/%3E%3C/svg%3E\"),\r\n '#',\r\n '%23'\r\n) !default;\r\n// scss-docs-end navbar-variables\r\n\r\n// Navbar glass\r\n//\r\n$bg-navbar-glass: var(--#{$prefix}bg-navbar-glass) !default;\r\n\r\n// Navs\r\n\r\n// scss-docs-start nav-variables\r\n$nav-link-color: null !default;\r\n$nav-link-hover-color: null !default;\r\n$nav-link-disabled-color: var(--#{$prefix}gray-600) !default;\r\n\r\n$nav-tabs-border-color: var(--#{$prefix}border-color) !default;\r\n$nav-tabs-link-hover-border-color: $gray-200 $gray-200 $nav-tabs-border-color !default;\r\n// scss-docs-end nav-variables\r\n\r\n// Navbar vertical\r\n//\r\n// scss-docs-start navbar-vertical-variables\r\n$navbar-vertical-breakpoints: mapReverse($grid-breakpoints) !default;\r\n$navbar-vertical-width: 12.625rem !default;\r\n$navbar-vertical-icon-width: 1.5rem !default;\r\n$navbar-vertical-collapsed-width: 3.125rem !default;\r\n$navbar-vertical-hover-width: 12.625rem !default;\r\n$navbar-vertical-variation-width: 14.625rem !default;\r\n$navbar-vertical-variation-collapsed-width: 4.125rem !default;\r\n$navbar-vertical-link-font-size: $font-size-sm !default;\r\n$navbar-vertical-dropdown-font-size: map-get($font-sizes, 10) !default;\r\n$navbar-vertical-collapsed-hover-shadow: 0.625rem 0 0.625rem -0.5625rem rgba($black, 0.2) !default;\r\n// scss-docs-end navbar-vertical-variables\r\n\r\n// Navbar vertical styles\r\n//\r\n// scss-docs-start navbar-vertical-default-variables\r\n$navbar-vertical-default-bg-color: var(--#{$prefix}bg-navbar-glass) !default;\r\n$navbar-vertical-default-link-color: #{$gray-700} !default;\r\n$navbar-vertical-default-link-hover-color: #{$gray-1000} !default;\r\n$navbar-vertical-default-link-active-color: #{$primary} !default;\r\n$navbar-vertical-default-link-disable-color: #{$gray-400} !default;\r\n$navbar-vertical-default-hr-color: #{rgba($black, 0.08)} !default;\r\n$navbar-vertical-default-scrollbar-color: #{rgba($gray-600, 0.3)} !default;\r\n$navbar-vertical-default-label-color: var(--#{$prefix}gray-500) !default;\r\n// scss-docs-end navbar-vertical-default-variables\r\n\r\n// scss-docs-start navbar-vertical-inverted-variables\r\n$navbar-vertical-inverted-bg-color: $gray-1000 !default;\r\n$navbar-vertical-inverted-link-color: $gray-500 !default;\r\n$navbar-vertical-inverted-link-hover-color: $gray-200 !default;\r\n$navbar-vertical-inverted-link-active-color: $navbar-vertical-inverted-link-hover-color !default;\r\n$navbar-vertical-inverted-link-disable-color: $gray-700 !default;\r\n$navbar-vertical-inverted-hr-color: rgba($white, 0.08) !default;\r\n$navbar-vertical-inverted-scrollbar-color: $gray-400 !default;\r\n$navbar-vertical-inverted-label-color: $gray-700 !default;\r\n// scss-docs-end navbar-vertical-inverted-variables\r\n\r\n// scss-docs-start navbar-vertical-vibrant-variables\r\n$navbar-vertical-vibrant-bg-image: linear-gradient(\r\n -45deg,\r\n rgba(0, 160, 255, 0.86),\r\n #0048a2\r\n ),\r\n url(../img/generic/bg-navbar.png) !default;\r\n$navbar-vertical-vibrant-link-color: rgba($white, 0.75) !default;\r\n$navbar-vertical-vibrant-link-hover-color: $white !default;\r\n$navbar-vertical-vibrant-link-active-color: $navbar-vertical-vibrant-link-hover-color !default;\r\n$navbar-vertical-vibrant-link-disable-color: rgba($white, 0.45) !default;\r\n$navbar-vertical-vibrant-hr-color: rgba($white, 0.2) !default;\r\n$navbar-vertical-vibrant-scrollbar-color: $gray-400 !default;\r\n$navbar-vertical-vibrant-label-color: rgba($white, 0.4) !default;\r\n// scss-docs-end navbar-vertical-vibrant-variables\r\n\r\n// scss-docs-start navbar-vertical-card-variables\r\n$navbar-vertical-card-shadow: $box-shadow !default;\r\n$navbar-vertical-card-bg-color: $card-bg !default;\r\n$navbar-vertical-card-link-color: var(--#{$prefix}gray-700) !default;\r\n$navbar-vertical-card-link-hover-color: var(--#{$prefix}gray-900) !default;\r\n$navbar-vertical-card-link-active-color: var(--#{$prefix}primary) !default;\r\n$navbar-vertical-card-link-disable-color: var(--#{$prefix}gray-400) !default;\r\n$navbar-vertical-card-hr-color: rgba($black, 0.08) !default;\r\n$navbar-vertical-card-scrollbar-color: rgba($gray-600, 0.3) !default;\r\n$navbar-vertical-card-label-color: var(--#{$prefix}gray-500) !default;\r\n// scss-docs-end navbar-vertical-card-variables\r\n\r\n// Dropdowns\r\n//\r\n// Dropdown menu container and contents.\r\n\r\n// scss-docs-start dropdown-variables\r\n$dropdown-font-size: map_get($font-sizes, 10) !default;\r\n$dropdown-padding-y: map_get($spacers, 3) !default;\r\n$dropdown-item-padding-y: map_get($spacers, 1) !default;\r\n$dropdown-item-padding-x: map_get($spacers, 3) !default;\r\n$dropdown-box-shadow: var(--#{$prefix}box-shadow) !default;\r\n\r\n$dropdown-bg: var(--#{$prefix}dropdown-bg-global) !default;\r\n$dropdown-color: var(--#{$prefix}gray-300) !default;\r\n$dropdown-divider-bg: var(--#{$prefix}border-color) !default;\r\n$dropdown-border-color: var(--#{$prefix}border-color) !default;\r\n\r\n$dropdown-link-color: var(--#{$prefix}gray-900) !default;\r\n$dropdown-link-hover-color: var(\r\n --#{$prefix}dropdown-link-hover-color-global\r\n) !default;\r\n$dropdown-link-hover-bg: var(\r\n --#{$prefix}dropdown-link-hover-bg-global\r\n) !default;\r\n\r\n$dropdown-link-disabled-color: var(--#{$prefix}gray-600) !default;\r\n$dropdown-header-color: var(--#{$prefix}gray-600) !default;\r\n// scss-docs-end dropdown-variables\r\n\r\n// Pagination\r\n//\r\n// scss-docs-start pagination-variables\r\n$pagination-padding-y: 0.5rem !default;\r\n\r\n$pagination-color: var(--#{$prefix}emphasis-color) !default;\r\n$pagination-bg: var(--#{$prefix}quaternary-bg) !default;\r\n$pagination-border-color: var(--#{$prefix}gray-200) !default;\r\n\r\n$pagination-focus-color: var(--#{$prefix}gray-700) !default;\r\n$pagination-focus-bg: var(--#{$prefix}gray-100) !default;\r\n$pagination-focus-box-shadow: none !default;\r\n\r\n$pagination-hover-color: $white !default;\r\n$pagination-hover-bg: $primary !default;\r\n$pagination-hover-border-color: $primary !default;\r\n\r\n$pagination-disabled-color: $pagination-focus-color !default;\r\n$pagination-disabled-bg: $pagination-focus-bg !default;\r\n$pagination-disabled-border-color: $pagination-border-color !default;\r\n// scss-docs-end pagination-variables\r\n\r\n// Tooltips\r\n//\r\n// scss-docs-start tooltip-variables\r\n$tooltip-padding-y: 0.5rem !default;\r\n$tooltip-font-size: map_get($font-sizes, 10) !default;\r\n$tooltip-bg: $body-emphasis-color !default;\r\n$tooltip-color: $white !default;\r\n// scss-docs-end tooltip-variables\r\n\r\n// Badges\r\n//\r\n// scss-docs-start badge-variables\r\n$badge-font-weight: $font-weight-semibold !default;\r\n$badge-padding-y: 0.355555em !default;\r\n$badge-padding-x: 0.711111em !default;\r\n// scss-docs-end badge-variables\r\n\r\n// Modals\r\n//\r\n// scss-docs-start modal-variables\r\n$modal-content-border-radius: $border-radius-lg !default;\r\n$modal-content-bg: var(--#{$prefix}emphasis-bg) !default;\r\n// scss-docs-end modal-variables\r\n\r\n// List group\r\n//\r\n// scss-docs-start list-group-variables\r\n$list-group-color: var(--#{$prefix}gray-800) !default;\r\n$list-group-bg: var(--#{$prefix}list-group-bg-global) !default;\r\n$list-group-border-color: var(--#{$prefix}border-color) !default;\r\n\r\n$list-group-action-hover-color: var(--#{$prefix}gray-700) !default;\r\n$list-group-hover-bg: var(--#{$prefix}body-bg) !default;\r\n\r\n$list-group-disabled-color: var(--#{$prefix}gray-600) !default;\r\n$list-group-disabled-bg: var(--#{$prefix}card-cap-bg) !default;\r\n\r\n$list-group-action-active-bg: var(--#{$prefix}gray-200) !default;\r\n// scss-docs-end list-group-variables\r\n\r\n// Image thumbnails\r\n//\r\n// scss-docs-start thumbnail-variables\r\n$thumbnail-bg: var(--#{$prefix}thumbnail-bg-global) !default;\r\n$thumbnail-border-width: 3px !default;\r\n$thumbnail-border-color: var(--#{$prefix}thumbnail-bg-global) !default;\r\n// scss-docs-end thumbnail-variables\r\n\r\n// Figures\r\n//\r\n// scss-docs-start figure-variables\r\n$figure-caption-color: var(--#{$prefix}gray-600) !default;\r\n// scss-docs-end figure-variables\r\n\r\n// Breadcrumbs\r\n//\r\n// scss-docs-start breadcrumb-variables\r\n$breadcrumb-padding-x: 0 !default;\r\n$breadcrumb-margin-bottom: 0 !default;\r\n$breadcrumb-bg: 'transparent' !default;\r\n$breadcrumb-divider: quote('/') !default;\r\n$breadcrumb-divider-color: $gray-600 !default;\r\n$breadcrumb-active-color: $gray-600 !default;\r\n// scss-docs-end breadcrumb-variables\r\n\r\n// Carousel\r\n//\r\n// scss-docs-start carousel-variables\r\n$carousel-transition-duration: 0.8s !default;\r\n// scss-docs-end carousel-variables\r\n\r\n// Spinners\r\n//\r\n// scss-docs-start spinner-variables\r\n$spinner-width-sm: 1.35rem !default;\r\n$spinner-height-sm: $spinner-width-sm !default;\r\n// scss-docs-end spinner-variables\r\n\r\n//\r\n// Falcon Specific\r\n//\r\n\r\n$transparent-50: rgba(var(--#{$prefix}quaternary-bg-rgb), 0.5) !default;\r\n\r\n// Treeview\r\n//\r\n// scss-docs-start treeview-variables\r\n$treeview-transition-collapse: height 0.15s ease !default;\r\n$treeview-row-bg-odd: var(--#{$prefix}gray-200) !default;\r\n$treeview-row-bg-even: var(--#{$prefix}gray-100) !default;\r\n$treeview-text-color: var(--#{$prefix}gray-600) !default;\r\n// scss-docs-end treeview-variables\r\n\r\n// Viewport Heights & Widths\r\n//\r\n// scss-docs-start viewport-heights-map\r\n$viewport-heights: (\r\n 25: 25vh,\r\n 50: 50vh,\r\n 75: 75vh,\r\n 100: 100vh\r\n) !default;\r\n// scss-docs-end viewport-heights-map\r\n\r\n// scss-docs-start viewport-widths-map\r\n$viewport-widths: (\r\n 25: 25vw,\r\n 50: 50vw,\r\n 75: 75vw,\r\n 100: 100vw\r\n) !default;\r\n// scss-docs-end viewport-widths-map\r\n\r\n// scss-docs-start sizes-map\r\n$sizes: (\r\n 25: 25%,\r\n 50: 50%,\r\n 75: 75%,\r\n 100: 100%,\r\n auto: auto\r\n) !default;\r\n// scss-docs-end sizes-map\r\n\r\n// Calendar\r\n//\r\n// scss-docs-start calendar-variables\r\n$calendar-color: var(--#{$prefix}danger) !default;\r\n$calendar-color-rgb: var(--#{$prefix}danger-rgb) !default;\r\n// scss-docs-end calendar-variables\r\n\r\n// Footer\r\n//\r\n// scss-docs-start footer-variables\r\n$footer-height: 3.9875rem !default;\r\n$responsive-footer-height: 0.625rem !default;\r\n// scss-docs-end footer-variables\r\n\r\n// Avatars dimensions\r\n//\r\n// scss-docs-start avatars-dimension-map\r\n$avatars-dimension: (\r\n 's': toRem(20rem),\r\n 'm': toRem(24rem),\r\n 'l': toRem(28rem),\r\n 'xl': toRem(32rem),\r\n '2xl': toRem(40rem),\r\n '3xl': toRem(56rem),\r\n '4xl': toRem(98rem),\r\n '5xl': toRem(168rem)\r\n) !default;\r\n// scss-docs-end avatars-dimension-map\r\n\r\n$gutters: () !default;\r\n$gutters: map-merge(\r\n $spacers,\r\n (\r\n card: $card-spacer-x * 2\r\n )\r\n);\r\n\r\n// Popovers\r\n//\r\n// scss-docs-start popover-variables\r\n$popover-bg: var(--#{$prefix}quaternary-bg) !default;\r\n$popover-border-color: var(--#{$prefix}border-color) !default;\r\n$popover-header-bg: var(--#{$prefix}popover-header-bg-global) !default;\r\n$popover-header-color: $headings-color !default;\r\n$popover-body-color: $body-color !default;\r\n$popover-box-shadow: var(--#{$prefix}box-shadow) !default;\r\n$popover-arrow-color: var(--#{$prefix}quaternary-bg) !default;\r\n$popover-arrow-outer-color: rgba(\r\n var(--#{$prefix}emphasis-color-rgb),\r\n 0.25\r\n) !default;\r\n// scss-docs-end popover-variables\r\n\r\n// Toasts\r\n//\r\n// scss-docs-start toast-variables\r\n$toast-background-color: var(--#{$prefix}toast-bg-global) !default;\r\n$toast-border-color: var(--#{$prefix}border-color) !default;\r\n$toast-header-color: var(--#{$prefix}gray-600) !default;\r\n$toast-header-background-color: var(--#{$prefix}toast-bg-global) !default;\r\n$toast-header-border-color: rgba($black, 0.05) !default;\r\n$toast-color: var(--#{$prefix}gray-600) !default;\r\n// scss-docs-end toast-variables\r\n\r\n// Progress bars\r\n//\r\n// scss-docs-start progress-variables\r\n$progress-bg: var(--#{$prefix}gray-200) !default;\r\n// scss-docs-end progress-variables\r\n\r\n// Offcanvas\r\n//\r\n// scss-docs-start offcanvas-variables\r\n$offcanvas-bg-color: var(--#{$prefix}quaternary-bg) !default;\r\n$offcanvas-border-color: var(--#{$prefix}border-color) !default;\r\n// scss-docs-end offcanvas-variables\r\n\r\n// Scrollbar\r\n//\r\n// scss-docs-start scrollbar-variables\r\n$scrollbar-bg: var(--#{$prefix}scrollbar-bg) !default;\r\n$simplebar-bg: var(--#{$prefix}simplebar-bg) !default;\r\n// scss-docs-end scrollbar-variables\r\n\r\n// Timeline\r\n//\r\n// scss-docs-start timeline-variables\r\n$timeline-vertical-breakpoint: lg !default;\r\n$timeline-zigzag-breakpoint: lg !default;\r\n// scss-docs-end timeline-variables\r\n","/* -------------------------------------------------------------------------- */\r\n/* Falcon Button */\r\n/* -------------------------------------------------------------------------- */\r\n@mixin falcon-button-variant($color) {\r\n &, &.show {\r\n color: var(--#{$prefix}btn-falcon-#{$color}-color);\r\n background-color: var(--#{$prefix}btn-falcon-background);\r\n border-color: var(--#{$prefix}btn-falcon-background);\r\n box-shadow: var(--#{$prefix}btn-falcon-box-shadow);\r\n }\r\n\r\n @include hover-focus {\r\n color: var(--#{$prefix}btn-falcon-#{$color}-hover-color);\r\n background-color: var(--#{$prefix}btn-falcon-background);\r\n border-color: var(--#{$prefix}btn-falcon-background);\r\n\r\n &:not(.disabled):not(:disabled) {\r\n color: var(--#{$prefix}btn-falcon-#{$color}-hover-color);\r\n box-shadow: var(--#{$prefix}btn-falcon-hover-box-shadow);\r\n }\r\n }\r\n &:active {\r\n box-shadow: none !important;\r\n color: var(--#{$prefix}btn-falcon-#{$color}-active-color);\r\n }\r\n\r\n .btn-check:checked+&,\r\n :not(.btn-check)+&:active,\r\n &:first-child:active,\r\n &.active {\r\n color: var(--#{$prefix}btn-falcon-#{$color}-color);\r\n background-color: var(--#{$prefix}btn-falcon-#{$color}-active-background);\r\n border-color: var(--#{$prefix}btn-falcon-background);\r\n }\r\n\r\n &:disabled,\r\n &.disabled {\r\n color: var(--#{$prefix}btn-disabled-color);\r\n background-color: var(--#{$prefix}btn-falcon-background);\r\n // Remove CSS gradients if they're enabled\r\n background-image: if($enable-gradients, none, null);\r\n box-shadow: var(--#{$prefix}btn-falcon-box-shadow) !important;\r\n }\r\n}\r\n","/* -------------------------------------------------------------------------- */\r\n/* Utilities */\r\n/* -------------------------------------------------------------------------- */\r\n\r\n$utilities: () !default;\r\n$utilities: map_merge(\r\n (\r\n 'opacity': (\r\n property: opacity,\r\n responsive: true,\r\n values: $opacities\r\n ),\r\n 'font-weight': (\r\n property: font-weight,\r\n class: fw,\r\n values: (\r\n thin: $font-weight-thin,\r\n lighter: $font-weight-lighter,\r\n light: $font-weight-light,\r\n normal: $font-weight-normal,\r\n medium: $font-weight-medium,\r\n semibold: $font-weight-semibold,\r\n bold: $font-weight-bold,\r\n bolder: $font-weight-bolder,\r\n 'black': $font-weight-black\r\n )\r\n ),\r\n 'font-size': (\r\n property: font-size,\r\n class: fs,\r\n responsive: true,\r\n values: $font-sizes\r\n ),\r\n 'position': (\r\n property: position,\r\n responsive: true,\r\n values: (\r\n static,\r\n absolute,\r\n relative,\r\n fixed,\r\n sticky\r\n )\r\n ),\r\n 'height': (\r\n property: height,\r\n class: h,\r\n responsive: true,\r\n values: $sizes\r\n ),\r\n 'width': (\r\n property: width,\r\n responsive: true,\r\n class: w,\r\n values: (\r\n 25: 25%,\r\n 50: 50%,\r\n 75: 75%,\r\n 100: 100%,\r\n auto: auto\r\n )\r\n ),\r\n 'min-viewport-height': (\r\n property: min-height,\r\n class: min-vh,\r\n responsive: true,\r\n values: $viewport-heights\r\n ),\r\n 'viewport-height': (\r\n property: height,\r\n class: vh,\r\n responsive: true,\r\n values: $viewport-heights\r\n ),\r\n 'max-viewport-height': (\r\n property: max-height,\r\n class: max-vh,\r\n responsive: true,\r\n values: $viewport-heights\r\n ),\r\n 'viewport-width': (\r\n property: width,\r\n class: vw,\r\n responsive: true,\r\n values: $viewport-widths\r\n ),\r\n 'border': (\r\n property: border,\r\n responsive: true,\r\n values: (\r\n null: var(--#{$prefix}border-width) var(--#{$prefix}border-style)\r\n var(--#{$prefix}border-color),\r\n 0: 0\r\n )\r\n ),\r\n 'border-top': (\r\n property: border-top,\r\n responsive: true,\r\n class: border,\r\n values: (\r\n top: var(--#{$prefix}border-width) var(--#{$prefix}border-style)\r\n var(--#{$prefix}border-color),\r\n top-0: 0\r\n )\r\n ),\r\n 'border-end': (\r\n property: border-right,\r\n responsive: true,\r\n class: border,\r\n values: (\r\n end: var(--#{$prefix}border-width) var(--#{$prefix}border-style)\r\n var(--#{$prefix}border-color),\r\n end-0: 0\r\n )\r\n ),\r\n 'border-start': (\r\n property: border-left,\r\n responsive: true,\r\n class: border,\r\n values: (\r\n start: var(--#{$prefix}border-width) var(--#{$prefix}border-style)\r\n var(--#{$prefix}border-color),\r\n start-0: 0\r\n )\r\n ),\r\n 'border-bottom': (\r\n property: border-bottom,\r\n responsive: true,\r\n class: border,\r\n values: (\r\n bottom: var(--#{$prefix}border-width) var(--#{$prefix}border-style)\r\n var(--#{$prefix}border-color),\r\n bottom-0: 0\r\n )\r\n ),\r\n 'border-x': (\r\n property: border-left border-right,\r\n responsive: true,\r\n class: border,\r\n values: (\r\n x: var(--#{$prefix}border-width) var(--#{$prefix}border-style)\r\n var(--#{$prefix}border-color),\r\n x-0: 0\r\n )\r\n ),\r\n 'border-y': (\r\n property: border-top border-bottom,\r\n responsive: true,\r\n class: border,\r\n values: (\r\n y: var(--#{$prefix}border-width) var(--#{$prefix}border-style)\r\n var(--#{$prefix}border-color),\r\n y-0: 0\r\n )\r\n ),\r\n 'border-color': (\r\n responsive: true,\r\n property: border-color,\r\n class: border,\r\n local-vars: (\r\n 'border-opacity': 1\r\n ),\r\n values: null\r\n ),\r\n 'border-colors': (\r\n responsive: true,\r\n property: border-color,\r\n class: border,\r\n local-vars: (\r\n 'border-opacity': 1\r\n ),\r\n values: $utilities-border-colors\r\n ),\r\n 'border-style': (\r\n css-var: true,\r\n css-variable-name: border-style,\r\n class: border,\r\n values: $border-styles\r\n ),\r\n 'rounded-top': (\r\n responsive: true,\r\n property: border-top-left-radius border-top-right-radius,\r\n class: rounded,\r\n values: (\r\n top: $border-radius,\r\n top-lg: $border-radius-lg,\r\n top-0: 0\r\n )\r\n ),\r\n 'rounded-end': (\r\n responsive: true,\r\n property: border-top-right-radius border-bottom-right-radius,\r\n class: rounded,\r\n values: (\r\n end: $border-radius,\r\n end-lg: $border-radius-lg,\r\n end-0: 0\r\n )\r\n ),\r\n 'rounded-bottom': (\r\n responsive: true,\r\n property: border-bottom-right-radius border-bottom-left-radius,\r\n class: rounded,\r\n values: (\r\n bottom: $border-radius,\r\n bottom-lg: $border-radius-lg,\r\n bottom-0: 0\r\n )\r\n ),\r\n 'rounded-start': (\r\n responsive: true,\r\n property: border-bottom-left-radius border-top-left-radius,\r\n class: rounded,\r\n values: (\r\n start: $border-radius,\r\n start-lg: $border-radius-lg,\r\n start-0: 0\r\n )\r\n ),\r\n 'rounded-0': (\r\n responsive: true,\r\n property: border-radius,\r\n class: rounded,\r\n values: (\r\n 0: 0\r\n )\r\n ),\r\n 'background-color': (\r\n property: background-color,\r\n class: bg,\r\n local-vars: (\r\n 'bg-opacity': 1\r\n ),\r\n values:\r\n map-merge(\r\n $utilities-bg-colors,\r\n (\r\n 'transparent': transparent,\r\n 'body-secondary':\r\n rgba(\r\n var(--#{$prefix}secondary-bg-rgb),\r\n var(--#{$prefix}bg-opacity)\r\n ),\r\n 'body-tertiary':\r\n rgba(\r\n var(--#{$prefix}tertiary-bg-rgb),\r\n var(--#{$prefix}bg-opacity)\r\n ),\r\n 'body-emphasis':\r\n rgba(\r\n var(--#{$prefix}emphasis-bg-rgb),\r\n var(--#{$prefix}bg-opacity)\r\n ),\r\n 'body-quaternary':\r\n rgba(\r\n var(--#{$prefix}quaternary-bg-rgb),\r\n var(--#{$prefix}bg-opacity)\r\n )\r\n )\r\n )\r\n ),\r\n 'translate-middle': (\r\n property: transform,\r\n class: translate,\r\n responsive: true,\r\n values: (\r\n middle: (\r\n translateX(-50%) translateY(-50%)\r\n ),\r\n middle-x: translateX(-50%),\r\n middle-y: translateY(-50%)\r\n )\r\n )\r\n ),\r\n $utilities\r\n);\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","// scss-docs-start color-mode-mixin\n@mixin color-mode($mode: light, $root: false) {\n @if $color-mode-type == \"media-query\" {\n @if $root == true {\n @media (prefers-color-scheme: $mode) {\n :root {\n @content;\n }\n }\n } @else {\n @media (prefers-color-scheme: $mode) {\n @content;\n }\n }\n } @else {\n [data-bs-theme=\"#{$mode}\"] {\n @content;\n }\n }\n}\n// scss-docs-end color-mode-mixin\n",":root,\r\n[data-bs-theme='light'] {\r\n //\r\n // Brand colors\r\n //\r\n @each $color, $value in $brand-colors {\r\n --#{$prefix}#{$color}: #{$value};\r\n }\r\n\r\n //\r\n // RGB colors\r\n //\r\n @each $color, $value in $grays-rgb {\r\n --#{$prefix}gray-#{$color}-rgb: #{$value};\r\n }\r\n @each $color, $value in $brand-colors-rgb {\r\n --#{$prefix}#{$color}-rgb: #{$value};\r\n }\r\n\r\n @each $color, $value in $grays {\r\n $hover-color: if(\r\n color-contrast($value) == $color-contrast-light,\r\n shade-color($value, $link-shade-percentage),\r\n tint-color($value, $link-shade-percentage)\r\n );\r\n --#{$prefix}gray-link-hover-#{$color}: #{RGBA(\r\n #{to-rgb($hover-color)},\r\n var(--#{$prefix}link-opacity, 1)\r\n )\r\n if($enable-important-utilities, !important, null)};\r\n }\r\n\r\n --em-rgb-background: var(--#{$prefix}tertiary-bg);\r\n\r\n //\r\n // Global variables\r\n //\r\n --#{$prefix}quaternary-bg: #{$body-quaternary-bg};\r\n --#{$prefix}quaternary-bg-rgb: #{to-rgb($body-quaternary-bg)};\r\n\r\n --#{$prefix}emphasis-bg: #{$body-emphasis-bg};\r\n --#{$prefix}emphasis-bg-rgb: #{to-rgb($body-emphasis-bg)};\r\n\r\n --#{$prefix}blockquote-footer-color: #{$gray-600};\r\n\r\n --#{$prefix}hr-opacity: 1;\r\n\r\n --#{$prefix}mark-bg: #fcf8e3; // Review\r\n\r\n //\r\n // Font family\r\n //\r\n --#{$prefix}font-base: #{inspect($font-family-base)};\r\n\r\n //\r\n // Border\r\n //\r\n --#{$prefix}btn-disabled-border-color: transparent;\r\n\r\n //\r\n // Reveal Button\r\n //\r\n --#{$prefix}btn-reveal-color: #{$gray-600};\r\n --#{$prefix}btn-reveal-hover-color: #{$gray-700};\r\n --#{$prefix}btn-reveal-focus-bg: #{shade-color($white, 10%)};\r\n --#{$prefix}btn-reveal-hover-shadow: 0 0 0 1px rgba(43, 45, 80, 0.1),\r\n 0 2px 5px 0 rgba(43, 45, 80, 0.08), 0 1px 1.5px 0 rgba(0, 0, 0, 0.07),\r\n 0 1px 2px 0 rgba(0, 0, 0, 0.08);\r\n --#{$prefix}btn-reveal-focus-border-color: #{shade-color($white, 12.5%)};\r\n\r\n //\r\n // Falcon Button\r\n //\r\n --#{$prefix}btn-falcon-background: var(--#{$prefix}quaternary-bg);\r\n --#{$prefix}btn-disabled-color: #4d5969;\r\n --#{$prefix}btn-falcon-box-shadow: #{$btn-falcon-box-shadow};\r\n --#{$prefix}btn-falcon-hover-box-shadow: #{$btn-falcon-hover-box-shadow};\r\n\r\n --#{$prefix}btn-falcon-default-color: var(--#{$prefix}gray-800);\r\n --#{$prefix}btn-falcon-default-hover-color: #{shift-color($gray-800, 17%)};\r\n --#{$prefix}btn-falcon-default-active-background: #{shade-color($white, 10%)};\r\n --#{$prefix}btn-falcon-default-active-border: #{shift-color($gray-800, 17%)};\r\n --#{$prefix}btn-active-border-color: transparent;\r\n\r\n [class^='btn-falcon-'].show {\r\n --#{$prefix}btn-active-shadow: var(--#{$prefix}btn-falcon-box-shadow);\r\n }\r\n\r\n @each $color, $value in $theme-colors {\r\n //\r\n // Falcon Button\r\n //\r\n --#{$prefix}btn-falcon-#{$color}-color: var(--#{$prefix}#{$color});\r\n --#{$prefix}btn-falcon-#{$color}-hover-color: #{shift-color($value, 17%)};\r\n --#{$prefix}btn-falcon-#{$color}-active-background: #{shift-color(\r\n $value,\r\n -80%\r\n )};\r\n --#{$prefix}btn-falcon-#{$color}-active-color: #{shift-color($value, 17%)};\r\n }\r\n\r\n // Need To Work\r\n --#{$prefix}input-btn-focus-color: #{rgba(\r\n $component-active-bg,\r\n $input-btn-focus-color-opacity\r\n )};\r\n\r\n --#{$prefix}btn-link-color: #{$btn-link-color};\r\n --#{$prefix}btn-link-hover-color: #{$link-hover-color};\r\n --#{$prefix}btn-disabled-color: #{$gray-600};\r\n\r\n //\r\n // Input\r\n //\r\n --#{$prefix}input-focus-border-color-global: #{tint-color(\r\n $component-active-bg,\r\n 50%\r\n )};\r\n --#{$prefix}input-placeholder-color-global: var(--#{$prefix}gray-400);\r\n\r\n //\r\n // Navbar glass\r\n //\r\n --#{$prefix}bg-navbar-glass: #{rgba($gray-200, 0.96)};\r\n\r\n // Navbar vertical styles\r\n //\r\n // scss-docs-start navbar-vertical-default-variables\r\n --#{$prefix}navbar-vertical-default-bg-color: #{$navbar-vertical-default-bg-color};\r\n --#{$prefix}navbar-vertical-default-link-color: #{$navbar-vertical-default-link-color};\r\n --#{$prefix}navbar-vertical-default-link-hover-color: #{$navbar-vertical-default-link-hover-color};\r\n --#{$prefix}navbar-vertical-default-link-active-color: #{$navbar-vertical-default-link-active-color};\r\n --#{$prefix}navbar-vertical-default-link-disable-color: #{$navbar-vertical-default-link-disable-color};\r\n --#{$prefix}navbar-vertical-default-hr-color: #{$navbar-vertical-default-hr-color};\r\n --#{$prefix}navbar-vertical-default-scrollbar-color: #{$navbar-vertical-default-scrollbar-color};\r\n --#{$prefix}navbar-vertical-default-label-color: #{$navbar-vertical-default-label-color};\r\n // scss-docs-end navbar-vertical-default-variables\r\n\r\n // scss-docs-start navbar-vertical-inverted-variables\r\n --#{$prefix}navbar-vertical-inverted-bg-color: #{$navbar-vertical-inverted-bg-color};\r\n --#{$prefix}navbar-vertical-inverted-link-color: #{$navbar-vertical-inverted-link-color};\r\n --#{$prefix}navbar-vertical-inverted-link-hover-color: #{$navbar-vertical-inverted-link-hover-color};\r\n --#{$prefix}navbar-vertical-inverted-link-active-color: #{$navbar-vertical-inverted-link-active-color};\r\n --#{$prefix}navbar-vertical-inverted-link-disable-color: #{$navbar-vertical-inverted-link-disable-color};\r\n --#{$prefix}navbar-vertical-inverted-hr-color: #{$navbar-vertical-inverted-hr-color};\r\n --#{$prefix}navbar-vertical-inverted-scrollbar-color: #{$navbar-vertical-inverted-scrollbar-color};\r\n --#{$prefix}navbar-vertical-inverted-label-color: #{$navbar-vertical-inverted-label-color};\r\n // scss-docs-end navbar-vertical-inverted-variables\r\n\r\n // scss-docs-start navbar-vertical-vibrant-variables\r\n --#{$prefix}navbar-vertical-vibrant-bg-image: #{$navbar-vertical-vibrant-bg-image};\r\n --#{$prefix}navbar-vertical-vibrant-link-color: #{$navbar-vertical-vibrant-link-color};\r\n --#{$prefix}navbar-vertical-vibrant-link-hover-color: #{$navbar-vertical-vibrant-link-hover-color};\r\n --#{$prefix}navbar-vertical-vibrant-link-active-color: #{$navbar-vertical-vibrant-link-active-color};\r\n --#{$prefix}navbar-vertical-vibrant-link-disable-color: #{$navbar-vertical-vibrant-link-disable-color};\r\n --#{$prefix}navbar-vertical-vibrant-hr-color: #{$navbar-vertical-vibrant-hr-color};\r\n --#{$prefix}navbar-vertical-vibrant-scrollbar-color: #{$navbar-vertical-vibrant-scrollbar-color};\r\n --#{$prefix}navbar-vertical-vibrant-label-color: #{$navbar-vertical-vibrant-label-color};\r\n // scss-docs-end navbar-vertical-vibrant-variables\r\n\r\n // scss-docs-start navbar-vertical-card-variables\r\n --#{$prefix}navbar-vertical-card-bg-color: #{$navbar-vertical-card-bg-color};\r\n --#{$prefix}navbar-vertical-card-link-color: #{$navbar-vertical-card-link-color};\r\n --#{$prefix}navbar-vertical-card-link-hover-color: #{$navbar-vertical-card-link-hover-color};\r\n --#{$prefix}navbar-vertical-card-link-active-color: #{$navbar-vertical-card-link-active-color};\r\n --#{$prefix}navbar-vertical-card-link-disable-color: #{$navbar-vertical-card-link-disable-color};\r\n --#{$prefix}navbar-vertical-card-hr-color: #{$navbar-vertical-card-hr-color};\r\n --#{$prefix}navbar-vertical-card-scrollbar-color: #{$navbar-vertical-card-scrollbar-color};\r\n --#{$prefix}navbar-vertical-card-label-color: #{$navbar-vertical-card-label-color};\r\n // scss-docs-end navbar-vertical-card-variables\r\n\r\n //\r\n // Avarar\r\n //\r\n --#{$prefix}avatar-status-border-color: var(--#{$prefix}quaternary-bg);\r\n --#{$prefix}avatar-name-bg: #{$gray-900};\r\n --#{$prefix}avatar-button-bg: var(--#{$prefix}gray-400);\r\n --#{$prefix}avatar-button-hover-bg: var(--#{$prefix}gray-500);\r\n\r\n //\r\n // Notification\r\n //\r\n --#{$prefix}notification-bg: var(--#{$prefix}emphasis-bg);\r\n --#{$prefix}notification-title-bg: #{$gray-100};\r\n --#{$prefix}notification-unread-bg: var(--#{$prefix}gray-200);\r\n --#{$prefix}notification-unread-hover-bg: #{darken($gray-200, 5%)};\r\n --#{$prefix}notification-indicator-border-color: var(--#{$prefix}body-bg);\r\n\r\n //\r\n // Kanban\r\n //\r\n --#{$prefix}kanban-bg: #{$gray-100};\r\n --#{$prefix}kanban-header-bg: var(--#{$prefix}kanban-bg);\r\n --#{$prefix}kanban-item-bg: #{$white};\r\n --#{$prefix}kanban-item-color: var(--#{$prefix}gray-900);\r\n --#{$prefix}kanban-btn-add-hover-bg: var(--#{$prefix}gray-200);\r\n --#{$prefix}kanban-draggable-source-dragging-bg: var(--#{$prefix}body-bg);\r\n --#{$prefix}kanban-bg-attachment-bg: var(--#{$prefix}gray-300);\r\n --#{$prefix}kanban-footer-color: var(--#{$prefix}gray-600);\r\n --#{$prefix}kanban-nav-link-card-details-color: var(--#{$prefix}gray-700);\r\n --#{$prefix}kanban-nav-link-card-details-hover-bg: #{$gray-200};\r\n\r\n //\r\n // Gradient Background\r\n //\r\n --#{$prefix}bg-shape-bg: #4695ff;\r\n --#{$prefix}bg-shape-bg-ltd: #{linear-gradient(-45deg, #4695ff, #1970e2)};\r\n --#{$prefix}bg-shape-bg-dtl: #{linear-gradient(-45deg, #1970e2, #4695ff)};\r\n\r\n --#{$prefix}line-chart-gradient: #{linear-gradient(-45deg, #014ba7, #0183d0)};\r\n --#{$prefix}card-gradient: #{linear-gradient(-45deg, #1970e2, #4695ff)};\r\n --#{$prefix}progress-gradient: #{linear-gradient(-45deg, #1970e2, #4695ff)};\r\n --#{$prefix}bg-circle-shape: none;\r\n --#{$prefix}bg-circle-shape-bg: #4695ff;\r\n --#{$prefix}modal-shape-header: #{linear-gradient(-45deg, #1970e2, #4695ff)};\r\n --#{$prefix}modal-shape-header-bg: #4494ff;\r\n\r\n //\r\n // Full Calendar\r\n //\r\n --fc-button-bg-color: #{$gray-900};\r\n --fc-button-border-color: #{$gray-900};\r\n --fc-button-hover-bg-color: #{$dark};\r\n --fc-button-hover-border-color: #{$dark};\r\n --fc-button-active-bg-color: #{$dark};\r\n --fc-button-active-border-color: #{$dark};\r\n --fc-button-list-day-cushion: var(--#{$prefix}quaternary-bg);\r\n --fc-highlight-color: rgba(var(--#{$prefix}primary-rgb), 0.1);\r\n\r\n //\r\n // Flatpickr\r\n //\r\n --#{$prefix}flatpickr-calendar-bg: var(--#{$prefix}quaternary-bg);\r\n\r\n //\r\n // Leaflet map\r\n //\r\n --#{$prefix}leaflet-bar-bg: #{$white};\r\n --#{$prefix}leaflet-popup-content-wrapper-bg: var(--#{$prefix}quaternary-bg);\r\n\r\n //\r\n // Choices\r\n //\r\n --#{$prefix}choices-item-selectable-highlighted-bg: #{$white};\r\n --#{$prefix}choices-item-has-no-choices-bg: var(--#{$prefix}quaternary-bg);\r\n --#{$prefix}bg-choices-close-button: #{$gray-200};\r\n\r\n //\r\n // Recat Select\r\n //\r\n --#{$prefix}thumbnail-bg-global: #{$white};\r\n\r\n //\r\n // Thumbnail\r\n //\r\n --#{$prefix}thumbnail-bg-global: #{$white};\r\n\r\n //\r\n // Chat\r\n //\r\n --#{$prefix}chat-contact-bg: var(--#{$prefix}emphasis-bg);\r\n\r\n //\r\n // Tinymce\r\n //\r\n --#{$prefix}tinymce-bg: var(--#{$prefix}quaternary-bg);\r\n\r\n //\r\n // React Slick\r\n //\r\n --#{$prefix}slick-arrow-bg: #{rgba($white, 0.8)};\r\n\r\n //\r\n // React Datepicker\r\n //\r\n --#{$prefix}react-datepicker-bg: #{$white};\r\n --#{$prefix}react-datepicker-header-bg: #{$gray-200};\r\n\r\n //\r\n // Rater\r\n //\r\n --#{$prefix}star-rating-bg-image: #{url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFdElEQVR4nO2aXWxURRTH/2dut58Imho1SgStuit+vBo0BkgkRjDog+VBiJEXqJhKK21x+7EdUu5u2W1Uqi8Qo4YQY6gQDQlRn9RENGoMD0a7RCzGRCJGBLRF9mOOD+waKHe7e2f23mt0f4/zceY/Z2fmzJm7QI0aNWr8j6EgBu3sHG9oXHC2gxQvJ/CUhbpUPD5wMggtwv8hmZrmn3mHmF8G4XEm6s5R/kinlPP91xKAA7YN2A8CeHRW8eLmrOjwWwsQgAMYqs+xnLGls3O8wW89vjqgp1/eDWC1YyXhxqYFvz/ppx7AZwcIsnrmbMDUK6X0V5NfA/VJuRDgdWWa3Tmds1b5IqiAf97OUReAunLNCOx4RniFL/eALimvrs+KnwDMq6yHWJq0Bz/3VFRxJD8GabgY4iqcPABWvd6puRzPV4CUsnEmK6YA3OCiG1tKRRIJecwrXUU8XwHTGbEe7iYPAJQXYqsXeq4YyEvjUkoxkxXfAbhDo/uFOrYWxeMDv1Rb16V4ugJmctYa6E0eABpyItdZTT1OeLwFDEMa02YpZeWHpwaeOaBncOQhMJYamrnmvMdJUtXOgI0bd4daW0+25S0rAoV7iLiHgWqkuDkChjik9ibl8EmAuAo2/8G1A7ZKea24IMJkcQRAmJkiBIQBtAGwqiluNgScU4w0EU2CkWZSk8ycnleP76WUf2nadCYajbfmrfwDxIWJgiMAhQG06k7AQxSAEwAmiTnNRJMEMWkxpePx/lNzrRpHB7wwOLJcMR+Cm9vbv5cZAK81h1S3lFLNrnQ8BBVjF/4bkweAZgDPnc+IJ5wqS0QBDnsoKBAYdLtTubMDCF95qiYAhMUfOpY7FSqlOgCc9lSRjzDR86MjsS+d6hwdMBaX3zCrlQDOeKrMBwiIpnYMvVSqvuRNMBWXXwPiYQB/eKLMBxgY3mnHRudqM+dVOGkPfsEKjwCYrqoyHyAgnrKHRipoV57CveAwgCZjZT7AwFjKHuqr5Npc8VW4r3/7ShAdAuD7xwuXjCftoa5KcwZXuUDv4MgqYn4XQEhLmscw8+5UPPaMm4TJVTqc2jF0GERrAeRcq/MceqOlnje7zRa10uHege3tBHobgXxdvhIm7DuRjjw9MbE277av1gRS9vAEwE8BqGpurgVhf0ud2qAz+YvdDegb3L4BTK+b2DCBgffO/np9+549m7K6NoweMD795KOj9y9bcRsB95rY0SRTp+qW7drV/aeJEeM9TMzvm9rQg48mEv2/mVoxP8RYLDa2oYWor4oVYwuEu6qgQwOOtLfvN36DrEIY4yXmNrRobGv79hZTI0YOKPwCEVMRurBFxqvPyAGLw+lbEWBuoBCwAwhB7f/i+GS8/YwcwBzY/i8S7AoILgIUMY8EZluAzZegIY2Fc0gbbQdc9DwHFgGKCFZGP4K2AwoxuFGz+xkCehFSNxHzKoCO6uowjQRl/7dXCs0YnCXmVwWH7Evu8T9LKT+Yzoj1BNggLHRl0fAc0ncAiyVuHl8INKEI0aQdOz67rvDRcm9394sToabpLhBHAVxVkV02c4D2e0DfwMi+Cv76CoCPKEU9Y4nYZ5Xa7pHyOpEVwwA2oXzKfmHqWKRF90FEewVUkAMcZ/C2lB076PadbkzKUwCejUblK3kSO0FYM0fzhkXh9M0AptyMUcQkDJY6AE8D2NIcUktS9vABk7+0JBJyMhmPPcYKywEu9cGWQ3nrnO4Y2g5gYN+sogyIU5mQakvasXEpZUbX9mxSidjHzSG+jxjrAPx4eS29afIwor0FWkJq9HzOOsvMq5n5B0vx2OioPKFrrxyFg/ItKeXBmazoAGMFQEea6/MlP3zWqFGjRo0y/A3lxcMNXfCjjAAAAABJRU5ErkJggg==')};\r\n\r\n //\r\n // Wizard\r\n //\r\n --#{$prefix}theme-wizard-nav-item-circle-bg: var(--#{$prefix}quaternary-bg);\r\n\r\n //\r\n // Toast\r\n //\r\n --#{$prefix}toast-bg-global: #{rgba($white, 0.85)};\r\n --#{$prefix}toast-header-bg-global: #{rgba($white, 0.85)};\r\n\r\n //\r\n // Card span\r\n //\r\n --#{$prefix}card-span-img-bg: var(--#{$prefix}quaternary-bg);\r\n --#{$prefix}card-span-img-box-shadow: #{$box-shadow-sm};\r\n --#{$prefix}card-span-img-hover-box-shadow: #{$box-shadow-lg};\r\n\r\n //\r\n // Showcase page\r\n //\r\n --#{$prefix}setting-toggle-shadow: #{0 -7px 14px 0 rgba(65, 69, 88, 0.1),\r\n 0 3px 6px 0 rgba(0, 0, 0, 0.07)};\r\n\r\n //\r\n // Scrollbar\r\n //\r\n --#{$prefix}scrollbar-bg: #{rgba($gray-400, 0.55)};\r\n --#{$prefix}simplebar-bg: #{rgba($gray-400, 1)};\r\n\r\n //\r\n // Falcon pill\r\n //\r\n --#{$prefix}nav-pills-falcon-active-bg-color: var(--#{$prefix}quaternary-bg);\r\n\r\n //\r\n // Custom disabled button\r\n //\r\n --#{$prefix}btn-disabled-custom-background: #{rgba($light, 0.55)};\r\n --#{$prefix}btn-disabled-custom-color: #{rgba($dark, 0.3)};\r\n\r\n //\r\n // Dropdown\r\n //\r\n --#{$prefix}dropdown-bg-global: #{$white};\r\n --#{$prefix}dropdown-link-hover-color-global: #{darken($gray-900, 5%)};\r\n --#{$prefix}dropdown-link-hover-bg-global: #{$gray-100};\r\n\r\n //\r\n // Popover\r\n //\r\n --#{$prefix}popover-header-bg-global: #{$gray-100};\r\n\r\n //\r\n // Toast\r\n //\r\n --#{$prefix}toast-bg-global: #{rgba($white, 0.85)};\r\n --#{$prefix}toast-header-bg-global: #{rgba($white, 0.85)};\r\n\r\n //\r\n // List Group\r\n //\r\n --#{$prefix}list-group-bg-global: var(--#{$prefix}emphasis-bg);\r\n\r\n //\r\n // Accordion\r\n //\r\n --#{$prefix}accordion-btn-color-global: #{$gray-700};\r\n\r\n //\r\n // Alert\r\n //\r\n --#{$prefix}alert-link-color: #{$primary};\r\n\r\n //\r\n // Table variants\r\n //\r\n @each $color, $value in $table-variants {\r\n .table-#{$color} {\r\n --#{$prefix}table-bg: #{$value};\r\n --#{$prefix}table-color: #{color-contrast(opaque($gray-200, $value))};\r\n --#{$prefix}table-hover-bg: #{mix(\r\n color-contrast(opaque($gray-200, $value)),\r\n $value,\r\n percentage($table-hover-bg-factor)\r\n )};\r\n --#{$prefix}table-hover-color: #{color-contrast(\r\n mix(\r\n color-contrast(opaque($gray-200, $value)),\r\n $value,\r\n percentage($table-hover-bg-factor)\r\n )\r\n )};\r\n --#{$prefix}table-striped-bg: #{mix(\r\n color-contrast(opaque($gray-200, $value)),\r\n $value,\r\n percentage($table-striped-bg-factor)\r\n )};\r\n --#{$prefix}table-striped-color: #{color-contrast(\r\n mix(\r\n color-contrast(opaque($gray-200, $value)),\r\n $value,\r\n percentage($table-striped-bg-factor)\r\n )\r\n )};\r\n --#{$prefix}table-active-bg: #{mix(\r\n color-contrast(opaque($gray-200, $value)),\r\n $value,\r\n percentage($table-active-bg-factor)\r\n )};\r\n --#{$prefix}table-active-color: #{color-contrast(\r\n mix(\r\n color-contrast(opaque($gray-200, $value)),\r\n $value,\r\n percentage($table-active-bg-factor)\r\n )\r\n )};\r\n --#{$prefix}table-border-color: #{rgba(\r\n mix(\r\n color-contrast(opaque($gray-200, $value)),\r\n $value,\r\n percentage($table-border-factor)\r\n ),\r\n 0.05\r\n )};\r\n }\r\n }\r\n}\r\n","@if $enable-dark-mode {\r\n @include color-mode(dark, true) {\r\n //\r\n // Dark colors\r\n //\r\n @each $color, $value in $dark-grays {\r\n $hover-color: if(\r\n color-contrast($value) == $color-contrast-light,\r\n shade-color($value, $link-shade-percentage),\r\n tint-color($value, $link-shade-percentage)\r\n );\r\n --#{$prefix}gray-#{$color}: #{$value};\r\n --#{$prefix}gray-link-hover-#{$color}: #{RGBA(\r\n #{to-rgb($hover-color)},\r\n var(--#{$prefix}link-opacity, 1)\r\n )\r\n if($enable-important-utilities, !important, null)};\r\n }\r\n\r\n //\r\n // RGB colors\r\n //\r\n @each $color, $value in $dark-grays-rgb {\r\n --#{$prefix}gray-#{$color}-rgb: #{$value};\r\n }\r\n @each $color, $value in $theme-dark-colors-rgb {\r\n --#{$prefix}#{$color}-rgb: #{$value};\r\n }\r\n\r\n --#{$prefix}dark: #{map-get($theme-dark-colors, 'dark')};\r\n --#{$prefix}dark-rgb: #{to-rgb(map-get($theme-dark-colors, 'dark'))};\r\n --#{$prefix}light-rgb: #{to-rgb(map-get($theme-dark-colors, 'light'))};\r\n\r\n @each $color, $value in $theme-dark-colors {\r\n //\r\n // Falcon Button\r\n //\r\n --#{$prefix}btn-falcon-#{$color}-color: var(--#{$prefix}#{$color});\r\n --#{$prefix}btn-falcon-#{$color}-hover-color: #{shift-color(\r\n $value,\r\n -17%\r\n )};\r\n --#{$prefix}btn-falcon-#{$color}-active-background: #{shade-color(\r\n $dark,\r\n 40%\r\n )};\r\n --#{$prefix}btn-falcon-#{$color}-active-color: #{shift-color(\r\n $value,\r\n -17%\r\n )};\r\n }\r\n\r\n --#{$prefix}body-color: #{$body-color-dark};\r\n --#{$prefix}body-bg: #{$body-bg-dark};\r\n\r\n --#{$prefix}quaternary-bg: #{$body-quaternary-bg-dark};\r\n --#{$prefix}quaternary-bg-rgb: #{to-rgb($body-quaternary-bg-dark)};\r\n\r\n --#{$prefix}emphasis-bg: #{$body-emphasis-bg-dark};\r\n --#{$prefix}emphasis-bg-rgb: #{to-rgb($body-emphasis-bg-dark)};\r\n\r\n //\r\n // Box Shadows\r\n //\r\n --#{$prefix}box-shadow: 0 7px 14px 0 rgba(3, 12, 51, 0.15),\r\n 0 3px 6px 0 rgba(0, 0, 0, 0.2);\r\n --#{$prefix}box-shadow-sm: 0 0.125rem 0.25rem rgba($black, 0.075);\r\n --#{$prefix}box-shadow-lg: 0 1rem 4rem rgba($black, 0.175);\r\n --#{$prefix}box-shadow-inset: inset 0 1px 2px rgba($black, 0.075);\r\n\r\n //\r\n // Input\r\n //\r\n --#{$prefix}input-focus-border-color-global: #{shade-color(\r\n $component-active-bg,\r\n 50%\r\n )};\r\n\r\n //\r\n // Navbar glass\r\n //\r\n --#{$prefix}bg-navbar-glass: #{rgba($gray-1100, 0.96)};\r\n\r\n //\r\n // Navbar Vertical\r\n //\r\n // scss-docs-start navbar-vertical-default-dark-variables\r\n --#{$prefix}navbar-vertical-default-link-color: #{$navbar-vertical-default-link-color-dark};\r\n --#{$prefix}navbar-vertical-default-link-hover-color: #{$navbar-vertical-default-link-hover-color-dark};\r\n --#{$prefix}navbar-vertical-default-link-active-color: #{$navbar-vertical-default-link-active-color-dark};\r\n --#{$prefix}navbar-vertical-default-link-disable-color: #{$navbar-vertical-default-link-disable-color-dark};\r\n --#{$prefix}navbar-vertical-default-hr-color: #{$navbar-vertical-default-hr-color-dark};\r\n --#{$prefix}navbar-vertical-default-scrollbar-color: #{$navbar-vertical-default-scrollbar-color-dark};\r\n // scss-docs-end navbar-vertical-default-dark-variables\r\n\r\n // scss-docs-start navbar-vertical-card-dark-variables\r\n --#{$prefix}navbar-vertical-card-hr-color: #{$navbar-vertical-card-hr-color-dark};\r\n --#{$prefix}navbar-vertical-card-bg-color: #{$navbar-vertical-card-bg-color-dark};\r\n // scss-docs-end navbar-vertical-card-dark-variables\r\n\r\n //\r\n // Reveal Button\r\n //\r\n --#{$prefix}btn-reveal-focus-bg: #{shade-color($dark, 10%)};\r\n --#{$prefix}btn-reveal-hover-shadow: 0px 1px 2px 0px rgba(0, 0, 0, 0.8),\r\n 0px 1px 1.5px 0px rgba(0, 0, 0, 0.7),\r\n 0px 2px 5px 0px rgba(43, 45, 80, 0.4),\r\n 0px 0px 0px 1px rgba(255, 255, 255, 0.06);\r\n --#{$prefix}btn-reveal-focus-border-color: #{shade-color($dark, 12.5%)};\r\n\r\n //\r\n // Falcon Button\r\n //\r\n --#{$prefix}btn-falcon-box-shadow: 0 0 0 1px rgba(0, 8, 19, 0.3),\r\n 0 2px 5px 0 rgba(0, 13, 33, 0.5), 0 1px 1.5px 0 rgba(0, 8, 1, 0.48),\r\n 0 1px 2px 0 rgba(0, 8, 1, 0.4);\r\n --#{$prefix}btn-falcon-hover-box-shadow: 0 0 0 1px rgba(0, 8, 19, 0.3),\r\n 0 3px 7px 0 rgba(0, 13, 33, 0.8), 0 1px 1.5px 0 #000801,\r\n 0 1px 2px 0 #000801;\r\n\r\n --#{$prefix}btn-falcon-default-hover-color: #{shift-color($gray-400, -17%)};\r\n --#{$prefix}btn-falcon-default-active-background: #{shade-color($dark, 10%)};\r\n --#{$prefix}btn-falcon-default-active-border: #{shift-color($gray-400, -17%)};\r\n\r\n //\r\n // Avarar\r\n //\r\n --#{$prefix}avatar-name-bg: #{$gray-800};\r\n\r\n //\r\n // Notification\r\n //\r\n --#{$prefix}notification-title-bg: #{$gray-900};\r\n --#{$prefix}notification-unread-hover-bg: #{darken($gray-1000, 5%)};\r\n\r\n //\r\n // Kanban\r\n //\r\n --#{$prefix}kanban-bg: #{rgba($gray-1000, 0.25)};\r\n --#{$prefix}kanban-item-bg: #{$gray-1000};\r\n --#{$prefix}kanban-nav-link-card-details-hover-bg: #{$gray-900};\r\n\r\n //\r\n // Gradient Background\r\n //\r\n --#{$prefix}bg-shape-bg: #01224b;\r\n --#{$prefix}bg-shape-bg-ltd: linear-gradient(\r\n -45deg,\r\n rgba(20, 58, 101, 0.41),\r\n #053571\r\n );\r\n --#{$prefix}bg-shape-bg-dtl: linear-gradient(\r\n -45deg,\r\n #0a3b79,\r\n rgba(9, 25, 43, 0.41)\r\n );\r\n\r\n --#{$prefix}line-chart-gradient: linear-gradient(45deg, #012552, #001835);\r\n --#{$prefix}card-gradient: linear-gradient(45deg, #012552, #001835);\r\n --#{$prefix}bg-circle-shape: linear-gradient(\r\n -45deg,\r\n rgba(9, 25, 43, 0.41),\r\n #0a3b79\r\n );\r\n --#{$prefix}bg-circle-shape-bg: #4695ff;\r\n --#{$prefix}modal-shape-header: linear-gradient(-45deg, #012552, #001835);\r\n --#{$prefix}modal-shape-header-after: linear-gradient(\r\n -45deg,\r\n rgba(20, 58, 101, 0.41),\r\n #053571\r\n );\r\n --#{$prefix}modal-shape-header-bg: #01224b;\r\n\r\n //\r\n // Full Calendar\r\n //\r\n --fc-page-bg-color: #{$dark};\r\n --fc-neutral-bg-color: #{$gray-1000};\r\n\r\n //\r\n // React Slic\r\n //\r\n --#{$prefix}slick-arrow-bg: #{rgba($dark, 0.8)};\r\n\r\n //\r\n // React Datepicker\r\n //\r\n --#{$prefix}react-datepicker-bg: #{$dark};\r\n --#{$prefix}react-datepicker-header-bg: #{$gray-900};\r\n\r\n //\r\n // Leaflet map\r\n //\r\n --#{$prefix}leaflet-bar-bg: #{$gray-900};\r\n\r\n //\r\n // Choices\r\n //\r\n --#{$prefix}bg-choices-close-button: #{$gray-800};\r\n\r\n //\r\n // Thumbnail\r\n //\r\n --#{$prefix}thumbnail-bg-global: #{$gray-1000};\r\n\r\n //\r\n // Card span\r\n //\r\n --#{$prefix}card-span-img-hover-box-shadow: var(--#{$prefix}box-shadow);\r\n\r\n //\r\n // Showcase page\r\n //\r\n --#{$prefix}setting-toggle-shadow: 0 -7px 14px 0 rgba(3, 12, 51, 0.15),\r\n 0 3px 6px 0 rgba(0, 0, 0, 0.2);\r\n\r\n //\r\n // Scrollbar\r\n //\r\n --#{$prefix}scrollbar-bg: #{rgba($gray-900, 0.6)};\r\n\r\n //\r\n // Custom disabled button\r\n //\r\n --#{$prefix}btn-disabled-custom-background: #{rgba($dark, 0.65)};\r\n --#{$prefix}btn-disabled-custom-color: #{rgba($white, 0.2)};\r\n\r\n //\r\n // Dropdown\r\n //\r\n --#{$prefix}dropdown-bg-global: #{$gray-1000};\r\n --#{$prefix}dropdown-link-hover-color-global: #{lighten($gray-300, 5%)};\r\n --#{$prefix}dropdown-link-hover-bg-global: #{rgba($gray-1100, 0.4)};\r\n\r\n //\r\n // Popover\r\n //\r\n --#{$prefix}popover-header-bg-global: #{rgba($gray-1000, 0.25)};\r\n\r\n //\r\n // Toast\r\n //\r\n --#{$prefix}toast-bg-global: #{rgba($gray-900, 0.3)};\r\n --#{$prefix}toast-header-bg-global: #{rgba($gray-900, 0.3)};\r\n\r\n //\r\n // Table variants\r\n //\r\n @each $color, $value in $table-variants-dark {\r\n .table-#{$color} {\r\n --#{$prefix}table-bg: #{$value};\r\n --#{$prefix}table-color: #{color-contrast(opaque($gray-1000, $value))};\r\n --#{$prefix}table-hover-bg: #{mix(\r\n color-contrast(opaque($gray-1000, $value)),\r\n $value,\r\n percentage($table-hover-bg-factor)\r\n )};\r\n --#{$prefix}table-hover-color: #{color-contrast(\r\n mix(\r\n color-contrast(opaque($gray-1000, $value)),\r\n $value,\r\n percentage($table-hover-bg-factor)\r\n )\r\n )};\r\n --#{$prefix}table-striped-bg: #{mix(\r\n color-contrast(opaque($gray-1000, $value)),\r\n $value,\r\n percentage($table-striped-bg-factor)\r\n )};\r\n --#{$prefix}table-striped-color: #{color-contrast(\r\n mix(\r\n color-contrast(opaque($gray-1000, $value)),\r\n $value,\r\n percentage($table-striped-bg-factor)\r\n )\r\n )};\r\n --#{$prefix}table-active-bg: #{mix(\r\n color-contrast(opaque($gray-1000, $value)),\r\n $value,\r\n percentage($table-active-bg-factor)\r\n )};\r\n --#{$prefix}table-active-color: #{color-contrast(\r\n mix(\r\n color-contrast(opaque($gray-1000, $value)),\r\n $value,\r\n percentage($table-active-bg-factor)\r\n )\r\n )};\r\n --#{$prefix}table-border-color: #{rgba(\r\n mix(\r\n color-contrast(opaque($gray-1000, $value)),\r\n $value,\r\n percentage($table-border-factor)\r\n ),\r\n 0.05\r\n )};\r\n }\r\n }\r\n }\r\n}\r\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-` + + + + + Description + + + + Label + + + + + + + + + + + + More options + + + + + + ); +}; + + +export default AddScheduleModal; diff --git a/src/components/app/calendar/Calendar.jsx b/src/components/app/calendar/Calendar.jsx new file mode 100644 index 0000000..59b8298 --- /dev/null +++ b/src/components/app/calendar/Calendar.jsx @@ -0,0 +1,242 @@ +import React, { useEffect, useRef, useState } from 'react'; +import { + Button, + Card, + Col, + OverlayTrigger, + Row, + Tooltip +} from 'react-bootstrap'; +import { useAppContext } from 'providers/AppProvider'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import IconButton from 'components/common/IconButton'; +import FullCalendar from '@fullcalendar/react'; +import dayGridPlugin from '@fullcalendar/daygrid'; +import timeGridPlugin from '@fullcalendar/timegrid'; +import listPlugin from '@fullcalendar/list'; +import interactionPlugin from '@fullcalendar/interaction'; +import events from 'data/calendar/events'; +import AddScheduleModal from './AddScheduleModal'; +import CalendarEventModal from './CalendarEventModal'; +import DropdownFilter from 'components/common/DropdownFilter'; + +const Calendar = () => { + const { + config: { isRTL } + } = useAppContext(); + const calendarRef = useRef(); + const [title, setTitle] = useState(''); + const [calendarApi, setCalendarApi] = useState({}); + const [currentFilter, setCurrentFilter] = useState('Month View'); + const [isOpenScheduleModal, setIsOpenScheduleModal] = useState(false); + const [isOpenEventModal, setIsOpenEventModal] = useState(false); + const [modalEventContent, setModalEventContent] = useState({}); + const [scheduleStartDate, setScheduleStartDate] = useState(); + const [scheduleEndDate, setScheduleEndDate] = useState(); + + const eventList = events.reduce( + (acc, event) => + event.schedules + ? acc.concat(event.schedules.concat(event)) + : acc.concat(event), + [] + ); + + const eventTimeFormat = { + hour: 'numeric', + minute: '2-digit', + omitZeroMinute: true, + meridiem: true + }; + + const handleEventClick = info => { + if (info.event.url) { + window.open(info.event.url); + info.jsEvent.preventDefault(); + } else { + setModalEventContent(info); + setIsOpenEventModal(true); + } + }; + + const [initialEvents, setInitialEvents] = useState(eventList); + const viewName = [ + 'Month View', + 'Week View', + 'Day View', + 'List View', + 'Year View' + ]; + + const handleFilter = filter => { + setCurrentFilter(filter); + switch (filter) { + case 'Month View': + calendarApi.changeView('dayGridMonth'); + setTitle(calendarApi.getCurrentData().viewTitle); + break; + case 'Week View': + calendarApi.changeView('timeGridWeek'); + setTitle(calendarApi.getCurrentData().viewTitle); + break; + case 'Day View': + calendarApi.changeView('timeGridDay'); + setTitle(calendarApi.getCurrentData().viewTitle); + break; + case 'List View': + calendarApi.changeView('listWeek'); + setTitle(calendarApi.getCurrentData().viewTitle); + break; + default: + calendarApi.changeView('listYear'); + setTitle(calendarApi.getCurrentData().viewTitle); + } + }; + + useEffect(() => { + setCalendarApi(calendarRef.current.getApi()); + }, []); + + return ( + <> + + + + + + Previous + + } + > + + + + Next + + } + > + + + + +

+ {title || `${calendarApi.currentDataManager?.data?.viewTitle}`} +

+ + + + + +
+ + + { + setIsOpenScheduleModal(!isOpenScheduleModal); + }} + > + Add Schedule + + + + + + + + + { + setIsOpenScheduleModal(true); + setScheduleStartDate(info.start); + setScheduleEndDate(info.end); + }} + eventTimeFormat={eventTimeFormat} + eventClick={handleEventClick} + events={initialEvents} + /> + + + + + + + + ); +}; + +export default Calendar; diff --git a/src/components/app/calendar/CalendarEventModal.jsx b/src/components/app/calendar/CalendarEventModal.jsx new file mode 100644 index 0000000..89ea0a5 --- /dev/null +++ b/src/components/app/calendar/CalendarEventModal.jsx @@ -0,0 +1,133 @@ +import React from 'react'; +import { useAppContext } from 'providers/AppProvider'; +import { Button, Modal } from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { Link } from 'react-router'; +import Flex from 'components/common/Flex'; +import dayjs from 'dayjs'; +import paths from 'routes/paths'; + +const getCircleStackIcon = (icon, transform) => ( + + + + +); + +const EventModalMediaContent = ({ icon, heading, content, children }) => ( + + {getCircleStackIcon(icon)} +
+
{heading}
+ {children ||

{content}

} +
+
+); + +const CalendarEventModal = ({ + setIsOpenEventModal, + isOpenEventModal, + modalEventContent +}) => { + const { + config: { isDark } + } = useAppContext(); + + const handleClose = () => { + setIsOpenEventModal(!isOpenEventModal); + }; + + const { title, end, start } = isOpenEventModal && modalEventContent.event; + const { description, location, organizer, schedules } = + isOpenEventModal && modalEventContent.event.extendedProps; + + return ( + + + +
{title}
+ {organizer && ( +

+ by {organizer} +

+ )} + + + + {description && ( + + )} + {(end || start) && ( + +

+ {dayjs(start).format('dddd, MMMM DD, YYYY, hh:mm A')} + {end && ( + <> + -
+ {dayjs(end).format('dddd, MMMM DD, YYYY, hh:mm A')} + + )} +

+
+ )} + {location && ( + +
+ + )} + {schedules && ( + +
    + {schedules.map((schedule, index) => ( +
  • {schedule.title}
  • + ))} +
+
+ )} + + + + + + + ); +}; + +export default CalendarEventModal; diff --git a/src/components/app/chat/Chat.jsx b/src/components/app/chat/Chat.jsx new file mode 100644 index 0000000..c85ca80 --- /dev/null +++ b/src/components/app/chat/Chat.jsx @@ -0,0 +1,55 @@ +import React, { useState } from 'react'; +import Flex from 'components/common/Flex'; +import { Card, Tab } from 'react-bootstrap'; +import ChatContent from './content/ChatContent'; +import ChatSidebar from './sidebar/ChatSidebar'; +import ChatProvider, { useChatContext } from 'providers/ChatProvider'; + +const ChatTab = () => { + const { + setIsOpenThreadInfo, + threadsDispatch, + threads, + setCurrentThread, + setScrollToBottom + } = useChatContext(); + const [hideSidebar, setHideSidebar] = useState(false); + + const handleSelect = e => { + setHideSidebar(false); + setIsOpenThreadInfo(false); + const thread = threads.find(thread => thread.id === parseInt(e)); + setCurrentThread(thread); + threadsDispatch({ + type: 'EDIT', + id: thread.id, + payload: { ...thread, read: true } + }); + setScrollToBottom(true); + }; + + return ( + + + + + + + + + ); +}; + +const Chat = () => { + return ( + + + + ); +}; + +export default Chat; diff --git a/src/components/app/chat/content/ChatContent.jsx b/src/components/app/chat/content/ChatContent.jsx new file mode 100644 index 0000000..49c34cb --- /dev/null +++ b/src/components/app/chat/content/ChatContent.jsx @@ -0,0 +1,22 @@ +import React from 'react'; +import { Tab } from 'react-bootstrap'; +import ChatContentHeader from './ChatContentHeader'; +import threads from 'data/chat/threads'; +import ChatContentBody from './ChatContentBody'; +import MessageTextArea from './MessageTextArea'; + +const ChatContent = ({ setHideSidebar }) => { + return ( + + {threads.map((thread, index) => ( + + + + + ))} + + + ); +}; + +export default ChatContent; diff --git a/src/components/app/chat/content/ChatContentBody.jsx b/src/components/app/chat/content/ChatContentBody.jsx new file mode 100644 index 0000000..a0ecafc --- /dev/null +++ b/src/components/app/chat/content/ChatContentBody.jsx @@ -0,0 +1,57 @@ +import React, { useEffect, useRef } from 'react'; +import ChatContentBodyIntro from './ChatContentBodyIntro'; +import Message from './Message'; +import SimpleBar from 'simplebar-react'; +import ThreadInfo from './ThreadInfo'; +import { useChatContext } from 'providers/ChatProvider'; + +const ChatContentBody = ({ thread }) => { + let lastDate = null; + const messagesEndRef = useRef(); + + const { getUser, messages, scrollToBottom, setScrollToBottom } = + useChatContext(); + const user = getUser(thread); + const { content } = messages.find(({ id }) => id === thread.messagesId); + + useEffect(() => { + if (scrollToBottom) { + setTimeout(() => { + messagesEndRef.current.scrollIntoView({ behavior: 'smooth' }); + }, 500); + setScrollToBottom(false); + } + }, [scrollToBottom]); + + return ( +
+ + +
+ + {content.map(({ message, time, senderUserId, status }, index) => ( +
+ {lastDate !== time.date && ( +
{`${time.date}, ${time.hour}`}
+ )} + {(() => { + lastDate = time.date; + })()} + +
+ ))} +
+
+ +
+ ); +}; + + +export default ChatContentBody; diff --git a/src/components/app/chat/content/ChatContentBodyIntro.jsx b/src/components/app/chat/content/ChatContentBodyIntro.jsx new file mode 100644 index 0000000..a60a09b --- /dev/null +++ b/src/components/app/chat/content/ChatContentBodyIntro.jsx @@ -0,0 +1,31 @@ +import React from 'react'; +import { Link } from 'react-router'; +import Avatar from 'components/common/Avatar'; +import Flex from 'components/common/Flex'; +import paths from 'routes/paths'; + +const ChatContentBodyIntro = ({ user, isGroup }) => ( + + +
+
+ + {user.name} + +
+

+ {isGroup + ? `You are a member of ${user.name}. Say hi to start conversation to the group.` + : `You friends with ${user.name}. Say hi to start the conversation`} +

+
+
+); + +export default ChatContentBodyIntro; diff --git a/src/components/app/chat/content/ChatContentHeader.jsx b/src/components/app/chat/content/ChatContentHeader.jsx new file mode 100644 index 0000000..377cdb1 --- /dev/null +++ b/src/components/app/chat/content/ChatContentHeader.jsx @@ -0,0 +1,77 @@ +import React from 'react'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { Button, Col, Row, OverlayTrigger, Tooltip } from 'react-bootstrap'; +import Flex from 'components/common/Flex'; +import { useChatContext } from 'providers/ChatProvider'; + +const ChatContentHeader = ({ thread, setHideSidebar }) => { + const { getUser, isOpenThreadInfo, setIsOpenThreadInfo } = useChatContext(); + const user = getUser(thread); + + return ( +
+ + +
setHideSidebar(true)} + > + +
+
+
{user.name}
+
+ {user.status === 'status-online' + ? 'Active on chat' + : 'Active 7h ago'} +
+
+ + + + Start a Audio Call + + } + > + + + + Start a Video Call + + } + > + + + + Conversation Information + + } + > + + + +
+
+ ); +}; + +export default ChatContentHeader; diff --git a/src/components/app/chat/content/ChatMessageOptions.jsx b/src/components/app/chat/content/ChatMessageOptions.jsx new file mode 100644 index 0000000..4ac9151 --- /dev/null +++ b/src/components/app/chat/content/ChatMessageOptions.jsx @@ -0,0 +1,47 @@ +import React, { useState } from 'react'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { OverlayTrigger, Tooltip } from 'react-bootstrap'; + +const ChatMessageOptions = () => { + const [actions] = useState([ + { + tooltip: 'Forward', + icon: 'share' + }, + { + tooltip: 'Archive', + icon: 'archive' + }, + { + tooltip: 'Edit', + icon: 'edit' + }, + { + tooltip: 'Remove', + icon: 'trash-alt' + } + ]); + + return ( +
    + {actions.map(action => ( +
  • + {action.tooltip} + } + > +
    + +
    +
    +
  • + ))} +
+ ); +}; + +export default ChatMessageOptions; diff --git a/src/components/app/chat/content/Message.jsx b/src/components/app/chat/content/Message.jsx new file mode 100644 index 0000000..19b554a --- /dev/null +++ b/src/components/app/chat/content/Message.jsx @@ -0,0 +1,133 @@ +import { Row, Col, Image } from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import Avatar from 'components/common/Avatar'; +import Flex from 'components/common/Flex'; +import classNames from 'classnames'; +import users from 'data/people'; +import FalconLightBox from 'components/common/FalconLightBox'; +import FalconLightBoxGallery from 'components/common/FalconLightBoxGallery'; +import ChatMessageOptions from './ChatMessageOptions'; + +const Message = ({ message, senderUserId, status = '', time, isGroup }) => { + const user = users.find(({ id }) => id === senderUserId); + const name = user?.name.split(' ')[0]; + const isLeft = senderUserId !== 3; + + return ( + + {isLeft && } +
+
+ + {!isLeft && } + {message.attachments ? ( +
+ {message.text && ( +

+ )} + + {setImgIndex => ( + + {message.attachments.map((img, index) => { + return ( + + setImgIndex(index)} + /> + + ); + })} + + )} + +

+ ) : ( + <> +
+ {(message || message.text) && ( +

+ )} + {message.attachment && ( + + + + )} +

+ + )} + {isLeft && } +
+
+ {isLeft && isGroup && ( + {name} + )} + {time.hour} + {!isLeft && !!message && !!status && ( + + )} +
+
+
+
+ ); +}; + +export default Message; diff --git a/src/components/app/chat/content/MessageTextArea.jsx b/src/components/app/chat/content/MessageTextArea.jsx new file mode 100644 index 0000000..3a25855 --- /dev/null +++ b/src/components/app/chat/content/MessageTextArea.jsx @@ -0,0 +1,154 @@ +import React, { useEffect, useState } from 'react'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import classNames from 'classnames'; +import { useChatContext } from 'providers/ChatProvider'; +import EmojiPicker from 'emoji-picker-react'; +import { Button, Form } from 'react-bootstrap'; +import TextareaAutosize from 'react-textarea-autosize'; +import { useAppContext } from 'providers/AppProvider'; + +const formatDate = date => { + const options = { + weekday: 'short', + day: 'numeric', + month: 'long', + year: 'numeric', + hour: 'numeric', + minute: 'numeric' + }; + + const now = date + .toLocaleString('en-US', options) + .split(',') + .map(item => item.trim()); + + return { + day: now[0], + hour: now[3], + date: now[1] + ', ' + now[2] + }; +}; + +const MessageTextArea = () => { + const { + messagesDispatch, + messages, + threadsDispatch, + currentThread, + setScrollToBottom, + isOpenThreadInfo + } = useChatContext(); + const [previewEmoji, setPreviewEmoji] = useState(false); + const [message, setMessage] = useState(''); + + const { + config: { isDark } + } = useAppContext(); + + const addEmoji = (emojiObject) => { + setMessage(prev => prev + emojiObject.emoji); + setPreviewEmoji(false); + }; + + + const handleSubmit = e => { + e.preventDefault(); + const date = new Date(); + let newMessage = { + senderUserId: 3, + message: `${message.replace(/(?:\r\n|\r|\n)/g, '
')}`, + status: 'delivered', + time: formatDate(date) + }; + + const { content } = messages.find( + ({ id }) => id === currentThread.messagesId + ); + + if (message) { + messagesDispatch({ + type: 'EDIT', + payload: { + id: currentThread.messagesId, + content: [...content, newMessage] + }, + id: currentThread.messagesId + }); + + threadsDispatch({ + type: 'EDIT', + payload: currentThread, + id: currentThread.id, + isUpdatedStart: true + }); + } + setMessage(''); + setScrollToBottom(true); + }; + + useEffect(() => { + if (isOpenThreadInfo) { + setPreviewEmoji(false); + } + }, [isOpenThreadInfo]); + + return ( +
+ setMessage(target.value)} + className="form-control outline-none resize-none rounded-0 border-0 emojiarea-editor" + /> + + + + + + + + + + + {previewEmoji && ( +
+ +
+ )} + + + + ); +}; + + +export default MessageTextArea; diff --git a/src/components/app/chat/content/ThreadInfo.jsx b/src/components/app/chat/content/ThreadInfo.jsx new file mode 100644 index 0000000..8ddf93e --- /dev/null +++ b/src/components/app/chat/content/ThreadInfo.jsx @@ -0,0 +1,259 @@ +import React, { useState } from 'react'; +import { Dropdown, Nav, Button, Collapse, Col, Row } from 'react-bootstrap'; +import { Link } from 'react-router'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import Avatar from 'components/common/Avatar'; +import Flex from 'components/common/Flex'; +import classNames from 'classnames'; +import MediaImg1 from 'assets/img/chat/1.jpg'; +import MediaImg2 from 'assets/img/chat/2.jpg'; +import MediaImg3 from 'assets/img/chat/3.jpg'; +import MediaImg4 from 'assets/img/chat/4.jpg'; +import MediaImg5 from 'assets/img/chat/5.jpg'; +import MediaImg6 from 'assets/img/chat/6.jpg'; +import users from 'data/people'; +import FalconLightBoxGallery from 'components/common/FalconLightBoxGallery'; +import SimpleBar from 'simplebar-react'; +import { useChatContext } from 'providers/ChatProvider'; +import paths from 'routes/paths'; + +const ThreadInfo = ({ thread }) => { + const [isOpenMemberCollapse, setIsOpenMemberCollapse] = useState(false); + const [isOpenSharedMediaCollapse, setIsOpenSharedMediaCollapse] = + useState(false); + + const { getUser, isOpenThreadInfo, groups, setIsOpenThreadInfo } = + useChatContext(); + const user = getUser(thread); + + const groupMembers = + thread.type === 'group' + ? groups + .find(({ id }) => id === thread.groupId) + .members.map(member => ({ + ...users.find(user => user.id === member.userId), + designation: member.designation + })) + : []; + + const [conversationOptions] = useState([ + { + title: 'Search in Conversation', + icon: 'search', + link: '#!' + }, + { + title: 'Edit Nicknames', + icon: 'pencil-alt', + link: '#!' + }, + { + title: 'Change Color', + icon: 'palette', + link: '#!' + }, + { + title: 'Change Emoji', + icon: 'thumbs-up', + link: '#!' + }, + { + title: 'Notifications', + icon: 'bell', + link: '#!' + } + ]); + + const images = [ + MediaImg1, + MediaImg2, + MediaImg3, + MediaImg4, + MediaImg5, + MediaImg6 + ]; + + return ( +
+
+ + + + +
+ + {user.name} + +
+ +
+
+
+ +
+
+
+
+ {thread.type === 'group' && ( + <> + + +
+ {groupMembers.map((member, index) => ( + + +
+
+
+ + {member.name} + +
+
+ {member.designation} +
+
+ + + + + + + + Message + + + View Profile + + + +
+
+ ))} +
+
+ + )} + + +
+ + {setImgIndex => ( + + {images.map((image, index) => ( + + { + setImgIndex(index); + }} + /> + + ))} + + )} + +
+
+
+
+
+
+
+ ); +}; + + +export default ThreadInfo; diff --git a/src/components/app/chat/sidebar/ChatContactSearch.jsx b/src/components/app/chat/sidebar/ChatContactSearch.jsx new file mode 100644 index 0000000..35504a5 --- /dev/null +++ b/src/components/app/chat/sidebar/ChatContactSearch.jsx @@ -0,0 +1,26 @@ +import React from 'react'; +import { Form, Button } from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; + +const ChatContactsSearch = () => ( +
e.preventDefault()}> + + + + + +
+); + +export default ChatContactsSearch; diff --git a/src/components/app/chat/sidebar/ChatSidebar.jsx b/src/components/app/chat/sidebar/ChatSidebar.jsx new file mode 100644 index 0000000..8eca7b5 --- /dev/null +++ b/src/components/app/chat/sidebar/ChatSidebar.jsx @@ -0,0 +1,27 @@ +import React from 'react'; +import { Nav } from 'react-bootstrap'; +import ChatThread from './ChatThread'; +import SimpleBar from 'simplebar-react'; +import ChatContactsSearch from './ChatContactSearch'; +import classNames from 'classnames'; +import { useChatContext } from 'providers/ChatProvider'; + +const ChatSidebar = ({ hideSidebar }) => { + const { threads } = useChatContext(); + return ( +
+
+ + + +
+ +
+ ); +}; + +export default ChatSidebar; diff --git a/src/components/app/chat/sidebar/ChatSidebarDropdownAction.jsx b/src/components/app/chat/sidebar/ChatSidebarDropdownAction.jsx new file mode 100644 index 0000000..b9882e3 --- /dev/null +++ b/src/components/app/chat/sidebar/ChatSidebarDropdownAction.jsx @@ -0,0 +1,34 @@ +import React from 'react'; +import { Dropdown } from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; + +const ChatSidebarDropdownAction = () => ( + + + + + + + Mute + + Archive + + Delete + + + Mark as Unread + + Something's Wrong + + Ignore Messages + Block Messages + + +); + +export default ChatSidebarDropdownAction; diff --git a/src/components/app/chat/sidebar/ChatThread.jsx b/src/components/app/chat/sidebar/ChatThread.jsx new file mode 100644 index 0000000..c796dc9 --- /dev/null +++ b/src/components/app/chat/sidebar/ChatThread.jsx @@ -0,0 +1,67 @@ +import React from 'react'; +import Flex from 'components/common/Flex'; +import classNames from 'classnames'; +import Avatar from 'components/common/Avatar'; +import { Nav } from 'react-bootstrap'; +import LastMessage from './LastMessage'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import ChatSidebarDropdownAction from './ChatSidebarDropdownAction'; +import { useChatContext } from 'providers/ChatProvider'; + +const ChatThread = ({ thread, index }) => { + const { getUser, messages } = useChatContext(); + const user = getUser(thread); + const message = messages.find(({ id }) => id === thread.messagesId); + const lastMessage = message?.content[message.content.length - 1]; + return ( + +
+ +
+ + +
+ +
{user.name}
+ + {' '} + {!!lastMessage && lastMessage.time.day}{' '} + +
+
+
+ +
+ {!!lastMessage?.status && ( + + )} +
+
+
+
+
+
+ ); +}; + +export default ChatThread; diff --git a/src/components/app/chat/sidebar/LastMessage.jsx b/src/components/app/chat/sidebar/LastMessage.jsx new file mode 100644 index 0000000..568a835 --- /dev/null +++ b/src/components/app/chat/sidebar/LastMessage.jsx @@ -0,0 +1,40 @@ +import React from 'react'; +import { users } from 'data/dashboard/default'; + +const LastMessage = ({ lastMessage, thread }) => { + const user = users.find(({ id }) => id === lastMessage?.senderUserId); + const name = user?.name.split(' '); + + const lastMassagePreview = + lastMessage?.messageType === 'attachment' + ? `${name[0]} sent ${lastMessage.attachment}` + : lastMessage?.message.split('
'); + + if (lastMessage) { + if (lastMessage.senderUserId === 3) { + return `You: ${lastMassagePreview[0]}`; + } + + if (thread.type === 'group') { + return ( +
+ ); + } + + return ( +
+ ); + } + + return
Say hi to your new friend
; +}; + +export default LastMessage; diff --git a/src/components/app/e-commerce/Invoice.jsx b/src/components/app/e-commerce/Invoice.jsx new file mode 100644 index 0000000..932af2c --- /dev/null +++ b/src/components/app/e-commerce/Invoice.jsx @@ -0,0 +1,213 @@ +import logoInvoice from 'assets/img/logos/logo-invoice.png'; +import IconButton from 'components/common/IconButton'; +import React from 'react'; +import { Card, Col, Row, Table } from 'react-bootstrap'; +import SimpleBar from 'simplebar-react'; + +const Invoice = () => { + return ( + <> + + + + +
Order #AD20294
+ + + + Download (.pdf) + + + Print + + + Receive Payment + + +
+
+
+ + + + + + invoice + + +

Invoice

+
Falcon Design Studio
+

+ 156 University Ave, Toronto
On, Canada, M5H 2H7 +

+ + +
+ +
+ + +
Invoice to
+
Antonio Banderas
+

+ 1954 Bloor Street West +
+ Torronto ON, M6P 3K9 +
+ Canada +

+

+ example@gmail.com +
+ +4444-6666-7777 +

+ + +
+ + + + + + + + + + + + + + + + + + + + + + + +
Invoice No:14
Order Number:AD20294
Invoice Date:2018-09-25
Payment Due:Upon receipt
+ Amount Due: + $19688.40
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Products + Quantity + RateAmount
+
+ Platinum web hosting package +
+

Down 35mb, Up 100mb

+
2$65.00$130.00
+
+ 2 Page website design +
+

+ Includes basic wireframes and responsive templates +

+
1$2,100.00$2,100.00
+
+ Mobile App Development +
+

Includes responsive navigation

+
8$5,00.00$4,000.00
+
Web App Development
+

Includes react spa

+
6$2,00.00$12,000.00
+
+
+ + + + + + + + + + + + + + + + + + + + + + +
Subtotal:$18,230.00
Tax 8%:$1458.40
Total:$19688.40
Amount Due:$19688.40
+ +
+
+ +

+ Notes: We really appreciate your business and if + there’s anything else we can do, please let us know! +

+
+
+ + ); +}; + +export default Invoice; diff --git a/src/components/app/e-commerce/QuantityController.jsx b/src/components/app/e-commerce/QuantityController.jsx new file mode 100644 index 0000000..cf02890 --- /dev/null +++ b/src/components/app/e-commerce/QuantityController.jsx @@ -0,0 +1,42 @@ +import React from 'react'; +import { Button, Form, InputGroup } from 'react-bootstrap'; +import classNames from 'classnames'; + +const QuantityController = ({ + quantity, + handleChange, + handleIncrease, + handleDecrease, + btnClassName +}) => { + return ( + + + + + + ); +}; + +export default QuantityController; diff --git a/src/components/app/e-commerce/billing/Billing.jsx b/src/components/app/e-commerce/billing/Billing.jsx new file mode 100644 index 0000000..c81ae08 --- /dev/null +++ b/src/components/app/e-commerce/billing/Billing.jsx @@ -0,0 +1,38 @@ +import FaqAlt from 'components/pages/faq/faq-alt/FaqAlt'; +import { Card, Col, Row } from 'react-bootstrap'; +import BillingCard from './BillingCard'; +import BillingDetails from './BillingDetails'; +import BillingHeader from './BillingHeader'; + +const Billing = () => { + return ( + <> + + + + + +
Billing Details
+
+ + + +
+ + + + +
Billing
+
+ + + +
+ +
+ + + ); +}; + +export default Billing; diff --git a/src/components/app/e-commerce/billing/BillingCard.jsx b/src/components/app/e-commerce/billing/BillingCard.jsx new file mode 100644 index 0000000..f38ec3d --- /dev/null +++ b/src/components/app/e-commerce/billing/BillingCard.jsx @@ -0,0 +1,46 @@ +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import Flex from 'components/common/Flex'; +import React from 'react'; +import { Button, Form } from 'react-bootstrap'; +import { Link } from 'react-router'; + +const BillingCard = () => { + return ( + <> + + + + + +

Due in 30 days

+ $375.00 +
+ +

Annual saving

+ $75.00/yr +
+
+
+ Due today + $0.00 +
+

+ Once you start your trial, you will have 30 days to use Falcon Premium + for free. After 30 days you’ll be charged based on your selected plan. +

+ +
+ + By continuing, you are agreeing to our subscriber{' '} + terms and will be charged at the end of the + trial. + +
+ + ); +}; + +export default BillingCard; diff --git a/src/components/app/e-commerce/billing/BillingDetails.jsx b/src/components/app/e-commerce/billing/BillingDetails.jsx new file mode 100644 index 0000000..d8f20d0 --- /dev/null +++ b/src/components/app/e-commerce/billing/BillingDetails.jsx @@ -0,0 +1,178 @@ +import React from 'react'; +import { Col, Form, OverlayTrigger, Row, Tooltip } from 'react-bootstrap'; +import paypal from 'assets/img/icons/icon-paypal-full.png'; +import creditCard from 'assets/img/icons/icon-payment-methods.png'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { Link } from 'react-router'; +import { useForm } from 'react-hook-form'; +import countries from 'data/countries'; + +const BillingDetails = () => { + const { register, handleSubmit } = useForm(); + + const onSubmit = data => { + console.log(data); + }; + + return ( +
+ + + + paypal + + +

+ Pay with PayPal, Apple Pay, PayPal Credit and much more +

+ + + + + Credit Card + paypal + + +

+ Safe money transfer using your bank accounts. Visa, maestro, discover, + american express. +

+ + + + + Card Number + + + + + + Name of Card + + + + + + + + + Country + + + + {countries.map(country => ( + + ))} + + + + + + + Zip Code + + + + + + + + Exp Date + + + + + + + + CVV{''} + + Card verification value + + } + > + + + + + + + + + +
+ ); +}; + +export default BillingDetails; diff --git a/src/components/app/e-commerce/billing/BillingHeader.jsx b/src/components/app/e-commerce/billing/BillingHeader.jsx new file mode 100644 index 0000000..549ee4e --- /dev/null +++ b/src/components/app/e-commerce/billing/BillingHeader.jsx @@ -0,0 +1,79 @@ +import React from 'react'; +import PageHeader from 'components/common/PageHeader'; +import { Dropdown } from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { Link } from 'react-router'; +import { useAppContext } from 'providers/AppProvider'; + +const BillingHeader = ({ ...rest }) => { + const { + config: { isRTL } + } = useAppContext(); + + return ( + + + + Change plan + + + + + Standard License + $59.00 + +
    +
  • + + Use for a single product +
  • +
  • + + Non-paying users only +
  • +
+

+ Read the full Standard License +

+
+ + + + Extended License + $99.00 + +
    +
  • + + Unlimited websites +
  • +
  • + + Paying users allowed +
  • +
+

+ Read the full Extended License +

+
+
+
+
+ ); +}; + +export default BillingHeader; diff --git a/src/components/app/e-commerce/cart/CartItem.jsx b/src/components/app/e-commerce/cart/CartItem.jsx new file mode 100644 index 0000000..33392a1 --- /dev/null +++ b/src/components/app/e-commerce/cart/CartItem.jsx @@ -0,0 +1,99 @@ +import { Button, Col, Row } from 'react-bootstrap'; +import { Link } from 'react-router'; +import useProductHook from '../product/useProductHook'; +import QuantityController from '../QuantityController'; +import paths from 'routes/paths'; +import { useProductContext } from 'providers/ProductProvider'; + +const CartItem = ({ product }) => { + const { id, files, name, quantity, totalPrice } = product; + + const { handleAddToCart } = useProductHook(product); + + const { productsDispatch } = useProductContext; + + const handleRemove = () => { + productsDispatch({ + type: 'REMOVE_FROM_CART', + payload: { + product + } + }); + }; + + const handleIncrease = () => { + handleAddToCart(parseInt(quantity + 1)); + }; + + const handleDecrease = () => { + if (quantity > 1) { + handleAddToCart(parseInt(quantity - 1)); + } + }; + + const handleChange = e => { + handleAddToCart(parseInt(e.target.value < 1 ? 1 : e.target.value)); + }; + + return ( + + +
+ + {name} + +
+
+ + {name} + +
+
+ +
+
+
+ + + + +
+ +
+ + + ${totalPrice} + +
+ +
+ ); +}; + +export default CartItem; diff --git a/src/components/app/e-commerce/cart/CartModal.jsx b/src/components/app/e-commerce/cart/CartModal.jsx new file mode 100644 index 0000000..ac2dc2f --- /dev/null +++ b/src/components/app/e-commerce/cart/CartModal.jsx @@ -0,0 +1,107 @@ +import React from 'react'; +import { Col, Modal, Row, Button, Image } from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { Link } from 'react-router'; +import Flex from 'components/common/Flex'; +import IconButton from 'components/common/IconButton'; +import { useProductContext } from 'providers/ProductProvider'; +import { useAppContext } from 'providers/AppProvider'; +import paths from 'routes/paths'; + +const CartModal = () => { + const { + productsState: { + cartModal: { show, product, type, quantity } + }, + productsDispatch + } = useProductContext(); + + const { + config: { isDark } + } = useAppContext(); + + const handleClose = () => { + productsDispatch({ + type: 'TOGGLE_CART_MODAL' + }); + }; + + return ( + + + + +
+ +
+
+ You just {type === 'remove' ? 'removed' : 'added'} {quantity} item + {quantity === 1 ? '' : 's'} +
+
+
+
+ + + + + + product image + +
+
+ + {product.name} + +
+
+
+ + + ${product.totalPrice} + +
+
+ {type !== 'remove' && ( + + + + Go to Cart + + + )} +
+ ); +}; + +export default CartModal; diff --git a/src/components/app/e-commerce/cart/ShoppingCart.jsx b/src/components/app/e-commerce/cart/ShoppingCart.jsx new file mode 100644 index 0000000..03d2f63 --- /dev/null +++ b/src/components/app/e-commerce/cart/ShoppingCart.jsx @@ -0,0 +1,144 @@ +import React, { useEffect, useState } from 'react'; +import { Button, Card, Col, Form, Row } from 'react-bootstrap'; +import IconButton from 'components/common/IconButton'; +import { Link } from 'react-router'; +import CartItem from './CartItem'; +import CartModal from './CartModal'; +import { useProductContext } from 'providers/ProductProvider'; +import { getSubtotal } from 'helpers/utils'; +import paths from 'routes/paths'; + +const ShoppingCart = () => { + const [totalCost, setTotalCost] = useState(0); + const [promoCode, setPromoCode] = useState(''); + + const { + productsState: { cartItems }, + productsDispatch + } = useProductContext(); + + useEffect(() => { + setTotalCost(getSubtotal(cartItems)); + }, [cartItems]); + + const applyPromo = e => { + e.preventDefault(); + productsDispatch({ + type: 'APPLY_PROMO', + payload: { + promoCode + } + }); + setPromoCode(''); + }; + + return ( + <> + + + + +
+ Shopping Cart ({cartItems.length} Items) +
+ + + + Continue Shopping + + + +
+
+ + {cartItems.length > 0 ? ( + <> + + + Name + + + + + Quantity + + + Price + + + + + {cartItems.map(product => ( + + ))} + + + Total + + + + + {cartItems.length} (items) + + + ${totalCost} + + + + + + ) : ( +

+ You have no items in your shopping cart. Go ahead and start + shopping! +

+ )} +
+ + {cartItems.length > 0 && ( + +
+
+ setPromoCode(e.target.value)} + /> + +
+
+ +
+ )} +
+ + + ); +}; + +export default ShoppingCart; diff --git a/src/components/app/e-commerce/checkout/Checkout.jsx b/src/components/app/e-commerce/checkout/Checkout.jsx new file mode 100644 index 0000000..68f42f1 --- /dev/null +++ b/src/components/app/e-commerce/checkout/Checkout.jsx @@ -0,0 +1,42 @@ +import React from 'react'; +import { Col, Row } from 'react-bootstrap'; +import CheckoutShipping from './CheckoutShipping'; +import OrderSummary from './OrderSummary'; +import PaymentMethod from './PaymentMethod'; +import { useProductContext } from 'providers/ProductProvider'; +import { getSubtotal, getDiscountPrice } from 'helpers/utils'; + +const Checkout = () => { + const { + productsState: { cartItems, promo } + } = useProductContext(); + + const shippingCost = parseFloat( + cartItems.reduce((acc, product) => acc + product.shippingCost, 0) + ); + const subTotal = parseFloat(getSubtotal(cartItems).toFixed(2)); + const total = shippingCost + subTotal; + const payableTotal = parseFloat( + promo ? total - getDiscountPrice(total, promo.discount) : total + ).toFixed(2); + + return ( + + + + + + + + + + ); +}; + +export default Checkout; diff --git a/src/components/app/e-commerce/checkout/CheckoutShipping.jsx b/src/components/app/e-commerce/checkout/CheckoutShipping.jsx new file mode 100644 index 0000000..b00e677 --- /dev/null +++ b/src/components/app/e-commerce/checkout/CheckoutShipping.jsx @@ -0,0 +1,64 @@ +import IconButton from 'components/common/IconButton'; +import React from 'react'; +import { Card, Col, Form, Row } from 'react-bootstrap'; +import { Link } from 'react-router'; +import { shippingAddress } from 'data/ecommerce/checkoutData'; + +const CheckoutShipping = () => { + return ( + + + + +
Your Shipping Address
+ + + + Add New Address + + +
+
+ + + {shippingAddress.map((item, index) => ( + + + + + {item.name} + + + {item.street},
{item.city},
{item.state},{' '} + {item.zip}{' '} + {item.phone} +
+
+
+ + Edit + +
+ + ))} +
+
+
+ ); +}; + +export default CheckoutShipping; diff --git a/src/components/app/e-commerce/checkout/OrderSummary.jsx b/src/components/app/e-commerce/checkout/OrderSummary.jsx new file mode 100644 index 0000000..b62f133 --- /dev/null +++ b/src/components/app/e-commerce/checkout/OrderSummary.jsx @@ -0,0 +1,92 @@ +import React from 'react'; +import classNames from 'classnames'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { Card, Table } from 'react-bootstrap'; +import { Link } from 'react-router'; +import { useProductContext } from 'providers/ProductProvider'; +import { getDiscountPrice } from 'helpers/utils'; +import paths from 'routes/paths'; + +const OrderSummary = ({ + shippingCost, + subTotal, + total, + payableTotal, + ...rest +}) => { + const { + productsState: { cartItems, promo } + } = useProductContext(); + + return ( + + +
Order Summary
+ + + +
+ + + + {cartItems?.map((product, index) => ( + + + + + ))} + + + + + + + + + + + + + + {promo && ( + + + + + )} + +
+ {product.name} x {product.quantity} +
+ {product.features.join(', ')} +
+
+ ${product.totalPrice} +
Subtotal${subTotal}
Shipping+${shippingCost}
Total${total}
+ Coupon: + {promo.code} ( - + {promo.discount}%) + + -${getDiscountPrice(total, promo.discount)} +
+
+ +
Payable Total
+
${payableTotal}
+
+
+ ); +}; + +export default OrderSummary; diff --git a/src/components/app/e-commerce/checkout/PaymentMethod.jsx b/src/components/app/e-commerce/checkout/PaymentMethod.jsx new file mode 100644 index 0000000..e2aab31 --- /dev/null +++ b/src/components/app/e-commerce/checkout/PaymentMethod.jsx @@ -0,0 +1,224 @@ +import React, { useState } from 'react'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import cards from 'assets/img/icons/icon-payment-methods-grid.png'; +import paypal from 'assets/img/icons/icon-paypal-full.png'; +import shield from 'assets/img/icons/shield.png'; +import { useProductContext } from 'providers/ProductProvider'; +import { + Button, + Card, + Col, + Form, + OverlayTrigger, + Row, + Tooltip +} from 'react-bootstrap'; +import { useForm } from 'react-hook-form'; +import { Link } from 'react-router'; +import { toast } from 'react-toastify'; + +const PaymentMethod = ({ payableTotal }) => { + const [method, setMethod] = useState('credit-card'); + const { productsDispatch } = useProductContext(); + const { register, handleSubmit } = useForm(); + + const onSubmit = data => { + productsDispatch({ + type: 'CHECKOUT' + }); + toast( +
+
Payment success!
+
+ Total: ${payableTotal} +
+ Payment method:{' '} + + {method.split('-').join(' ')} + +
+ ); + method === 'credit-card' + ? console.log(data) + : console.log('Calling paypal api'); + }; + + return ( + + +
Payment Method
+
+ + + setMethod(e.target.id)} + name="payment-method" + defaultChecked + /> + Credit Card + +
+ + + + + Card Number + + + + + + + Exp Date + + + + + + CVV{''} + + Card verification value + + } + > + + + + + + + + + + +
+
We Accept
+ card payment options +
+ +
+
+ setMethod(e.target.id)} + className="d-flex align-items-center" + > + setMethod(e.target.id)} + name="payment-method" + /> + + card payment options + + +
+ + +
+ protection +
+
Buyer Protection
+ + + + Full Refund If you don't{' '} +
receive your + order +
+
+ + + + Full or Partial Refund, If the product is + not as described in details + + + + Learn More + + +
+
+
+ + +
+
+ All Total: ${payableTotal} +
+ +

+ By clicking Confirm & Pay button you agree + to the Terms & Conditions +

+ +
+
+
+ ); +}; + +export default PaymentMethod; diff --git a/src/components/app/e-commerce/customers-details/CustomerDetailsHeader.jsx b/src/components/app/e-commerce/customers-details/CustomerDetailsHeader.jsx new file mode 100644 index 0000000..2df4f39 --- /dev/null +++ b/src/components/app/e-commerce/customers-details/CustomerDetailsHeader.jsx @@ -0,0 +1,82 @@ +import React from 'react'; +import { Button, Card, Col, Dropdown, Row } from 'react-bootstrap'; +import { Link } from 'react-router'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import IconButton from 'components/common/IconButton'; +import Flex from 'components/common/Flex'; +import { useAppContext } from 'providers/AppProvider'; + +const CustomerDetailsHeader = () => { + const { + config: { isRTL } + } = useAppContext(); + + return ( + + + + +
+ Tony Robbins (tony@gmail.com) +
+ + Add note + + + + + + + + + Edit + + + Report + + + Archive + + + + Delete user + + + + + +
+ Customer + +
+ +
+
+ + + +
+

Customer was created

+

Jan 12, 11:13 PM

+
+
+
+
+ ); +}; + +export default CustomerDetailsHeader; diff --git a/src/components/app/e-commerce/customers-details/CustomerInfo.jsx b/src/components/app/e-commerce/customers-details/CustomerInfo.jsx new file mode 100644 index 0000000..1f6e6a8 --- /dev/null +++ b/src/components/app/e-commerce/customers-details/CustomerInfo.jsx @@ -0,0 +1,130 @@ +import React from 'react'; +import { Card, Col, Row } from 'react-bootstrap'; +import IconButton from 'components/common/IconButton'; +import { accountInfo, billingInfo } from 'data/ecommerce/customerDetailsData'; +import classNames from 'classnames'; +import createMarkup from 'helpers/createMarkup'; + +const CustomerInfo = () => { + return ( + + + + +
Details
+ + + + Update details + + +
+
+ + + +
+ Account Information +
+ + {accountInfo.map(item => ( + + +

{item.label}

+ + +

+ {item.email || item.phone ? ( + + {item.value} + + ) : item.important ? ( + {item.value} + ) : ( + item.value + )} +

+ +
+ ))} + + +
+ Billing Information +
+ + {billingInfo.map(item => ( + + +

{item.label}

+ + + {item.label === 'Address' ? ( +

+ ) : ( +

+ {item.email || item.phone ? ( + + {item.value} + + ) : item.important ? ( + {item.value} + ) : ( + item.value + )} +

+ )} + +
+ ))} + +
+
+ + + Refund + + + Save changes + + +
+ ); +}; + +export default CustomerInfo; diff --git a/src/components/app/e-commerce/customers-details/CustomerLog.jsx b/src/components/app/e-commerce/customers-details/CustomerLog.jsx new file mode 100644 index 0000000..19cc61e --- /dev/null +++ b/src/components/app/e-commerce/customers-details/CustomerLog.jsx @@ -0,0 +1,61 @@ +import React from 'react'; +import { Card, Col, Row } from 'react-bootstrap'; +import { Link } from 'react-router'; +import IconButton from 'components/common/IconButton'; +import { logs } from 'data/ecommerce/customerDetailsData'; +import classNames from 'classnames'; + +const CustomerLog = () => { + return ( + + +
Logs
+
+ + {logs.map(log => ( + + + + {log.status} + + + + + {log.reqType} {log.path} + + + +

+ {log.date} {log.time} +

+ +
+ ))} +
+ + + View more logs + + +
+ ); +}; + +export default CustomerLog; diff --git a/src/components/app/e-commerce/customers-details/CustomersDetails.jsx b/src/components/app/e-commerce/customers-details/CustomersDetails.jsx new file mode 100644 index 0000000..159be41 --- /dev/null +++ b/src/components/app/e-commerce/customers-details/CustomersDetails.jsx @@ -0,0 +1,16 @@ +import React from 'react'; +import CustomerDetailsHeader from './CustomerDetailsHeader'; +import CustomerInfo from './CustomerInfo'; +import CustomerLog from './CustomerLog'; + +const CustomersDetails = () => { + return ( + <> + + + + + ); +}; + +export default CustomersDetails; diff --git a/src/components/app/e-commerce/customers/Customers.jsx b/src/components/app/e-commerce/customers/Customers.jsx new file mode 100644 index 0000000..f1eb5d6 --- /dev/null +++ b/src/components/app/e-commerce/customers/Customers.jsx @@ -0,0 +1,138 @@ +import React, { useState } from 'react'; +import { Card, Dropdown } from 'react-bootstrap'; +import { customersData } from 'data/ecommerce/customersData'; +import CardDropdown from 'components/common/CardDropdown'; +import { Link } from 'react-router'; +import Flex from 'components/common/Flex'; +import Avatar from 'components/common/Avatar'; +import CustomersTableHeader from './CustomersTableHeader'; +import AdvanceTablePagination from 'components/common/advance-table/AdvanceTablePagination'; +import AdvanceTable from 'components/common/advance-table/AdvanceTable'; +import paths from 'routes/paths'; +import useAdvanceTable from 'hooks/useAdvanceTable'; +import AdvanceTableProvider from 'providers/AdvanceTableProvider'; + +const columns = [ + { + accessorKey: 'name', + header: 'Name', + meta: { + headerProps: { className: 'pe-1 text-900' }, + cellProps: { + className: 'py-2' + } + }, + cell: ({ row: { original } }) => { + const { name, avatar } = original; + return ( + + + {avatar.img ? ( + + ) : ( + + )} +
+
{name}
+
+
+ + ); + } + }, + { + accessorKey: 'email', + header: 'Email', + meta: { + headerProps: { className: 'text-900' } + }, + cell: ({ row: { original } }) => { + const { email } = original; + return {email}; + } + }, + { + accessorKey: 'phone', + header: 'Phone', + meta: { + headerProps: { className: 'text-900' } + }, + cell: ({ row: { original } }) => { + const { phone } = original; + return {phone}; + } + }, + { + accessorKey: 'address', + header: 'Billing Address', + meta: { + headerProps: { style: { minWidth: '200px' }, className: 'ps-5 text-900' }, + cellProps: { className: 'ps-5' } + } + }, + { + accessorKey: 'joined', + header: 'Joined', + meta: { + headerProps: { className: 'text-900' } + } + }, + { + accessorKey: 'none', + header: '', + enableSorting: false, + meta: { + cellProps: { + className: 'text-end' + } + }, + cell: () => { + return ( + +
+ Edit + Delete +
+
+ ); + } + } +]; + +const Customers = () => { + const [customers] = useState(customersData); + const table = useAdvanceTable({ + data: customers, + columns, + selection: true, + sortable: true, + pagination: true, + perPage: 10 + }); + + return ( + + + + + + + + + + + + + + ); +}; + +export default Customers; diff --git a/src/components/app/e-commerce/customers/CustomersTableHeader.jsx b/src/components/app/e-commerce/customers/CustomersTableHeader.jsx new file mode 100644 index 0000000..6e5030c --- /dev/null +++ b/src/components/app/e-commerce/customers/CustomersTableHeader.jsx @@ -0,0 +1,66 @@ +import React from 'react'; +import IconButton from 'components/common/IconButton'; +import { Col, Form, Row, Button } from 'react-bootstrap'; +import { useAdvanceTableContext } from 'providers/AdvanceTableProvider'; + +const CustomersTableHeader = () => { + const { getSelectedRowModel } = useAdvanceTableContext(); + + return ( + + +
Customers
+ + + {getSelectedRowModel().rows.length > 0 ? ( +
+ + + + + + + +
+ ) : ( +
+ + New + + + Filter + + + Export + +
+ )} + +
+ ); +}; + +export default CustomersTableHeader; diff --git a/src/components/app/e-commerce/orders/order-details/OrderDetails.jsx b/src/components/app/e-commerce/orders/order-details/OrderDetails.jsx new file mode 100644 index 0000000..32970eb --- /dev/null +++ b/src/components/app/e-commerce/orders/order-details/OrderDetails.jsx @@ -0,0 +1,32 @@ +import React from 'react'; +import PageHeader from 'components/common/PageHeader'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import OrderInfo from './OrderInfo'; +import OrderedProducts from './OrderedProducts'; +import SubtleBadge from 'components/common/SubtleBadge'; + +const OrderDetails = () => { + return ( + <> + +

April 21, 2019, 5:33 PM

+
+ Status: + + {' '} + Completed + + +
+
+ + + + ); +}; + +export default OrderDetails; diff --git a/src/components/app/e-commerce/orders/order-details/OrderInfo.jsx b/src/components/app/e-commerce/orders/order-details/OrderInfo.jsx new file mode 100644 index 0000000..b37ed1c --- /dev/null +++ b/src/components/app/e-commerce/orders/order-details/OrderInfo.jsx @@ -0,0 +1,57 @@ +import React from 'react'; +import { Card, Col, Row } from 'react-bootstrap'; +import visa from '../../../../../assets/img/icons/visa.png'; + +const OrderInfo = () => { + return ( + + + + +
Billing Address
+
Antony Hopkins
+

+ 2393 Main Avenue
Penasauka, New Jersey 87896 +

+

+ + Email: antony@example.com + +

+

+ + Phone: 7897987987 + +

+ + +
Shipping Address
+
Antony Hopkins
+

+ 2393 Main Avenue
Penasauka, New Jersey 87896 +

+
(Free Shipping)
+ + +
Payment Method
+
+ visa +
+
Antony Hopkins
+

**** **** **** 9809

+
+
+ +
+
+
+ ); +}; + +export default OrderInfo; diff --git a/src/components/app/e-commerce/orders/order-details/OrderedProducts.jsx b/src/components/app/e-commerce/orders/order-details/OrderedProducts.jsx new file mode 100644 index 0000000..c14b941 --- /dev/null +++ b/src/components/app/e-commerce/orders/order-details/OrderedProducts.jsx @@ -0,0 +1,99 @@ +import { Card, Col, Row, Table } from 'react-bootstrap'; +import { orderedProductsData } from 'data/ecommerce/OrderDetailsData'; +import { getPercentage } from 'helpers/utils'; + +const OrderedProducts = () => { + const subtotal = orderedProductsData.reduce( + (acc, curr) => curr.quantity * curr.rate + acc, + 0 + ); + + const tax = getPercentage(subtotal, 5); + + return ( + + +
+ + + + + + + + + + + {orderedProductsData.map(product => ( + + + + + + + ))} + +
ProductsQuantityRateAmount
+
{product.name}
+

{product.desc}

+
+ {product.quantity} + + $ + {parseFloat(product.rate).toLocaleString(undefined, { + maximumFractionDigits: 2, + minimumFractionDigits: 2 + })} + + $ + {parseFloat(product.quantity * product.rate).toLocaleString( + undefined, + { maximumFractionDigits: 2, minimumFractionDigits: 2 } + )} +
+ + + + + + + + + + + + + + + + + +
Subtotal: + $ + {parseFloat(subtotal).toLocaleString(undefined, { + maximumFractionDigits: 2, + minimumFractionDigits: 2 + })} +
Tax 5%: + $ + {parseFloat(tax).toLocaleString(undefined, { + maximumFractionDigits: 2, + minimumFractionDigits: 2 + })} +
Total: + $ + {parseFloat(subtotal + tax).toLocaleString(undefined, { + maximumFractionDigits: 2, + minimumFractionDigits: 2 + })} +
+ +
+
+
+
+ ); +}; + + +export default OrderedProducts; diff --git a/src/components/app/e-commerce/orders/order-list/Orders.jsx b/src/components/app/e-commerce/orders/order-list/Orders.jsx new file mode 100644 index 0000000..a8ec031 --- /dev/null +++ b/src/components/app/e-commerce/orders/order-list/Orders.jsx @@ -0,0 +1,181 @@ +import React, { useState } from 'react'; +import { Card, Dropdown } from 'react-bootstrap'; +import { orderList } from 'data/ecommerce/orderList'; +import CardDropdown from 'components/common/CardDropdown'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import SubtleBadge from 'components/common/SubtleBadge'; +import classNames from 'classnames'; +import { Link } from 'react-router'; +import OrdersTableHeader from './OrdersTableHeader'; +import AdvanceTable from 'components/common/advance-table/AdvanceTable'; +import AdvanceTablePagination from 'components/common/advance-table/AdvanceTablePagination'; +import paths from 'routes/paths'; +import useAdvanceTable from 'hooks/useAdvanceTable'; +import AdvanceTableProvider from 'providers/AdvanceTableProvider'; + +const columns = [ + { + accessorKey: 'id', + header: 'Order', + meta: { + headerProps: { className: 'pe-1 text-900' }, + cellProps: { className: 'py-2' } + }, + cell: ({ row: { original } }) => { + const { id, name, email } = original; + return ( + <> + + {id} + {' '} + by {name}
+ {email} + + ); + } + }, + { + accessorKey: 'date', + header: 'Date', + meta: { + headerProps: { className: 'pe-7 text-900' } + } + }, + { + accessorKey: 'address', + header: 'Ship To', + meta: { + headerProps: { className: 'text-900' } + }, + cell: ({ row: { original } }) => { + const { address, shippingType } = original; + return ( + <> + {address} +

{shippingType}

+ + ); + } + }, + { + accessorKey: 'status', + header: 'Status', + meta: { + headerProps: { + className: 'text-center text-900' + }, + cellProps: { + className: 'fs-9' + } + }, + cell: ({ row: { original } }) => { + const { status } = original; + return ( + +

+ {status === 'completed' && 'Completed'} + {status === 'processing' && 'Processing'} + {status === 'pending' && 'Pending'} + {status === 'onhold' && 'On-Hold'} +

+ +
+ ); + } + }, + { + accessorKey: 'amount', + header: 'Amount', + meta: { + headerProps: { + className: 'text-end text-900' + }, + cellProps: { + className: 'text-end fs-9 fw-medium py-2' + } + }, + cell: ({ row }) => `$${row.original.amount}` + }, + { + accessorKey: 'none', + header: '', + enableSorting: false, + meta: { + cellProps: { + className: 'text-end' + } + }, + cell: () => { + return ( + +
+ Completed + Processing + On Hold + Pending + + + Delete + +
+
+ ); + } + } +]; + +const Orders = () => { + const [data] = useState(orderList); + const table = useAdvanceTable({ + data, + columns, + selection: true, + sortable: true, + pagination: true, + perPage: 10 + }); + + return ( + + + + + + + + + + + + + + ); +}; + +export default Orders; diff --git a/src/components/app/e-commerce/orders/order-list/OrdersTableHeader.jsx b/src/components/app/e-commerce/orders/order-list/OrdersTableHeader.jsx new file mode 100644 index 0000000..c64c62d --- /dev/null +++ b/src/components/app/e-commerce/orders/order-list/OrdersTableHeader.jsx @@ -0,0 +1,66 @@ +import React from 'react'; +import IconButton from 'components/common/IconButton'; +import { useAdvanceTableContext } from 'providers/AdvanceTableProvider'; +import { Col, Form, Row, Button } from 'react-bootstrap'; + +const CustomersTableHeader = () => { + const { getSelectedRowModel } = useAdvanceTableContext(); + + return ( + + +
Orders
+ + + {getSelectedRowModel().rows.length > 0 ? ( +
+ + + + + + + +
+ ) : ( +
+ + New + + + Filter + + + Export + +
+ )} + +
+ ); +}; + +export default CustomersTableHeader; diff --git a/src/components/app/e-commerce/product/ProductGrid.jsx b/src/components/app/e-commerce/product/ProductGrid.jsx new file mode 100644 index 0000000..9f15ad0 --- /dev/null +++ b/src/components/app/e-commerce/product/ProductGrid.jsx @@ -0,0 +1,118 @@ +import Flex from 'components/common/Flex'; +import { Link } from 'react-router'; +import { Button, Col, OverlayTrigger, Tooltip } from 'react-bootstrap'; +import classNames from 'classnames'; +import { useProductContext } from 'providers/ProductProvider'; +import useProductHook from './useProductHook'; +import ProductImage from './ProductImage'; +import StarRating from 'components/common/StarRating'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import paths from 'routes/paths'; + +const ProductGrid = ({ product, ...rest }) => { + const { + name, + category, + id, + price, + salePrice, + shippingCost, + rating, + totalReview, + isInStock, + isNew, + files + } = product; + + const { isInFavouriteItems } = useProductContext(); + + const { handleAddToCart, handleFavouriteClick } = useProductHook(product); + return ( + + +
+ +
+
+ + {name} + +
+

+ + {category} + +

+
+ {`$${salePrice ? salePrice : price}`} + {salePrice && ${price}} +
+

+ Shipping Cost: ${shippingCost} +

+

+ Stock:{' '} + + {isInStock ? 'Available' : 'Sold-Out'} + +

+
+
+ +
+ + ({totalReview}) +
+ Add to Wish List + } + > + + + Add to Cart + } + > + + +
+
+ + ); +}; + +export default ProductGrid; diff --git a/src/components/app/e-commerce/product/ProductImage.jsx b/src/components/app/e-commerce/product/ProductImage.jsx new file mode 100644 index 0000000..7f27102 --- /dev/null +++ b/src/components/app/e-commerce/product/ProductImage.jsx @@ -0,0 +1,78 @@ +import { Badge, Image } from 'react-bootstrap'; +import { Link } from 'react-router'; +import Slider from 'react-slick'; +import classNames from 'classnames'; +import paths from 'routes/paths'; + +const sliderSettings = { + autoplay: false, + infinite: true, + speed: 500, + slidesToShow: 1, + slidesToScroll: 1 +}; + +const ProductSingleImage = ({ id, image, name, layout }) => { + return ( + + {name} + + ); +}; + +const ProductImage = ({ name, id, isNew, files, layout }) => { + return ( +
+ {files.length === 1 && ( + + )} + {files.length > 1 && ( + + {files.map(image => ( + + ))} + + )} + {isNew && ( + + New + + )} +
+ ); +}; + +export default ProductImage; diff --git a/src/components/app/e-commerce/product/ProductList.jsx b/src/components/app/e-commerce/product/ProductList.jsx new file mode 100644 index 0000000..36376df --- /dev/null +++ b/src/components/app/e-commerce/product/ProductList.jsx @@ -0,0 +1,144 @@ +import { Col, Row } from 'react-bootstrap'; +import { Link } from 'react-router'; +import classNames from 'classnames'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import IconButton from 'components/common/IconButton'; +import { useProductContext } from 'providers/ProductProvider'; +import useProductHook from './useProductHook'; +import ProductImage from './ProductImage'; +import StarRating from 'components/common/StarRating'; +import Flex from 'components/common/Flex'; +import paths from 'routes/paths'; + +const ProductList = ({ product, index }) => { + const { + name, + category, + id, + features, + price, + discount, + salePrice, + shippingCost, + rating, + totalReview, + isInStock, + isNew, + files + } = product; + + const { isInFavouriteItems } = useProductContext(); + + const { handleAddToCart, handleFavouriteClick } = useProductHook(product); + + return ( + <> + + + + + + + + +
+ + {name} + +
+

+ + {category} + +

+
    + {features.map(feature => ( +
  • + + {feature} +
  • + ))} +
+ + +
+

+ {`$${salePrice ? salePrice : price}`} +

+ {salePrice && ( +
+ {`$${price}`} + -{discount}% +
+ )} +
+ + ({totalReview}) +
+
+

+ Shipping Cost: {`$${shippingCost}`} +

+

+ Stock:{' '} + + {isInStock ? 'Available' : 'Stock-Out'} + +

+
+
+
+ + Favourite + + handleAddToCart(1, true, true)} + > + Add to Cart + +
+ +
+ +
+ + + ); +}; + +export default ProductList; diff --git a/src/components/app/e-commerce/product/Products.jsx b/src/components/app/e-commerce/product/Products.jsx new file mode 100644 index 0000000..ad5fcbb --- /dev/null +++ b/src/components/app/e-commerce/product/Products.jsx @@ -0,0 +1,254 @@ +import React, { useEffect, useState } from 'react'; +import { + Card, + Col, + Form, + OverlayTrigger, + Row, + Tooltip, + Button, + InputGroup +} from 'react-bootstrap'; +import { Link, useNavigate, useParams } from 'react-router'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import classNames from 'classnames'; +import ProductList from './ProductList'; +import ProductGrid from './ProductGrid'; +import { useProductContext } from 'providers/ProductProvider'; +import CartModal from '../cart/CartModal'; +import usePagination from 'hooks/usePagination'; +import Flex from 'components/common/Flex'; +import paths from 'routes/paths'; + +const Products = () => { + const { + productsState: { products }, + productsDispatch + } = useProductContext(); + + const [sortBy, setSortBy] = useState('id'); + const [isAsc, setIsAsc] = useState(true); + const [productPerPage, setProductPerPage] = useState(6); + + const { productLayout } = useParams(); + const layout = productLayout.split(/-/)[1]; + const isList = layout === 'list'; + const isGrid = layout === 'grid'; + + const { + paginationState: { + data: paginatedProducts, + totalItems, + itemsPerPage, + currentPage, + canNextPage, + canPreviousPage, + paginationArray, + from, + to + }, + nextPage, + prevPage, + goToPage, + setItemsPerPage + } = usePagination(products, productPerPage); + + useEffect(() => { + productsDispatch({ + type: 'SORT_PRODUCT', + payload: { + sortBy, + order: isAsc ? 'asc' : 'desc' + } + }); + }, [sortBy, isAsc]); + const navigate = useNavigate(); + + useEffect(() => { + isList || isGrid || navigate('/errors/404'); + }, []); + + return ( + <> + + + + + { + setItemsPerPage(target.value); + setProductPerPage(target.value); + }} + style={{ maxWidth: '4.875rem' }} + > + + + + + +
+ Showing {from}-{to} of {totalItems} Products +
+ + + + +
+ + Sort by: + + + + setSortBy(target.value)} + > + + + + + setIsAsc(!isAsc)} + > + + + + +
+ + + + Product {isList ? 'Grid' : 'List'} + + } + > + + + + + +
+ +
+
+
+ + + + {paginatedProducts.map((product, index) => + layout === 'list' ? ( + + ) : ( + + ) + )} + + + +
+ Prev} + > + + +
+ +
    + {paginationArray.map(page => ( +
  • + +
  • + ))} +
+
+ + Next + + } + > + + +
+
+
+ + + ); +}; + +export default Products; diff --git a/src/components/app/e-commerce/product/add-product/AddProduct.jsx b/src/components/app/e-commerce/product/add-product/AddProduct.jsx new file mode 100644 index 0000000..c130516 --- /dev/null +++ b/src/components/app/e-commerce/product/add-product/AddProduct.jsx @@ -0,0 +1,100 @@ +import React from 'react'; +import { Col, Form, Row } from 'react-bootstrap'; +import { useForm, FormProvider } from 'react-hook-form'; +import { yupResolver } from '@hookform/resolvers/yup'; +import * as yup from 'yup'; +import ProductBasicInformation from './ProductBasicInformation'; +import ProductHeader from './ProductHeader'; +import ProductUpload from './ProductUpload'; +import ProductFooter from './ProductFooter'; +import ProductDetails from './ProductDetails'; +import ProductType from './ProductType'; +import ProductTags from './ProductTags'; +import ProductPricing from './ProductPricing'; +import ProductShipping from './ProductShipping'; +import ProductStock from './ProductStock'; +import ProductSpecifications from './ProductSpecifications'; + +const schema = yup + .object({ + productName: yup.string().required('This field is required.'), + manufacturarName: yup.string().required('This field is required.'), + identificationNumber: yup.string().required('This field is required.'), + productSummery: yup.string().required('This field is required.'), + importStatus: yup.string().required('This field is required.'), + countryOrigin: yup.string().required('This field is required.'), + productCategory: yup.string().required('This field is required.'), + productSubCategory: yup.string().required('This field is required.'), + regularPrice: yup + .number() + .transform(value => (Number.isNaN(value) ? null : value)) + .nullable() + .required('This field is required.') + }) + .required(); + +const AddProduct = () => { + const submittedValues = {}; + const methods = useForm({ + resolver: yupResolver(schema), + defaultValues: { + specifications: [ + { + label: 'Processor', + property: '2.3GHz quad-core Intel Core i5' + }, + { + label: 'Memory', + property: '8GB of 2133MHz LPDDR3 onboard memory' + }, + { + label: 'Brand name', + property: 'Apple' + } + ] + } + }); + const { handleSubmit, reset } = methods; + + const onSubmit = data => { + console.log(data); + // ------- Get all object keys form data and set empty values to reset ------------ + const keys = Object.keys(data); + for (const key of keys) { + submittedValues[key] = ''; + } + reset({ ...submittedValues }); + }; + + return ( + +
+ + + + + + + + + + + +
+ + + + + +
+ + + + +
+
+
+ ); +}; + +export default AddProduct; diff --git a/src/components/app/e-commerce/product/add-product/ProductBasicInformation.jsx b/src/components/app/e-commerce/product/add-product/ProductBasicInformation.jsx new file mode 100644 index 0000000..a75da4e --- /dev/null +++ b/src/components/app/e-commerce/product/add-product/ProductBasicInformation.jsx @@ -0,0 +1,76 @@ +import React from 'react'; +import { Card, Col, Form, Row } from 'react-bootstrap'; +import { useFormContext } from 'react-hook-form'; + +const ProductBasicInformation = () => { + const { + register, + formState: { errors } + } = useFormContext(); + + return ( + + + Basic information + + + + + + Product name: + + + {errors.productName?.message} + + + + + + Manufacturar Name: + + + {errors.manufacturarName?.message} + + + + + + Product Identification No.: + + + {errors.identificationNumber?.message} + + + + + + Product Summary: + + + {errors.productSummery?.message} + + + + + + + ); +}; + +export default ProductBasicInformation; diff --git a/src/components/app/e-commerce/product/add-product/ProductDetails.jsx b/src/components/app/e-commerce/product/add-product/ProductDetails.jsx new file mode 100644 index 0000000..92c1d0d --- /dev/null +++ b/src/components/app/e-commerce/product/add-product/ProductDetails.jsx @@ -0,0 +1,142 @@ +import React, { useState } from 'react'; +import { Card, Col, Form, Row } from 'react-bootstrap'; +import { useFormContext } from 'react-hook-form'; +import DatePicker from 'react-datepicker'; +import TinymceEditor from 'components/common/TinymceEditor'; +import CustomDateInput from 'components/common/CustomDateInput'; + +const ProductDetails = () => { + const { + register, + setValue, + formState: { errors } + } = useFormContext(); + const [formData, setFormData] = useState({ + releaseDate: null + }); + + const handleChange = (name, value) => { + setFormData({ + ...formData, + [name]: value + }); + }; + + return ( + + + Details + + + + + + Product description: +
+ + setValue('productDescription', newValue) + } + /> +
+
+ + + + Import Status: + + + + + + + + + {errors.importStatus?.message} + + + + + + Country of Origin: + + + + + + + + + + + + + + + + + + + + + + + + + {errors.countryOrigin?.message} + + + + + + Release Date: + { + handleChange('releaseDate', newDate); + setValue('releaseDate', newDate); + }} + customInput={ + + } + /> + + + + + Warranty Lenght: + + + + + + Warranty Policy: + + + +
+
+
+ ); +}; + +export default ProductDetails; diff --git a/src/components/app/e-commerce/product/add-product/ProductFooter.jsx b/src/components/app/e-commerce/product/add-product/ProductFooter.jsx new file mode 100644 index 0000000..151de93 --- /dev/null +++ b/src/components/app/e-commerce/product/add-product/ProductFooter.jsx @@ -0,0 +1,30 @@ +import React from 'react'; +import { Card, Col, Button, Row } from 'react-bootstrap'; + +const ProductFooter = () => { + return ( + + + + +
You're almost done
+ + + + + +
+
+
+ ); +}; + +export default ProductFooter; diff --git a/src/components/app/e-commerce/product/add-product/ProductHeader.jsx b/src/components/app/e-commerce/product/add-product/ProductHeader.jsx new file mode 100644 index 0000000..3dcfbd0 --- /dev/null +++ b/src/components/app/e-commerce/product/add-product/ProductHeader.jsx @@ -0,0 +1,30 @@ +import React from 'react'; +import { Card, Col, Button, Row } from 'react-bootstrap'; + +const ProductHeader = () => { + return ( + + + + +
Add a product
+ + + + + +
+
+
+ ); +}; + +export default ProductHeader; diff --git a/src/components/app/e-commerce/product/add-product/ProductPricing.jsx b/src/components/app/e-commerce/product/add-product/ProductPricing.jsx new file mode 100644 index 0000000..d799c7f --- /dev/null +++ b/src/components/app/e-commerce/product/add-product/ProductPricing.jsx @@ -0,0 +1,117 @@ +import React from 'react'; +import { Card, Col, Form, OverlayTrigger, Row, Tooltip } from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { useFormContext } from 'react-hook-form'; + +const ProductPricing = () => { + const { + register, + setValue, + watch, + formState: { errors } + } = useFormContext(); + + const { regularPrice } = watch(); + + return ( + + + Pricing + + + + + + + Base Price: + + Product regular price + + } + > + + + + + + setValue('finalPrice', e.target.value) + })} + isInvalid={!!errors.regularPrice} + /> + + {errors.regularPrice?.message} + + + + + + Currency: + + + + + + + + + + + Discount in percentage: + { + const calculatedPrice = + regularPrice - regularPrice * (e.target.value / 100); + setValue( + 'finalPrice', + calculatedPrice >= 0 ? calculatedPrice : 0 + ); + } + })} + /> + + + + + + Final price: + + Product final price + + } + > + + + + + + + + + + + + ); +}; + +export default ProductPricing; diff --git a/src/components/app/e-commerce/product/add-product/ProductShipping.jsx b/src/components/app/e-commerce/product/add-product/ProductShipping.jsx new file mode 100644 index 0000000..db130d1 --- /dev/null +++ b/src/components/app/e-commerce/product/add-product/ProductShipping.jsx @@ -0,0 +1,45 @@ +import React from 'react'; +import { Card, Form } from 'react-bootstrap'; +import SubtleBadge from 'components/common/SubtleBadge'; +import { useFormContext } from 'react-hook-form'; + +const ProductShipping = () => { + const { register } = useFormContext(); + return ( + + + Shipping + + + + + + Delivered by vendor (you) + + + + + + Delivered by FALCON + + Recommended + + + + + + ); +}; + +export default ProductShipping; diff --git a/src/components/app/e-commerce/product/add-product/ProductSpecifications.jsx b/src/components/app/e-commerce/product/add-product/ProductSpecifications.jsx new file mode 100644 index 0000000..a8db696 --- /dev/null +++ b/src/components/app/e-commerce/product/add-product/ProductSpecifications.jsx @@ -0,0 +1,106 @@ +import React, { useState } from 'react'; +import { Button, Card, Col, Form, Row } from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { useFormContext, useFieldArray } from 'react-hook-form'; +import Flex from 'components/common/Flex'; + +const ProductSpecifications = () => { + const { control } = useFormContext(); + const { fields, append, remove } = useFieldArray({ + control, + name: 'specifications' + }); + const [specification, setSpecification] = useState({ + label: '', + property: '' + }); + return ( + + + Specifications + + + {fields.map((specification, index) => ( + + +
{specification.label}
+ + + +
{specification.property}
+ +
+ +
+ ))} + + + + setSpecification({ ...specification, label: e.target.value }) + } + /> + + + + + setSpecification({ + ...specification, + property: e.target.value + }) + } + /> + + + + +
+
+ ); +}; + +export default ProductSpecifications; diff --git a/src/components/app/e-commerce/product/add-product/ProductStock.jsx b/src/components/app/e-commerce/product/add-product/ProductStock.jsx new file mode 100644 index 0000000..d5f333f --- /dev/null +++ b/src/components/app/e-commerce/product/add-product/ProductStock.jsx @@ -0,0 +1,52 @@ +import React from 'react'; +import { Card, Form } from 'react-bootstrap'; +import { useFormContext } from 'react-hook-form'; + +const ProductStock = () => { + const { register } = useFormContext(); + return ( + + + Stock status + + + + + + In stock + + + + + + Unavailable + + + + + + To be announced + + + + + ); +}; + +export default ProductStock; diff --git a/src/components/app/e-commerce/product/add-product/ProductTags.jsx b/src/components/app/e-commerce/product/add-product/ProductTags.jsx new file mode 100644 index 0000000..bff4fa0 --- /dev/null +++ b/src/components/app/e-commerce/product/add-product/ProductTags.jsx @@ -0,0 +1,46 @@ +import React from 'react'; +import MultiSelect from 'components/common/MultiSelect'; +import { Card, Col, Form, Row } from 'react-bootstrap'; +import { Controller, useFormContext } from 'react-hook-form'; + +const ProductTags = () => { + const { control } = useFormContext(); + const tagOptions = [ + { value: 'gamingLaptop', label: 'Gaming laptop' }, + { value: 'ultrabooks', label: 'Ultrabooks' }, + { value: 'budgetLaptop', label: 'Budget laptop' }, + { value: 'professional', label: 'Professional' } + ]; + + return ( + + + Tags + + + + + + Add a keyword: + ( + + )} + control={control} + /> + + + + + + ); +}; + +export default ProductTags; diff --git a/src/components/app/e-commerce/product/add-product/ProductType.jsx b/src/components/app/e-commerce/product/add-product/ProductType.jsx new file mode 100644 index 0000000..87768ff --- /dev/null +++ b/src/components/app/e-commerce/product/add-product/ProductType.jsx @@ -0,0 +1,61 @@ +import React from 'react'; +import { Card, Col, Form, Row } from 'react-bootstrap'; +import { useFormContext } from 'react-hook-form'; + +const ProductType = () => { + const { + register, + formState: { errors } + } = useFormContext(); + return ( + + + Type + + + + + + Select category: + + + + + + + + + + {errors.productCategory?.message} + + + + + + Select sub-category: + + + + + + + + + + {errors.productSubCategory?.message} + + + + + + + ); +}; + +export default ProductType; diff --git a/src/components/app/e-commerce/product/add-product/ProductUpload.jsx b/src/components/app/e-commerce/product/add-product/ProductUpload.jsx new file mode 100644 index 0000000..1c4b743 --- /dev/null +++ b/src/components/app/e-commerce/product/add-product/ProductUpload.jsx @@ -0,0 +1,102 @@ +import React, { useState } from 'react'; +import { useDropzone } from 'react-dropzone'; +import { getSize } from 'helpers/utils'; +import { Button, Card, Dropdown } from 'react-bootstrap'; +import { useFormContext } from 'react-hook-form'; +import Flex from 'components/common/Flex'; +import cloudUpload from 'assets/img/icons/cloud-upload.svg'; +import CardDropdown from 'components/common/CardDropdown'; + +const ProductUpload = () => { + const { setValue } = useFormContext(); + const [files, setFiles] = useState([]); + + const { getRootProps, getInputProps } = useDropzone({ + accept: { + 'image/*': ['.jpeg', '.png', '.jpg'] + }, + onDrop: acceptedFiles => { + setValue('uploadedFiles', acceptedFiles); + setFiles([ + ...files, + ...acceptedFiles.map(file => + Object.assign(file, { + preview: URL.createObjectURL(file) + }) + ) + ]); + } + }); + + const handleRemove = path => { + setFiles(files.filter(file => file.path !== path)); + }; + + return ( + + + Add images + + +
+ +
+ + + Drag your image here +
+ or,{' '} +
+ +
+
+
+ {files.map(file => ( + + {file.path} + + +
+
{file.path}
+ +

+ {getSize(file.size)} +

+
+
+
+ +
+ handleRemove(file.path)} + > + Remove + +
+
+
+ ))} +
+
+
+ ); +}; + +export default ProductUpload; diff --git a/src/components/app/e-commerce/product/product-details/ProductDetails.jsx b/src/components/app/e-commerce/product/product-details/ProductDetails.jsx new file mode 100644 index 0000000..efd4602 --- /dev/null +++ b/src/components/app/e-commerce/product/product-details/ProductDetails.jsx @@ -0,0 +1,54 @@ +import React from 'react'; +import { Navigate, useParams } from 'react-router'; +import { Card, Col, Row } from 'react-bootstrap'; +import ProductDetailsMedia from './ProductDetailsMedia'; +import ProductDetailsMain from './ProductDetailsMain'; +import ProductDetailsFooter from './ProductDetailsFooter'; +import { useProductContext } from 'providers/ProductProvider'; +import CartModal from '../../cart/CartModal'; +import Flex from 'components/common/Flex'; +import paths from 'routes/paths'; + +const ProductDetails = () => { + const { productId } = useParams(); + + const { + productsState: { products }, + productsDispatch + } = useProductContext(); + + const product = products.find(product => product.id === productId); + + return product ? ( + <> + + + + + + + + + + + + + + + + + + + + ) : ( + + ); +}; + +export default ProductDetails; diff --git a/src/components/app/e-commerce/product/product-details/ProductDetailsFooter.jsx b/src/components/app/e-commerce/product/product-details/ProductDetailsFooter.jsx new file mode 100644 index 0000000..05b97be --- /dev/null +++ b/src/components/app/e-commerce/product/product-details/ProductDetailsFooter.jsx @@ -0,0 +1,113 @@ +import { Tab, Nav, Row, Col, Table, Form, Button } from 'react-bootstrap'; +import StarRating from 'components/common/StarRating'; +import createMarkup from 'helpers/createMarkup'; + +const ProductDetailsFooter = ({ + product: { desc, specification, reviews } +}) => { + return ( +
+ + + + +
+ + + + + {Object.keys(specification).map(spec => ( + + + + + ))} + +
+ {spec} + {specification[spec]}
+
+ + + + {reviews.map((review, index) => ( +
+
+ + + {review.title} + +
+

+ By {review.author} • {review.date} +

+

{review.text}

+ {!(index === reviews.length - 1) &&
} +
+ ))} + + +
+
Write your Review
+
+ Rating: + +
+
+ Name: + +
+
+ Email: + +
+
+ Review: + +
+ +
+ +
+
+ + +
+ ); +}; + +export default ProductDetailsFooter; diff --git a/src/components/app/e-commerce/product/product-details/ProductDetailsMain.jsx b/src/components/app/e-commerce/product/product-details/ProductDetailsMain.jsx new file mode 100644 index 0000000..15d3ca6 --- /dev/null +++ b/src/components/app/e-commerce/product/product-details/ProductDetailsMain.jsx @@ -0,0 +1,138 @@ +import { useState } from 'react'; +import classNames from 'classnames'; +import IconButton from 'components/common/IconButton'; +import { Col, Row } from 'react-bootstrap'; +import { Link } from 'react-router'; +import { useProductContext } from 'providers/ProductProvider'; +import useProductHook from '../useProductHook'; +import StarRating from 'components/common/StarRating'; +import QuantityController from '../../QuantityController'; + +const ProductDetailsMain = ({ product }) => { + const { + id, + name, + category, + rating, + totalReview, + favorite, + shortDescription, + price, + salePrice, + discount, + shippingCost, + isInStock, + tags + } = product; + const { isInFavouriteItems } = useProductContext(); + + const [productCount, setProductCount] = useState(1); + + const { handleAddToCart, handleFavouriteClick } = useProductHook(product); + + const handleQuantityChange = e => { + setProductCount(parseInt(e.target.value < 1 ? 1 : e.target.value)); + }; + + const handleQuantityIncrease = () => { + setProductCount(productCount + 1); + }; + + const handleQuantityDecrease = () => { + productCount > 1 && setProductCount(productCount - 1); + }; + + return ( + <> +
{name}
+ + {category} + +
+ + ({totalReview}) +
+ {shortDescription &&

{shortDescription}

} +

+ + {`$${salePrice ? salePrice : price}`} + + {salePrice && ( + + {`$${price}`} + -{discount}% + + )} +

+

+ Shipping Cost: + ${shippingCost} +

+

+ Stock:{' '} + + {isInStock ? 'Available' : 'Stock-Out'} + +

+ {tags && ( +

+ Tags: + {tags?.map((tag, index) => ( + 0 + })} + > + {tag}, + + ))} +

+ )} + + +
+ +
+ + + handleAddToCart(productCount, true)} + > + Add To Cart + + + + + {favorite} + + +
+ + ); +}; + +export default ProductDetailsMain; diff --git a/src/components/app/e-commerce/product/product-details/ProductDetailsMedia.jsx b/src/components/app/e-commerce/product/product-details/ProductDetailsMedia.jsx new file mode 100644 index 0000000..036ee58 --- /dev/null +++ b/src/components/app/e-commerce/product/product-details/ProductDetailsMedia.jsx @@ -0,0 +1,91 @@ +import { useEffect, useState } from 'react'; +import { Badge, Image } from 'react-bootstrap'; +import Slider from 'react-slick'; + +const sliderSettings = { + infinite: true, + speed: 500, + slidesToShow: 1, + slidesToScroll: 1 +}; + +const ProductDetailsMedia = ({ product: { files, isNew } }) => { + let slider1; + let slider2; + const [nav1, setNav1] = useState(null); + const [nav2, setNav2] = useState(null); + + useEffect(() => { + setNav1(slider1); + setNav2(slider2); + }, [slider1, slider2]); + + return ( +
+ {files.length === 1 && ( + product media + )} + {files.length > 1 && ( + <> +
+ (slider1 = slider)} + className="slick-slider-arrow-inner h-100 full-height-slider" + > + {files.map(img => ( + product media + ))} + +
+ 5 ? 4 : files.length} + asNavFor={nav1} + ref={slider => (slider2 = slider)} + swipeToSlide={true} + focusOnSelect={true} + centerMode={true} + arrows={false} + className="slick-slider-arrow-inner mt-1 mr-n1" + > + {files.map(img => ( +
+ product media +
+ ))} +
+ + )} + {isNew && ( + + New + + )} +
+ ); +}; + +export default ProductDetailsMedia; diff --git a/src/components/app/e-commerce/product/useProductHook.jsx b/src/components/app/e-commerce/product/useProductHook.jsx new file mode 100644 index 0000000..7359073 --- /dev/null +++ b/src/components/app/e-commerce/product/useProductHook.jsx @@ -0,0 +1,51 @@ +import { useProductContext } from 'providers/ProductProvider'; + +const useProductHook = product => { + const { + productsState: { cartItems }, + productsDispatch, + isInShoppingCart, + isInFavouriteItems + } = useProductContext(); + + const handleAddToCart = (quantity, showModal, add) => { + if (isInShoppingCart(product.id)) { + const cartProduct = cartItems.find(item => item.id === product.id); + productsDispatch({ + type: 'UPDATE_CART_ITEM', + payload: { + product: { + ...cartProduct, + quantity: add ? cartProduct.quantity + quantity : quantity, + totalPrice: quantity * product.price + }, + showModal, + quantity + } + }); + } else { + productsDispatch({ + type: 'ADD_TO_CART', + payload: { + product: { + ...product, + quantity, + totalPrice: quantity * product.price + } + } + }); + } + }; + + const handleFavouriteClick = () => { + productsDispatch({ + type: isInFavouriteItems(product.id) + ? 'REMOVE_FROM_FAVOURITES' + : 'ADD_TO_FAVOURITES', + payload: { product } + }); + }; + return { handleAddToCart, handleFavouriteClick }; +}; + +export default useProductHook; diff --git a/src/components/app/e-learning/ModalVideoContent.jsx b/src/components/app/e-learning/ModalVideoContent.jsx new file mode 100644 index 0000000..5f9e742 --- /dev/null +++ b/src/components/app/e-learning/ModalVideoContent.jsx @@ -0,0 +1,35 @@ +import { CloseButton, Modal } from 'react-bootstrap'; + +const ModalVideoContent = ({ show, setShow, attachment }) => { + return ( + setShow(false)} + className="video-popup" + contentClassName="bg-transparent border-0" + backdropClassName="video-popup-backdrop" + centered + > + setShow(false)} + className="video-popup-close-btn" + /> + + + + + ); +}; + +export default ModalVideoContent; diff --git a/src/components/app/e-learning/course/CourseFilters.jsx b/src/components/app/e-learning/course/CourseFilters.jsx new file mode 100644 index 0000000..028adbb --- /dev/null +++ b/src/components/app/e-learning/course/CourseFilters.jsx @@ -0,0 +1,181 @@ +import { useState } from 'react'; +import SimpleBar from 'simplebar-react'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { Button, Collapse, Form, Image, Card } from 'react-bootstrap'; +import { courseFilters } from 'data/elearning/courseData'; +import { slugifyText } from 'helpers/utils'; +import Flex from 'components/common/Flex'; +import SubtleBadge from 'components/common/SubtleBadge'; + +const CourseFilters = ({ setShow, isOffcanvas }) => { + const [filterOptions, setFilterOptions] = useState([]); + + const handleFilterOptions = e => { + const { type, name, value, checked } = e.target; + if (type === 'checkbox') { + let options = [...filterOptions]; + options = options.filter(option => option.value !== value); + + checked && options.push({ name, value }); + setFilterOptions(options); + } + + if (type === 'radio') { + const isExists = filterOptions.some(el => el.name === name); + isExists + ? setFilterOptions( + filterOptions.map(el => (el.name === name ? { ...el, value } : el)) + ) + : setFilterOptions([...filterOptions, { name, value }]); + } + }; + + return ( + + + + +
+ + Filter +
+ +
+ {isOffcanvas && ( + + )} +
+ + {filterOptions.length > 0 && ( + + {filterOptions.map(tag => ( + + {tag.value} + + + ))} + + )} +
    + {courseFilters.map((filter, index) => ( + + ))} +
+
+
+
+ ); +}; + +const FilterItem = ({ filter, index, filterOptions, handleFilterOptions }) => { + const [open, setOpen] = useState(false); + + return ( +
  • + + +
      + {filter.options && + filter.options.map(option => ( +
    • + + + {option.icon && ( + + )} + {option.svg && ( + + )} + {option.label} + + + handleFilterOptions(e)} + checked={ + option.type === 'checkbox' + ? filterOptions.some( + ({ value }) => option.value === value + ) + : undefined + } + id={`filter-${slugifyText(filter.label)}-${slugifyText( + option.label + )}`} + name={option.name} + value={option.value} + /> + +
    • + ))} +
    +
    +
  • + ); +}; + +export default CourseFilters; diff --git a/src/components/app/e-learning/course/CourseGrid.jsx b/src/components/app/e-learning/course/CourseGrid.jsx new file mode 100644 index 0000000..e1d70c9 --- /dev/null +++ b/src/components/app/e-learning/course/CourseGrid.jsx @@ -0,0 +1,140 @@ +import React, { useState } from 'react'; +import { + Button, + Card, + Col, + Image, + OverlayTrigger, + Row, + Tooltip +} from 'react-bootstrap'; +import Flex from 'components/common/Flex'; +import playIcon from 'assets/img/icons/play.svg'; +import Hoverbox from 'components/common/Hoverbox'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import ModalVideoContent from '../ModalVideoContent'; +import { Link } from 'react-router'; +import useCourses from 'hooks/useCourses'; +import paths from 'routes/paths'; +import { useCourseContext } from 'providers/CourseProvider'; + +const CourseGrid = ({ course }) => { + const [showModal, setShowModal] = useState(false); + + const { + thumbnail: { image, video, videoPoster }, + id, + name, + trainer, + price, + oldPrice, + totalEnrolled + } = course; + + const { isInFavouriteItems, isInCart } = useCourseContext(); + + const { handleAddToCart, handleFavouriteClick } = useCourses(course); + return ( + <> + + + +
    + setShowModal(true)} + className="text-center" + > + + + + + +
    +
    + + {name} + +
    +
    + {trainer} +
    +
    +
    + + +

    + ${price} + {oldPrice && ( + ${oldPrice} + )} +

    +

    + {totalEnrolled.toLocaleString()} Enrolled +

    + + + + {isInFavouriteItems(id) + ? 'Remove from Wishlist' + : 'Add to Wishlist'} + + } + > + + + + {isInCart(id) ? 'Remove from Cart' : 'Add to Cart'} + + } + > + + + +
    +
    +
    + + ); +}; + +export default CourseGrid; diff --git a/src/components/app/e-learning/course/CourseHeader.jsx b/src/components/app/e-learning/course/CourseHeader.jsx new file mode 100644 index 0000000..2dc829f --- /dev/null +++ b/src/components/app/e-learning/course/CourseHeader.jsx @@ -0,0 +1,152 @@ +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import Background from 'components/common/Background'; +import corner6 from 'assets/img/illustrations/corner-6.png'; +import { + Button, + Card, + Col, + Form, + InputGroup, + OverlayTrigger, + Row, + Tooltip +} from 'react-bootstrap'; +import { Link } from 'react-router'; +import useCourses from 'hooks/useCourses'; +import paths from 'routes/paths'; + +const CourseHeader = ({ layout, setShowFilterOffcanvas }) => { + const { handleSearch, handleIsAscClick, handleSortByChange, isAsc } = + useCourses(); + return ( + + +
    All Courses
    + +
    + + + + + + +
    + handleSearch(target.value)} + /> + + + + + + +
    + + Sort by: + + + + + handleSortByChange(target.value) + } + > + + + + + handleIsAscClick(!isAsc)} + > + + + + +
    + + + + + View: + + + + Course Grid + + } + > + + + + + + Course List + + } + > + + + + + + + +
    + +
    +
    +
    + ); +}; + +export default CourseHeader; diff --git a/src/components/app/e-learning/course/CourseList.jsx b/src/components/app/e-learning/course/CourseList.jsx new file mode 100644 index 0000000..5bb0798 --- /dev/null +++ b/src/components/app/e-learning/course/CourseList.jsx @@ -0,0 +1,158 @@ +import { useState } from 'react'; +import { Button, Card, Col, Image, Row } from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { Link } from 'react-router'; +import classNames from 'classnames'; +import { useCourseContext } from 'providers/CourseProvider'; +import useCourses from 'hooks/useCourses'; +import playIcon from 'assets/img/icons/play.svg'; +import ModalVideoContent from '../ModalVideoContent'; +import Flex from 'components/common/Flex'; +import Hoverbox from 'components/common/Hoverbox'; +import SubtleBadge from 'components/common/SubtleBadge'; +import StarRating from 'components/common/StarRating'; +import paths from 'routes/paths'; + +const CourseList = ({ course }) => { + const [showModal, setShowModal] = useState(false); + + const { + thumbnail: { image, video, videoPoster }, + id, + name, + trainer, + price, + oldPrice, + totalEnrolled, + tags, + excerpt, + rating, + review + } = course; + + const { isInFavouriteItems, isInCart } = useCourseContext(); + + const { handleAddToCart, handleFavouriteClick } = useCourses(course); + return ( + <> + + + + + + setShowModal(true)} className="h-md-100"> + + + + + + + + + + + {tags.map(tag => ( + + + {tag.content} + + ))} + +
    + {trainer} +
    +

    + + {name} + +

    +

    + {excerpt.substring(0, 142)}... +

    +
    + {rating} + + + {review.toLocaleString()} reviews + +
    + + + +
    +

    + ${price} + {oldPrice && ( + ${oldPrice} + )} +

    +

    + {totalEnrolled.toLocaleString()} Learners Enrolled +

    +
    + + + + +
    + +
    + +
    +
    +
    + + ); +}; + +export default CourseList; diff --git a/src/components/app/e-learning/course/Courses.jsx b/src/components/app/e-learning/course/Courses.jsx new file mode 100644 index 0000000..4e27bb5 --- /dev/null +++ b/src/components/app/e-learning/course/Courses.jsx @@ -0,0 +1,233 @@ +import React, { useEffect, useRef, useState } from 'react'; +import { + Button, + Card, + Col, + Form, + Offcanvas, + OverlayTrigger, + Row, + Tooltip +} from 'react-bootstrap'; +import { useNavigate, useParams } from 'react-router'; +import classNames from 'classnames'; +import { useCourseContext } from 'providers/CourseProvider'; +import usePagination from 'hooks/usePagination'; +import CourseGrid from './CourseGrid'; +import CourseList from './CourseList'; +import CourseHeader from './CourseHeader'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import Flex from 'components/common/Flex'; +import CourseFilters from './CourseFilters'; +import { useBreakpoints } from 'hooks/useBreakpoints'; +import { useAppContext } from 'providers/AppProvider'; + +const Courses = () => { + const [showFilterOffcanvas, setShowFilterOffcanvas] = useState(false); + const [coursePerPage, setCoursePerPage] = useState(6); + const navigate = useNavigate(); + const { breakpoints } = useBreakpoints(); + const { courseLayout } = useParams(); + const { + coursesState: { courses } + } = useCourseContext(); + + const { + config: { isNavbarVerticalCollapsed }, + setConfig + } = useAppContext(); + const coursesNavbarVerticalCollapsed = useRef(isNavbarVerticalCollapsed); + + const { + paginationState: { + data: paginatedCourses, + totalItems, + itemsPerPage, + currentPage, + canNextPage, + canPreviousPage, + paginationArray + }, + nextPage, + prevPage, + goToPage, + setItemsPerPage + } = usePagination(courses, coursePerPage); + + const layout = courseLayout.split(/-/)[1]; + const isList = layout === 'list'; + const isGrid = layout === 'grid'; + + useEffect(() => { + isList || isGrid || navigate('/errors/404'); + }, []); + + useEffect(() => { + setConfig('isNavbarVerticalCollapsed', true); + + return () => { + setConfig( + 'isNavbarVerticalCollapsed', + coursesNavbarVerticalCollapsed.current + ); + }; + }, []); + + return ( + <> + + {breakpoints.up('xl') && ( + + + + )} + + {/* Courses Header */} + + {/* Courses */} + + {paginatedCourses.length > 0 ? ( + paginatedCourses.map(course => + layout === 'list' ? ( + + + + ) : ( + + + + ) + ) + ) : ( + + +
    + +
    No Courses Found!
    +

    + Your search did not match any Courses. Please try again. +

    +
    +
    +
    + )} +
    + {/* Course pagination */} + {paginatedCourses.length > 0 && ( + + + + + Show: + { + setItemsPerPage(target.value); + setCoursePerPage(target.value); + }} + style={{ maxWidth: '4.875rem' }} + > + + + + + + + +
    + Prev + } + > + + +
    + +
      + {paginationArray.map(page => ( +
    • + +
    • + ))} +
    +
    + + Next + + } + > + + +
    + +
    +
    +
    + )} + +
    + {breakpoints.down('xl') && ( + setShowFilterOffcanvas(false)} + placement="start" + className="offcanvas offcanvas-filter-sidebar" + > + + + )} + + ); +}; + +export default Courses; diff --git a/src/components/app/e-learning/course/course-details/Bottombar.jsx b/src/components/app/e-learning/course/course-details/Bottombar.jsx new file mode 100644 index 0000000..9f836e2 --- /dev/null +++ b/src/components/app/e-learning/course/course-details/Bottombar.jsx @@ -0,0 +1,29 @@ +import { Button, Card } from 'react-bootstrap'; +import Flex from 'components/common/Flex'; +import { useAppContext } from 'providers/AppProvider'; + +const Bottombar = ({ inViewport }) => { + const { + config: { navbarCollapsed } + } = useAppContext(); + return ( + + + +

    + $47.49 $69.99 +

    + +
    +
    +
    + ); +}; + +export default Bottombar; diff --git a/src/components/app/e-learning/course/course-details/CourseBanner.jsx b/src/components/app/e-learning/course/course-details/CourseBanner.jsx new file mode 100644 index 0000000..fb7770a --- /dev/null +++ b/src/components/app/e-learning/course/course-details/CourseBanner.jsx @@ -0,0 +1,112 @@ +import { useState } from 'react'; +import { Button, Card, Col, Image, Row } from 'react-bootstrap'; +import CourseDetailsBg from 'assets/img/e-learning/course-details-bg.png'; +import playicon from 'assets/img/icons/play.svg'; +import beach from 'assets/video/beach.mp4'; +import beachPoster from 'assets/video/beach.jpg'; +import Background from 'components/common/Background'; +import { Link } from 'react-router'; +import StarRating from 'components/common/StarRating'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import ModalVideoContent from '../../ModalVideoContent'; +import paths from 'routes/paths'; + +const CourseBanner = ({ course }) => { + const [showModal, setShowModal] = useState(false); + const [showExcerpt, setShowExcerpt] = useState(false); + return ( + + + + + + + +
    + +
    setShowModal(true)} + className="cursor-pointer position-relative d-block py-7 py-xl-8 py-xxl-7 text-center" + > + +
    + +
    + + +
    + A course by{' '} + + Bill Finger + +
    +

    {course.name}

    +

    + {course.rating} + + + ({course.review.toLocaleString()} reviews) + +

    +

    + {showExcerpt + ? course.excerpt + : course.excerpt.substring(0, 152)} + ... + +

    + +
    +
    +
      +
    • + + 7,302 Learners +
    • +
    • + + 91% Completion +
    • +
    • + + English +
    • +
    • + + English +
    • +
    + +
    +
    +
    + ); +}; + +export default CourseBanner; diff --git a/src/components/app/e-learning/course/course-details/CourseContents.jsx b/src/components/app/e-learning/course/course-details/CourseContents.jsx new file mode 100644 index 0000000..d14a003 --- /dev/null +++ b/src/components/app/e-learning/course/course-details/CourseContents.jsx @@ -0,0 +1,46 @@ +import { Card, Col, Row } from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import corner6 from 'assets/img/icons/spot-illustrations/corner-6.png'; +import FalconCardHeader from 'components/common/FalconCardHeader'; +import IconButton from 'components/common/IconButton'; +import Background from 'components/common/Background'; + +const CourseContents = ({ data }) => { + return ( + + + Preview + + } + /> + + + + {data.map(({ id, content }) => ( + + + {content} + + ))} + + + + ); +}; + +export default CourseContents; diff --git a/src/components/app/e-learning/course/course-details/CourseFeatures.jsx b/src/components/app/e-learning/course/course-details/CourseFeatures.jsx new file mode 100644 index 0000000..2279735 --- /dev/null +++ b/src/components/app/e-learning/course/course-details/CourseFeatures.jsx @@ -0,0 +1,21 @@ +import { Card, Col, Image, Row } from 'react-bootstrap'; + +const CourseFeatures = ({ data }) => { + return ( + + + + {data.map(({ id, title, icon, description }) => ( + + +
    {title}
    +

    {description}

    + + ))} +
    +
    +
    + ); +}; + +export default CourseFeatures; diff --git a/src/components/app/e-learning/course/course-details/CourseLessonPlan.jsx b/src/components/app/e-learning/course/course-details/CourseLessonPlan.jsx new file mode 100644 index 0000000..7cb714d --- /dev/null +++ b/src/components/app/e-learning/course/course-details/CourseLessonPlan.jsx @@ -0,0 +1,103 @@ +import { useState } from 'react'; +import classNames from 'classnames'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { Button, Card, Image } from 'react-bootstrap'; +import beach from 'assets/video/beach.mp4'; +import beachPoster from 'assets/video/beach.jpg'; +import FalconCardHeader from 'components/common/FalconCardHeader'; +import FalconLink from 'components/common/FalconLink'; +import Flex from 'components/common/Flex'; +import Hoverbox from 'components/common/Hoverbox'; +import IconButton from 'components/common/IconButton'; +import ModalVideoContent from '../../ModalVideoContent'; + +const CourseLessonPlan = ({ data }) => { + return ( + + + + {data.map((item, index) => ( + + ))} + + + + + + ); +}; + +const LessonItem = ({ lesson, isLast }) => { + const [showModal, setShowModal] = useState(false); + return ( + <> + + + setShowModal(true)} + className="text-center me-3 my-1" + > + + + + + +
    + +

    {lesson.excerpt}

    +
    + + {lesson.isLocked ? ( + + ) : ( + + Take a Peek + + )} +
    + + ); +}; + +export default CourseLessonPlan; diff --git a/src/components/app/e-learning/course/course-details/CoursePricingPlan.jsx b/src/components/app/e-learning/course/course-details/CoursePricingPlan.jsx new file mode 100644 index 0000000..32fb481 --- /dev/null +++ b/src/components/app/e-learning/course/course-details/CoursePricingPlan.jsx @@ -0,0 +1,152 @@ +import { useEffect, useRef } from 'react'; +import { Button, Card, Col, Row } from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import useVisibilityObserver from 'hooks/useVisibilityObserver'; +import FalconCardHeader from 'components/common/FalconCardHeader'; +import Flex from 'components/common/Flex'; +import Bottombar from './Bottombar'; + +const courseContents = [ + { + id: 0, + text: 'Total 13 hours of video lectures', + icon: 'check' + }, + { + id: 1, + text: '12 premium article access', + icon: 'check' + }, + { + id: 2, + text: '11 downloadable resources', + icon: 'check' + }, + { + id: 3, + text: 'Mobile, Tab or TV friendly content', + icon: 'check' + }, + { + id: 4, + text: 'Certificate upon completion', + icon: 'check' + }, + { + id: 5, + text: 'Lifetime permission to access', + icon: 'infinity' + } +]; + +const socialShares = [ + { + id: 0, + icon: 'facebook-f', + color: 'primary' + }, + { + id: 1, + icon: 'twitter', + color: 'twitter' + }, + { + id: 2, + icon: 'google-plus-g', + color: 'google-plus' + }, + { + id: 3, + icon: 'linkedin-in', + color: 'info' + } +]; + +const CoursePricingPlan = ({ course }) => { + const targetElRef = useRef(); + const { isVisible: inViewport, observer } = useVisibilityObserver( + targetElRef, + '-100px' + ); + + useEffect(() => { + return () => { + observer && + targetElRef.current && + observer.unobserve(targetElRef.current); + }; + }, [observer]); + + return ( + <> + + + + + + +

    + ${course.price}{' '} + {course.oldPrice && ( + ${course.oldPrice} + )} +

    +

    + + Sale ends in 13h : 25m : 54s +

    + +

    + 14 day Refund Policy +

    + + +
    +
    Course Contents
    +
      + {courseContents.map(({ id, text, icon }) => ( +
    • + + {text} +
    • + ))} +
    + +
    +
    +
    Share with friends
    + + {socialShares.map(({ id, icon, color }) => ( + + ))} + +
    +
    + + + ); +}; + +export default CoursePricingPlan; diff --git a/src/components/app/e-learning/course/course-details/CourseRequirements.jsx b/src/components/app/e-learning/course/course-details/CourseRequirements.jsx new file mode 100644 index 0000000..743948c --- /dev/null +++ b/src/components/app/e-learning/course/course-details/CourseRequirements.jsx @@ -0,0 +1,46 @@ +import { Card } from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import corner7 from 'assets/img/icons/spot-illustrations/corner-7.png'; +import FalconCardHeader from 'components/common/FalconCardHeader'; +import Background from 'components/common/Background'; +import Flex from 'components/common/Flex'; + +const CourseRequirements = ({ data }) => { + return ( + + + + +
      + {data.map(requirement => ( +
    • + + + {requirement.text} + + {requirement.obligations && ( +
        + {requirement.obligations.map(({ id, obligation }) => ( +
      1. + {obligation} +
      2. + ))} +
      + )} +
    • + ))} +
    +
    +
    + ); +}; + +export default CourseRequirements; diff --git a/src/components/app/e-learning/course/course-details/CourseReviews.jsx b/src/components/app/e-learning/course/course-details/CourseReviews.jsx new file mode 100644 index 0000000..0b720cb --- /dev/null +++ b/src/components/app/e-learning/course/course-details/CourseReviews.jsx @@ -0,0 +1,121 @@ +import classNames from 'classnames'; +import { Link } from 'react-router'; +import { Button, Card, Col, Form, Row } from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import FalconCardHeader from 'components/common/FalconCardHeader'; +import IconButton from 'components/common/IconButton'; +import StarRating from 'components/common/StarRating'; +import FalconLink from 'components/common/FalconLink'; +import Avatar from 'components/common/Avatar'; +import Flex from 'components/common/Flex'; + +const CourseReviews = ({ data }) => { + return ( + + + + Filter + +
    + + + + + + +
    + + } + /> + + {data.map((review, index) => ( + + + + + + + + + +
    + + {review.reviewer} + + +
    + + +

    {review.comment}

    + + + +
    {review.date}
    +

    + {review.liked} people found this helpful +

    +
    + +
    + + + + + +
    + ))} +
    + + + +
    + ); +}; + +export default CourseReviews; diff --git a/src/components/app/e-learning/course/course-details/CourseTrainer.jsx b/src/components/app/e-learning/course/course-details/CourseTrainer.jsx new file mode 100644 index 0000000..73dca53 --- /dev/null +++ b/src/components/app/e-learning/course/course-details/CourseTrainer.jsx @@ -0,0 +1,114 @@ +import React from 'react'; +import { Card, Col, Row } from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { Link } from 'react-router'; +import trainer from 'assets/img/team/5-thumb.png'; +import FalconCardHeader from 'components/common/FalconCardHeader'; +import IconButton from 'components/common/IconButton'; +import FalconLink from 'components/common/FalconLink'; +import SubtleBadge from 'components/common/SubtleBadge'; +import Avatar from 'components/common/Avatar'; +import Flex from 'components/common/Flex'; +import paths from 'routes/paths'; + +const tags = [ + { + id: 0, + text: 4.95, + icon: 'star', + class: 'rounded-pill border py-2 px-3' + }, + { + id: 1, + text: 35400, + icon: 'graduation-cap', + class: 'rounded-pill border py-2 px-3' + }, + { + id: 2, + text: 15, + icon: 'file-alt', + class: 'rounded-pill border py-2 px-3' + }, + { + id: 3, + text: 5700, + icon: 'map-pin', + class: 'rounded-pill border py-2 px-3' + } +]; + +const CourseTrainer = () => { + return ( + + + Follow + + } + /> + + + + + + +
    + Bill Finger +
    +
    + Artist | Professional Comic Writer +
    +

    + Finger, an aspiring writer and part-time shoe salesperson, joined + Kane's fledgling studio in 1938. Finger was inducted into the Jack + Kirby Hall of Fame in 1994 and the + Will Eisner Award Hall of Fame in 1999 after + death. Finger was named one of the awardees in the company's 50th + anniversary edition Fifty Who Made DC Great in + 1985. In his honor, Comic-Con International created the + Bill Finger Award for Excellence in Comic Book + Writing in 2005. In 2014, Finger got a posthumous + Inkpot Award. +

    + + {tags.map(tag => ( + + + {tag.text} + + ))} + + +
    +
    + + + +
    + ); +}; + +export default CourseTrainer; diff --git a/src/components/app/e-learning/course/course-details/SimilarCourses.jsx b/src/components/app/e-learning/course/course-details/SimilarCourses.jsx new file mode 100644 index 0000000..842b5c7 --- /dev/null +++ b/src/components/app/e-learning/course/course-details/SimilarCourses.jsx @@ -0,0 +1,59 @@ +import React from 'react'; +import { Card } from 'react-bootstrap'; +import FalconCardHeader from 'components/common/FalconCardHeader'; +import FalconLink from 'components/common/FalconLink'; +import { courseData } from 'data/elearning/courseData'; +import Slider from 'react-slick'; +import CourseGrid from '../CourseGrid'; +import paths from 'routes/paths'; + +const sliderSettings = { + infinite: true, + speed: 500, + slidesToShow: 2.03, + slidesToScroll: 1, + initialSlide: 1, + responsive: [ + { + breakpoint: 1540, + settings: { + slidesToShow: 2.03, + initialSlide: 1 + } + }, + { + breakpoint: 767, + settings: { + slidesToShow: 1 + } + } + ] +}; + +const SimilarCourses = () => { + return ( + + + + + {courseData.map(course => ( + + ))} + + + + + + + ); +}; + +export default SimilarCourses; diff --git a/src/components/app/e-learning/course/course-details/index.jsx b/src/components/app/e-learning/course/course-details/index.jsx new file mode 100644 index 0000000..9313f38 --- /dev/null +++ b/src/components/app/e-learning/course/course-details/index.jsx @@ -0,0 +1,85 @@ +import React, { useEffect, useRef } from 'react'; +import { Col, Image, Row } from 'react-bootstrap'; +import waveBg from 'assets/img/illustrations/bg-wave.png'; +import { useCourseContext } from 'providers/CourseProvider'; +import { + courseContents, + courseFeatures, + courseLessons, + courseRequirements, + courseReviews +} from 'data/elearning/courseDetails'; +import CourseBanner from './CourseBanner'; +import CoursePricingPlan from './CoursePricingPlan'; +import CourseFeatures from './CourseFeatures'; +import CourseContents from './CourseContents'; +import CourseRequirements from './CourseRequirements'; +import CourseTrainer from './CourseTrainer'; +import CourseReviews from './CourseReviews'; +import SimilarCourses from './SimilarCourses'; +import CourseLessonPlan from './CourseLessonPlan'; +import { Navigate, useParams } from 'react-router'; +import { useAppContext } from 'providers/AppProvider'; +import paths from 'routes/paths'; + +const Coursedetails = () => { + const { + config: { navbarPosition }, + setConfig + } = useAppContext(); + + const { + coursesState: { courses } + } = useCourseContext(); + + const { courseId } = useParams(); + const prevNavbarPosition = useRef(navbarPosition); + + const course = courses.find(course => course.id === courseId); + + useEffect(() => { + if (navbarPosition !== 'double-top') setConfig('navbarPosition', 'top'); + setConfig('disabledNavbarPosition', ['vertical', 'combo']); + }, [navbarPosition]); + + useEffect(() => { + return () => { + setConfig('disabledNavbarPosition', []); + setConfig('navbarPosition', prevNavbarPosition.current); + }; + }, []); + + return course ? ( + <> + + + + + + + + + + + + +
    + +
    + +
    +
    + +
    + + ) : ( + + ); +}; + +export default Coursedetails; diff --git a/src/components/app/e-learning/course/create-a-course/Bottombar.jsx b/src/components/app/e-learning/course/create-a-course/Bottombar.jsx new file mode 100644 index 0000000..8c6f69b --- /dev/null +++ b/src/components/app/e-learning/course/create-a-course/Bottombar.jsx @@ -0,0 +1,43 @@ +import { Button, Card, Col, Container, Row } from 'react-bootstrap'; +import { useAppContext } from 'providers/AppProvider'; + +const Bottombar = ({ inViewport }) => { + const { + config: { navbarCollapsed } + } = useAppContext(); + return ( + + + + + + + + + + + + + + + ); +}; + +export default Bottombar; diff --git a/src/components/app/e-learning/course/create-a-course/CourseCoverPhoto.jsx b/src/components/app/e-learning/course/create-a-course/CourseCoverPhoto.jsx new file mode 100644 index 0000000..7de62d2 --- /dev/null +++ b/src/components/app/e-learning/course/create-a-course/CourseCoverPhoto.jsx @@ -0,0 +1,114 @@ +import React, { useState } from 'react'; +import { useDropzone } from 'react-dropzone'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { + Button, + Card, + Dropdown, + Image, + OverlayTrigger, + Tooltip +} from 'react-bootstrap'; +import { getSize } from 'helpers/utils'; +import cloudUpload from 'assets/img/icons/cloud-upload.svg'; +import Flex from 'components/common/Flex'; +import CardDropdown from 'components/common/CardDropdown'; + +const CourseCoverPhoto = () => { + const [cover, setCover] = useState(); + + const { getRootProps, getInputProps } = useDropzone({ + accept: { + 'image/*': ['.jpeg', '.png', '.jpg'] + }, + onDrop: acceptedFiles => { + setCover( + Object.assign(acceptedFiles[0], { + preview: URL.createObjectURL(acceptedFiles[0]) + }) + ); + } + }); + + return ( + + +
    + Upload Cover Photo + + Add cover photo + + } + > + + + + +
    +
    + +
    + +
    + + + Drag your image here +
    + or,{' '} +
    + +
    +
    + {cover && ( +
    + + {cover.path} + +
    {cover.path}
    + +

    + {getSize(cover.size)} +

    +
    +
    + +
    + setCover()} + > + Remove + +
    +
    +
    +
    + )} +
    +
    + ); +}; +export default CourseCoverPhoto; diff --git a/src/components/app/e-learning/course/create-a-course/CourseGoals.jsx b/src/components/app/e-learning/course/create-a-course/CourseGoals.jsx new file mode 100644 index 0000000..a7a23f5 --- /dev/null +++ b/src/components/app/e-learning/course/create-a-course/CourseGoals.jsx @@ -0,0 +1,175 @@ +import { useState } from 'react'; +import { Button, Card, Form, OverlayTrigger, Tooltip } from 'react-bootstrap'; +import { v4 as uuid } from 'uuid'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import Flex from 'components/common/Flex'; +import { Controller } from 'react-hook-form'; +import MultiSelect from 'components/common/MultiSelect'; + +const CourseGoals = ({ control }) => { + const defaultGoals = [ + { + id: uuid(), + goal: 'Which tool is preferred for what kind of work.' + }, + { + id: uuid(), + goal: 'How to take criticism and make best use of them.' + } + ]; + const [goals, setGoals] = useState(defaultGoals); + const [goal, setGoal] = useState(''); + const [editingGoal, setEditingGoal] = useState({}); + const [isEditing, setIsEditing] = useState(false); + + const handleGoalSubmit = () => { + if (!isEditing) { + setGoals([...goals, { id: uuid(), goal: goal }]); + setGoal(''); + } else { + const updatedGoals = goals.map(goal => { + if (goal.id === editingGoal.id) { + return { + ...goal, + goal: editingGoal.goal + }; + } + return goal; + }); + setGoals(updatedGoals); + setEditingGoal({}); + setIsEditing(false); + } + }; + + const handleChange = value => { + isEditing + ? setEditingGoal({ + ...editingGoal, + goal: value + }) + : setGoal(value); + }; + + return ( + + + Course Goals and Key features + + + + Course Goals* + +
      + {goals.map(item => ( +
    • + + +

      {item.goal}

      +
      + + Edit + + } + > + + + + Remove + + } + > + + +
      +
      +
    • + ))} +
    + + handleChange(e.target.value)} + placeholder="Add another goal..." + /> +
    + +
    +
    + + + + Key features* + + + + ( + + )} + control={control} + /> + +
    +
    + ); +}; + +export default CourseGoals; diff --git a/src/components/app/e-learning/course/create-a-course/CourseInformationForm.jsx b/src/components/app/e-learning/course/create-a-course/CourseInformationForm.jsx new file mode 100644 index 0000000..ee58cb4 --- /dev/null +++ b/src/components/app/e-learning/course/create-a-course/CourseInformationForm.jsx @@ -0,0 +1,115 @@ +import MultiSelect from 'components/common/MultiSelect'; +import TinymceEditor from 'components/common/TinymceEditor'; +import { Card, Col, Form, Row } from 'react-bootstrap'; +import { Controller } from 'react-hook-form'; + +const CourseInformationForm = ({ register, setValue, control }) => { + const tagOptions = [ + { value: '1', label: 'Writing' }, + { value: '2', label: 'Misc' }, + { value: '3', label: 'Design' }, + { value: '4', label: 'Painting' } + ]; + + return ( + + Course Information + + + + + + Course Title* + + + + + + + + Category* + + + + + + + + + + + + + + + + + + + + Sub-category* + + + + + + + + + + + + + + + + + + + + Tags* + + ( + + )} + control={control} + /> + + + + + + Course Description* + +
    + + setValue('courseDescription', newValue) + } + /> +
    +
    + +
    +
    +
    + ); +}; + +export default CourseInformationForm; diff --git a/src/components/app/e-learning/course/create-a-course/CoursePreviewVideo.jsx b/src/components/app/e-learning/course/create-a-course/CoursePreviewVideo.jsx new file mode 100644 index 0000000..5f4b7f0 --- /dev/null +++ b/src/components/app/e-learning/course/create-a-course/CoursePreviewVideo.jsx @@ -0,0 +1,120 @@ +import { useState } from 'react'; +import { useDropzone } from 'react-dropzone'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { + Button, + Card, + Dropdown, + Form, + OverlayTrigger, + Tooltip +} from 'react-bootstrap'; +import { getSize } from 'helpers/utils'; +import cloudUpload from 'assets/img/icons/cloud-upload.svg'; +import Flex from 'components/common/Flex'; +import CardDropdown from 'components/common/CardDropdown'; +const CoursePreviewVideo = ({ register }) => { + const [video, setVideo] = useState(); + + const { getRootProps, getInputProps } = useDropzone({ + accept: { + 'video/mp4': ['.mp4', '.MP4'] + }, + onDrop: acceptedFiles => { + setVideo( + Object.assign(acceptedFiles[0], { + preview: URL.createObjectURL(acceptedFiles[0]) + }) + ); + } + }); + + return ( + + +
    + Upload Preview Video + + Upload preview video + + } + > + + + + +
    +
    + +
    + +
    + + + Drag your .mp4 or .mkv file here +
    + or,{' '} +
    + +
    +
    + {video && ( +
    + + + +
    {video.path}
    + +

    + {getSize(video.size)} +

    +
    +
    + +
    + setVideo()} + > + Remove + +
    +
    +
    +
    + )} + + or, paste youtube link here +
    + +
    + +
    +
    +
    +
    +
    + ); +}; + +export default CoursePreviewVideo; diff --git a/src/components/app/e-learning/course/create-a-course/CoursePricing.jsx b/src/components/app/e-learning/course/create-a-course/CoursePricing.jsx new file mode 100644 index 0000000..8c25e22 --- /dev/null +++ b/src/components/app/e-learning/course/create-a-course/CoursePricing.jsx @@ -0,0 +1,96 @@ +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { + Button, + Card, + Col, + Form, + OverlayTrigger, + Row, + Tooltip +} from 'react-bootstrap'; + +const CoursePricing = ({ + register, + isOpenScheduleModal, + setIsOpenScheduleModal +}) => { + return ( + <> + + Set Pricing + + + + + + Base Price + + Course regular price + + } + > + + + + + + + + + + + + Discounted Price + + Course discounted price + + } + > + + + + + + + + + +
    + +
    +
    +
    + + ); +}; + +export default CoursePricing; diff --git a/src/components/app/e-learning/course/create-a-course/CourseRequirements.jsx b/src/components/app/e-learning/course/create-a-course/CourseRequirements.jsx new file mode 100644 index 0000000..45bdf1a --- /dev/null +++ b/src/components/app/e-learning/course/create-a-course/CourseRequirements.jsx @@ -0,0 +1,146 @@ +import React, { useState } from 'react'; +import { Button, Card, Form, OverlayTrigger, Tooltip } from 'react-bootstrap'; +import { v4 as uuid } from 'uuid'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import Flex from 'components/common/Flex'; + +const CourseRequirements = () => { + const defaultRequirements = [ + { + id: uuid(), + requirement: + 'This course requires profieciency in English language as the Lessons are prepared in English.' + }, + { + id: uuid(), + requirement: + 'Learners with following skills might be more benefited, but little extra work is all that’ll take.' + } + ]; + const [requirements, setRequirements] = useState(defaultRequirements); + const [requirement, setRequirement] = useState(''); + const [editingRequirement, setEditingRequirement] = useState({}); + const [isEditing, setIsEditing] = useState(false); + + const handleRequirementSubmit = () => { + if (!isEditing) { + setRequirements([...requirements, { id: uuid(), requirement }]); + setRequirement(''); + } else { + const updatedRequirements = requirements.map(requirement => { + if (requirement.id === editingRequirement.id) { + return { + ...requirement, + requirement: editingRequirement.requirement + }; + } + return requirement; + }); + setRequirements(updatedRequirements); + setEditingRequirement({}); + setIsEditing(false); + } + }; + + const handleChange = value => { + isEditing + ? setEditingRequirement({ + ...editingRequirement, + requirement: value + }) + : setRequirement(value); + }; + + return ( + + + Requirements + + +
      + {requirements.map((item, index) => ( +
    • + + +

      {item.requirement}

      +
      + + Edit + + } + > + + + + Remove + + } + > + + +
      +
      +
    • + ))} +
    + + handleChange(e.target.value)} + placeholder="Add another requirement..." + /> +
    + +
    +
    +
    +
    + ); +}; + +export default CourseRequirements; diff --git a/src/components/app/e-learning/course/create-a-course/CourseResources.jsx b/src/components/app/e-learning/course/create-a-course/CourseResources.jsx new file mode 100644 index 0000000..5605935 --- /dev/null +++ b/src/components/app/e-learning/course/create-a-course/CourseResources.jsx @@ -0,0 +1,96 @@ +import { + Button, + Card, + Image, + OverlayTrigger, + Table, + Tooltip +} from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import Flex from 'components/common/Flex'; +import CardDropdown from 'components/common/CardDropdown'; + +const CourseResources = ({ data }) => { + return ( + + Create Resources + +
    + + + {data.map((resource, index) => ( + + + + + + ))} + +
    + + +
    +
    + {resource.title} + + {resource.isFulfilled + ? 'Requirement fulfilled' + : "No. of Slide/Test doesn't fulfill requirement"} + + } + > + + + + +
    +

    + {resource.excerpt} +

    +
    +
    +
    +

    + {resource.details.slides} Slide •{' '} + {resource.details.minutes} Minutes +

    +

    {resource.details.tests} Tests

    +
    + +
    +
    +
    + + + +
    + ); +}; + +export default CourseResources; diff --git a/src/components/app/e-learning/course/create-a-course/CreateCourseHeader.jsx b/src/components/app/e-learning/course/create-a-course/CreateCourseHeader.jsx new file mode 100644 index 0000000..6eb6f71 --- /dev/null +++ b/src/components/app/e-learning/course/create-a-course/CreateCourseHeader.jsx @@ -0,0 +1,40 @@ +import React from 'react'; +import corner4 from 'assets/img/illustrations/corner-4.png'; +import { Card, Col, Row } from 'react-bootstrap'; +import { Link } from 'react-router'; +import Background from 'components/common/Background'; +import paths from 'routes/paths'; + +const CreateCourseHeader = () => { + return ( + + + + + +

    Create A New Course

    +

    + Enlighten the world with your knowledge. Use our Course Creator to + design a well-structured course; set whatever price you feel + worthy of, and publish at our platform. +
    + or, +
    + Want to edit your existing course? Jump to + Your courses +

    + +
    +
    +
    + ); +}; + +export default CreateCourseHeader; diff --git a/src/components/app/e-learning/course/create-a-course/PublishCourse.jsx b/src/components/app/e-learning/course/create-a-course/PublishCourse.jsx new file mode 100644 index 0000000..4e5b2d2 --- /dev/null +++ b/src/components/app/e-learning/course/create-a-course/PublishCourse.jsx @@ -0,0 +1,114 @@ +import React, { useEffect, useRef } from 'react'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { Button, Card, Col, Row } from 'react-bootstrap'; +import Bottombar from './Bottombar'; +import useVisibilityObserver from 'hooks/useVisibilityObserver'; + +const publishStatsSettings = [ + { + name: 'Condition', + value: 'Draft', + icon: 'file' + }, + { + name: 'Privacy', + value: 'Public', + icon: 'unlock-alt' + }, + { + name: 'Visibility', + value: 'Global Search', + icon: 'globe' + }, + { + name: 'Publish', + value: 'Now', + icon: 'clock' + } +]; + +const PublishCourse = () => { + const targetElRef = useRef(); + const { isVisible: inViewport, observer } = useVisibilityObserver( + targetElRef, + '0px' + ); + + useEffect(() => { + return () => { + observer && + targetElRef.current && + observer.unobserve(targetElRef.current); + }; + }, [observer]); + + return ( + <> + + +
    Publish your Course
    + +
    + +
      + {publishStatsSettings.map((setting, index) => ( +
    • + + {setting.name}: + + {' '} + {setting.value} + + +
    • + ))} +
    +
    + + + + + + + + + + +
    + + + ); +}; + +export default PublishCourse; diff --git a/src/components/app/e-learning/course/create-a-course/ScheduleDiscountModal.jsx b/src/components/app/e-learning/course/create-a-course/ScheduleDiscountModal.jsx new file mode 100644 index 0000000..6c5c73f --- /dev/null +++ b/src/components/app/e-learning/course/create-a-course/ScheduleDiscountModal.jsx @@ -0,0 +1,213 @@ +import { useState } from 'react'; +import { timezones } from 'data/events/timezones'; +import { Button, Col, Form, Modal, Row } from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import DatePicker from 'react-datepicker'; +import { useForm } from 'react-hook-form'; +import CustomDateInput from 'components/common/CustomDateInput'; +import { useAppContext } from 'providers/AppProvider'; + +const ScheduleDiscountModal = ({ + setIsOpenScheduleModal, + isOpenScheduleModal +}) => { + const { + config: { isDark } + } = useAppContext(); + + const [formData, setFormData] = useState({ + startDate: null, + endDate: null, + timeZone: null, + startTime: null, + endTime: null + }); + + const defaultValues = { + timeZone: 'GMT-12:00/Etc/GMT-12' + }; + const submittedValues = {}; + const { register, handleSubmit, setValue, reset } = useForm({ + defaultValues + }); + + const handleChange = (name, value) => { + setFormData({ + ...formData, + [name]: value + }); + }; + const onSubmit = data => { + console.log(data); + const keys = Object.keys(data); + for (const key of keys) { + submittedValues[key] = ''; + } + const allValues = { ...submittedValues, ...defaultValues }; + reset({ ...allValues }); + }; + const handleClose = () => { + setIsOpenScheduleModal(!isOpenScheduleModal); + }; + + return ( + +
    + + Schedule for Discount + + + + + + Timezone + + {timezones.map(item => ( + + ))} + + + + + + + Start Date + { + handleChange('startDate', newDate); + setValue('startDate', newDate); + }} + customInput={ + + } + /> + + + + + Start Time + { + handleChange('startTime', newDate); + setValue('startTime', newDate); + }} + customInput={ + + } + /> + + + + + End Date + + { + handleChange('endDate', newDate); + setValue('endDate', newDate); + }} + customInput={ + + } + /> + + + + + End Time + + { + handleChange('endTime', newDate); + setValue('endTime', newDate); + }} + customInput={ + + } + /> + + + + + + + + +
    +
    + ); +}; + +export default ScheduleDiscountModal; diff --git a/src/components/app/e-learning/course/create-a-course/index.jsx b/src/components/app/e-learning/course/create-a-course/index.jsx new file mode 100644 index 0000000..a612a30 --- /dev/null +++ b/src/components/app/e-learning/course/create-a-course/index.jsx @@ -0,0 +1,75 @@ +import { courseResourcesData } from 'data/elearning/createCourse'; +import React, { useState } from 'react'; +import { Col, Form, Row } from 'react-bootstrap'; +import { useForm } from 'react-hook-form'; +import CourseCoverPhoto from './CourseCoverPhoto'; +import CourseGoals from './CourseGoals'; +import CourseInformationForm from './CourseInformationForm'; +import CoursePreviewVideo from './CoursePreviewVideo'; +import CoursePricing from './CoursePricing'; +import CourseRequirements from './CourseRequirements'; +import CourseResources from './CourseResources'; +import CreateCourseHeader from './CreateCourseHeader'; +import PublishCourse from './PublishCourse'; +import ScheduleDiscountModal from './ScheduleDiscountModal'; + +const CreateCourse = () => { + const [isOpenScheduleModal, setIsOpenScheduleModal] = useState(false); + const defaultValues = { + timeZone: 'GMT-12:00/Etc/GMT-12' + }; + const submittedValues = {}; + const { register, handleSubmit, setValue, control, reset } = useForm({ + defaultValues + }); + + const onSubmit = data => { + console.log(data); + // ------- Get all object keys form data and set empty values to reset ------------ + const keys = Object.keys(data); + for (const key of keys) { + submittedValues[key] = ''; + } + const allValues = { ...submittedValues, ...defaultValues }; + reset({ ...allValues }); + }; + + return ( + <> +
    + + + + + + + + + +
    + + + + +
    + +
    +
    + {/* Modal */} + + + ); +}; + +export default CreateCourse; diff --git a/src/components/app/e-learning/student-overview/AssignmentScores.jsx b/src/components/app/e-learning/student-overview/AssignmentScores.jsx new file mode 100644 index 0000000..1baa503 --- /dev/null +++ b/src/components/app/e-learning/student-overview/AssignmentScores.jsx @@ -0,0 +1,133 @@ +import FalconCardHeader from 'components/common/FalconCardHeader'; +import { Card, Col, Row } from 'react-bootstrap'; +import { PieChart } from 'echarts/charts'; +import { + GridComponent, + LegendComponent, + TitleComponent, + TooltipComponent +} from 'echarts/components'; +import * as echarts from 'echarts/core'; +import { CanvasRenderer } from 'echarts/renderers'; +import FalconLink from 'components/common/FalconLink'; +import Flex from 'components/common/Flex'; +import SubtleBadge from 'components/common/SubtleBadge'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { useAppContext } from 'providers/AppProvider'; +import ReactEchart from 'components/common/ReactEchart'; + +echarts.use([ + TitleComponent, + TooltipComponent, + GridComponent, + PieChart, + CanvasRenderer, + LegendComponent +]); + +const data = [ + { value: 12, name: '90-100%' }, + { value: 16, name: '70-90%' }, + { value: 12, name: '40-70%' }, + { value: 2, name: '0-40%' } +]; + +const getOptions = getThemeColor => ({ + color: [ + getThemeColor('success'), + getThemeColor('primary'), + getThemeColor('info'), + getThemeColor('warning') + ], + tooltip: { + trigger: 'item', + padding: [7, 10], + backgroundColor: getThemeColor('gray-100'), + borderColor: getThemeColor('gray-300'), + textStyle: { color: getThemeColor('gray-1100') }, + borderWidth: 1, + transitionDuration: 0, + formatter: params => + `${params.data.name}: ${params.data.value}%` + }, + + legend: { show: false }, + series: [ + { + type: 'pie', + radius: ['85%', '60%'], + avoidLabelOverlap: false, + itemStyle: { + borderWidth: 2, + borderColor: getThemeColor('gray-100') + }, + label: { + show: false + }, + emphasis: { + scale: false + }, + labelLine: { show: false }, + data + } + ] +}); + +const AssignmentScores = ({ scoresData }) => { + const { getThemeColor } = useAppContext(); + return ( + + + } + /> + + + + + {scoresData.map(item => ( + + +
    +
    {item.range}
    + +
    {item.courses} Courses
    +
    + this week + + {item.badge.icon && ( + + )} + {item.badge.content} + +
    + + ))} + + + + + + + + + ); +}; + +export default AssignmentScores; diff --git a/src/components/app/e-learning/student-overview/BillingAddress.jsx b/src/components/app/e-learning/student-overview/BillingAddress.jsx new file mode 100644 index 0000000..9320906 --- /dev/null +++ b/src/components/app/e-learning/student-overview/BillingAddress.jsx @@ -0,0 +1,119 @@ +import CardDropdown from 'components/common/CardDropdown'; +import FalconCardHeader from 'components/common/FalconCardHeader'; +import { Button, Card, Col, Row, Table } from 'react-bootstrap'; +import { Link } from 'react-router'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import GoogleMap from 'components/map/GoogleMap'; + +const BillingAddress = () => { + return ( + + } + /> + + + + +
    Excellent Street
    +

    + 987, Apartment 6, Excellent Street, Good Area, Clean City 5434, Canada +

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Name: + + Michael Giacchino + +
    + Address: + + 987, Apartment 6, Excellent Street, Good Area, Clean City + 5434, Canada. + +
    + Email: + + + goodguy@nicemail.com + + +
    + Mobile No: + + + +1-202-555-0110 + + +
    + SMS Invoice: + + On + +
    + +
    +
    +
    + ); +}; + +const HoverActionsBtn = ({ to = '#!', icon = 'pencil-alt' }) => ( + +); + +export default BillingAddress; diff --git a/src/components/app/e-learning/student-overview/BrowsedCourses.jsx b/src/components/app/e-learning/student-overview/BrowsedCourses.jsx new file mode 100644 index 0000000..7f3a226 --- /dev/null +++ b/src/components/app/e-learning/student-overview/BrowsedCourses.jsx @@ -0,0 +1,238 @@ +import { useRef } from 'react'; +import { Card, Col, Row, Button } from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import dayjs from 'dayjs'; +import { BarChart } from 'echarts/charts'; +import { + GridComponent, + LegendComponent, + TitleComponent, + TooltipComponent +} from 'echarts/components'; +import * as echarts from 'echarts/core'; +import { rgbaColor } from 'helpers/utils'; +import FalconLink from 'components/common/FalconLink'; +import Flex from 'components/common/Flex'; +import paths from 'routes/paths'; +import { useAppContext } from 'providers/AppProvider'; +import ReactEchart from 'components/common/ReactEchart'; + +echarts.use([ + TitleComponent, + TooltipComponent, + GridComponent, + BarChart, + LegendComponent +]); + +const tooltipFormatter = params => ` +
    +

    + ${ + dayjs(params[0].axisValue).isValid() + ? dayjs(params[0].axisValue).format('MMMM YYYY') + : params[0].axisValue + } +

    + ${params + .map( + ({ seriesName, value, borderColor }) => + `
    + + ${seriesName} : ${value} + ` + ) + .join('
    ')} +
    `; + +const getOptions = getThemeColor => ({ + color: getThemeColor('gray-100'), + legend: { + show: false + }, + xAxis: { + type: 'category', + data: [ + '2020-01-01', + '2020-02-01', + '2020-03-01', + '2020-04-01', + '2020-05-01', + '2020-06-01', + '2020-07-01', + '2020-08-01', + '2020-09-01', + '2020-10-01', + '2020-11-01', + '2020-12-01', + '2021-01-01', + '2021-02-01', + '2021-03-01', + '2021-04-01', + '2021-05-01', + '2021-06-01', + '2021-07-01', + '2021-08-01', + '2021-09-01', + '2021-10-01', + '2021-11-01', + '2021-12-01' + ], + axisLine: { + show: false + }, + splitLine: { + show: false + }, + axisTick: { + show: false + }, + axisLabel: { + color: getThemeColor('gray-600'), + formatter: value => { + const date = new Date(value); + return `${dayjs(date).format('MMM')}`; + }, + interval: 2 + } + }, + yAxis: { + type: 'value', + show: false + }, + tooltip: { + trigger: 'axis', + padding: [7, 10], + axisPointer: { + type: 'none' + }, + backgroundColor: getThemeColor('gray-100'), + borderColor: getThemeColor('gray-300'), + textStyle: { color: getThemeColor('gray-1100') }, + borderWidth: 1, + transitionDuration: 0, + formatter(params) { + return tooltipFormatter(params); + } + }, + series: [ + { + name: 'Total', + type: 'bar', + barWidth: '50%', + z: -1, + data: [ + 600, 832, 901, 934, 1290, 1330, 1320, 1250, 1190, 1345, 1009, 1320, 600, + 832, 901, 934, 1290, 1330, 1320, 1250, 1190, 1345, 1009, 1320 + ], + itemStyle: { + color: rgbaColor(getThemeColor('primary'), 0.1), + borderRadius: [5, 5, 0, 0], + borderWidth: 1, + borderColor: getThemeColor('gray-300') + }, + emphasis: { + itemStyle: { + color: rgbaColor(getThemeColor('info'), 0.15), + borderRadius: [5, 5, 0, 0], + borderWidth: 1, + borderColor: getThemeColor('gray-300') + } + } + }, + { + name: 'Paid', + type: 'bar', + barWidth: '50%', + barGap: '-100%', + data: [ + 320, 420, 800, 100, 1000, 930, 720, 1020, 800, 320, 450, 150, 320, 420, + 800, 100, 1000, 930, 720, 1020, 800, 320, 450, 150 + ], + itemStyle: { + borderRadius: [5, 5, 0, 0], + color: getThemeColor('primary'), + borderWidth: 1, + borderColor: getThemeColor('primary') + } + } + ], + grid: { + right: '0px', + left: '0px', + bottom: '10%', + top: '15%' + } +}); + +const BrowsedCourses = () => { + const chartRef = useRef(null); + const { getThemeColor } = useAppContext(); + + const handleLegendToggle = (event, name) => { + chartRef.current.getEchartsInstance().dispatchAction({ + type: 'legendToggleSelect', + name + }); + event.target.closest('button').classList.toggle('opacity-50'); + }; + + return ( + + +
    Browsing New Courses
    +
    + + + + + + + + + + + + + + + + +
    + ); +}; + +export default BrowsedCourses; diff --git a/src/components/app/e-learning/student-overview/CourseStatus.jsx b/src/components/app/e-learning/student-overview/CourseStatus.jsx new file mode 100644 index 0000000..36ae354 --- /dev/null +++ b/src/components/app/e-learning/student-overview/CourseStatus.jsx @@ -0,0 +1,141 @@ +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { Card } from 'react-bootstrap'; +import { PieChart } from 'echarts/charts'; +import { + GridComponent, + LegendComponent, + TitleComponent, + TooltipComponent +} from 'echarts/components'; +import * as echarts from 'echarts/core'; +import { CanvasRenderer } from 'echarts/renderers'; +import Flex from 'components/common/Flex'; +import SubtleBadge from 'components/common/SubtleBadge'; +import FalconLink from 'components/common/FalconLink'; +import FalconCardHeader from 'components/common/FalconCardHeader'; +import { useAppContext } from 'providers/AppProvider'; +import ReactEchart from 'components/common/ReactEchart'; + +echarts.use([ + TitleComponent, + TooltipComponent, + GridComponent, + PieChart, + CanvasRenderer, + LegendComponent +]); + +const data = [ + { + value: 13, + name: 'Completed' + }, + { + value: 20, + name: 'On going' + }, + { + value: 10, + name: 'Droped' + }, + { + value: 7, + name: 'Refunded' + } +]; + +const getOptions = getThemeColor => ({ + color: [ + getThemeColor('primary'), + getThemeColor('info'), + getThemeColor('warning'), + getThemeColor('success') + ], + tooltip: { + trigger: 'item', + padding: [7, 10], + backgroundColor: getThemeColor('gray-100'), + borderColor: getThemeColor('gray-300'), + textStyle: { color: getThemeColor('gray-1100') }, + borderWidth: 1, + transitionDuration: 0, + axisPointer: { + type: 'none' + }, + formatter: params => + `${params.data.name}: ${params.data.value}%` + }, + legend: { + show: false + }, + series: [ + { + type: 'pie', + radius: '70%', + itemStyle: { + borderWidth: 2, + borderColor: getThemeColor('gray-100') + }, + label: { + show: false + }, + center: ['50%', '50%'], + data + } + ] +}); + +const CourseStatus = ({ data }) => { + const { getThemeColor } = useAppContext(); + return ( + + } + /> + + + +
      + {data.map((item, index) => ( +
    • + +
      + {item.title} + + {item.badge.icon && ( + + )} + {item.badge.content} + +
      +

      {item.courses} Courses

      +
      +
    • + ))} +
    +
    +
    +
    + ); +}; + +export default CourseStatus; diff --git a/src/components/app/e-learning/student-overview/EnrolledCourses.jsx b/src/components/app/e-learning/student-overview/EnrolledCourses.jsx new file mode 100644 index 0000000..6b08a0c --- /dev/null +++ b/src/components/app/e-learning/student-overview/EnrolledCourses.jsx @@ -0,0 +1,187 @@ +import { Link } from 'react-router'; +import { Card, Dropdown, ProgressBar } from 'react-bootstrap'; +import AdvanceTable from 'components/common/advance-table/AdvanceTable'; +import IconButton from 'components/common/IconButton'; +import Flex from 'components/common/Flex'; +import CardDropdown from 'components/common/CardDropdown'; +import FalconCardFooterLink from 'components/common/FalconCardFooterLink'; +import paths from 'routes/paths'; +import useAdvanceTable from 'hooks/useAdvanceTable'; +import AdvanceTableProvider from 'providers/AdvanceTableProvider'; + +const columns = [ + { + accessorKey: 'title', + header: 'Course Title', + meta: { + headerProps: { className: 'fw-medium text-900' }, + cellProps: { + className: 'white-space-nowrap', + style: { maxWidth: '23rem' } + } + }, + cell: ({ row: { original } }) => { + const { title, image } = original; + return ( + + {title} + + {title} + + + ); + } + }, + { + accessorKey: 'trainer', + header: 'Trainer', + meta: { + headerProps: { + className: 'fw-medium text-900' + } + }, + cell: ({ row: { original } }) => { + const { trainer } = original; + return ( + + {trainer} + + ); + } + }, + { + accessorKey: 'enrollmentDate', + header: 'Enrollment', + meta: { + headerProps: { + className: 'fw-medium text-900' + } + } + }, + { + accessorKey: 'worked', + header: 'Worked', + meta: { + headerProps: { + className: 'fw-medium text-900' + } + } + }, + { + accessorKey: 'progress', + header: 'Progress', + meta: { + headerProps: { + className: 'fw-medium text-900' + } + }, + cell: ({ row: { original } }) => { + const { progress } = original; + return ( + + ); + } + }, + { + accessorKey: 'price', + header: 'Price', + meta: { + headerProps: { + className: 'fw-medium text-end text-900' + }, + cellProps: { + className: 'text-end' + } + }, + cell: ({ row }) => `${row.original.price}` + }, + { + accessorKey: 'none', + header: '', + enableSorting: false, + meta: { + cellProps: { + className: 'text-end' + } + }, + cell: () => { + return ( + +
    + View + Edit + Refund + + + Archive + + + Delete + +
    +
    + ); + } + } +]; + +const EnrolledCourses = ({ data, perPage = 6 }) => { + const table = useAdvanceTable({ + data, + columns, + sortable: true, + pagination: true, + perPage + }); + + return ( + + + +
    Enrolled Courses
    +
    + + Filter + + + Expand + +
    +
    + + + + +
    +
    + ); +}; + +export default EnrolledCourses; diff --git a/src/components/app/e-learning/student-overview/PageHeader.jsx b/src/components/app/e-learning/student-overview/PageHeader.jsx new file mode 100644 index 0000000..30ed779 --- /dev/null +++ b/src/components/app/e-learning/student-overview/PageHeader.jsx @@ -0,0 +1,37 @@ +import React from 'react'; +import { Card } from 'react-bootstrap'; +import IconButton from 'components/common/IconButton'; + +const PageHeader = () => { + return ( + + +
    +
    Learner
    +
    Michael Giacchino
    +
    +
    + + Message + + + Followers + +
    +
    +
    + ); +}; + +export default PageHeader; diff --git a/src/components/app/e-learning/student-overview/PaymentHistory.jsx b/src/components/app/e-learning/student-overview/PaymentHistory.jsx new file mode 100644 index 0000000..e6147ec --- /dev/null +++ b/src/components/app/e-learning/student-overview/PaymentHistory.jsx @@ -0,0 +1,131 @@ +import { Card } from 'react-bootstrap'; +import AdvanceTable from 'components/common/advance-table/AdvanceTable'; +import { Link } from 'react-router'; +import AdvanceTableFooter from 'components/common/advance-table/AdvanceTableFooter'; +import IconButton from 'components/common/IconButton'; +import useAdvanceTable from 'hooks/useAdvanceTable'; +import AdvanceTableProvider from 'providers/AdvanceTableProvider'; + +const columns = [ + { + accessorKey: 'courseId', + header: 'Course', + meta: { + headerProps: { className: 'text-900' } + }, + cell: ({ row: { original } }) => { + const { courseId } = original; + return ( + + Course#{courseId} + + ); + } + }, + { + accessorKey: 'invoice', + header: 'Invoice no.', + meta: { + headerProps: { + className: 'fw-medium text-900' + }, + cellProps: { + className: 'pe-6 py-3' + } + }, + cell: ({ row }) => `#${row.original.invoice}` + }, + { + accessorKey: 'date', + header: 'Date', + meta: { + headerProps: { + className: 'text-end fw-medium text-900' + }, + cellProps: { + className: 'text-end py-3' + } + } + }, + { + accessorKey: 'amount', + header: 'Amount', + meta: { + headerProps: { + className: 'text-end fw-medium text-900 white-space-nowrap' + }, + cellProps: { + className: 'text-end py-3' + } + } + }, + { + accessorKey: 'status', + header: 'Payment Status', + meta: { + headerProps: { + className: 'text-end fw-medium text-900 white-space-nowrap' + }, + cellProps: { + className: 'text-end py-3 font-sans-serif fw-medium' + } + }, + cell: ({ row: { original } }) => { + const { color, status } = original; + return {status}; + } + } +]; + +const PaymentHistory = ({ data, perPage = 5 }) => { + const table = useAdvanceTable({ + data, + columns, + sortable: true, + pagination: true, + perPage + }); + + return ( + + + +
    Payment History
    +
    + + Filter + + + Export + +
    +
    + + + + + + +
    +
    + ); +}; + +export default PaymentHistory; diff --git a/src/components/app/e-learning/student-overview/PaymentMethods.jsx b/src/components/app/e-learning/student-overview/PaymentMethods.jsx new file mode 100644 index 0000000..ae6687e --- /dev/null +++ b/src/components/app/e-learning/student-overview/PaymentMethods.jsx @@ -0,0 +1,100 @@ +import React from 'react'; +import { Card, Col, Image, Row, Table } from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import corner2 from 'assets/img/icons/spot-illustrations/corner-2.png'; +import chip from 'assets/img/icons/chip.png'; +import mastercard from 'assets/img/icons/master-card.png'; +import FalconCardHeader from 'components/common/FalconCardHeader'; +import CardDropdown from 'components/common/CardDropdown'; +import Background from 'components/common/Background'; +import SubtleBadge from 'components/common/SubtleBadge'; + +const PaymentMethods = () => { + return ( + + } + /> + + + + + + + mastercard chip +
    + **** **** **** 9876 +
    +
    12/26
    +
    Michael Giacchino
    + mastercard logo +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Type: + Mastercard debit card
    + Name: + Michael Giacchino
    + Expires: + DEC 2026
    + Issuer: + Falcon Finances
    + ID: + card_3d1avx3zcafd62
    + + Verified + + + + Non Billable + + + +
    +
    +
    + ); +}; + +export default PaymentMethods; diff --git a/src/components/app/e-learning/student-overview/RecentActivities.jsx b/src/components/app/e-learning/student-overview/RecentActivities.jsx new file mode 100644 index 0000000..9d769dc --- /dev/null +++ b/src/components/app/e-learning/student-overview/RecentActivities.jsx @@ -0,0 +1,77 @@ +import { Button, Card, Col, Form, Row } from 'react-bootstrap'; +import FalconCardHeader from 'components/common/FalconCardHeader'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import SimpleBar from 'simplebar-react'; +import CardDropdown from 'components/common/CardDropdown'; +import { Link } from 'react-router'; + +const Activity = ({ activity: { title, description, icon, time }, isLast }) => { + return ( +
    + + +
    + {time} +
    +
    +
    + +
    +
    + + +
    +
    {title}
    +

    {description}

    +
    + {!isLast &&
    } + +
    +
    + ); +}; + +const RecentActivities = ({ data }) => { + return ( + + } + /> + + +
    + {data.map((activity, index) => ( + + ))} +
    +
    +
    + + + + + + + + + + + + + + +
    + ); +}; + +export default RecentActivities; diff --git a/src/components/app/e-learning/student-overview/Spendings.jsx b/src/components/app/e-learning/student-overview/Spendings.jsx new file mode 100644 index 0000000..16f65aa --- /dev/null +++ b/src/components/app/e-learning/student-overview/Spendings.jsx @@ -0,0 +1,117 @@ +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { Card } from 'react-bootstrap'; +import Flex from 'components/common/Flex'; +import { rgbaColor } from 'helpers/utils'; +import * as echarts from 'echarts/core'; +import { LineChart } from 'echarts/charts'; + +import { + GridComponent, + TooltipComponent, + TitleComponent +} from 'echarts/components'; +import { CanvasRenderer } from 'echarts/renderers'; +import BasicECharts from 'components/common/BasicEChart'; +import SubtleBadge from 'components/common/SubtleBadge'; +import { useAppContext } from 'providers/AppProvider'; + +echarts.use([ + TitleComponent, + TooltipComponent, + GridComponent, + LineChart, + CanvasRenderer +]); + +const getOptions = (getThemeColor, data) => ({ + tooltip: { + trigger: 'axis', + formatter: '{b0} : {c0}' + }, + xAxis: { + data: [ + 'Week 1', + 'Week 2', + 'Week 3', + 'Week 4', + 'Week 5', + 'Week 6', + 'Week 7', + 'Week 8', + 'Week 9', + 'Week 10' + ] + }, + series: [ + { + type: 'line', + data, + smooth: true, + lineStyle: { + width: 2 + }, + + areaStyle: { + color: { + type: 'linear', + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [ + { + offset: 0, + color: rgbaColor(getThemeColor('primary'), 0.25) + }, + { + offset: 1, + color: rgbaColor(getThemeColor('primary'), 0) + } + ] + } + } + } + ], + grid: { + bottom: '2%', + top: '2%', + right: '0px', + left: '10px' + } +}); + +const Spendings = ({ data }) => { + const { getThemeColor } = useAppContext(); + + return ( + + +
    Spendings
    +
    + + +
    +

    $1971.52

    + + + 5.1% last month + +
    +
    + +
    +
    +
    + ); +}; + +export default Spendings; diff --git a/src/components/app/e-learning/student-overview/StudentInfo.jsx b/src/components/app/e-learning/student-overview/StudentInfo.jsx new file mode 100644 index 0000000..7fe1f1b --- /dev/null +++ b/src/components/app/e-learning/student-overview/StudentInfo.jsx @@ -0,0 +1,89 @@ +import React from 'react'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { Card, Dropdown, Image, Table } from 'react-bootstrap'; +import { Link } from 'react-router'; +import student from 'assets/img/e-learning/avatar/student.png'; +import CardDropdown from 'components/common/CardDropdown'; +import SubtleBadge from 'components/common/SubtleBadge'; + +const StudentInfo = () => { + return ( + + + student profile image + + + + + + + + + + + + + + + + + + + +
    + Last Online: + 3 hours ago
    + Joined: + 2021/01/12 23:13
    + Email: + + + goodguy@nicemail.com + + + Verified + + +
    + Mobile No: + + + +012-345-67890 + + + 2-step verification + + +
    +
    + +
    + View profile + Courses + + + Logout + +
    +
    +
    +
    +
    + ); +}; + +export default StudentInfo; diff --git a/src/components/app/e-learning/student-overview/TimeOnSite.jsx b/src/components/app/e-learning/student-overview/TimeOnSite.jsx new file mode 100644 index 0000000..7d69866 --- /dev/null +++ b/src/components/app/e-learning/student-overview/TimeOnSite.jsx @@ -0,0 +1,114 @@ +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { Card } from 'react-bootstrap'; +import Flex from 'components/common/Flex'; +import { rgbaColor } from 'helpers/utils'; +import * as echarts from 'echarts/core'; +import { LineChart } from 'echarts/charts'; + +import { + GridComponent, + TooltipComponent, + TitleComponent +} from 'echarts/components'; +import { CanvasRenderer } from 'echarts/renderers'; +import BasicECharts from 'components/common/BasicEChart'; +import SubtleBadge from 'components/common/SubtleBadge'; +import { useAppContext } from 'providers/AppProvider'; + +echarts.use([ + TitleComponent, + TooltipComponent, + GridComponent, + LineChart, + CanvasRenderer +]); + +const getOptions = (getThemeColor, data) => ({ + tooltip: { + trigger: 'axis', + formatter: '{b0} : {c0}' + }, + xAxis: { + data: [ + 'Day 1', + 'Day 2', + 'Day 3', + 'Day 4', + 'Day 5', + 'Day 6', + 'Day 7', + 'Day 8' + ] + }, + series: [ + { + type: 'line', + data, + smooth: true, + lineStyle: { + width: 2 + }, + + areaStyle: { + color: { + type: 'linear', + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [ + { + offset: 0, + color: rgbaColor(getThemeColor('primary'), 0.25) + }, + { + offset: 1, + color: rgbaColor(getThemeColor('primary'), 0) + } + ] + } + } + } + ], + grid: { + bottom: '2%', + top: '2%', + right: '0px', + left: '10px' + } +}); + +const TimeOnSite = ({ data }) => { + const { getThemeColor } = useAppContext(); + return ( + + +
    Time on Site
    +
    + + +
    +

    121h 11m

    + + + 3.6% last month + +
    +
    + +
    +
    +
    + ); +}; + +export default TimeOnSite; diff --git a/src/components/app/e-learning/student-overview/index.jsx b/src/components/app/e-learning/student-overview/index.jsx new file mode 100644 index 0000000..cd410cd --- /dev/null +++ b/src/components/app/e-learning/student-overview/index.jsx @@ -0,0 +1,73 @@ +import React from 'react'; +import { Col, Row } from 'react-bootstrap'; +import { + assignmentScores, + courseStatusData, + payments, + spendingsData, + timeOnSiteData, + recentActivities, + enrolledCoursesData +} from 'data/elearning/studentOverview'; +import PageHeader from './PageHeader'; +import Spendings from './Spendings'; +import StudentInfo from './StudentInfo'; +import TimeOnSite from './TimeOnSite'; +import AssignmentScores from './AssignmentScores'; +import BrowsedCourses from './BrowsedCourses'; +import PaymentMethods from './PaymentMethods'; +import PaymentHistory from './PaymentHistory'; +import CourseStatus from './CourseStatus'; +import BillingAddress from './BillingAddress'; +import RecentActivities from './RecentActivities'; +import EnrolledCourses from './EnrolledCourses'; + +const StudentOverview = () => { + return ( + <> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +}; + +export default StudentOverview; diff --git a/src/components/app/e-learning/trainer-profile/TrainerCourses.jsx b/src/components/app/e-learning/trainer-profile/TrainerCourses.jsx new file mode 100644 index 0000000..c22b59f --- /dev/null +++ b/src/components/app/e-learning/trainer-profile/TrainerCourses.jsx @@ -0,0 +1,158 @@ +import React, { useEffect, useState } from 'react'; +import { + Button, + Card, + Col, + Form, + InputGroup, + OverlayTrigger, + Row, + Tooltip +} from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import classNames from 'classnames'; +import { useCourseContext } from 'providers/CourseProvider'; +import usePagination from 'hooks/usePagination'; +import CourseGrid from '../course/CourseGrid'; +import Flex from 'components/common/Flex'; + +const TrainerCourses = () => { + const { + coursesState: { courses }, + coursesDispatch + } = useCourseContext(); + + const [sortBy, setSortBy] = useState('price'); + const [isAsc, setIsAsc] = useState(true); + const [coursePerPage] = useState(6); + + const { + paginationState: { + data: paginatedCourses, + currentPage, + canNextPage, + canPreviousPage, + paginationArray + }, + nextPage, + prevPage, + goToPage + } = usePagination(courses, coursePerPage); + + useEffect(() => { + coursesDispatch({ + type: 'SORT_COURSE', + payload: { + sortBy, + order: isAsc ? 'asc' : 'desc' + } + }); + }, [sortBy, isAsc]); + + return ( + + +
    Other Courses by Bill Finger
    +
    + + setSortBy(target.value)} + > + + + + + setIsAsc(!isAsc)} + > + + + +
    +
    + + + {paginatedCourses.map(course => ( + + + + ))} + + + +
    + Prev} + > + + +
    + +
      + {paginationArray.map(page => ( +
    • + +
    • + ))} +
    +
    + + Next + + } + > + + +
    +
    +
    + ); +}; + +export default TrainerCourses; diff --git a/src/components/app/e-learning/trainer-profile/TrainerInfo.jsx b/src/components/app/e-learning/trainer-profile/TrainerInfo.jsx new file mode 100644 index 0000000..9bdc469 --- /dev/null +++ b/src/components/app/e-learning/trainer-profile/TrainerInfo.jsx @@ -0,0 +1,84 @@ +import React from 'react'; +import CountUp from 'react-countup'; +import { Card, Col, Image, Row } from 'react-bootstrap'; +import trainer from 'assets/img/e-learning/avatar/trainer.png'; +import userPlus from 'assets/img/icons/user-plus.svg'; +import users from 'assets/img/icons/users.svg'; +import IconButton from 'components/common/IconButton'; + +const TrainerInfo = () => { + return ( + + + + + trainer + + + + +

    Bill Finger

    +
    Artist | Comic Writer
    +

    + National Comics Publications, NY, USA +

    + + + + Message + + + Follow + + + + + + +

    + +

    +
    Following
    + + + +

    + +

    +
    Followers
    + +
    + +
    + +
    +
    +
    + ); +}; + +export default TrainerInfo; diff --git a/src/components/app/e-learning/trainer-profile/TrainerIntro.jsx b/src/components/app/e-learning/trainer-profile/TrainerIntro.jsx new file mode 100644 index 0000000..d87944d --- /dev/null +++ b/src/components/app/e-learning/trainer-profile/TrainerIntro.jsx @@ -0,0 +1,89 @@ +import React from 'react'; +import { Link } from 'react-router'; +import { Card, Col, Row } from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import Flex from 'components/common/Flex'; + +const socials = [ + { + title: 'Website', + icon: 'globe', + url: '#!' + }, + { + title: 'LinkedIn', + icon: ['fab', 'linkedin'], + url: '#!' + }, + { + title: 'Facebook', + icon: ['fab', 'facebook'], + url: '#!' + }, + { + title: 'Instagram', + icon: ['fab', 'instagram'], + url: '#!' + }, + { + title: 'Pinterest', + icon: ['fab', 'pinterest'], + url: '#!' + } +]; + +const TrainerIntro = () => { + return ( + + +
    Introduction
    +
    + + + +

    + Milton Finger (born February 8, 1914), better known as Bill + Finger, was an American comic strip, comic book, film, and + television writer who co-created the DC Comics superhero character + Batman (along with Bob Kane). +

    +

    + A young, promising writer and part-time shoe dealer Finger, joined + Kane's fledgling studio in 1938. Despite his significant (and + often iconic) contributions as an imaginative writer, visionary + mythos/world builder, and illustration creator, Finger was + frequently reduced to ghostwriter status on a number of comics, + including Batman and Green Lantern (Original Version). +

    +

    + In 1994, Finger was welcomed into the Jack Kirby Hall of Fame, and + in 1999, he was inducted into the Will Eisner Award Hall of Fame. + In 1985, the company recognised Finger as one of the awardees in + their 50th anniversary edition of Fifty Who Made DC Great. In + 2014, Finger was posthumously awarded The Inkpot Award. +

    + + + +
      + {socials.map(({ url, icon, title }) => ( +
    • + + + {title} + +
    • + ))} +
    +
    + +
    +
    +
    + ); +}; + +export default TrainerIntro; diff --git a/src/components/app/e-learning/trainer-profile/index.jsx b/src/components/app/e-learning/trainer-profile/index.jsx new file mode 100644 index 0000000..5c6c8fa --- /dev/null +++ b/src/components/app/e-learning/trainer-profile/index.jsx @@ -0,0 +1,43 @@ +import React, { useEffect, useRef } from 'react'; +import { Col, Row } from 'react-bootstrap'; +import TrainerInfo from './TrainerInfo'; +import TrainerIntro from './TrainerIntro'; +import TrainerCourses from './TrainerCourses'; +import { useAppContext } from 'providers/AppProvider'; + +const TrainerProfile = () => { + const { + config: { navbarPosition }, + setConfig + } = useAppContext(); + const prevNavbarPosition = useRef(navbarPosition); + + useEffect(() => { + if (navbarPosition !== 'double-top') setConfig('navbarPosition', 'top'); + + setConfig('disabledNavbarPosition', ['vertical', 'combo']); + }, []); + + useEffect(() => { + return () => { + setConfig('disabledNavbarPosition', []); + setConfig('navbarPosition', prevNavbarPosition.current); + }; + }, []); + + return ( + + +
    + +
    + + + + + +
    + ); +}; + +export default TrainerProfile; diff --git a/src/components/app/email/compose/Compose.jsx b/src/components/app/email/compose/Compose.jsx new file mode 100644 index 0000000..2d98b67 --- /dev/null +++ b/src/components/app/email/compose/Compose.jsx @@ -0,0 +1,220 @@ +import { useState } from 'react'; +import { + Button, + Card, + Dropdown, + Form, + OverlayTrigger, + Tooltip +} from 'react-bootstrap'; +import 'tinymce/skins/ui/oxide/skin.css'; +import Flex from 'components/common/Flex'; +import CardDropdown from 'components/common/CardDropdown'; +import IconButton from 'components/common/IconButton'; +import ComposeAttachment from './ComposeAttachment'; +import TinymceEditor from 'components/common/TinymceEditor'; +import { useForm } from 'react-hook-form'; +import { toast } from 'react-toastify'; + +const rawAttachments = [ + { id: 1, name: 'winter.jpg', size: 893952, type: 'image/jpg' }, + { id: 2, name: 'coffee.zip', size: 350208, type: 'application/zip' } +]; + +const Compose = ({ setShowForm, title, bodyClassName }) => { + const { register, handleSubmit, setValue } = useForm(); + + const [attachments, setAttachments] = useState(rawAttachments); + + const handleAddAttachment = files => { + if (files.length === 0) return; + const fileArray = []; + Array.from(files).forEach(file => { + const { name, size, type } = file; + + const newFile = { + id: name + 1 + Date.now(), + name, + size, + type + }; + fileArray.push(newFile); + }); + setAttachments([...attachments, ...fileArray]); + }; + + const handleDetachAttachment = id => { + setAttachments(attachments.filter(attachment => attachment.id !== id)); + }; + + const onSubmitData = data => { + setAttachments([]); + toast( +
    +
    Subject: {data.subject}
    +
    +

    An email is successfully sent to recipient.

    +
    + ); + }; + + return ( + + +
    {title ? title : 'New message'}
    +
    + + {setShowForm && ( +
    + +
    + )} +
    + +
    +
    + +
    +
    + setValue('content', newValue)} + /> +
    + {attachments.length > 0 && ( +
    + + {attachments.map(attachment => ( + + ))} + +
    + )} +
    + + + + + + handleAddAttachment(target.files)} + /> + + Attach files + + } + > +
    + +
    +
    +
    + + handleAddAttachment(target.files)} + /> + + Attach images + + } + > +
    + +
    +
    +
    +
    + + +
    + Print + Check spelling + Plain text mode + + Archive +
    +
    + + Delete + + } + > +
    + { + setAttachments([]); + setShowForm && setShowForm(false); + }} + /> +
    +
    +
    +
    +
    +
    + ); +}; + +export default Compose; diff --git a/src/components/app/email/compose/ComposeAttachment.jsx b/src/components/app/email/compose/ComposeAttachment.jsx new file mode 100644 index 0000000..0ed6f94 --- /dev/null +++ b/src/components/app/email/compose/ComposeAttachment.jsx @@ -0,0 +1,65 @@ +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import Flex from 'components/common/Flex'; + +const getIcon = type => { + const icon = ['far']; + if (type.includes('image')) { + icon.push('file-image'); + } + if (type.includes('video')) { + icon.push('file-video'); + } + if (type.includes('audio')) { + icon.push('file-audio'); + } + if (type.includes('zip')) { + icon.push('file-archive'); + } + if (type.includes('pdf')) { + icon.push('file-pdf'); + } + if ( + type.includes('html') || + type.includes('css') || + type.includes('json') || + type.includes('javascript') + ) { + icon.push('file-code'); + } + if (icon.length === 1) { + icon.push('file'); + } + return icon; +}; + +const getName = name => { + const [fileName, extension] = name.split('.'); + return `${fileName.slice(0, 24)}.${extension}`; +}; + +const ComposeAttachment = ({ + id, + name, + size, + handleDetachAttachment, + type +}) => ( + + + + {getName(name)} ({(size / 1024).toFixed(2)}kb) + + handleDetachAttachment(id)} + > + + + +); + +export default ComposeAttachment; diff --git a/src/components/app/email/email-detail/EmailDetail.jsx b/src/components/app/email/email-detail/EmailDetail.jsx new file mode 100644 index 0000000..7a0fa66 --- /dev/null +++ b/src/components/app/email/email-detail/EmailDetail.jsx @@ -0,0 +1,165 @@ +import React, { useState } from 'react'; +import Flex from 'components/common/Flex'; +import { Card, Button, Row, Col } from 'react-bootstrap'; +import IconButton from 'components/common/IconButton'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import EmailDetailHeader from './EmailDetailHeader'; +import Avatar from 'components/common/Avatar'; +import team1 from 'assets/img/team/1.jpg'; +import { Link } from 'react-router'; +import classNames from 'classnames'; +import womensDay from 'assets/img/icons/spot-illustrations/international-women-s-day-2.png'; +import IconGroup from 'components/common/icon/IconGroup'; +import socialIcons from 'data/socialIcons'; + +const EmailDetail = () => { + const [marked, setMarked] = useState(true); + const [emailDetails] = useState({ + sender: { + name: 'Emma Watson', + avatarSrc: team1, + time: '8:40 AM (9 hours ago)', + email: 'emma@watson.com' + }, + subject: 'Women work wonders… on your marketing skills' + }); + return ( + <> + + + + + + + + + + {emailDetails.sender.time} + setMarked(!marked)} + icon={marked ? 'star' : ['far', 'star']} + className={classNames( + 'ms-2 fs-10', + { 'text-warning': marked, 'text-300': !marked }, + 'cursor-pointer' + )} + /> + + + + + + + + + +

    + Happy International Women’s Day! +

    +

    + On International Women’s Day, we at ThemeWagon want you to + discover the skills you can learn from our amazing women + digital marketing instructors. +

    +

    + That's not all, when you enroll in one of their courses, use + promo code: + GirlPower20 and get + + {' '} + 20% off{' '} + + as our Women's Day gift to you. This offer{' '} + + expires in 7 days + {' '} + —so pick your course—and enroll today! +

    +
    + + + For any technical issues faced, please contact{' '} + Customer Support. + +
    +
    +
    +
    + + + If you wish to unsubscribe from all future emails, please{' '} + click here + +
    + +
    +
    + + + + + Reply + + + Forward + + + + 2 of 354 + + + + + +
    + + ); +}; + +export default EmailDetail; diff --git a/src/components/app/email/email-detail/EmailDetailHeader.jsx b/src/components/app/email/email-detail/EmailDetailHeader.jsx new file mode 100644 index 0000000..16dce7d --- /dev/null +++ b/src/components/app/email/email-detail/EmailDetailHeader.jsx @@ -0,0 +1,102 @@ +import Flex from 'components/common/Flex'; +import { Card, OverlayTrigger, Tooltip, Dropdown } from 'react-bootstrap'; +import IconButton from 'components/common/IconButton'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { useNavigate } from 'react-router'; + +const ItemButton = ({ tootltip, icon, className, onClick }) => { + return ( + + {tootltip} + + } + > +
    + +
    +
    + ); +}; + +const EmailDetailHeader = () => { + const navigate = useNavigate(); + + return ( + + +
    + { + navigate('/email/inbox'); + }} + /> + | + + + + + +
    + +
    + 2 of 354 + + +
    + + + + + + Configure inbox + + Settings + Themes + + Send feedback + Help + + +
    +
    +
    + ); +}; + +export default EmailDetailHeader; diff --git a/src/components/app/email/inbox/EmailAttachment.jsx b/src/components/app/email/inbox/EmailAttachment.jsx new file mode 100644 index 0000000..49028a0 --- /dev/null +++ b/src/components/app/email/inbox/EmailAttachment.jsx @@ -0,0 +1,52 @@ +import Flex from 'components/common/Flex'; +import { useState } from 'react'; +import Lightbox from 'yet-another-react-lightbox'; +import 'yet-another-react-lightbox/styles.css'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; + +const getIconClassNames = type => { + switch (type) { + case 'youtube': + return 'text-youtube'; + case 'zip': + return 'text-warning'; + case 'doc': + return 'text-primary'; + case 'img': + return 'text-danger'; + case 'pdf': + return 'text-danger'; + default: + return 'text-primary'; + } +}; + +const EmailAttachment = ({ attachment }) => { + const { fileName, icon, type, src } = attachment; + const [isOpen, setIsOpen] = useState(false); + return ( + setIsOpen(!isOpen)} + > + {type === 'img' && ( + setIsOpen(false)} + /> + )} + + {fileName} + + ); +}; + +export default EmailAttachment; diff --git a/src/components/app/email/inbox/Inbox.jsx b/src/components/app/email/inbox/Inbox.jsx new file mode 100644 index 0000000..ea588d9 --- /dev/null +++ b/src/components/app/email/inbox/Inbox.jsx @@ -0,0 +1,213 @@ +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import Flex from 'components/common/Flex'; +import IconButton from 'components/common/IconButton'; +import { + Alert, + Button, + ButtonGroup, + Card, + Col, + Form, + OverlayTrigger, + Row, + Tooltip +} from 'react-bootstrap'; +import { Link } from 'react-router'; +import classNames from 'classnames'; +import InboxRow from './InboxRow'; +import useBulkSelect from 'hooks/useBulkSelect'; +import InboxFilterDropdown from './InboxFilterDropdown'; +import InboxFooter from './InboxFooter'; +import usePagination from 'hooks/usePagination'; +import paths from 'routes/paths'; +import EmailProvider, { useEmailContext } from 'providers/EmailProvider'; + +const InboxTitle = ({ className, children, ...rest }) => ( +
    + {children} +
    +); + +const ActionButton = ({ + tooltip, + icon, + handleClick, + variant = 'falcon-default' +}) => ( + {tooltip}} + > + + +); + +const InboxElement = () => { + const { + emailState: { emails, filters, currentFilter }, + emailDispatch + } = useEmailContext(); + const { + paginationState: { + data: paginatedEmails, + totalItems, + canNextPage, + canPreviousPage, + from, + to + }, + nextPage, + prevPage + } = usePagination(emails, 10); + + const unreadEmails = paginatedEmails.filter(email => !email.read); + const otherEmails = paginatedEmails.filter(email => email.read); + const emailIds = emails.map(email => email.id); + + const { + selectedItems, + isSelectedItem, + isAllSelected, + isIndeterminate, + toggleSelectedItem, + toggleIsAllSelected + } = useBulkSelect(emailIds); + + const handleActionButtonClick = type => { + emailDispatch({ + type, + payload: selectedItems + }); + toggleIsAllSelected(); + }; + + return ( + + + + + toggleIsAllSelected()} + /> + + {selectedItems.length === 0 && ( + <> + { + emailDispatch({ type: 'RESET' }); + }} + /> + + + )} + {selectedItems.length > 0 && ( +
    + + handleActionButtonClick('ARCHIVE')} + /> + handleActionButtonClick('DELETE')} + /> + handleActionButtonClick('READ')} + /> + handleActionButtonClick('SNOOZE')} + /> + +
    + )} + + + + Compose + + +
    +
    + + {paginatedEmails.length > 0 ? ( + <> + {unreadEmails.length > 0 && Unread} + {unreadEmails.map(email => ( + + ))} + Everything else + {otherEmails.map(email => ( + + ))} + + ) : ( + +
    Inbox empty!
    +
    +

    Emails will be shown here automatically.

    +
    + )} +
    + +
    + ); +}; + +const Inbox = () => { + return ( + + + + ); +}; + +export default Inbox; diff --git a/src/components/app/email/inbox/InboxFilterDropdown.jsx b/src/components/app/email/inbox/InboxFilterDropdown.jsx new file mode 100644 index 0000000..286b65c --- /dev/null +++ b/src/components/app/email/inbox/InboxFilterDropdown.jsx @@ -0,0 +1,60 @@ +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import Flex from 'components/common/Flex'; +import { Dropdown } from 'react-bootstrap'; +import { useAppContext } from 'providers/AppProvider'; +import { useEmailContext } from 'providers/EmailProvider'; + +const InboxFilterDropdownItem = ({ active, children, ...rest }) => ( + + {children} + {active && } + +); + +const InboxFilterDropdown = () => { + const { + emailState: { filters, currentFilter }, + emailDispatch + } = useEmailContext(); + + const { + config: { isRTL } + } = useAppContext(); + + const handleSelect = filter => { + emailDispatch({ + type: 'FILTER', + payload: filter + }); + }; + return ( + + + + + + {filters.map(filter => ( + handleSelect(filter)} + > + {filter} + + ))} + + + ); +}; + +export default InboxFilterDropdown; diff --git a/src/components/app/email/inbox/InboxFooter.jsx b/src/components/app/email/inbox/InboxFooter.jsx new file mode 100644 index 0000000..5f92958 --- /dev/null +++ b/src/components/app/email/inbox/InboxFooter.jsx @@ -0,0 +1,52 @@ +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import Flex from 'components/common/Flex'; +import { Button, Card } from 'react-bootstrap'; +import { useAppContext } from 'providers/AppProvider'; + +const InboxFooter = ({ + totalItems, + from, + to, + canNextPage, + canPreviousPage, + nextPage, + prevPage +}) => { + const { + config: { isRTL } + } = useAppContext(); + + return ( + + + 2.29 GB (13%) of 17 + GB used + +
    + + {from}-{to} of {totalItems} + + + +
    +
    + ); +}; + +export default InboxFooter; diff --git a/src/components/app/email/inbox/InboxRow.jsx b/src/components/app/email/inbox/InboxRow.jsx new file mode 100644 index 0000000..6a66a00 --- /dev/null +++ b/src/components/app/email/inbox/InboxRow.jsx @@ -0,0 +1,186 @@ +import { useState } from 'react'; +import { + Button, + ButtonGroup, + Col, + Form, + OverlayTrigger, + Row, + Tooltip +} from 'react-bootstrap'; +import Flex from 'components/common/Flex'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import classNames from 'classnames'; +import Avatar from 'components/common/Avatar'; +import { Link } from 'react-router'; +import EmailAttachment from './EmailAttachment'; +import SubtleBadge from 'components/common/SubtleBadge'; +import { toast } from 'react-toastify'; +import paths from 'routes/paths'; +import { useEmailContext } from 'providers/EmailProvider'; + +const ActionButton = ({ tooltip, icon, handleClick, variant = 'tertiary' }) => ( + {tooltip}} + > + + +); + +const InboxRow = ({ email, isSelectedItem, toggleSelectedItem }) => { + const { + id, + img, + read, + star, + time, + title, + user, + description, + badge, + attachments + } = email; + + const { emailDispatch } = useEmailContext(); + + const [marked, setMarked] = useState(star); + + const handleActionButtonClick = type => { + emailDispatch({ + type, + payload: [id] + }); + let action = ''; + switch (type) { + case 'ARCHIVE': + action = 'archived'; + break; + case 'DELETE': + action = 'deleted'; + break; + case 'READ': + action = read ? 'unread' : 'read'; + break; + case 'SNOOZE': + action = 'snoozed'; + break; + + default: + break; + } + + toast.success( +
    + Conversation marked as {action} +
    , { + theme: 'colored' + }); + }; + + return ( + + + handleActionButtonClick('ARCHIVE')} + /> + handleActionButtonClick('DELETE')} + /> + handleActionButtonClick('READ')} + /> + handleActionButtonClick('SNOOZE')} + /> + + + + toggleSelectedItem(id)} + /> + setMarked(!marked)} + icon={marked ? 'star' : ['far', 'star']} + // transform="down-2" + className={classNames( + 'ms-1', + { 'text-warning': marked, 'text-300': !marked }, + 'cursor-pointer' + )} + /> + + + + + + + +
    + + {user} + + {!!badge && ( + + {badge} + + )} +
    +
    + + + + {title} + + {description} + + {attachments?.map(attachment => ( + + ))} + +
    + + + {time} + +
    + ); +}; + +export default InboxRow; diff --git a/src/components/app/events/create-an-event/CreateEvent.jsx b/src/components/app/events/create-an-event/CreateEvent.jsx new file mode 100644 index 0000000..cb59449 --- /dev/null +++ b/src/components/app/events/create-an-event/CreateEvent.jsx @@ -0,0 +1,73 @@ +import React from 'react'; +import EventDetails from './EventDetails'; +import EventTicket from './EventTicket'; +import EventSchedule from './EventSchedule'; +import EventHeader from './EventHeader'; +import EventUpload from './EventUpload'; +import EventFooter from './EventFooter'; +import { Col, Form, Row } from 'react-bootstrap'; +import EventOtherInfo from './EventOtherInfo'; +import EventBanner from './EventBanner'; +import { useForm } from 'react-hook-form'; +import EventCustomField from './EventCustomField'; + +const CreateEvent = () => { + const defaultValues = { + timeZone: 'GMT-12:00/Etc/GMT-12', + selectType: '1', + selectTopic: '1' + }; + const submittedValues = {}; + const { register, handleSubmit, setValue, control, reset } = useForm({ + defaultValues + }); + + const onSubmit = data => { + console.log(data); + // ------- Get all object keys form data and set empty values to reset ------------ + const keys = Object.keys(data); + for (const key of keys) { + submittedValues[key] = ''; + } + const allValues = { ...submittedValues, ...defaultValues }; + reset({ ...allValues }); + }; + + return ( +
    + + + + + + + + + + + + + + + +
    + +
    + + + + +
    +
    + ); +}; + +export default CreateEvent; diff --git a/src/components/app/events/create-an-event/EventBanner.jsx b/src/components/app/events/create-an-event/EventBanner.jsx new file mode 100644 index 0000000..dff6479 --- /dev/null +++ b/src/components/app/events/create-an-event/EventBanner.jsx @@ -0,0 +1,21 @@ +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import eventBanner from 'assets/img/generic/13.jpg'; +import React from 'react'; +import { Card, Form, Image } from 'react-bootstrap'; + +const EventBanner = () => { + return ( + + ... + + + + Upload cover photo + + + + + ); +}; + +export default EventBanner; diff --git a/src/components/app/events/create-an-event/EventCustomField.jsx b/src/components/app/events/create-an-event/EventCustomField.jsx new file mode 100644 index 0000000..8ffce5f --- /dev/null +++ b/src/components/app/events/create-an-event/EventCustomField.jsx @@ -0,0 +1,149 @@ +import { Card, Row, Col, Form } from 'react-bootstrap'; +import { useState } from 'react'; +import { useEffect } from 'react'; +import IconButton from 'components/common/IconButton'; + +import { v4 as uuid } from 'uuid'; +import EventCustomFieldItem from './EventCustomFieldItem'; + +const EventCustomField = ({ register, setValue }) => { + const [name, setName] = useState(''); + const [type, setType] = useState('text'); + const [options, setOptions] = useState(''); + const [hasOptions, setHasOptions] = useState(false); + const [disabled, setDisabled] = useState(true); + const [customFields, setCustomFields] = useState([]); + + const handleRemove = id => { + const items = customFields.filter(fields => fields.id !== id); + setCustomFields(items); + }; + + const handleSubmit = () => { + if (hasOptions) { + const updatedOptions = options.split(','); + setCustomFields([ + ...customFields, + { name, type, options: updatedOptions, id: uuid() } + ]); + } else { + setCustomFields([...customFields, { name, type, id: uuid() }]); + } + + setName(''); + setType('text'); + setOptions(''); + setHasOptions(false); + setDisabled(true); + }; + + // Handler + useEffect(() => { + setHasOptions( + type === 'select' || type === 'checkboxes' || type === 'radio' + ); + }, [type]); + + useEffect(() => { + let disableState = true; + if (!hasOptions && name.length) { + disableState = false; + } + if (hasOptions && options.length && name.length) { + disableState = false; + } + setDisabled(disableState); + }, [name, type, hasOptions, options]); + + return ( + + Custom Fields + {customFields.length > 0 && ( + + {customFields.map((customField, index) => ( + + ))} + + )} + +
    + + + + Name + setName(target.value)} + /> + + + + + Type + setType(target.value)} + > + + + + + + + + + + + + + + + + {hasOptions && ( + + + Field Option + setOptions(target.value)} + /> + + * Separate your options with comma + + + + )} + + handleSubmit()} + > + Add Item + + + +
    +
    +
    + ); +}; + +export default EventCustomField; diff --git a/src/components/app/events/create-an-event/EventCustomFieldItem.jsx b/src/components/app/events/create-an-event/EventCustomFieldItem.jsx new file mode 100644 index 0000000..4765593 --- /dev/null +++ b/src/components/app/events/create-an-event/EventCustomFieldItem.jsx @@ -0,0 +1,272 @@ +import { useState } from 'react'; +import { Form, Button } from 'react-bootstrap'; +import DatePicker from 'react-datepicker'; +import CustomDateInput from 'components/common/CustomDateInput'; +import classNames from 'classnames'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; + +const CustomButton = ({ handleRemove, id }) => { + return ( +
    + +
    + ); +}; + +const EventCustomFieldItem = ({ + name, + type, + options, + index, + register, + setValue, + id, + handleRemove +}) => { + const [date, setDate] = useState(null); + const [time, setTime] = useState(null); + + { + switch (type) { + case 'number': + return ( + + {name} + + + + ); + case 'password': + return ( + + + {name} + + + ); + + case 'email': + return ( + + + {name} + + + ); + + case 'checkboxes': + return ( + + + {name} + + {options.map((option, key) => ( + + + {option} + + ))} + + ); + case 'radio': + return ( + + + {name} + + {options.map((option, key) => ( + + + {option} + + ))} + + ); + + case 'select': + return ( + + + {name} + + {options.map((option, key) => ( + + ))} + + + ); + + case 'textarea': + return ( + + + {name} + + + ); + + case 'file': + return ( + + + {name} + + + ); + + case 'time': + return ( + + + {name} + { + setTime(newDate); + setValue(`customField${index}`, newDate); + }} + customInput={ + + } + /> + + ); + case 'date': + return ( + + + {name} + { + setDate(newDate); + setValue(`customField${index}`, newDate); + }} + customInput={ + + } + /> + + ); + + default: + return ( + + + {name} + + + ); + } + } +}; + +export default EventCustomFieldItem; diff --git a/src/components/app/events/create-an-event/EventDetails.jsx b/src/components/app/events/create-an-event/EventDetails.jsx new file mode 100644 index 0000000..0585c93 --- /dev/null +++ b/src/components/app/events/create-an-event/EventDetails.jsx @@ -0,0 +1,253 @@ +import CustomDateInput from 'components/common/CustomDateInput'; +import { timezones } from 'data/events/timezones'; +import { useState } from 'react'; +import { Button, Card, Col, Form, Row } from 'react-bootstrap'; +import DatePicker from 'react-datepicker'; + +const EventDetails = ({ register, setValue }) => { + const [formData, setFormData] = useState({ + startDate: null, + endDate: null, + regDate: null, + startTime: null, + endTime: null + }); + + const handleChange = (name, value) => { + setFormData({ + ...formData, + [name]: value + }); + }; + + return ( + + Event Details + + + + + Event Title + + + + + + Start Date + { + handleChange('startDate', newDate); + setValue('startDate', newDate); + }} + customInput={ + + } + /> + + + + + Start Time + { + handleChange('startTime', newDate); + setValue('startTime', newDate); + }} + customInput={ + + } + /> + + + + + End Date + + { + handleChange('endDate', newDate); + setValue('endDate', newDate); + }} + customInput={ + + } + /> + + + + + End Time + + { + handleChange('endTime', newDate); + setValue('endTime', newDate); + }} + customInput={ + + } + /> + + + + + Registration Deadline + { + handleChange('regDate', newDate); + setValue('regDate', newDate); + }} + customInput={ + + } + /> + + + + + Timezone + + {timezones.map(item => ( + + ))} + + + + + +
    + + + + Venue + + + + + + + Address + + + + + + City + + + + + + State + + + + + + Country + + + + + + Description + + + +
    +
    +
    + ); +}; + +export default EventDetails; diff --git a/src/components/app/events/create-an-event/EventFooter.jsx b/src/components/app/events/create-an-event/EventFooter.jsx new file mode 100644 index 0000000..1d9833b --- /dev/null +++ b/src/components/app/events/create-an-event/EventFooter.jsx @@ -0,0 +1,31 @@ +import React from 'react'; +import { Card, Col, Button, Row } from 'react-bootstrap'; + +const EventFooter = () => { + return ( + + + + +
    Nice Job! You're almost done
    + + + + + +
    +
    +
    + ); +}; + +export default EventFooter; diff --git a/src/components/app/events/create-an-event/EventHeader.jsx b/src/components/app/events/create-an-event/EventHeader.jsx new file mode 100644 index 0000000..3f80684 --- /dev/null +++ b/src/components/app/events/create-an-event/EventHeader.jsx @@ -0,0 +1,31 @@ +import React from 'react'; +import { Card, Col, Button, Row } from 'react-bootstrap'; + +const EventHeader = () => { + return ( + + + + +
    Create Event
    + + + + + +
    +
    +
    + ); +}; + +export default EventHeader; diff --git a/src/components/app/events/create-an-event/EventOtherInfo.jsx b/src/components/app/events/create-an-event/EventOtherInfo.jsx new file mode 100644 index 0000000..9a96945 --- /dev/null +++ b/src/components/app/events/create-an-event/EventOtherInfo.jsx @@ -0,0 +1,169 @@ +import Flex from 'components/common/Flex'; +import MultiSelect from 'components/common/MultiSelect'; +import { Button, Card, Form } from 'react-bootstrap'; +import { Controller } from 'react-hook-form'; + +const EventOtherInfo = ({ register, control }) => { + const organizerOptions = [ + { value: '1', label: ' Massachusetts Institute of Technology' }, + { value: '2', label: 'University of Chicago' }, + { value: '3', label: 'GSAS Open Labs At Harvard' }, + { value: '4', label: 'California Institute of Technology' } + ]; + const sponsorsOptions = [ + { value: '1', label: 'Microsoft Corporation' }, + { value: '2', label: 'Technext Limited' }, + { value: '3', label: ' Hewlett-Packard' } + ]; + const tagOptions = [ + { value: '1', label: 'Concert' }, + { value: '2', label: 'New Year' }, + { value: '3', label: 'Party' } + ]; + return ( + + Other Info + + + + Organizer + + + ( + + )} + control={control} + /> + + + + Sponsors + + + ( + + )} + control={control} + /> + + + + Event Type + + + + + + + + + + + + + Event Topic + + + + + + + + + + + + + + + + + Tags + + + ( + + )} + control={control} + /> + + +
    +
    Listing Privacy
    + + + + + Public page: + +
    + Discoverable by anyone on Falcon, our distribution partners, and + search engines. +
    +
    + + + + Private page: + +
    + Accessible only by people you specify. +
    +
    +
    + +
    Remaining Tickets
    + +
    +
    + ); +}; + +export default EventOtherInfo; diff --git a/src/components/app/events/create-an-event/EventSchedule.jsx b/src/components/app/events/create-an-event/EventSchedule.jsx new file mode 100644 index 0000000..cb2a882 --- /dev/null +++ b/src/components/app/events/create-an-event/EventSchedule.jsx @@ -0,0 +1,71 @@ +import { useState } from 'react'; +import { Card } from 'react-bootstrap'; +import IconButton from 'components/common/IconButton'; +import EventScheduleItem from './EventScheduleItem'; + +const EventSchedule = ({ register, setValue }) => { + const [items, setItems] = useState([ + { + title: '', + startDate: null, + startTime: null, + endDate: null, + endTime: null + } + ]); + const handleAddSchedule = () => { + setItems([ + ...items, + { + title: '', + startDate: null, + startTime: null, + endDate: null, + endTime: null + } + ]); + }; + const handleRemoveItem = index => { + setItems(items.filter((item, ind) => index !== ind)); + }; + const handleChange = (id, name, value) => { + const newItems = [...items]; + const updatedItem = { ...newItems[id], [name]: value }; + setItems([ + ...newItems.slice(0, id), + updatedItem, + ...newItems.slice(id + 1) + ]); + }; + + return ( + + Schedule + + {items.map((item, index) => ( + + ))} + + + Add Item + + + + ); +}; + +export default EventSchedule; diff --git a/src/components/app/events/create-an-event/EventScheduleItem.jsx b/src/components/app/events/create-an-event/EventScheduleItem.jsx new file mode 100644 index 0000000..dc011d2 --- /dev/null +++ b/src/components/app/events/create-an-event/EventScheduleItem.jsx @@ -0,0 +1,143 @@ +import { Col, Form, Row, Button } from 'react-bootstrap'; +import DatePicker from 'react-datepicker'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import CustomDateInput from 'components/common/CustomDateInput'; + +const EventScheduleItem = ({ + index, + title, + handleRemove, + handleChange, + startDate, + startTime, + endDate, + endTime, + register, + setValue +}) => { + return ( +
    +
    + +
    + + + + + Title + + + + + + Start Date + + { + handleChange(index, 'startDate', newDate); + setValue(`ScheduleStartDate${index}`, newDate); + }} + customInput={ + + } + /> + + + + + + Start Time + { + handleChange(index, 'startTime', newDate); + setValue(`ScheduleStartTime${index}`, newDate); + }} + customInput={ + + } + /> + + + + + End Date + + { + handleChange(index, 'endDate', newDate); + setValue(`ScheduleEndDate${index}`, newDate); + }} + customInput={ + + } + /> + + + + + End Time + { + handleChange(index, 'endTime', newDate); + setValue(`ScheduleEndTime${index}`, newDate); + }} + customInput={ + + } + /> + + + +
    + ); +}; +export default EventScheduleItem; \ No newline at end of file diff --git a/src/components/app/events/create-an-event/EventTicket.jsx b/src/components/app/events/create-an-event/EventTicket.jsx new file mode 100644 index 0000000..bf18754 --- /dev/null +++ b/src/components/app/events/create-an-event/EventTicket.jsx @@ -0,0 +1,163 @@ +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import IconButton from 'components/common/IconButton'; +import React, { useState } from 'react'; +import { + Button, + Card, + Form, + FormControl, + InputGroup, + Table +} from 'react-bootstrap'; +import SimpleBar from 'simplebar-react'; + +const TicketRow = ({ + name, + price, + checked = false, + id, + handleChange, + handleRemove +}) => { + return ( + + + handleChange(id, 'name', target.value)} + /> + + + + $ + handleChange(id, 'price', target.value)} + /> + + + + handleChange(id, 'checked', target.checked)} + /> + + + + + + ); +}; + +const EventTicket = () => { + const [tickets, setTickets] = useState([ + { name: 'Front desks', price: 0.0, checked: true }, + { name: 'Green gallery', price: 5.0 }, + { name: 'VIP', price: 20.0 } + ]); + + // Change Ticket + const changeTicket = (id, name, value) => { + const updatedTickets = + name === 'checked' + ? tickets.map(ticket => ({ ...ticket, checked: false })) + : [...tickets]; + const updatedTicket = { ...tickets[id], [name]: value }; + + setTickets([ + ...updatedTickets.slice(0, id), + updatedTicket, + ...updatedTickets.slice(id + 1) + ]); + }; + + // Remove Ticket + const removeTicket = id => + setTickets([...tickets.slice(0, id), ...tickets.slice(id + 1)]); + + const handleAddTicket = () => { + setTickets([...tickets, { name: '', price: 0 }]); + }; + + return ( + + Ticket Price + + + + + +
    +
    Pricing Options:
    + + + + + + + + + + + + + + + {tickets.map((item, index) => ( + + ))} + +
    Option NamePriceDefault
    +
    + + + Add Item + +
    +
    + ); +}; + +export default EventTicket; diff --git a/src/components/app/events/create-an-event/EventUpload.jsx b/src/components/app/events/create-an-event/EventUpload.jsx new file mode 100644 index 0000000..16e71ab --- /dev/null +++ b/src/components/app/events/create-an-event/EventUpload.jsx @@ -0,0 +1,91 @@ +import { useState } from 'react'; +import { useDropzone } from 'react-dropzone'; +import Flex from 'components/common/Flex'; +import cloudUpload from 'assets/img/icons/cloud-upload.svg'; +import CardDropdown from 'components/common/CardDropdown'; +import { getSize } from 'helpers/utils'; +import { Card, Dropdown } from 'react-bootstrap'; + +const EventUpload = ({ setValue }) => { + const [files, setFiles] = useState([]); + + const { getRootProps, getInputProps } = useDropzone({ + accept: { + 'image/*': ['.jpeg', '.png', '.jpg'] + }, + onDrop: acceptedFiles => { + setValue('uploadedFiles', acceptedFiles); + setFiles([ + ...files, + ...acceptedFiles.map(file => + Object.assign(file, { + preview: URL.createObjectURL(file) + }) + ) + ]); + } + }); + + const handleRemove = path => { + setFiles(files.filter(file => file.path !== path)); + }; + + return ( + + Upload Photos + +
    + + + +

    Drop your images here

    +
    +
    +
    + {files.map(file => ( + + {file.path} + + +
    +
    {file.path}
    + +

    + {getSize(file.size)} +

    +
    +
    +
    + +
    + handleRemove(file.path)} + > + Remove + +
    +
    +
    + ))} +
    +
    +
    + ); +}; + +export default EventUpload; diff --git a/src/components/app/events/event-detail/EventDetail.jsx b/src/components/app/events/event-detail/EventDetail.jsx new file mode 100644 index 0000000..35104d6 --- /dev/null +++ b/src/components/app/events/event-detail/EventDetail.jsx @@ -0,0 +1,23 @@ +import React from 'react'; +import { Col, Row } from 'react-bootstrap'; +import EventDetailAside from './EventDetailAside'; +import EventDetailContent from './EventDetailContent'; +import EventDetailHeader from './EventDetailHeader'; + +const EventDetail = () => { + return ( + <> + + + + + + + + + + + ); +}; + +export default EventDetail; diff --git a/src/components/app/events/event-detail/EventDetailAside.jsx b/src/components/app/events/event-detail/EventDetailAside.jsx new file mode 100644 index 0000000..0de5a3a --- /dev/null +++ b/src/components/app/events/event-detail/EventDetailAside.jsx @@ -0,0 +1,38 @@ +import Events from 'components/pages/user/profile/Events'; +import React from 'react'; +import { Card } from 'react-bootstrap'; +import { Link } from 'react-router'; +import events from 'data/events/events'; + +const EventDetailAside = () => { + return ( +
    + + +
    Date And Time
    +

    + Mon, Dec 31, 2018, 11:59 PM –
    + Tue, Jan 1, 2019, 12:19 AM EST +

    + Add to Calendar +
    Location
    +
    + Boston Harborwalk +
    + Christopher Columbus Park +
    + Boston, MA 02109 +
    + United States +
    + View Map +
    Refund Policy
    +

    No Refunds

    +
    +
    + +
    + ); +}; + +export default EventDetailAside; diff --git a/src/components/app/events/event-detail/EventDetailContent.jsx b/src/components/app/events/event-detail/EventDetailContent.jsx new file mode 100644 index 0000000..e17fb60 --- /dev/null +++ b/src/components/app/events/event-detail/EventDetailContent.jsx @@ -0,0 +1,66 @@ +import IconGroup from 'components/common/icon/IconGroup'; +import React from 'react'; +import { Card } from 'react-bootstrap'; +import { Link } from 'react-router'; +import EventDetailsGmap from './EventDetailsGmap'; +import socialIcons from 'data/socialIcons'; + +const EventDetailContent = () => { + return ( + + +
    New Year's Eve on the Waterfront
    +

    + Boston Harbor Now in partnership with the Friends of Christopher + Columbus Park, the Wharf District Council and the City of Boston is + proud to announce the New Year's Eve Midnight Harbor Fireworks! This + beloved nearly 40-year old tradition is made possible by the generous + support of local waterfront organizations and businesses and the + support of the City of Boston and the Office of Mayor Marty Walsh. +

    +

    + Join us as we ring in the New Year with a dazzling display over Boston + Harbor. Public viewing is free and available from the Harborwalk of + these suggested viewing locations: +

    +
      +
    • Christopher Columbus Park, North End
    • +
    • Fan Pier, Seaport District
    • +
    • East Boston Harborwalk
    • +
    +

    The show will begin promptly at midnight.

    +

    + Register here for a reminder and updates about the harbor fireworks + and other waterfront public programs as they become available. Be the + first to be notified for popular waterfront New Year's Eve public + activities. +

    +
    Tags
    + + Things To Do In Brooklyn, NY + + + Party + + + Music + +
    Share with friends
    + + + +
    +
    + ); +}; + +export default EventDetailContent; diff --git a/src/components/app/events/event-detail/EventDetailHeader.jsx b/src/components/app/events/event-detail/EventDetailHeader.jsx new file mode 100644 index 0000000..a7942bb --- /dev/null +++ b/src/components/app/events/event-detail/EventDetailHeader.jsx @@ -0,0 +1,74 @@ +import React from 'react'; +import eventBanner from 'assets/img/generic/13.jpg'; +import { Card, Row, Col, Button } from 'react-bootstrap'; +import Flex from 'components/common/Flex'; +import Calendar from 'components/common/Calendar'; +import { Link } from 'react-router'; +import IconButton from 'components/common/IconButton'; + +const EventDetailHeader = () => { + const eventInfo = { + title: `FREE New Year's Eve Midnight Harbor Fireworks`, + eventDate: { day: '31', month: 'Dec' }, + author: 'Boston Harbor Now', + regFee: `$49.99 – $89.99` + }; + return ( + + {!!eventBanner && ( + + )} + + + + + +
    +
    {eventInfo.title}
    +

    + by + + {eventInfo.author} + +

    + + {eventInfo.regFee} + +
    +
    + + + + + 235 + + + Share + + + + +
    +
    +
    + ); +}; + +export default EventDetailHeader; diff --git a/src/components/app/events/event-detail/EventDetailsGmap.jsx b/src/components/app/events/event-detail/EventDetailsGmap.jsx new file mode 100644 index 0000000..bf091fa --- /dev/null +++ b/src/components/app/events/event-detail/EventDetailsGmap.jsx @@ -0,0 +1,23 @@ +import GoogleMap from 'components/map/GoogleMap'; + +const EventDetailsGmap = () => { + return <> + +
    Arham Engineering Limited
    +

    + House # 783 + Road # 11 Avenue 3 + Dhaka 1216 + Bangladesh +

    +
    + ; +}; + +export default EventDetailsGmap; diff --git a/src/components/app/events/event-list/Event.jsx b/src/components/app/events/event-list/Event.jsx new file mode 100644 index 0000000..42b5aa2 --- /dev/null +++ b/src/components/app/events/event-list/Event.jsx @@ -0,0 +1,51 @@ +import Calendar from 'components/common/Calendar'; +import Flex from 'components/common/Flex'; +import { Link } from 'react-router'; +import paths from 'routes/paths'; + +const Event = ({ details, isLast }) => { + const { + calendar, + title, + organizer, + badge = {}, + time, + place, + location, + duration, + interested + } = details; + return ( + + +
    +
    + + {title} + {badge.title && ( + + {badge.title} + + )} + +
    +

    + Organized by + + {organizer} + +

    +

    Time: {time}

    + + {duration &&

    Duration: {duration}

    } + {interested &&

    {interested}

    } + {location &&

    Location: {location}

    } + +

    Place: {place}

    + {!isLast &&
    } +
    +
    + ); +}; + +export default Event; diff --git a/src/components/app/events/event-list/EventList.jsx b/src/components/app/events/event-list/EventList.jsx new file mode 100644 index 0000000..02c1a69 --- /dev/null +++ b/src/components/app/events/event-list/EventList.jsx @@ -0,0 +1,47 @@ +import React from 'react'; +import { Card, Col, Row, Form } from 'react-bootstrap'; +import events from 'data/events/events'; +import Event from './Event'; +import Flex from 'components/common/Flex'; + +const EventList = () => { + return ( + + +
    Events
    + + + + + + + + + + + + + + + + +
    + + + {events.map((event, index) => ( + + + + ))} + + +
    + ); +}; + +export default EventList; diff --git a/src/components/app/kanban/AddAnotherForm.jsx b/src/components/app/kanban/AddAnotherForm.jsx new file mode 100644 index 0000000..bc55de4 --- /dev/null +++ b/src/components/app/kanban/AddAnotherForm.jsx @@ -0,0 +1,79 @@ +import classNames from 'classnames'; +import { useEffect, useRef, useState } from 'react'; +import { Button, Col, Form, Row } from 'react-bootstrap'; + +const AddAnotherForm = ({ + onSubmit: handleSubmit, + type, + showForm, + setShowForm +}) => { + const [formData, setFormData] = useState({}); + const inputRef = useRef(null); + + useEffect(() => { + if (showForm) { + inputRef.current.focus(); + } + }, [showForm]); + + return ( + <> + {showForm && ( +
    +
    { + e.preventDefault(); + return handleSubmit(formData); + }} + > + + setFormData({ ...formData, title: target.value }) + } + placeholder={ + type === 'list' + ? 'Enter list title...' + : 'Enter a title for this card...' + } + /> + + + + + + + + + +
    + )} + + ); +}; + +export default AddAnotherForm; diff --git a/src/components/app/kanban/GroupMember.jsx b/src/components/app/kanban/GroupMember.jsx new file mode 100644 index 0000000..9ef5ce2 --- /dev/null +++ b/src/components/app/kanban/GroupMember.jsx @@ -0,0 +1,172 @@ +import { useState } from 'react'; +import Avatar, { AvatarGroup } from 'components/common/Avatar'; +import { Dropdown, Form, Nav, OverlayTrigger, Tooltip } from 'react-bootstrap'; +import classNames from 'classnames'; +import Flex from 'components/common/Flex'; +import { Link } from 'react-router'; +import { useAppContext } from 'providers/AppProvider'; +import paths from 'routes/paths'; + +const GroupMember = ({ + avatarSize = 'l', + users, + showMember = 4, + addMember, + className +}) => { + const { + config: { isRTL } + } = useAppContext(); + const [searchTerm, setSearchTerm] = useState(''); + + return ( +
    + + {users.slice(0, showMember).map((user, index) => ( + + 0 + })} + > + + + + + + + + +
    +
    + + {user.name} + +
    +

    {user.role}

    +
    +
    + + Member Rule + + Remove Member + +
    +
    + ))} + {(users.length > showMember || addMember) && ( + + + {!addMember ? ( + + ) : ( + + )} + + + +
    + {!addMember ? 'Board Members' : 'Select Member'} +
    + + {!addMember ? ( + + {users.map(user => ( + +
    + + {user.name} + + } + > +
    + +
    +
    +
    + + ))} +
    + ) : ( + <> +
    + setSearchTerm(e.target.value)} + /> + +
      + {users + .filter(user => { + if (!searchTerm) { + return user; + } else if ( + user.name + .toLowerCase() + .includes(searchTerm.toLowerCase().trim()) + ) { + return user; + } + }) + .map(user => ( +
    • + + + +
      +
      {user.name}
      +
      +
      + +
    • + ))} +
    + + )} +
    +
    + )} +
    +
    + ); +}; + +export default GroupMember; diff --git a/src/components/app/kanban/InviteToBoard.jsx b/src/components/app/kanban/InviteToBoard.jsx new file mode 100644 index 0000000..8f42949 --- /dev/null +++ b/src/components/app/kanban/InviteToBoard.jsx @@ -0,0 +1,109 @@ +import React, { useRef, useState } from 'react'; +import { + Dropdown, + Form, + OverlayTrigger, + Tooltip, + Button +} from 'react-bootstrap'; +import Flex from 'components/common/Flex'; +import IconButton from 'components/common/IconButton'; +import { copyToClipBoard } from 'helpers/utils'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { useAppContext } from 'providers/AppProvider'; + +const InviteToBoard = () => { + const [tooltipText, setTooltipText] = useState('Copy link to invite'); + const copyTextRef = useRef(null); + const copyBtnRef = useRef(null); + const { + config: { isRTL } + } = useAppContext(); + + const handleCopyText = () => { + copyToClipBoard(copyTextRef); + setTooltipText('Copied to Clipboard!'); + }; + + return ( + + + + Invite + + +
    Invite To Board
    + +
    +
    +
    + +
    + Anyone with the link can join +
    +
    + + {tooltipText} + + } + > +
    + + setTooltipText('Copy link to invite') + } + ref={copyBtnRef} + onClick={handleCopyText} + variant="link" + size="sm" + icon={['far', 'copy']} + className="text-decoration-none hover-primary rounded-0 fs-11" + iconClassName="me-2" + > + Copy link + +
    +
    +
    +
    + +
    + + + +
    +
    +
    + ); +}; + +export default InviteToBoard; diff --git a/src/components/app/kanban/Kanban.jsx b/src/components/app/kanban/Kanban.jsx new file mode 100644 index 0000000..2175de8 --- /dev/null +++ b/src/components/app/kanban/Kanban.jsx @@ -0,0 +1,35 @@ +import React, { useEffect, useState } from 'react'; +import KanbanHeader from './KanbanHeader'; +import KanbanContainer from './KanbanContainer'; +import { useAppContext } from 'providers/AppProvider'; +import KanbanProvider from 'providers/KanbanProvider'; + +const Kanban = () => { + const { + config: { isFluid, isNavbarVerticalCollapsed }, + setConfig + } = useAppContext(); + const [kanbanIsFluid] = useState(isFluid); + const [kanbanIsNavbarVerticalCollapsed] = useState(isNavbarVerticalCollapsed); + + useEffect(() => { + setConfig('isFluid', true); + setConfig('isNavbarVerticalCollapsed', true); + + return () => { + setConfig('isFluid', kanbanIsFluid); + setConfig('isNavbarVerticalCollapsed', kanbanIsNavbarVerticalCollapsed); + }; + }, []); + + return ( + <> + + + + + + ); +}; + +export default Kanban; diff --git a/src/components/app/kanban/KanbanColumn.jsx b/src/components/app/kanban/KanbanColumn.jsx new file mode 100644 index 0000000..45edb30 --- /dev/null +++ b/src/components/app/kanban/KanbanColumn.jsx @@ -0,0 +1,123 @@ +import { useEffect, useRef, useState } from 'react'; +import KanbanColumnHeader from './KanbanColumnHeader'; +import TaskCard from './TaskCard'; +import AddAnotherForm from './AddAnotherForm'; +import IconButton from 'components/common/IconButton'; +import classNames from 'classnames'; +import { useKanbanContext } from 'providers/KanbanProvider'; +import { v4 as uuid } from 'uuid'; +import { + SortableContext, + useSortable, + verticalListSortingStrategy +} from '@dnd-kit/sortable'; + +const KanbanColumn = ({ kanbanColumnItem, overId }) => { + const { kanbanDispatch, cardHeight } = useKanbanContext(); + const { id, name, items } = kanbanColumnItem; + const [showForm, setShowForm] = useState(false); + const formViewRef = useRef(null); + + const { setNodeRef, listeners, attributes, isDragging } = useSortable({ + id: kanbanColumnItem.id, + data: { + type: 'column' + }, + disabled: showForm, + transition: { + duration: 1000, + easing: 'linear' + } + }); + + const handleSubmit = cardData => { + const randomNumber = parseInt(uuid().replace(/-/g, '').slice(0, 12), 16); + const newCard = { + id: randomNumber, + title: cardData.title + }; + const isEmpty = !Object.keys(cardData).length; + + if (!isEmpty) { + kanbanDispatch({ + type: 'ADD_TASK_CARD', + payload: { targetListId: id, newCard } + }); + setShowForm(false); + } + }; + + useEffect(() => { + const timeout = setTimeout(() => { + formViewRef.current.scrollIntoView({ behavior: 'smooth' }); + }, 500); + + return clearTimeout(timeout); + }, [showForm]); + + return ( +
    + +
    +
    e.stopPropagation()} + > + item.id)} + strategy={verticalListSortingStrategy} + > + {items.map((task, index) => ( + + ))} + + {isDragging && overId === kanbanColumnItem.id && ( +
    + )} + { + + } +
    +
    + {!showForm && ( +
    + setShowForm(true)} + > + Add another card + +
    + )} +
    +
    + ); +}; + +export default KanbanColumn; diff --git a/src/components/app/kanban/KanbanColumnHeader.jsx b/src/components/app/kanban/KanbanColumnHeader.jsx new file mode 100644 index 0000000..316bb1c --- /dev/null +++ b/src/components/app/kanban/KanbanColumnHeader.jsx @@ -0,0 +1,43 @@ +import { Dropdown } from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { useKanbanContext } from 'providers/KanbanProvider'; + +const KanbanColumnHeader = ({ id, title, itemCount }) => { + const { kanbanDispatch } = useKanbanContext(); + + const handleRemoveColumn = () => { + kanbanDispatch({ + type: 'REMOVE_KANBAN_COLUMN', + payload: { id } + }); + }; + + return ( +
    +
    + {title} ({itemCount}) +
    + + + + + + + Add Card + Edit + Copy link + + + Remove + + + +
    + ); +}; + +export default KanbanColumnHeader; diff --git a/src/components/app/kanban/KanbanContainer.jsx b/src/components/app/kanban/KanbanContainer.jsx new file mode 100644 index 0000000..a4af661 --- /dev/null +++ b/src/components/app/kanban/KanbanContainer.jsx @@ -0,0 +1,206 @@ +import React, { useEffect, useRef, useState } from 'react'; +import KanbanColumn from './KanbanColumn'; +import AddAnotherForm from './AddAnotherForm'; +import KanbanModal from './KanbanModal'; +import IconButton from 'components/common/IconButton'; +import is from 'is_js'; +import { useKanbanContext } from 'providers/KanbanProvider'; +import { DndContext, closestCorners, DragOverlay } from '@dnd-kit/core'; + +import { useGetDndSensor } from 'hooks/useGetDndSensor'; + +import { arrayMove } from '@dnd-kit/sortable'; +import TaskCard from './TaskCard'; + +const KanbanContainer = () => { + const { + kanbanState: { kanbanItems, kanbanModal }, + kanbanDispatch + } = useKanbanContext(); + + const [showForm, setShowForm] = useState(false); + const containerRef = useRef(null); + const [activeTask, setActiveTask] = useState(null); + const [overId, setOverId] = useState(null); + + const sensor = useGetDndSensor(); + + const handleSubmit = listData => { + const listId = Math.max(...kanbanItems.map(item => item.id)) + 1; + const newList = { + id: listId, + name: listData.title, + items: [] + }; + const isEmpty = !Object.keys(listData).length; + + if (!isEmpty) { + kanbanDispatch({ + type: 'ADD_KANBAN_COLUMN', + payload: newList + }); + setShowForm(false); + } + }; + + useEffect(() => { + if (is.ipad()) { + containerRef.current.classList.add('ipad'); + } + + if (is.mobile()) { + containerRef.current.classList.add('mobile'); + if (is.safari()) { + containerRef.current.classList.add('safari'); + } + if (is.chrome()) { + containerRef.current.classList.add('chrome'); + } + } + }, []); + + const findColumn = id => { + return kanbanItems.find( + col => col.items.some(item => item.id === id) || col.id === id + ); + }; + + const getColumnIndex = (items, id) => { + return items.findIndex(item => item.id === Number(id)); + }; + + const handleDragStart = event => { + setActiveTask(event.active.data.current); + }; + const handleDragOver = event => { + const { active, over } = event; + if (!active || !over) return; + + const activeId = active.id; + const overId = over.id; + + setOverId(overId); + + const activeColumn = findColumn(activeId); + const overColumn = findColumn(overId); + + if (!activeColumn || !overColumn) return; + + if (activeColumn.id !== overColumn.id) { + const overItems = overColumn.items; + const activeItems = activeColumn.items; + + const activeIndex = getColumnIndex(activeItems, activeId); + const overIndex = getColumnIndex(overItems, overId); + + const newIndex = overIndex >= 0 ? overIndex + 1 : overItems.length; + + kanbanDispatch({ + type: 'UPDATE_DUAL_COLUMN', + payload: { + sourceColumn: activeColumn, + updatedSourceItems: activeItems.filter(item => item.id !== activeId), + destColumn: overColumn, + updatedDestItems: [ + ...overItems.slice(0, newIndex), + activeItems[activeIndex], + ...overItems.slice(newIndex) + ] + } + }); + } + }; + const handleDragEnd = ({ active, over }) => { + if (!active || !over) return; + + const activeColumnId = active.data.current?.columnId; + const overColumnId = over.data.current?.columnId || over.id; + + if (!activeColumnId || !overColumnId) return; + + if (activeColumnId === overColumnId) { + const column = kanbanItems.find(col => col.id === activeColumnId); + const oldIndex = column.items.findIndex(item => item.id === active.id); + const newIndex = column.items.findIndex(item => item.id === over.id); + + if (oldIndex < 0 || newIndex < 0) return; + + const reorderedItems = arrayMove(column.items, oldIndex, newIndex); + + kanbanDispatch({ + type: 'UPDATE_SINGLE_COLUMN', + payload: { column, reorderedItems } + }); + } else { + const sourceColumn = kanbanItems.find(col => col.id === activeColumnId); + const destColumn = kanbanItems.find(col => col.id === overColumnId); + + const activeTask = sourceColumn.items.find(item => item.id === active.id); + if (!activeTask) return; + + const updatedSourceItems = sourceColumn.items.filter( + item => item.id !== active.id + ); + const updatedDestItems = [...destColumn.items, activeTask]; + + kanbanDispatch({ + type: 'UPDATE_DUAL_COLUMN', + payload: { + sourceColumn, + updatedSourceItems, + destColumn, + updatedDestItems + } + }); + } + + setActiveTask(null); + }; + + return ( + +
    + {kanbanItems.map(kanbanColumnItem => ( + + ))} +
    + + {!showForm && ( + setShowForm(true)} + > + Add another list + + )} +
    + +
    + + {activeTask && ( + + )} + +
    + ); +}; + +export default KanbanContainer; diff --git a/src/components/app/kanban/KanbanHeader.jsx b/src/components/app/kanban/KanbanHeader.jsx new file mode 100644 index 0000000..f5c9f4a --- /dev/null +++ b/src/components/app/kanban/KanbanHeader.jsx @@ -0,0 +1,60 @@ +import React from 'react'; +import { Row, Col, Dropdown, Button } from 'react-bootstrap'; +import IconButton from 'components/common/IconButton'; +import { members } from 'data/kanban'; +import GroupMember from './GroupMember'; +import InviteToBoard from './InviteToBoard'; +import Flex from 'components/common/Flex'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; + +const KanbanHeader = () => { + return ( + + +
    Falcon
    + +
    + +
    + + + + + + + + + + Copy link + + Settings + Themes + + + Remove + + + + +
    + ); +}; + +export default KanbanHeader; diff --git a/src/components/app/kanban/KanbanModal.jsx b/src/components/app/kanban/KanbanModal.jsx new file mode 100644 index 0000000..6fc928a --- /dev/null +++ b/src/components/app/kanban/KanbanModal.jsx @@ -0,0 +1,137 @@ +import React from 'react'; +import { CloseButton, Col, Modal, Row, Dropdown } from 'react-bootstrap'; +import Background from 'components/common/Background'; +import { Link } from 'react-router'; +import ModalMediaContent from './ModalMediaContent'; +import GroupMember from './GroupMember'; +import { members } from 'data/kanban'; +import ModalLabelContent from './ModalLabelContent'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import ModalAttachmentContent from './ModalAttachmentContent'; +import ModalCommentContent from './ModalCommentContent'; +import ModalActivityContent from './ModalActivityContent'; +import { useKanbanContext } from 'providers/KanbanProvider'; +import ModalSidebar from './ModalSidebar'; + +const KanbanModal = () => { + const { + kanbanState: { kanbanModal }, + kanbanDispatch + } = useKanbanContext(); + + const handleClose = () => { + kanbanDispatch({ type: 'TOGGLE_KANBAN_MODAL' }); + }; + + return ( + + {kanbanModal.modalContent.image && ( +
    + +
    + )} +
    + +
    + +
    +

    Add a new illustration to the landing page

    +

    + Added by{' '} + + Antony + +

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

    + The illustration must match to the contrast of the theme. The + illustraion must described the concept of the design. To know + more about the theme visit the page.{' '} + + https://falconreact.prium.me/ + +

    +
    + + + + + + + Computer + Google Drive + + Attach Link + + + } + > + + + + + + + + + + + + + + +
    +
    +
    +
    + ); +}; + +export default KanbanModal; diff --git a/src/components/app/kanban/ModalActivityContent.jsx b/src/components/app/kanban/ModalActivityContent.jsx new file mode 100644 index 0000000..8ca3100 --- /dev/null +++ b/src/components/app/kanban/ModalActivityContent.jsx @@ -0,0 +1,37 @@ +import React from 'react'; +import { activities } from 'data/kanban'; +import Flex from 'components/common/Flex'; +import { Link } from 'react-router'; +import Avatar from 'components/common/Avatar'; +import paths from 'routes/paths'; +import classNames from 'classnames'; + +const ModalActivityContent = () => { + return ( + <> + {activities.map((activity, index) => ( + + + + +
    +

    + + {activity.user.name}{' '} + + {activity.activity} +

    +
    {activity.time}
    +
    +
    + ))} + + ); +}; + +export default ModalActivityContent; diff --git a/src/components/app/kanban/ModalAttachmentContent.jsx b/src/components/app/kanban/ModalAttachmentContent.jsx new file mode 100644 index 0000000..e90acdc --- /dev/null +++ b/src/components/app/kanban/ModalAttachmentContent.jsx @@ -0,0 +1,135 @@ +import { useState } from 'react'; +import { attachments } from 'data/kanban'; +import Flex from 'components/common/Flex'; +import classNames from 'classnames'; +import Background from 'components/common/Background'; +import { Link } from 'react-router'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { Modal, CloseButton } from 'react-bootstrap'; +import FalconLightBoxGallery from 'components/common/FalconLightBoxGallery'; + +const AttachmentItem = ({ setImgIndex, attachment, isLast, index }) => { + const [nestedModal, setNestedModal] = useState(false); + + return ( + <> + +
    + {attachment.image ? ( + <> + {attachment.type !== 'video' ? ( +
    setImgIndex(index)} + > + +
    + ) : ( + <> + setNestedModal(true)}> + +
    + +
    + + + )} + + ) : ( + {attachment.type} + )} +
    + +
    +
    + {attachment.image ? ( + <> + {attachment.type !== 'video' ? ( + setImgIndex(index)} + to="#!" + className="text-decoration-none" + > + {attachment.title} + + ) : ( + <> + setNestedModal(true)}> + {attachment.title} + + + )} + + ) : ( + + {attachment.title} + + )} +
    + + Edit + + | + + Remove + +

    Uploaded at {attachment.date}

    +
    +
    + + setNestedModal(false)} + className="video-popup" + contentClassName="bg-transparent border-0" + backdropClassName="video-popup-backdrop" + centered + > + setNestedModal(false)} + className="video-popup-close-btn" + /> + + + + + + ); +}; + +const ModalAttachmentContent = () => { + const images = attachments.map(item => item.image); + + return ( + <> + + {setImgIndex => ( + <> + {attachments.map((attachment, index) => ( + + ))} + + )} + + + ); +}; + +export default ModalAttachmentContent; diff --git a/src/components/app/kanban/ModalCommentContent.jsx b/src/components/app/kanban/ModalCommentContent.jsx new file mode 100644 index 0000000..715802d --- /dev/null +++ b/src/components/app/kanban/ModalCommentContent.jsx @@ -0,0 +1,88 @@ +import React from 'react'; +import Flex from 'components/common/Flex'; +import { members, comments } from 'data/kanban'; +import Avatar from 'components/common/Avatar'; +import { Form, Button } from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { Link } from 'react-router'; +import paths from 'routes/paths'; + +const ModalCommentContent = () => { + return ( + <> + + +
    +
    +
    + + + +
      +
    • + + + + + + +
    • +
    • + + + +
    • +
    • + + + + + + +
    • +
    +
    + +
    +
    +
    + + {comments.map(comment => ( + + + + +
    +

    + + {comment.user.name} + {' '} + {comment.text} +

    + Like • + Reply • {comment.time} +
    +
    + ))} + + ); +}; + +export default ModalCommentContent; diff --git a/src/components/app/kanban/ModalLabelContent.jsx b/src/components/app/kanban/ModalLabelContent.jsx new file mode 100644 index 0000000..111c535 --- /dev/null +++ b/src/components/app/kanban/ModalLabelContent.jsx @@ -0,0 +1,60 @@ +import React from 'react'; +import { labels } from 'data/kanban'; +import Flex from 'components/common/Flex'; +import SubtleBadge from 'components/common/SubtleBadge'; +import { Dropdown, Button } from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { useAppContext } from 'providers/AppProvider'; + +const ModalLabelContent = () => { + const { + config: { isRTL } + } = useAppContext(); + + return ( + + {labels.slice(0, 3).map(label => ( + + {label.text} + + ))} + + + + + + +
    Select Label
    + +
    + {labels.map(label => ( + + {label.text} + + ))} +
    + +
    + +
    +
    +
    +
    + ); +}; + +export default ModalLabelContent; diff --git a/src/components/app/kanban/ModalMediaContent.jsx b/src/components/app/kanban/ModalMediaContent.jsx new file mode 100644 index 0000000..e29454e --- /dev/null +++ b/src/components/app/kanban/ModalMediaContent.jsx @@ -0,0 +1,37 @@ +import Flex from 'components/common/Flex'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import classNames from 'classnames'; + +const ModalMediaContent = ({ + children, + icon, + transform, + title, + headingClass, + headingContent, + isHr = true +}) => { + return ( + + + + + +
    + +
    {title}
    + {headingContent && headingContent} +
    + {children} + {isHr &&
    } +
    +
    + ); +}; + +export default ModalMediaContent; diff --git a/src/components/app/kanban/ModalSidebar.jsx b/src/components/app/kanban/ModalSidebar.jsx new file mode 100644 index 0000000..dc3981c --- /dev/null +++ b/src/components/app/kanban/ModalSidebar.jsx @@ -0,0 +1,48 @@ +import React, { useState } from 'react'; +import { Nav } from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { Link } from 'react-router'; + +const ModalSidebar = () => { + const [addToCardMenu] = useState([ + { icon: 'user', title: 'Members', link: '#!' }, + { icon: 'tag', title: 'Label', link: '#!' }, + { icon: 'paperclip', title: 'Attachments', link: '#!' }, + { icon: 'check', title: 'Checklists', link: '#!' } + ]); + + const [actionMenu] = useState([ + { icon: ['far', 'copy'], title: 'Copy', link: '#!' }, + { icon: 'arrow-right', title: 'Move', link: '#!' }, + { icon: 'trash-alt', title: 'Remove', link: '#!' } + ]); + return ( + <> +
    Add To Card
    + {addToCardMenu.map(menu => ( + + ))} + +
    Actions
    + {actionMenu.map(menu => ( + + ))} + + ); +}; + +export default ModalSidebar; diff --git a/src/components/app/kanban/TaskCard.jsx b/src/components/app/kanban/TaskCard.jsx new file mode 100644 index 0000000..c1840f8 --- /dev/null +++ b/src/components/app/kanban/TaskCard.jsx @@ -0,0 +1,227 @@ +import { useRef } from 'react'; +import { Card, Dropdown, OverlayTrigger, Tooltip } from 'react-bootstrap'; +import { useSortable } from '@dnd-kit/sortable'; +import Background from 'components/common/Background'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import SubtleBadge from 'components/common/SubtleBadge'; +import Avatar, { AvatarGroup } from 'components/common/Avatar'; +import { useKanbanContext } from 'providers/KanbanProvider'; +import { useAppContext } from 'providers/AppProvider'; +import { CSS } from '@dnd-kit/utilities'; + +const TaskDropMenu = ({ id }) => { + const { kanbanDispatch } = useKanbanContext(); + + const { + config: { isRTL } + } = useAppContext(); + + const handleRemoveTaskCard = () => { + kanbanDispatch({ + type: 'REMOVE_TASK_CARD', + payload: { id } + }); + }; + + return ( + e.stopPropagation()} + align="end" + className="font-sans-serif" + > + + + + + + Add Card + Edit + Copy link + + + Remove + + + + ); +}; + +const TaskCard = ({ task, columnId, cursor, rotate }) => { + const { kanbanDispatch, currentUser, setCardHeight, cardHeight } = + useKanbanContext(); + const cardRef = useRef(null); + const image = + task.attachments && task.attachments.find(item => item.type === 'image'); + + const handleModalOpen = () => { + kanbanDispatch({ type: 'OPEN_KANBAN_MODAL', payload: { image: image } }); + }; + + const { active, setNodeRef, listeners, isDragging, transform, transition } = + useSortable({ + id: task.id, + data: { + type: 'task', + ...task, + columnId + } + }); + + const isDraggingTaskItem = active && active.data.current.type === 'task'; + + const handleMouseDownCapture = () => { + if (cardRef.current === null) return; + setCardHeight(cardRef.current.offsetHeight); + }; + // styles we need to apply on draggables + const styles = { + transform: rotate ? 'rotate(-2deg)' : CSS.Transform.toString(transform), + transition, + zIndex: isDragging ? 2 : 'auto', + cursor: cursor ? 'grabbing' : 'pointer' + }; + + return ( +
    + {isDragging && isDraggingTaskItem ? ( +
    + ) : ( + + {image && ( +
    + +
    + )} + +
    + +
    + {task.labels && ( +
    + {task.labels.map(label => ( + + {label.text} + + ))} +
    + )} +

    + {(task.members || task.attachments || task.checklist) && ( +

    +
    + {task.members && + task.members.find( + member => member.name === currentUser.name + ) && ( + + + You're assigned in this card + + } + > + + + + + + )} + {task.attachments && ( + + + Attachments + + } + > + + + + + {task.attachments.length} + + )} + {task.checklist && ( + + + Attachments + + } + > + + + + + {`${task.checklist.completed}/${task.checklist.totalCount}`} + + )} +
    +
    + {task.members && ( + + {task.members.map(member => ( + + {member.name} + + } + > +
    + +
    +
    + ))} +
    + )} +
    +
    + )} +
    +
    + )} +
    + ); +}; + +export default TaskCard; diff --git a/src/components/app/social/activity-log/ActivityLog.jsx b/src/components/app/social/activity-log/ActivityLog.jsx new file mode 100644 index 0000000..c2e91f3 --- /dev/null +++ b/src/components/app/social/activity-log/ActivityLog.jsx @@ -0,0 +1,29 @@ +import React from 'react'; +import { Card } from 'react-bootstrap'; +import activities from 'data/activities'; +import Notification from 'components/notification/Notification'; +import classNames from 'classnames'; + +const ActivityLog = () => { + return ( + + +
    Activity log
    +
    + + {activities.map((activity, index) => ( + + ))} + +
    + ); +}; + +export default ActivityLog; diff --git a/src/components/app/social/feed/AddToFeed.jsx b/src/components/app/social/feed/AddToFeed.jsx new file mode 100644 index 0000000..aa8600f --- /dev/null +++ b/src/components/app/social/feed/AddToFeed.jsx @@ -0,0 +1,63 @@ +import Avatar from 'components/common/Avatar'; +import Flex from 'components/common/Flex'; +import IconButton from 'components/common/IconButton'; +import rawPeople from 'data/people'; +import { Card } from 'react-bootstrap'; +import { Link } from 'react-router'; +import paths from 'routes/paths'; + +const AddToFeed = () => { + const people = rawPeople.slice(0, 8); + + return ( + + +
    Add to your feed
    + + See all + +
    + + {people.map((person, index) => ( + + ))} + +
    + ); +}; + +const SingleItem = ({ avatarSrc, name, mutual, divider }) => ( + + + + +
    +
    + {name} +
    + {!!mutual &&

    {mutual} mutual connections

    } + + Follow + + + {!divider &&
    } +
    + +); + +export default AddToFeed; diff --git a/src/components/app/social/feed/BirthdatNotice.jsx b/src/components/app/social/feed/BirthdatNotice.jsx new file mode 100644 index 0000000..fb859cb --- /dev/null +++ b/src/components/app/social/feed/BirthdatNotice.jsx @@ -0,0 +1,24 @@ +import { Card } from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { Link } from 'react-router'; +import Flex from 'components/common/Flex'; + +const BirthdayNotice = ({ name, profileLink, className }) => { + return ( + + + + +
    + + {name} + + 's Birthday is today +
    +
    +
    +
    + ); +}; + +export default BirthdayNotice; diff --git a/src/components/app/social/feed/Comments.jsx b/src/components/app/social/feed/Comments.jsx new file mode 100644 index 0000000..f48cd58 --- /dev/null +++ b/src/components/app/social/feed/Comments.jsx @@ -0,0 +1,42 @@ +import Flex from 'components/common/Flex'; +import Avatar from 'components/common/Avatar'; +import { Link } from 'react-router'; +import createMarkup from 'helpers/createMarkup'; +import paths from 'routes/paths'; + +const Comments = ({ comments, loadComment }) => { + return ( + <> + {comments.map(({ id, avatarSrc, name, content, postTime }) => ( +
    + + + + +
    +

    + + {name} + + +

    +
    + LikeReply • {postTime} +
    +
    +
    +
    + ))} + {!!loadComment && ( + + Load more comments ({loadComment}) + + )} + + ); +}; + +export default Comments; diff --git a/src/components/app/social/feed/CreatePost.jsx b/src/components/app/social/feed/CreatePost.jsx new file mode 100644 index 0000000..8ee7bea --- /dev/null +++ b/src/components/app/social/feed/CreatePost.jsx @@ -0,0 +1,26 @@ +import React from 'react'; +import { Card } from 'react-bootstrap'; +import Flex from 'components/common/Flex'; +import Avatar from 'components/common/Avatar'; +import team1 from 'assets/img/team/1.jpg'; +import CreatePostForm from './CreatePostForm'; + +const CreatePost = ({ ...rest }) => { + return ( + + + + +
    +
    Create Post
    +
    +
    +
    + + + +
    + ); +}; + +export default CreatePost; diff --git a/src/components/app/social/feed/CreatePostForm.jsx b/src/components/app/social/feed/CreatePostForm.jsx new file mode 100644 index 0000000..0b2142a --- /dev/null +++ b/src/components/app/social/feed/CreatePostForm.jsx @@ -0,0 +1,120 @@ +import { useState } from 'react'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import calendar from 'assets/img/icons/spot-illustrations/calendar.svg'; +import image from 'assets/img/icons/spot-illustrations/image.svg'; +import location from 'assets/img/icons/spot-illustrations/location.svg'; +import team3 from 'assets/img/team/3.jpg'; +import classNames from 'classnames'; +import Flex from 'components/common/Flex'; +import { useFeedContext } from 'providers/FeedProvider'; +import { Button, Col, Dropdown, Form, Row } from 'react-bootstrap'; +import { v4 as uuid } from 'uuid'; + +const CreatePostForm = () => { + const { feedDispatch } = useFeedContext(); + const [privacy, setPrivacy] = useState('public'); + const [status, setStatus] = useState(''); + + const handleSubmit = e => { + e.preventDefault(); + + const feed = { + id: uuid(), + user: { + name: 'Rebecca Marry', + avatarSrc: team3, + time: 'Just now', + location: 'Dalby', + status: 'status-online', + privacy + }, + content: { status }, + details: { countLCS: { like: 0, share: 0 } } + }; + + !!status && feedDispatch({ type: 'ADD', payload: feed }); + + setStatus(''); + }; + + return ( +
    + setStatus(e.target.value)} + /> + + + + Add hashtag + + + + + + + + + + + + + + + + + setPrivacy('public')}> + Public + + setPrivacy('private')}> + Private + + setPrivacy('friends')}> + Friends + + + + + + + + ); +}; + +const PostButton = ({ image, title }) => ( + +); + +export default CreatePostForm; diff --git a/src/components/app/social/feed/Feed.jsx b/src/components/app/social/feed/Feed.jsx new file mode 100644 index 0000000..f5a2353 --- /dev/null +++ b/src/components/app/social/feed/Feed.jsx @@ -0,0 +1,31 @@ +import React from 'react'; +import { Col, Row } from 'react-bootstrap'; +import events from 'data/events/events'; +import BirthdayNotice from './BirthdatNotice'; +import AddToFeed from './AddToFeed'; +import Events from 'components/pages/user/profile/Events'; +import FeedContent from './FeedContent'; +import FeedProvider from 'providers/FeedProvider'; + +const Feed = () => { + return ( + + + + + + + + + + + + + ); +}; + +export default Feed; diff --git a/src/components/app/social/feed/FeedActionButtons.jsx b/src/components/app/social/feed/FeedActionButtons.jsx new file mode 100644 index 0000000..91f6e60 --- /dev/null +++ b/src/components/app/social/feed/FeedActionButtons.jsx @@ -0,0 +1,76 @@ +import { useState } from 'react'; +import { Col, Row } from 'react-bootstrap'; +import Flex from 'components/common/Flex'; +import LikeInactive from 'assets/img/illustrations/like-inactive.png'; +import commentActive from 'assets/img/illustrations/comment-active.png'; +import shareActive from 'assets/img/illustrations/share-active.png'; +import shareInactive from 'assets/img/illustrations/share-inactive.png'; +import commentInActive from 'assets/img/illustrations/comment-inactive.png'; +import likeActive from 'assets/img/illustrations/like-active.png'; +import { useFeedContext } from 'providers/FeedProvider'; + +const FeedActionButtons = ({ id, reactions }) => { + const [liked, setLiked] = useState(reactions?.like); + const { feeds, feedDispatch } = useFeedContext(); + + const toggleLiked = () => { + setLiked(!liked); + const feed = feeds.find(item => item.id === id); + feed.details.reactions.like = !liked; + feed.details.countLCS.like = !liked + ? feed.details.countLCS.like + 1 + : feed.details.countLCS.like - 1; + + feedDispatch({ + type: 'UPDATE', + payload: { id, feed } + }); + }; + return ( + + + + + Like + + + + + + comment + + + + + + share + + + + ); +}; + + +export default FeedActionButtons; diff --git a/src/components/app/social/feed/FeedCard.jsx b/src/components/app/social/feed/FeedCard.jsx new file mode 100644 index 0000000..830cc32 --- /dev/null +++ b/src/components/app/social/feed/FeedCard.jsx @@ -0,0 +1,19 @@ +import FeedCardHeader from './FeedCardHeader'; +import { Card } from 'react-bootstrap'; +import FeedCardContent from './FeedCardContent'; +import FeedCardFooter from './FeedCardFooter'; + +const FeedCard = ({ feed, ...rest }) => { + const { id, user, content, details } = feed; + return ( + + {!!user && } + {!!content && } + {!!details && } + + ); +}; + +FeedCard.Header = FeedCardHeader; + +export default FeedCard; diff --git a/src/components/app/social/feed/FeedCardContent.jsx b/src/components/app/social/feed/FeedCardContent.jsx new file mode 100644 index 0000000..dece0f9 --- /dev/null +++ b/src/components/app/social/feed/FeedCardContent.jsx @@ -0,0 +1,42 @@ +import { Card, Image } from 'react-bootstrap'; +import ReactPlayer from 'react-player'; +import createMarkup from 'helpers/createMarkup'; +import FeedEvent from './FeedEvent'; +import classNames from 'classnames'; +import FeedUrl from './FeedUrl'; +import FeedGallery from 'components/app/social/feed/FeedGallery'; +import FalconLightBox from 'components/common/FalconLightBox'; + +const FeedCardContent = ({ + status, + imgSrc, + gallery, + feedEvent, + url, + video +}) => { + return ( + + {!!status &&

    } + {!!imgSrc && ( + + + + )} + {!!gallery && } + {!!feedEvent && } + {!!url && } + {!!video && ( + + )} + + ); +}; + +export default FeedCardContent; diff --git a/src/components/app/social/feed/FeedCardFooter.jsx b/src/components/app/social/feed/FeedCardFooter.jsx new file mode 100644 index 0000000..cb0a597 --- /dev/null +++ b/src/components/app/social/feed/FeedCardFooter.jsx @@ -0,0 +1,62 @@ +import { useState } from 'react'; +import { Card, Form } from 'react-bootstrap'; +import { v4 as uuid } from 'uuid'; +import av3 from 'assets/img/team/3.jpg'; +import FeedReactions from './FeedReactions'; +import FeedActionButtons from './FeedActionButtons'; +import Flex from 'components/common/Flex'; +import Avatar from 'components/common/Avatar'; +import Comments from './Comments'; +import { useFeedContext } from 'providers/FeedProvider'; + +const FeedCardFooter = ({ + id, + countLCS = { like: 0 }, + reactions, + comments = [], + otherComments +}) => { + const { feeds, feedDispatch } = useFeedContext(); + const [comment, setComment] = useState(''); + + const submitComment = e => { + e.preventDefault(); + const newComment = { + id: uuid(), + avatarSrc: av3, + name: 'Rebecca Marry', + content: comment, + postTime: '1m' + }; + + const feed = feeds.find(feed => feed.id === id); + feed.details.reactions.comment = true; + feed.details.comments = [newComment, ...comments]; + feedDispatch({ type: 'UPDATE', payload: { id, feed } }); + setComment(''); + }; + + return ( + + + +

    + + + setComment(e.target.value)} + /> + +
    + {!!comments && ( + + )} + + ); +}; + +export default FeedCardFooter; diff --git a/src/components/app/social/feed/FeedCardHeader.jsx b/src/components/app/social/feed/FeedCardHeader.jsx new file mode 100644 index 0000000..cf78c98 --- /dev/null +++ b/src/components/app/social/feed/FeedCardHeader.jsx @@ -0,0 +1,60 @@ +import { Card, Col, Row } from 'react-bootstrap'; +import Flex from 'components/common/Flex'; +import Avatar from 'components/common/Avatar'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import classNames from 'classnames'; +import { Link } from 'react-router'; +import FeedDropdown from './FeedDropdown'; +import paths from 'routes/paths'; + +const FeedCardHeader = ({ + status, + avatarSrc, + time, + name, + share, + location, + privacy +}) => { + return ( + + + + + + + +
    +

    + + {name} + + {!!share && ( + + shared {/^[aeiou]/g.test(share.toLowerCase()) ? 'an' : 'a'}{' '} + {share} + + )} +

    +

    + {time} • {location} •{' '} + +

    +
    +
    + + + + +
    +
    + ); +}; + +export default FeedCardHeader; diff --git a/src/components/app/social/feed/FeedContent.jsx b/src/components/app/social/feed/FeedContent.jsx new file mode 100644 index 0000000..5e8fd4b --- /dev/null +++ b/src/components/app/social/feed/FeedContent.jsx @@ -0,0 +1,26 @@ +import React from 'react'; +import { useFeedContext } from 'providers/FeedProvider'; +import CreatePost from './CreatePost'; +import FeedCard from './FeedCard'; +import classNames from 'classnames'; + +const FeedContent = () => { + const { feeds } = useFeedContext(); + return ( + <> + + {feeds.map((feed, index) => ( + + ))} + + ); +}; + +export default FeedContent; diff --git a/src/components/app/social/feed/FeedDropdown.jsx b/src/components/app/social/feed/FeedDropdown.jsx new file mode 100644 index 0000000..495dd5f --- /dev/null +++ b/src/components/app/social/feed/FeedDropdown.jsx @@ -0,0 +1,30 @@ +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { Dropdown } from 'react-bootstrap'; + +const FeedDropdown = () => { + return ( + + + + + + View + Edit + Report + + + Archive + + + Delete + + + + ); +}; + +export default FeedDropdown; diff --git a/src/components/app/social/feed/FeedEvent.jsx b/src/components/app/social/feed/FeedEvent.jsx new file mode 100644 index 0000000..c9ed0a2 --- /dev/null +++ b/src/components/app/social/feed/FeedEvent.jsx @@ -0,0 +1,36 @@ +import { Card, Col, Row, Button } from 'react-bootstrap'; +import { Link } from 'react-router'; +import Calendar from 'components/common/Calendar'; +import Flex from 'components/common/Flex'; +import paths from 'routes/paths'; + +const FeedEvent = ({ title, calender, author, regFee, eventImg }) => ( + + {!!eventImg && } + + + + + +
    +
    + {title} +
    +

    + by {author} +

    + {regFee} +
    +
    + + + + +
    +
    +
    +); + +export default FeedEvent; diff --git a/src/components/app/social/feed/FeedGallery.jsx b/src/components/app/social/feed/FeedGallery.jsx new file mode 100644 index 0000000..05782ca --- /dev/null +++ b/src/components/app/social/feed/FeedGallery.jsx @@ -0,0 +1,55 @@ +import { Col, Image, Row } from 'react-bootstrap'; +import FalconLightBoxGallery from 'components/common/FalconLightBoxGallery'; + +const FeedGallery = ({ images }) => { + return ( + + {setImgIndex => ( + + + setImgIndex(0)} + /> + + + setImgIndex(1)} + /> + + + setImgIndex(2)} + /> + + + setImgIndex(3)} + /> + + + setImgIndex(4)} + /> + + + )} + + ); +}; + +export default FeedGallery; diff --git a/src/components/app/social/feed/FeedLightBox.jsx b/src/components/app/social/feed/FeedLightBox.jsx new file mode 100644 index 0000000..e69de29 diff --git a/src/components/app/social/feed/FeedReactions.jsx b/src/components/app/social/feed/FeedReactions.jsx new file mode 100644 index 0000000..19e198c --- /dev/null +++ b/src/components/app/social/feed/FeedReactions.jsx @@ -0,0 +1,28 @@ +import { Link } from 'react-router'; + +const LCSText = ({ count, text }) => ( + + {count} {text} + {count !== 1 && 's'} + +); + +const FeedReactions = ({ like, comment, share }) => { + return ( +
    + {!!like && } + {!!comment && ( + <> + • {' '} + + )} + {!!share && ( + <> + • {' '} + + )} +
    + ); +}; + +export default FeedReactions; diff --git a/src/components/app/social/feed/FeedUrl.jsx b/src/components/app/social/feed/FeedUrl.jsx new file mode 100644 index 0000000..85f28c0 --- /dev/null +++ b/src/components/app/social/feed/FeedUrl.jsx @@ -0,0 +1,10 @@ +const FeedUrl = ({ imgUrl, urlAddress, title, description }) => ( + + {!!imgUrl && } + {urlAddress} +
    {title}
    + {!!description &&

    {description}

    } +
    +); + +export default FeedUrl; diff --git a/src/components/app/social/followers/Follower.jsx b/src/components/app/social/followers/Follower.jsx new file mode 100644 index 0000000..3026019 --- /dev/null +++ b/src/components/app/social/followers/Follower.jsx @@ -0,0 +1,31 @@ +import { Link } from 'react-router'; +import { Image } from 'react-bootstrap'; +import paths from 'routes/paths'; + +const Follower = ({ follower }) => { + const { avatarSrc, name, institution } = follower; + return ( +
    + + + +
    + {name} +
    +

    + + {institution} + +

    +
    + ); +}; + +export default Follower; diff --git a/src/components/app/social/followers/Followers.jsx b/src/components/app/social/followers/Followers.jsx new file mode 100644 index 0000000..45a9e0b --- /dev/null +++ b/src/components/app/social/followers/Followers.jsx @@ -0,0 +1,58 @@ +import React, { useState } from 'react'; +import { Card, Col, Form, Row } from 'react-bootstrap'; +import people from 'data/people'; +import Follower from './Follower'; + +const Followers = () => { + const [options] = useState([ + 'Concert Choir', + 'Clubchem', + 'Chamber Music Society', + 'Alpha Chi Omega', + 'Alpine Ski Club', + 'Career Club', + 'Musical Club', + 'Asymptones', + 'Clubcem', + 'Brain Trust', + 'Other' + ]); + const [followers] = useState(people.slice(0, 24)); + return ( + + + + +
    Followers ({people.length})
    + + + + + + + + + + {options.map(option => ( + + ))} + + + + +
    +
    + + + {followers.map(follower => ( + + + + ))} + + +
    + ); +}; + +export default Followers; diff --git a/src/components/app/social/notifications/Notifications.jsx b/src/components/app/social/notifications/Notifications.jsx new file mode 100644 index 0000000..b210597 --- /dev/null +++ b/src/components/app/social/notifications/Notifications.jsx @@ -0,0 +1,32 @@ +import Notification from 'components/notification/Notification'; +import { notifications } from 'data/notification/notification'; +import React from 'react'; +import { Card, Col, Row } from 'react-bootstrap'; +import { Link } from 'react-router'; + +const Notifications = () => { + return ( + + + + +
    Your Notifications
    + + + + Mark all as read + +
    + +
    +
    + + {notifications.map(notification => ( + + ))} + +
    + ); +}; + +export default Notifications; diff --git a/src/components/app/support-desk/contact-details/ContactDetails.jsx b/src/components/app/support-desk/contact-details/ContactDetails.jsx new file mode 100644 index 0000000..635ab23 --- /dev/null +++ b/src/components/app/support-desk/contact-details/ContactDetails.jsx @@ -0,0 +1,118 @@ +import React, { useState } from 'react'; +import { Card, Col, Nav, Offcanvas, Row, Tab } from 'react-bootstrap'; +import ContactDetailsHeader from './ContactDetailsHeader'; +import SimpleBar from 'simplebar-react'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import Timeline from './Timeline'; +import Tickets from './Tickets'; +import Notes from './Notes'; +import ContactProfile from './ContactProfile'; +import { useBreakpoints } from 'hooks/useBreakpoints'; +import ToDoList from './ToDoList'; +import IconButton from 'components/common/IconButton'; + +const ContactDetails = () => { + const [show, setShow] = useState(false); + const { breakpoints } = useBreakpoints(); + const handleClose = () => setShow(false); + const handleShow = () => setShow(true); + return ( + <> + + + +
    + + {breakpoints.down('xl') ? ( + + +
    To-do List
    +
    + + + Add + +
    + +
    +
    + ) : ( + + )} +
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + ); +}; + +export default ContactDetails; diff --git a/src/components/app/support-desk/contact-details/ContactDetailsHeader.jsx b/src/components/app/support-desk/contact-details/ContactDetailsHeader.jsx new file mode 100644 index 0000000..3f75d37 --- /dev/null +++ b/src/components/app/support-desk/contact-details/ContactDetailsHeader.jsx @@ -0,0 +1,116 @@ +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import Flex from 'components/common/Flex'; +import IconButton from 'components/common/IconButton'; +import { Card, Dropdown } from 'react-bootstrap'; +import { useNavigate } from 'react-router'; + +const ContactDetailsHeader = ({ handleShow }) => { + const navigate = useNavigate(); + return ( + + + navigate(-1)} + variant="falcon-default" + size="sm" + icon="arrow-left" + /> + + + To-do + +
    + + Edit + + + + Convert to Agent + + + + + Send Activation Email + + + + Delete + + + + Change Password + + + + + + + + +
    + View + Export + + Convert to Agent + + + Send Activation Email + + Delete + + Change Password + + + Remove +
    +
    +
    +
    +
    +
    + ); +}; + +export default ContactDetailsHeader; diff --git a/src/components/app/support-desk/contact-details/ContactProfile.jsx b/src/components/app/support-desk/contact-details/ContactProfile.jsx new file mode 100644 index 0000000..85ea489 --- /dev/null +++ b/src/components/app/support-desk/contact-details/ContactProfile.jsx @@ -0,0 +1,131 @@ +import Background from 'components/common/Background'; +import CardDropdown from 'components/common/CardDropdown'; +import FalconCardHeader from 'components/common/FalconCardHeader'; +import cornerBg from 'assets/img/illustrations/corner-2.png'; +import profileImg from 'assets/img/team/5-thumb.png'; +import { Card, Col, Row } from 'react-bootstrap'; +import Flex from 'components/common/Flex'; +import IconButton from 'components/common/IconButton'; +import classNames from 'classnames'; +import { Link } from 'react-router'; + +const InfoItem = ({ title, content, className }) => { + return ( +
    +
    + {title} +
    + {title === 'Email' && ( + + {content} + + )} + {title === 'Phone Number' && ( + + {content} + + )} + {title !== 'Email' && title !== 'Phone Number' && ( +

    {content}

    + )} +
    + ); +}; + +const ContactProfile = () => { + return ( + + } + /> + + + + + + + + +

    + Matt Rogers +

    + + + New Ticket + + + Call + + + +
    +
    + + + + + + + + + + + + + +
    Tag
    + + New + + + Payment + + + Subscribe + + +
    +
    +
    + ); +}; + +export default ContactProfile; diff --git a/src/components/app/support-desk/contact-details/Notes.jsx b/src/components/app/support-desk/contact-details/Notes.jsx new file mode 100644 index 0000000..bb4ee34 --- /dev/null +++ b/src/components/app/support-desk/contact-details/Notes.jsx @@ -0,0 +1,88 @@ +import Flex from 'components/common/Flex'; +import { notes } from 'data/support-desk/contactDetailsData'; +import { Col, Dropdown, Form, Row } from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; + +const AgentSelect = ({ agent, className, style }) => { + return ( + + {['Select Agent', 'Anindya', 'Nowrin', 'Khalid', 'Shajeeb'].map(item => ( + + ))} + + ); +}; + +const Notes = () => { + return ( + + {notes.map((note, index) => { + const { title, description, date, time, agent } = note; + return ( +
    + + +
    + {title} +
    + + + + + + + + + +
    + View + Export + + + Remove + +
    +
    +
    + +
    +
    + + {date} + at + {time} +
    +

    + {description} +

    +
    + ); + })} +
    + ); +}; + +export default Notes; diff --git a/src/components/app/support-desk/contact-details/Tickets.jsx b/src/components/app/support-desk/contact-details/Tickets.jsx new file mode 100644 index 0000000..f0ec2f7 --- /dev/null +++ b/src/components/app/support-desk/contact-details/Tickets.jsx @@ -0,0 +1,98 @@ +import Flex from 'components/common/Flex'; +import SubtleBadge from 'components/common/SubtleBadge'; +import { tickets } from 'data/support-desk/contactDetailsData'; +import { Link } from 'react-router'; +import { Form } from 'react-bootstrap'; +import paths from 'routes/paths'; + +const PrioritySelect = ({ title, color, data }) => { + return ( +
    +
    + + + + +
    +
    {title}
    +
    + ); +}; + +const AgentSelect = ({ agent, className }) => { + return ( + + {['Select Agent', 'Anindya', 'Nowrin', 'Khalid', 'Shajeeb'].map(item => ( + + ))} + + ); +}; + + +const Tickets = () => { + return ( + + {tickets.map((ticket, index) => { + const { subject, status, priority, agent, date } = ticket; + return ( +
    +
    +

    + {subject} +

    + +
    {date}
    + {status.content} +
    +
    +
    + + + + +
    + ); + })} +
    + ); +}; + +export default Tickets; diff --git a/src/components/app/support-desk/contact-details/Timeline.jsx b/src/components/app/support-desk/contact-details/Timeline.jsx new file mode 100644 index 0000000..fe52c63 --- /dev/null +++ b/src/components/app/support-desk/contact-details/Timeline.jsx @@ -0,0 +1,99 @@ +import React from 'react'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import classNames from 'classnames'; +import Flex from 'components/common/Flex'; +import SubtleBadge from 'components/common/SubtleBadge'; +import { timeline } from 'data/support-desk/contactDetailsData'; +import { Col, OverlayTrigger, Row, Tooltip } from 'react-bootstrap'; +import { Link } from 'react-router'; +import paths from 'routes/paths'; + +const Timeline = () => { + return ( +
    + {timeline.map((item, index) => { + const { + subject, + description, + time, + icon, + year, + day, + priority, + status + } = item; + return ( +
    +
    + +
    + + +
    +
    {year}
    +

    {day}

    +
    + + +
    +
    + +
    {subject}
    + +

    + {description} +

    + +
    + + {time} +
    + + + {priority.text} + + } + > +
    +
    +
    + {priority.text} +
    +
    + + {status.content} + +
    +
    +
    + +
    +
    + ); + })} +
    + ); +}; + +export default Timeline; diff --git a/src/components/app/support-desk/contact-details/ToDoList.jsx b/src/components/app/support-desk/contact-details/ToDoList.jsx new file mode 100644 index 0000000..c8c9c66 --- /dev/null +++ b/src/components/app/support-desk/contact-details/ToDoList.jsx @@ -0,0 +1,93 @@ +import IconButton from 'components/common/IconButton'; +import { useState } from 'react'; +import { Button, Card, Form } from 'react-bootstrap'; +import { todoList } from 'data/dashboard/support-desk'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import classNames from 'classnames'; + +const ToDoItems = ({ item, index, length, handleChange }) => { + return ( +
    + + handleChange(item.id, e.target.checked)} + className={classNames('mb-1', { + 'form-check-line-through': item.completed + })} + /> + + {item.task} + + {item.title} + + + +
    + +
    +
    + ); +}; + +const ToDoList = () => { + const [todoItems, setTodoItems] = useState(todoList); + const handleChange = (id, completed) => { + const updatedTodos = todoItems.map(item => + item.id === id ? { ...item, completed } : item + ); + setTodoItems(updatedTodos); + }; + return ( + + +
    To-do List
    + + Add + +
    + + {todoItems.map((item, index) => ( + + ))} + + + + View all + + + +
    + ); +}; + +export default ToDoList; diff --git a/src/components/app/support-desk/contacts/Contacts.jsx b/src/components/app/support-desk/contacts/Contacts.jsx new file mode 100644 index 0000000..53e0059 --- /dev/null +++ b/src/components/app/support-desk/contacts/Contacts.jsx @@ -0,0 +1,172 @@ +import React, { useState } from 'react'; +import { Link } from 'react-router'; +import { Card, Col, Offcanvas, Row } from 'react-bootstrap'; +import paths from 'routes/paths'; +import Flex from 'components/common/Flex'; +import Avatar from 'components/common/Avatar'; +import SubtleBadge from 'components/common/SubtleBadge'; +import AdvanceTable from 'components/common/advance-table/AdvanceTable'; +import AdvanceTablePagination from 'components/common/advance-table/AdvanceTablePagination'; +import { contacts } from 'data/support-desk/contactsData'; +import ContactsHeader from './ContactsHeader'; +import ContactsFilteringForm from './ContactsFilteringForm'; +import { useBreakpoints } from 'hooks/useBreakpoints'; +import AdvanceTableProvider from 'providers/AdvanceTableProvider'; +import useAdvanceTable from 'hooks/useAdvanceTable'; + +const columns = [ + { + accessorKey: 'name', + header: 'Name', + meta: { + headerProps: { className: 'ps-2 text-900', style: { height: '46px' } }, + cellProps: { + className: 'white-space-nowrap pe-5 ps-2 py-2' + } + }, + cell: ({ row: { original } }) => { + const { name, avatar } = original; + return ( + + {avatar.img ? ( + + ) : ( + + )} +
    + + {name} + +
    +
    + ); + } + }, + { + accessorKey: 'phone', + header: 'Phone Number', + meta: { + headerProps: { className: 'pe-5 white-space-nowrap text-900' }, + cellProps: { className: 'font-sans-serif white-space-nowrap' } + }, + cell: ({ row: { original } }) => { + const { phone } = original; + return ( + + {phone} + + ); + } + }, + { + accessorKey: 'report', + header: 'Name of the report', + meta: { + headerProps: { className: 'text-900' }, + cellProps: { + className: 'white-space-nowrap pe-5' + } + }, + cell: ({ row: { original } }) => { + const { report } = original; + return {report}; + } + }, + { + accessorKey: 'subscription', + header: 'Subscription', + meta: { + headerProps: { className: 'text-end white-space-nowrap text-900' }, + cellProps: { + className: 'font-sans-serif fs-9 text-end' + } + }, + cell: ({ row: { original } }) => { + const { subscription } = original; + return subscription ? ( + {subscription.content} + ) : ( +

    N/A

    + ); + } + }, + { + accessorKey: 'social', + header: 'Social', + meta: { + headerProps: { className: 'text-end text-900' }, + cellProps: { className: 'ps-4 text-end' } + }, + cell: ({ row: { original } }) => { + const { social } = original; + return social ? ( + {social} + ) : ( +

    N/A

    + ); + } + } +]; + +const Contacts = () => { + const [show, setShow] = useState(false); + const { breakpoints } = useBreakpoints(); + const handleClose = () => setShow(false); + const handleShow = () => setShow(true); + + const table = useAdvanceTable({ + data: contacts, + columns, + selection: true, + sortable: true, + pagination: true, + perPage: 11, + selectionColumnWidth: 52 + }); + + return ( + + + + + + + + + + + + + + + + + + {breakpoints.down('xl') ? ( + + +
    Filter
    +
    + +
    + ) : ( + + )} + +
    + ); +}; + +export default Contacts; diff --git a/src/components/app/support-desk/contacts/ContactsFilteringForm.jsx b/src/components/app/support-desk/contacts/ContactsFilteringForm.jsx new file mode 100644 index 0000000..c0c0fb3 --- /dev/null +++ b/src/components/app/support-desk/contacts/ContactsFilteringForm.jsx @@ -0,0 +1,108 @@ +import React from 'react'; +import { Button, Card, Form } from 'react-bootstrap'; + +const ContactsFilteringForm = () => { + return ( + + +
    Filter
    +
    + +
    +
    + Contact Created + + + + + + + +
    +
    + Zone of time + + + + + + + + +
    +
    + Subscription + + + + + + + +
    +
    + Social + + + + + + +
    +
    + Agent + + + + + + + + + + + + + + +
    +
    + Group + + + + + + + + +
    +
    + Customer + + + + + + + + + + + + + + +
    +
    +
    + + + +
    + ); +}; + +export default ContactsFilteringForm; diff --git a/src/components/app/support-desk/contacts/ContactsHeader.jsx b/src/components/app/support-desk/contacts/ContactsHeader.jsx new file mode 100644 index 0000000..887b578 --- /dev/null +++ b/src/components/app/support-desk/contacts/ContactsHeader.jsx @@ -0,0 +1,115 @@ +import { Button, Col, Dropdown, Form, Row } from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import AdvanceTableSearchBox from 'components/common/advance-table/AdvanceTableSearchBox'; +import IconButton from 'components/common/IconButton'; +import { useAdvanceTableContext } from 'providers/AdvanceTableProvider'; + +const ContactsHeader = ({ handleShow }) => { + const { getSelectedRowModel } = useAdvanceTableContext(); + + return ( +
    + + +
    Contacts
    + + + + +
    +
    +
    + + Filter + +
    + {getSelectedRowModel().rows.length > 0 ? ( +
    + + + + + + + +
    + ) : ( +
    + + + New + + + + + Export + + + + + Import + + + + + + + + +
    + View + Export + + Remove +
    +
    +
    +
    + )} +
    +
    + ); +}; + +export default ContactsHeader; diff --git a/src/components/app/support-desk/quick-links/Admin.jsx b/src/components/app/support-desk/quick-links/Admin.jsx new file mode 100644 index 0000000..0830851 --- /dev/null +++ b/src/components/app/support-desk/quick-links/Admin.jsx @@ -0,0 +1,56 @@ +import { account, team } from 'data/support-desk/quickLinksData'; +import { Card, Col, Row } from 'react-bootstrap'; + +const AdminItem = ({ item }) => { + return ( + +
    +
    + {item.icon} +
    +
    + + {item.title} + +
    +
    {item.description}
    +
    + + ); +}; + +export const Team = () => { + return ( + + +
    Team
    +
    + + + {team.map((item, index) => ( + + ))} + + +
    + ); +}; + +export const Account = () => { + return ( + + +
    Account
    +
    + + + {account.map((item, index) => ( + + ))} + + +
    + ); +}; diff --git a/src/components/app/support-desk/quick-links/QuickLinks.jsx b/src/components/app/support-desk/quick-links/QuickLinks.jsx new file mode 100644 index 0000000..ff46cd8 --- /dev/null +++ b/src/components/app/support-desk/quick-links/QuickLinks.jsx @@ -0,0 +1,15 @@ +import React from 'react'; +import Reports from './Reports'; +import { Account, Team } from './Admin'; + +const QuickLinks = () => { + return ( + <> + + + + + ); +}; + +export default QuickLinks; diff --git a/src/components/app/support-desk/quick-links/Reports.jsx b/src/components/app/support-desk/quick-links/Reports.jsx new file mode 100644 index 0000000..9781153 --- /dev/null +++ b/src/components/app/support-desk/quick-links/Reports.jsx @@ -0,0 +1,56 @@ +import { reports } from 'data/support-desk/quickLinksData'; +import { Card, Col, Row } from 'react-bootstrap'; +import Flex from 'components/common/Flex'; + +const ReportsItem = ({ report }) => { + return ( + + + +
    +
    + + {report.title} + +
    +
    {report.description}
    +
    +
    + + ); +}; + +const Reports = () => { + return ( + + +
    Reports
    +
    + +
    Analysis of the Helpdesk
    + + {reports.analysis.map((report, index) => ( + + ))} + +
    Customer Satisfaction
    + + {reports.customerSatisfaction.map((report, index) => ( + + ))} + +
    Productivity
    + + {reports.productivity.map((report, index) => ( + + ))} + +
    +
    + ); +}; + +export default Reports; diff --git a/src/components/app/support-desk/reports/IndepthHelpDesk.jsx b/src/components/app/support-desk/reports/IndepthHelpDesk.jsx new file mode 100644 index 0000000..4656c03 --- /dev/null +++ b/src/components/app/support-desk/reports/IndepthHelpDesk.jsx @@ -0,0 +1,185 @@ +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { inDepthItems } from 'data/support-desk/reportsData'; +import { Card, Col, Form, Nav, ProgressBar, Row, Tab } from 'react-bootstrap'; +import SimpleBar from 'simplebar-react'; +import FalconLink from 'components/common/FalconLink'; + +const InDepthItem = ({ item, status }) => { + return ( + + +

    + {item.name} +

    + + + +

    + {status === 'created' + ? item.progressbarWidth[0] + : status === 'resolved' + ? item.progressbarWidth[1] + : status === 'reopened' + ? item.progressbarWidth[2] + : item.progressbarWidth[3]} +

    + +
    + ); +}; + +const TabItem = ({ status }) => { + return ( + <> + + +
    Tickets {status} Split by Source
    + {inDepthItems.slice(0, 4).map((item, index) => ( + + ))} + + +
    Tickets {status} Split by Priority
    + {inDepthItems.slice(4, 8).map((item, index) => ( + + ))} + +
    + + +
    Tickets {status} Split by Status
    + {inDepthItems.slice(8, 9).map((item, index) => ( + + ))} + + +
    Tickets {status} Split by Category
    + {inDepthItems.slice(9, 10).map((item, index) => ( + + ))} + +
    + + ); +}; + +const IndepthHelpDesk = () => { + return ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +}; + +export default IndepthHelpDesk; diff --git a/src/components/app/support-desk/reports/Reports.jsx b/src/components/app/support-desk/reports/Reports.jsx new file mode 100644 index 0000000..5bf7775 --- /dev/null +++ b/src/components/app/support-desk/reports/Reports.jsx @@ -0,0 +1,26 @@ +import React from 'react'; +import DistributionOfPerformance from './distribution-of-performance/DistributionOfPerformance'; +import Greetings from './greetings/Greetings'; +import IndepthHelpDesk from './IndepthHelpDesk'; +import ReceivedTickets from './received-tickets/ReceivedTickets'; +import SatisfactionSurvey from './satisfaction-survey/SatisfactionSurvey'; +import SurveyResult from './SurveyResult'; +import TicketVolume from './ticket-volume/TicketVolume'; +import TopCustomers from './top-customers/TopCustomers'; + +const Reports = () => { + return ( + <> + + + + + + + + + + ); +}; + +export default Reports; diff --git a/src/components/app/support-desk/reports/SurveyResult.jsx b/src/components/app/support-desk/reports/SurveyResult.jsx new file mode 100644 index 0000000..f6b67a5 --- /dev/null +++ b/src/components/app/support-desk/reports/SurveyResult.jsx @@ -0,0 +1,217 @@ +import classNames from 'classnames'; +import { Link } from 'react-router'; +import Flex from 'components/common/Flex'; +import Avatar from 'components/common/Avatar'; +import { surveyResults } from 'data/support-desk/reportsData'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import AdvanceTable from 'components/common/advance-table/AdvanceTable'; +import { Button, Card, Col, Form, ProgressBar, Row } from 'react-bootstrap'; +import AdvanceTablePagination from 'components/common/advance-table/AdvanceTablePagination'; +import useAdvanceTable from 'hooks/useAdvanceTable'; +import AdvanceTableProvider, { + useAdvanceTableContext +} from 'providers/AdvanceTableProvider'; + +const columns = [ + { + accessorKey: 'name', + header: ' Agent Name', + meta: { + headerProps: { style: { height: '46px' }, className: 'text-900' }, + cellProps: { + className: 'white-space-nowrap pe-4 w-lg-25 py-3' + } + }, + cell: ({ row: { original } }) => { + const { name, avatar } = original; + return ( + + {avatar.img ? ( + + ) : ( + + )} +
    + + {name} + +
    +
    + ); + } + }, + { + accessorKey: 'satisfied', + header: 'Extremely Satisfied', + meta: { + headerProps: { className: 'text-900' }, + cellProps: { + className: 'white-space-nowrap pe-5 pe-xxl-8' + } + }, + cell: ({ row: { original } }) => { + const { satisfied } = original; + return ( + +
    + +
    {satisfied.total}
    +
    + + {satisfied.count} +
    +
    +
    {satisfied.date}
    +
    +
    + + +
    +
    + ); + } + }, + { + accessorKey: 'dissatisfied', + header: 'Extremely Dissatisfied', + meta: { + headerProps: { className: 'text-900' }, + cellProps: { + className: 'white-space-nowrap' + } + }, + cell: ({ row: { original } }) => { + const { dissatisfied } = original; + return ( + +
    + +
    {dissatisfied.total}
    +
    + + {dissatisfied.count} +
    +
    +
    {dissatisfied.date}
    +
    +
    + + +
    +
    + ); + } + } +]; + +const BulkAction = () => { + const { getSelectedRowModel } = useAdvanceTableContext(); + + return ( + <> + {getSelectedRowModel().rows.length > 0 ? ( +
    + + + + + + + +
    + ) : ( + + + + + + + )} + + ); +}; + +const SurveyResult = () => { + const table = useAdvanceTable({ + data: surveyResults, + columns, + selection: true, + sortable: true, + pagination: true, + perPage: 5, + selectionColumnWidth: 30 + }); + + return ( + + + + + +
    Agent Survey Result
    + + + + +
    +
    + + + + + + +
    +
    + ); +}; + +export default SurveyResult; diff --git a/src/components/app/support-desk/reports/distribution-of-performance/DistributionOfPerformance.jsx b/src/components/app/support-desk/reports/distribution-of-performance/DistributionOfPerformance.jsx new file mode 100644 index 0000000..b76aea8 --- /dev/null +++ b/src/components/app/support-desk/reports/distribution-of-performance/DistributionOfPerformance.jsx @@ -0,0 +1,49 @@ +import React from 'react'; +import CardDropdown from 'components/common/CardDropdown'; +import FalconCardHeader from 'components/common/FalconCardHeader'; +import { Button, Card, Col, Form, Row } from 'react-bootstrap'; +// import SimpleBar from 'simplebar-react'; +import DistributionOfPerformanceChart from './DistributionOfPerformanceChart'; +import { Link } from 'react-router'; + +const DistributionOfPerformance = () => { + return ( + + } + /> + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +}; + +export default DistributionOfPerformance; diff --git a/src/components/app/support-desk/reports/distribution-of-performance/DistributionOfPerformanceChart.jsx b/src/components/app/support-desk/reports/distribution-of-performance/DistributionOfPerformanceChart.jsx new file mode 100644 index 0000000..712c6a6 --- /dev/null +++ b/src/components/app/support-desk/reports/distribution-of-performance/DistributionOfPerformanceChart.jsx @@ -0,0 +1,133 @@ +import React from 'react'; +import { getPastDates, rgbaColor } from 'helpers/utils'; +import { BarChart } from 'echarts/charts'; +import { + GridComponent, + LegendComponent, + TitleComponent, + TooltipComponent +} from 'echarts/components'; +import * as echarts from 'echarts/core'; +import { CanvasRenderer } from 'echarts/renderers'; +import dayjs from 'dayjs'; +import { useAppContext } from 'providers/AppProvider'; +import ReactEchart from 'components/common/ReactEchart'; + +echarts.use([ + TitleComponent, + TooltipComponent, + GridComponent, + BarChart, + CanvasRenderer, + LegendComponent +]); + +const getOptions = (getThemeColor, isDark) => ({ + color: [getThemeColor('primary'), isDark ? '#236EA1' : '#7DD7FE'], + legend: { + data: ['Agent Support', 'Group Support'], + icon: 'circle', + itemWidth: 10, + itemHeight: 10, + padding: [0, 0, 0, 0], + textStyle: { + color: getThemeColor('gray-700'), + fontWeight: '500', + fontSize: '13px' + }, + left: 0, + top: 0, + itemGap: 16 + }, + tooltip: { + trigger: 'item', + padding: [7, 10], + backgroundColor: getThemeColor('gray-100'), + borderColor: getThemeColor('gray-300'), + textStyle: { color: getThemeColor('gray-900') }, + borderWidth: 1, + transitionDuration: 0, + axisPointer: { + type: 'none' + } + }, + xAxis: { + data: getPastDates(12).map(date => dayjs(date).format('MMM DD')), + splitLine: { show: false }, + splitArea: { show: false }, + + axisLabel: { + color: getThemeColor('gray-600') + }, + + axisLine: { + lineStyle: { + color: getThemeColor('gray-300') + } + }, + axisTick: { + show: false + } + }, + yAxis: { + splitLine: { + lineStyle: { + color: getThemeColor('gray-300'), + type: 'dashed' + } + }, + axisLabel: { + color: getThemeColor('gray-600') + } + }, + series: [ + { + name: 'Agent Support', + type: 'bar', + stack: 'one', + emphasis: { + itemStyle: { + shadowColor: rgbaColor(getThemeColor('gray-1100'), 0.3) + } + }, + data: [50, 25, 35, 30, 45, 35, 38, 30, 35, 30, 35, 38] + }, + { + name: 'Group Support', + type: 'bar', + stack: 'one', + emphasis: { + itemStyle: { + shadowColor: rgbaColor(getThemeColor('gray-1100'), 0.3) + } + }, + data: [45, 50, 40, 35, 50, 40, 44, 35, 40, 45, 40, 44], + itemStyle: { + borderRadius: [3, 3, 0, 0] + } + } + ], + barWidth: '15px', + grid: { + top: 46, + bottom: 0, + left: -3, + right: 0, + outerBoundsMode: 'same', + outerBoundsContain: 'axisLabel' + } +}); + +const DistributionOfPerformanceChart = () => { + const { config, getThemeColor } = useAppContext(); + const { isDark } = config; + return ( + + ); +}; + +export default DistributionOfPerformanceChart; diff --git a/src/components/app/support-desk/reports/greetings/GreetingDate.jsx b/src/components/app/support-desk/reports/greetings/GreetingDate.jsx new file mode 100644 index 0000000..f1fdca2 --- /dev/null +++ b/src/components/app/support-desk/reports/greetings/GreetingDate.jsx @@ -0,0 +1,48 @@ +import { useState } from 'react'; +import { Form } from 'react-bootstrap'; +import DatePicker from 'react-datepicker'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; + +const GreetingsDateInput = ({ value, onClick }, ref) => ( +
    + { + console.log({ e }); + }} + /> + +
    +); + +const GreetingsDate = () => { + const date = new Date(); + const [startDate, setStartDate] = useState(new Date()); + const [endDate, setEndDate] = useState(date.setDate(date.getDate() + 7)); + const onChange = dates => { + const [start, end] = dates; + setStartDate(start); + setEndDate(end); + }; + return ( + day.slice(0, 3)} + endDate={endDate} + selectsRange + dateFormat="MMM dd" + customInput={} + /> + ); +}; + +export default GreetingsDate; diff --git a/src/components/app/support-desk/reports/greetings/Greetings.jsx b/src/components/app/support-desk/reports/greetings/Greetings.jsx new file mode 100644 index 0000000..92a9658 --- /dev/null +++ b/src/components/app/support-desk/reports/greetings/Greetings.jsx @@ -0,0 +1,37 @@ +import React from 'react'; +import { Card, Col, Row } from 'react-bootstrap'; +import greetingsImg from 'assets/img/illustrations/reports-greeting.png'; +import GreetingsDate from './GreetingDate'; + +const Greetings = () => { + return ( + + + + + +
    +
    Welcome to
    +

    + Falcon + Support - Reports +

    +
    + + + + +
    Showing Data For:
    + + + + +
    + +
    +
    +
    + ); +}; + +export default Greetings; diff --git a/src/components/app/support-desk/reports/received-tickets/ReceivedTickets.jsx b/src/components/app/support-desk/reports/received-tickets/ReceivedTickets.jsx new file mode 100644 index 0000000..bd52155 --- /dev/null +++ b/src/components/app/support-desk/reports/received-tickets/ReceivedTickets.jsx @@ -0,0 +1,37 @@ +import FalconLink from 'components/common/FalconLink'; +import React from 'react'; +import { Card, Col, Form, Row } from 'react-bootstrap'; +import SimpleBar from 'simplebar-react'; +import ReceivedTicketsChart from './ReceivedTicketsChart'; + +const ReceivedTickets = () => { + return ( + + + + +
    Load Analysis by Received Tickets
    + + + + + + + + + +
    +
    + + + + + + + + +
    + ); +}; + +export default ReceivedTickets; diff --git a/src/components/app/support-desk/reports/received-tickets/ReceivedTicketsChart.jsx b/src/components/app/support-desk/reports/received-tickets/ReceivedTicketsChart.jsx new file mode 100644 index 0000000..41f63e0 --- /dev/null +++ b/src/components/app/support-desk/reports/received-tickets/ReceivedTicketsChart.jsx @@ -0,0 +1,153 @@ +import React from 'react'; +import { getPastDates, rgbaColor } from 'helpers/utils'; +import { BarChart } from 'echarts/charts'; +import { + GridComponent, + LegendComponent, + TitleComponent, + TooltipComponent +} from 'echarts/components'; +import * as echarts from 'echarts/core'; +import { CanvasRenderer } from 'echarts/renderers'; +import dayjs from 'dayjs'; +import { useAppContext } from 'providers/AppProvider'; +import ReactEchart from 'components/common/ReactEchart'; + +echarts.use([ + TitleComponent, + TooltipComponent, + GridComponent, + BarChart, + CanvasRenderer, + LegendComponent +]); + +const getOptions = getThemeColor => ({ + color: [ + getThemeColor('primary'), + getThemeColor('info'), + getThemeColor('gray-300') + ], + legend: { + data: [ + 'All Received Tickets', + 'New Received Tickets', + 'Total Received Load Tickets' + ], + icon: 'circle', + itemWidth: 10, + itemHeight: 10, + padding: [0, 0, 0, 0], + textStyle: { + color: getThemeColor('gray-700'), + fontWeight: '500', + fontSize: '13px' + }, + left: 0, + top: 0, + itemGap: 16 + }, + tooltip: { + trigger: 'item', + padding: [7, 10], + backgroundColor: getThemeColor('gray-100'), + borderColor: getThemeColor('gray-300'), + textStyle: { color: getThemeColor('gray-900') }, + borderWidth: 1, + transitionDuration: 0, + axisPointer: { + type: 'none' + } + }, + xAxis: { + data: getPastDates(10).map(date => dayjs(date).format('MMM DD')), + splitLine: { show: false }, + splitArea: { show: false }, + + axisLabel: { + color: getThemeColor('gray-600') + }, + + axisLine: { + lineStyle: { + color: getThemeColor('gray-300'), + type: 'dashed' + } + }, + axisTick: { + show: false + } + }, + yAxis: { + splitLine: { + lineStyle: { + color: getThemeColor('gray-300'), + type: 'dashed' + } + }, + axisLabel: { + color: getThemeColor('gray-600') + } + }, + series: [ + { + name: 'All Received Tickets', + type: 'bar', + stack: 'one', + emphasis: { + itemStyle: { + shadowColor: rgbaColor(getThemeColor('gray-1100'), 0.3) + } + }, + data: [28, 35, 28, 25, 21, 32, 25, 30, 23, 37] + }, + { + name: 'New Received Tickets', + type: 'bar', + stack: 'two', + emphasis: { + itemStyle: { + shadowColor: rgbaColor(getThemeColor('gray-1100'), 0.3) + } + }, + data: [20, 27, 21, 15, 17, 22, 18, 20, 15, 27] + }, + { + name: 'Total Received Load Tickets', + type: 'bar', + stack: 'three', + emphasis: { + itemStyle: { + shadowColor: rgbaColor(getThemeColor('gray-1100'), 0.3) + } + }, + data: [15, 21, 23, 21, 12, 14, 13, 15, 10, 19] + } + ], + itemStyle: { + borderRadius: [3, 3, 0, 0] + }, + + barWidth: '13.03px', + grid: { + top: 44, + bottom: 0, + left: -3, + right: 20, + outerBoundsMode: 'same', + outerBoundsContain: 'axisLabel' + } +}); + +const ReceivedTicketsChart = () => { + const { getThemeColor } = useAppContext(); + return ( + + ); +}; + +export default ReceivedTicketsChart; diff --git a/src/components/app/support-desk/reports/satisfaction-survey/SatisfactionSurvey.jsx b/src/components/app/support-desk/reports/satisfaction-survey/SatisfactionSurvey.jsx new file mode 100644 index 0000000..060c337 --- /dev/null +++ b/src/components/app/support-desk/reports/satisfaction-survey/SatisfactionSurvey.jsx @@ -0,0 +1,30 @@ +import React from 'react'; +import CardDropdown from 'components/common/CardDropdown'; +import FalconCardHeader from 'components/common/FalconCardHeader'; +import SimpleBar from 'simplebar-react'; +import { Card } from 'react-bootstrap'; +import SatisfactionSurveyChart from './SatisfactionSurveyChart'; +import FalconLink from 'components/common/FalconLink'; + +const SatisfactionSurvey = () => { + return ( + + } + /> + + + + + + + + + + ); +}; + +export default SatisfactionSurvey; diff --git a/src/components/app/support-desk/reports/satisfaction-survey/SatisfactionSurveyChart.jsx b/src/components/app/support-desk/reports/satisfaction-survey/SatisfactionSurveyChart.jsx new file mode 100644 index 0000000..6528b04 --- /dev/null +++ b/src/components/app/support-desk/reports/satisfaction-survey/SatisfactionSurveyChart.jsx @@ -0,0 +1,135 @@ +import React from 'react'; +import { getPastDates, rgbaColor } from 'helpers/utils'; +import { BarChart } from 'echarts/charts'; +import { + GridComponent, + LegendComponent, + TitleComponent, + TooltipComponent +} from 'echarts/components'; +import * as echarts from 'echarts/core'; +import { CanvasRenderer } from 'echarts/renderers'; +import dayjs from 'dayjs'; +import { useAppContext } from 'providers/AppProvider'; +import ReactEchart from 'components/common/ReactEchart'; + +echarts.use([ + TitleComponent, + TooltipComponent, + GridComponent, + BarChart, + CanvasRenderer, + LegendComponent +]); + +const getOptions = getThemeColor => ({ + color: [getThemeColor('primary'), getThemeColor('gray-200')], + legend: { + data: ['Satisfied', 'Dissatisfied'], + icon: 'circle', + itemWidth: 10, + itemHeight: 10, + padding: [0, 0, 0, 0], + textStyle: { + color: getThemeColor('gray-700'), + fontWeight: '500', + fontSize: '13px' + }, + left: 0, + top: 0, + itemGap: 16 + }, + tooltip: { + trigger: 'item', + padding: [7, 10], + backgroundColor: getThemeColor('gray-100'), + borderColor: getThemeColor('gray-300'), + textStyle: { color: getThemeColor('gray-900') }, + borderWidth: 1, + transitionDuration: 0, + axisPointer: { + type: 'none' + } + }, + xAxis: { + data: getPastDates(11).map(date => dayjs(date).format('DD MMM')), + splitLine: { show: false }, + splitArea: { show: false }, + + axisLabel: { + color: getThemeColor('gray-600') + }, + + axisLine: { + lineStyle: { + color: getThemeColor('gray-300') + } + }, + axisTick: { + show: false + } + }, + yAxis: { + splitLine: { + lineStyle: { + color: getThemeColor('gray-300'), + type: 'dashed' + } + }, + axisLabel: { + color: getThemeColor('gray-600') + } + }, + series: [ + { + name: 'Satisfied', + type: 'bar', + stack: 'one', + emphasis: { + itemStyle: { + shadowColor: rgbaColor(getThemeColor('gray-1100'), 0.3) + } + }, + data: [98, 105, 65, 110, 75, 55, 95, 75, 90, 45, 70] + }, + { + name: 'Dissatisfied', + type: 'bar', + stack: 'two', + emphasis: { + itemStyle: { + shadowColor: rgbaColor(getThemeColor('gray-1100'), 0.3), + color: getThemeColor('gray-300') + } + }, + data: [80, 60, 78, 58, 65, 65, 75, 110, 40, 60, 60] + } + ], + itemStyle: { + borderRadius: [3, 3, 0, 0] + }, + + barWidth: '13.03px', + grid: { + top: 46, + bottom: -1, + left: -3, + right: 0, + outerBoundsMode: 'same', + outerBoundsContain: 'axisLabel' + } +}); + +const SatisfactionSurveyChart = () => { + const { getThemeColor } = useAppContext(); + + return ( + + ); +}; + +export default SatisfactionSurveyChart; diff --git a/src/components/app/support-desk/reports/ticket-volume/TicketVolume.jsx b/src/components/app/support-desk/reports/ticket-volume/TicketVolume.jsx new file mode 100644 index 0000000..dda6ad5 --- /dev/null +++ b/src/components/app/support-desk/reports/ticket-volume/TicketVolume.jsx @@ -0,0 +1,172 @@ +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import classNames from 'classnames'; +import Flex from 'components/common/Flex'; +import { useRef } from 'react'; +import { Badge, Card, Col, Form, Row } from 'react-bootstrap'; +import TicketVolumeChart from './TicketVolumeChart'; +import { ticketVolume } from 'data/support-desk/reportsData'; +import FalconLink from 'components/common/FalconLink'; + +const FormCheck = ({ title, id, inputClass, checkBoxClass, handleLegend }) => { + return ( + + handleLegend(event, title)} + type="checkbox" + id={id} + defaultChecked + className={classNames( + inputClass, + 'dot mt-0 shadow-none remove-checked-icon rounded-circle cursor-pointer' + )} + /> + + {title} + + + ); +}; + +const TicketsCategory = ({ title, number, percentage, icon, badgeColor }) => { + return ( +
    +
    + {number} + + + {percentage} + +
    +
    {title}
    +
    + ); +}; + +const TicketVolume = () => { + const chartRef = useRef(null); + const handleLegend = (event, name) => { + chartRef.current.getEchartsInstance().dispatchAction({ + type: 'legendToggleSelect', + name: name + }); + }; + return ( + + + + +
    Trends in Ticket Volume
    + + + + + + + + + +
    +
    + + + + + + + + + + + + + + + + +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    + +
    + +
    + +
    + + + +
    + ); +}; + +export default TicketVolume; diff --git a/src/components/app/support-desk/reports/ticket-volume/TicketVolumeChart.jsx b/src/components/app/support-desk/reports/ticket-volume/TicketVolumeChart.jsx new file mode 100644 index 0000000..414a6e8 --- /dev/null +++ b/src/components/app/support-desk/reports/ticket-volume/TicketVolumeChart.jsx @@ -0,0 +1,168 @@ +import { BarChart } from 'echarts/charts'; +import { + GridComponent, + LegendComponent, + TitleComponent, + TooltipComponent +} from 'echarts/components'; +import { CanvasRenderer } from 'echarts/renderers'; +import * as echarts from 'echarts/core'; +import { getPastDates, getPosition } from 'helpers/utils'; +import dayjs from 'dayjs'; +import { tooltipFormatter } from 'helpers/echart-utils'; +import { useAppContext } from 'providers/AppProvider'; +import ReactEchart from 'components/common/ReactEchart'; + +echarts.use([ + TitleComponent, + TooltipComponent, + GridComponent, + BarChart, + CanvasRenderer, + LegendComponent +]); + +const getOption = (getThemeColor, isDark) => ({ + color: [ + getThemeColor('primary'), + isDark ? '#235FAD' : '#6AA2EC', + isDark ? '#1C4477' : '#AACAF4', + isDark ? '#152C48' : '#DFEBFB' + ], + legend: { + data: [ + 'On Hold Tickets', + 'Open Tickets', + 'Due Tickets', + 'Unassigned Tickets' + ], + show: false + }, + xAxis: { + type: 'category', + data: getPastDates(10).map(date => dayjs(date).format('MMM DD')), + axisLine: { + show: false + }, + splitLine: { + lineStyle: { + color: getThemeColor('gray-300') + } + }, + axisTick: { + show: false + }, + axisLabel: { + color: getThemeColor('gray-600') + } + }, + yAxis: { + type: 'value', + splitLine: { + lineStyle: { + color: getThemeColor('gray-300') + } + }, + axisLine: { + show: false + }, + axisTick: { + show: false + }, + axisLabel: { + show: true, + color: getThemeColor('gray-600') + } + }, + tooltip: { + trigger: 'axis', + padding: [7, 10], + axisPointer: { + type: 'none' + }, + backgroundColor: getThemeColor('gray-100'), + borderColor: getThemeColor('gray-300'), + textStyle: { color: getThemeColor('gray-1100') }, + borderWidth: 1, + transitionDuration: 0, + position(pos, params, dom, rect, size) { + return getPosition(pos, params, dom, rect, size); + }, + formatter: tooltipFormatter + }, + + series: [ + { + name: 'On Hold Tickets', + type: 'bar', + stack: 'total', + data: [8, 6, 5, 12, 9, 6, 9, 6, 4, 7], + emphasis: { + itemStyle: { + color: getThemeColor('primary') + } + } + }, + { + name: 'Open Tickets', + type: 'bar', + stack: 'total', + data: [15, 10, 7, 7, 5, 6, 15, 10, 7, 12], + emphasis: { + itemStyle: { + color: isDark ? '#2567BD' : '#5595E9' + } + } + }, + { + name: 'Due Tickets', + type: 'bar', + stack: 'total', + data: [5, 4, 4, 6, 6, 8, 7, 4, 3, 5], + emphasis: { + itemStyle: { + color: isDark ? '#205396' : '#7FB0EF' + } + } + }, + { + name: 'Unassigned Tickets', + type: 'bar', + stack: 'total', + data: [6, 3, 6, 4, 12, 7, 5, 3, 2, 4], + itemStyle: { + borderRadius: [2, 2, 0, 0] + }, + emphasis: { + itemStyle: { + color: isDark ? '#1A3F6F' : '#AACAF4' + } + } + } + ], + + grid: { + right: 0, + left: -1, + bottom: 1, + top: 29, + outerBoundsMode: 'same', + outerBoundsContain: 'axisLabel' + } +}); + +const TicketVolumeChart = ({ _, ref }) => { + const { config, getThemeColor } = useAppContext(); + const { isDark } = config; + return ( + + ); +}; + + +export default TicketVolumeChart; diff --git a/src/components/app/support-desk/reports/top-customers/TopCustomerChart.jsx b/src/components/app/support-desk/reports/top-customers/TopCustomerChart.jsx new file mode 100644 index 0000000..ace2851 --- /dev/null +++ b/src/components/app/support-desk/reports/top-customers/TopCustomerChart.jsx @@ -0,0 +1,129 @@ +import { LineChart } from 'echarts/charts'; +import { + GridComponent, + LegendComponent, + TitleComponent, + TooltipComponent +} from 'echarts/components'; +import * as echarts from 'echarts/core'; +import { CanvasRenderer } from 'echarts/renderers'; +import { getPosition, rgbaColor } from 'helpers/utils'; +import { useAppContext } from 'providers/AppProvider'; +import ReactEchart from 'components/common/ReactEchart'; + +echarts.use([ + TitleComponent, + TooltipComponent, + GridComponent, + LineChart, + CanvasRenderer, + LegendComponent +]); + +const getOptions = (getThemeColor, data) => ({ + color: getThemeColor('gray-100'), + tooltip: { + trigger: 'item', + padding: [7, 10], + backgroundColor: getThemeColor('gray-100'), + borderColor: getThemeColor('gray-300'), + textStyle: { color: getThemeColor('gray-1100') }, + borderWidth: 1, + transitionDuration: 0, + position(pos, params, dom, rect, size) { + return getPosition(pos, params, dom, rect, size); + }, + axisPointer: { + type: 'none' + } + }, + xAxis: { + type: 'category', + data: ['1H', '2H', '3H', '4H', '5H', '6H', '7H', '8H', '9H', '10H'], + axisLabel: { + color: getThemeColor('gray-600'), + margin: 15 + }, + axisLine: { + lineStyle: { + color: getThemeColor('gray-300'), + type: 'dashed' + } + }, + axisTick: { + show: false + }, + boundaryGap: 0 + }, + yAxis: { + type: 'value', + axisPointer: { show: false }, + splitLine: { + lineStyle: { + color: getThemeColor('gray-300'), + type: 'dashed' + } + }, + boundaryGap: 0, + axisLabel: { + show: true, + color: getThemeColor('gray-600'), + margin: 25 + }, + axisTick: { show: false }, + axisLine: { show: false } + }, + series: [ + { + type: 'line', + data: data, + symbol: 'circle', + symbolSize: 10, + itemStyle: { + borderColor: getThemeColor('primary'), + borderWidth: 2 + }, + lineStyle: { color: getThemeColor('primary') }, + areaStyle: { + color: { + type: 'linear', + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [ + { + offset: 0, + color: rgbaColor(getThemeColor('primary'), 0.1) + }, + { + offset: 1, + color: rgbaColor(getThemeColor('primary'), 0) + } + ] + } + } + } + ], + grid: { + right: -2, + left: -2, + bottom: 15, + top: 4, + outerBoundsMode: 'same', + outerBoundsContain: 'axisLabel' + } +}); + +const TopCustomerChart = ({ data }) => { + const { getThemeColor } = useAppContext(); + return ( + + ); +}; + +export default TopCustomerChart; diff --git a/src/components/app/support-desk/reports/top-customers/TopCustomers.jsx b/src/components/app/support-desk/reports/top-customers/TopCustomers.jsx new file mode 100644 index 0000000..edaf3ce --- /dev/null +++ b/src/components/app/support-desk/reports/top-customers/TopCustomers.jsx @@ -0,0 +1,138 @@ +import CardDropdown from 'components/common/CardDropdown'; +import FalconCardHeader from 'components/common/FalconCardHeader'; +import { useState } from 'react'; +import { Card, Col, Form, Nav, Row, Tab } from 'react-bootstrap'; +import { topCustomerData } from 'data/support-desk/reportsData'; +import Flex from 'components/common/Flex'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import SubtleBadge from 'components/common/SubtleBadge'; +import TopCustomerChart from './TopCustomerChart'; +import FalconLink from 'components/common/FalconLink'; + +const NavItem = ({ item, index }) => { + return ( + + + {item} + + + ); +}; + +const TabItem = ({ percentage, count, data }) => { + return ( + <> + +

    {percentage}

    + + + {count} + +
    + + + ); +}; + +const TopCustomers = () => { + const [navItems] = useState([ + 'MON', + 'TUE', + 'WED', + 'THU', + 'FRI', + 'SAT', + 'SUN' + ]); + return ( + + } + /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +}; + +export default TopCustomers; diff --git a/src/components/app/support-desk/tickets-layout/AgentSelect.jsx b/src/components/app/support-desk/tickets-layout/AgentSelect.jsx new file mode 100644 index 0000000..14dd00e --- /dev/null +++ b/src/components/app/support-desk/tickets-layout/AgentSelect.jsx @@ -0,0 +1,18 @@ +import { Form } from 'react-bootstrap'; + +export const AgentSelect = ({ agent, className = '' }) => { + return ( + + {['Select Agent', 'Anindya', 'Nowrin', 'Khalid'].map(item => ( + + ))} + + ); +}; + +export default AgentSelect; diff --git a/src/components/app/support-desk/tickets-layout/AllTicketsHeader.jsx b/src/components/app/support-desk/tickets-layout/AllTicketsHeader.jsx new file mode 100644 index 0000000..d31ef48 --- /dev/null +++ b/src/components/app/support-desk/tickets-layout/AllTicketsHeader.jsx @@ -0,0 +1,137 @@ +import classNames from 'classnames'; +import paths from 'routes/paths'; +import { Link } from 'react-router'; +import { Button, Col, Dropdown, Form, Row } from 'react-bootstrap'; +import IconButton from 'components/common/IconButton'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { useAdvanceTableContext } from 'providers/AdvanceTableProvider'; +import AdvanceTableSearchBox from 'components/common/advance-table/AdvanceTableSearchBox'; + +const AllTicketsHeader = ({ layout, handleShow }) => { + const { getSelectedRowModel } = useAdvanceTableContext(); + + return ( +
    + + +
    All tickets
    + + + + +
    +
    +
    + + Filter + +
    + {getSelectedRowModel().rows.length > 0 ? ( +
    + + + + + + + +
    + ) : ( +
    + + + + {layout === 'table-view' ? 'Table view' : 'Card view'} + + + + +
    + + Table View + + + Card View + +
    +
    +
    + + + New + + + + + Export + + + + + + + + +
    + View + Export + + Remove +
    +
    +
    +
    + )} +
    +
    + ); +}; + +export default AllTicketsHeader; diff --git a/src/components/app/support-desk/tickets-layout/CardLayout.jsx b/src/components/app/support-desk/tickets-layout/CardLayout.jsx new file mode 100644 index 0000000..99d5b2e --- /dev/null +++ b/src/components/app/support-desk/tickets-layout/CardLayout.jsx @@ -0,0 +1,94 @@ +import React from 'react'; +import { Col, Row } from 'react-bootstrap'; +import { Link } from 'react-router'; +import paths from 'routes/paths'; +import Priority from './Priority'; +import AgentSelect from './AgentSelect'; +import Avatar from 'components/common/Avatar'; +import SubtleBadge from 'components/common/SubtleBadge'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { useAdvanceTableContext } from 'providers/AdvanceTableProvider'; +import IndeterminateCheckbox from 'components/common/advance-table/IndeterminateCheckbox'; + +const CardLayout = () => { + const { getRowModel } = useAdvanceTableContext(); + + return ( +
    + {getRowModel().rows.map((row, index) => { + const { name, date, status, subject, avatar, agent, priority } = + row.original; + const { + getIsSelected, + getCanSelect, + getIsSomeSelected, + getToggleSelectedHandler + } = row; + + return ( +
    +
    + + + {avatar.img ? ( + + ) : ( + + )} + +
    +

    + {subject} +

    + + +
    + + + {name} + +
    + + + {status.content} + + +
    {date}
    + +
    +
    +
    +
    +
    + + +
    +
    + ); + })} +
    + ); +}; + +export default CardLayout; diff --git a/src/components/app/support-desk/tickets-layout/CardView.jsx b/src/components/app/support-desk/tickets-layout/CardView.jsx new file mode 100644 index 0000000..a9ba43e --- /dev/null +++ b/src/components/app/support-desk/tickets-layout/CardView.jsx @@ -0,0 +1,60 @@ +import React, { useState } from 'react'; +import { Card, Col, Offcanvas, Row } from 'react-bootstrap'; +import AllTicketsHeader from './AllTicketsHeader'; +import TicketFilteringForm from './TicketFilteringForm'; +import { useBreakpoints } from 'hooks/useBreakpoints'; +import AdvanceTableProvider from 'providers/AdvanceTableProvider'; +import AdvanceTablePagination from 'components/common/advance-table/AdvanceTablePagination'; +import useSupportDeskTable from 'hooks/useSupportDeskTable'; +import CardLayout from './CardLayout'; + +const CardView = () => { + const [show, setShow] = useState(false); + const { breakpoints } = useBreakpoints(); + const handleClose = () => setShow(false); + const handleShow = () => setShow(true); + + const table = useSupportDeskTable({ + perPage: 7, + pagination: true + }); + + return ( + + + + + + + + + + + + + + + + + + {breakpoints.down('xl') ? ( + + +
    Filter
    +
    + +
    + ) : ( + + )} + +
    + ); +}; + +export default CardView; diff --git a/src/components/app/support-desk/tickets-layout/Priority.jsx b/src/components/app/support-desk/tickets-layout/Priority.jsx new file mode 100644 index 0000000..0d9e0f8 --- /dev/null +++ b/src/components/app/support-desk/tickets-layout/Priority.jsx @@ -0,0 +1,41 @@ + +const Priority = ({ title, color, data }) => { + return ( +
    +
    + + + + +
    +
    {title}
    +
    + ); +}; + +export default Priority; diff --git a/src/components/app/support-desk/tickets-layout/TableView.jsx b/src/components/app/support-desk/tickets-layout/TableView.jsx new file mode 100644 index 0000000..1c6cd54 --- /dev/null +++ b/src/components/app/support-desk/tickets-layout/TableView.jsx @@ -0,0 +1,70 @@ +import React, { useState } from 'react'; +import { Card, Col, Offcanvas, Row } from 'react-bootstrap'; +import AdvanceTable from 'components/common/advance-table/AdvanceTable'; +import AdvanceTablePagination from 'components/common/advance-table/AdvanceTablePagination'; +import AllTicketsHeader from './AllTicketsHeader'; +import TicketFilteringForm from './TicketFilteringForm'; +import { useBreakpoints } from 'hooks/useBreakpoints'; +import AdvanceTableProvider from 'providers/AdvanceTableProvider'; +import useSupportDeskTable from 'hooks/useSupportDeskTable'; + +const TableView = () => { + const [show, setShow] = useState(false); + const { breakpoints } = useBreakpoints(); + const handleClose = () => setShow(false); + const handleShow = () => setShow(true); + + const table = useSupportDeskTable({ + selection: true, + sortable: true, + pagination: true, + perPage: 11, + selectionColumnWidth: 52 + }); + + return ( + + + + + + + + + + + + + + + + + + {breakpoints.down('xl') ? ( + + +
    Filter
    +
    + +
    + ) : ( + + )} + +
    + ); +}; + +export default TableView; diff --git a/src/components/app/support-desk/tickets-layout/TicketFilteringForm.jsx b/src/components/app/support-desk/tickets-layout/TicketFilteringForm.jsx new file mode 100644 index 0000000..947b84d --- /dev/null +++ b/src/components/app/support-desk/tickets-layout/TicketFilteringForm.jsx @@ -0,0 +1,126 @@ +import React from 'react'; +import { Button, Card, Form } from 'react-bootstrap'; + +const TicketFilteringForm = () => { + return ( + + +
    Filter
    +
    + +
    +
    + Priority + + + + + + + +
    +
    + Source + + + + + + + + + + + + + + +
    +
    + Status + + + + + + + + +
    +
    + Group + + + + + + + + +
    +
    + Agent + + + + + + +
    +
    + Type + + + + + + + + +
    +
    + Category + + + + + + + + + + +
    +
    + Tags + + + + + + + + +
    +
    + Subscription + + + + + + + +
    +
    +
    + + + +
    + ); +}; + +export default TicketFilteringForm; diff --git a/src/components/app/support-desk/tickets-preview/ContactInfo.jsx b/src/components/app/support-desk/tickets-preview/ContactInfo.jsx new file mode 100644 index 0000000..1999230 --- /dev/null +++ b/src/components/app/support-desk/tickets-preview/ContactInfo.jsx @@ -0,0 +1,79 @@ +import Avatar from 'components/common/Avatar'; +import CardDropdown from 'components/common/CardDropdown'; +import FalconCardHeader from 'components/common/FalconCardHeader'; +import React from 'react'; +import { Card, Col, Row } from 'react-bootstrap'; +import profileImg from 'assets/img/team/1.jpg'; +import { Link } from 'react-router'; +import SubtleBadge from 'components/common/SubtleBadge'; +import paths from 'routes/paths'; + +const ContactInfo = () => { + return ( + + } + /> + + + + + + +

    Emma Watson

    + + View more details + + +
    + + + + +
    Email
    + + mattrogers@gmail.com + + + +
    Phone Number
    + + +6(855) 747 677 + + +
    + + +
    +
    + Previous Tickets + Responded +
    + + When I unboxed my TV, I found a broken TV + +

    + 01 March, 2020 + | + 8:40 AM +

    + +
    +
    +
    + ); +}; + +export default ContactInfo; diff --git a/src/components/app/support-desk/tickets-preview/Conversation.jsx b/src/components/app/support-desk/tickets-preview/Conversation.jsx new file mode 100644 index 0000000..adb60f5 --- /dev/null +++ b/src/components/app/support-desk/tickets-preview/Conversation.jsx @@ -0,0 +1,202 @@ +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import classNames from 'classnames'; +import Avatar from 'components/common/Avatar'; +import Flex from 'components/common/Flex'; +import IconButton from 'components/common/IconButton'; +import { messages } from 'data/support-desk/ticketsPreviewData'; +import { + Button, + Card, + Col, + OverlayTrigger, + Row, + Tooltip +} from 'react-bootstrap'; +import { Link } from 'react-router'; +import { useState } from 'react'; +import Compose from 'components/app/email/compose/Compose'; +import paths from 'routes/paths'; + +const File = ({ icon, title, action, actionIcon, className }) => { + return ( +
    + + {title} + {action}} + > + + + + +
    + ); +}; + +const Mail = ({ message, index }) => { + return ( +
    + {/* mail header */} +
    + + + + +

    + + {message.sender} + + + {message.type} + + + {message.email} + +

    +
    +

    + {message.date} + | + {message.time} + +

    +
    + {/* mail body */} +
    +
    {message.subject}
    +

    {message.salutation}

    +

    {message.message}

    +

    {message.conclusion}

    +

    {message.closing}

    +

    {message.sender}

    + {message.attached && ( +
    +
    + + +
    +
    + + +

    + 2 files + attached +

    + + + + Download all + + +
    +
    + )} +
    + {index === 0 && ( +
    +
    + + + +
    + )} +
    + ); +}; + + +const Conversation = () => { + const [showForm, setShowForm] = useState(false); + return ( + + +
    + + Received a broken TV +
    +
    + + {messages.map((message, index) => ( + + ))} + + {showForm && ( + + )} + {!showForm && ( + + setShowForm(true)} + > + Reply + + setShowForm(true)} + > + Forward + + setShowForm(true)} + > + Add Note + + + )} +
    + ); +}; + +export default Conversation; diff --git a/src/components/app/support-desk/tickets-preview/PropertiesFilteringForm.jsx b/src/components/app/support-desk/tickets-preview/PropertiesFilteringForm.jsx new file mode 100644 index 0000000..8506628 --- /dev/null +++ b/src/components/app/support-desk/tickets-preview/PropertiesFilteringForm.jsx @@ -0,0 +1,75 @@ +import React from 'react'; +import { Button, Card, Form } from 'react-bootstrap'; + +const PropertiesFilteringForm = () => { + return ( + + +
    Properties
    +
    + +
    +
    + Type + + + + + + + + +
    +
    + Status + + + + + + + + +
    +
    + Priority + + + + + + + +
    +
    + Agent + + + + + + +
    +
    + Tags + + + + + + + + +
    +
    +
    + + + +
    + ); +}; + +export default PropertiesFilteringForm; diff --git a/src/components/app/support-desk/tickets-preview/TicketsPreview.jsx b/src/components/app/support-desk/tickets-preview/TicketsPreview.jsx new file mode 100644 index 0000000..2f9b07b --- /dev/null +++ b/src/components/app/support-desk/tickets-preview/TicketsPreview.jsx @@ -0,0 +1,32 @@ +import React from 'react'; +import { Col, Row } from 'react-bootstrap'; +import Conversation from './Conversation'; +import PropertiesFilteringForm from './PropertiesFilteringForm'; +import TicketsPreviewHeader from './TicketsPreviewHeader'; +import ToDoList from 'components/dashboards/support-desk/ToDoList'; +import ContactInfo from './ContactInfo'; +const TicketsPreview = () => { + return ( + + + + + + + + + + + + + + + + + + + + ); +}; + +export default TicketsPreview; diff --git a/src/components/app/support-desk/tickets-preview/TicketsPreviewHeader.jsx b/src/components/app/support-desk/tickets-preview/TicketsPreviewHeader.jsx new file mode 100644 index 0000000..675eb06 --- /dev/null +++ b/src/components/app/support-desk/tickets-preview/TicketsPreviewHeader.jsx @@ -0,0 +1,82 @@ +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import Flex from 'components/common/Flex'; +import IconButton from 'components/common/IconButton'; +import React from 'react'; +import { Card, Dropdown } from 'react-bootstrap'; +import { useNavigate } from 'react-router'; + +const TicketsPreviewHeader = () => { + const navigate = useNavigate(); + return ( + + + navigate(-1)} + variant="falcon-default" + size="sm" + icon="arrow-left" + /> + + + Merge + + + close + + + Ban visitor + + + Delete + + + + + + + +
    + View + Export + Delete + + Remove +
    +
    +
    +
    +
    +
    + ); +}; + +export default TicketsPreviewHeader; diff --git a/src/components/authentication/ConfirmMailContent.jsx b/src/components/authentication/ConfirmMailContent.jsx new file mode 100644 index 0000000..30eb5a3 --- /dev/null +++ b/src/components/authentication/ConfirmMailContent.jsx @@ -0,0 +1,50 @@ +import { Button } from 'react-bootstrap'; +import { Link } from 'react-router'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import envelope from 'assets/img/icons/spot-illustrations/16.png'; +import paths from 'routes/paths'; + +const loginPaths = { + simple: paths.simpleLogin, + split: paths.splitLogin, + card: paths.cardLogin +}; + +const ConfirmMailContent = ({ + email, + layout = 'simple', + titleTag: TitleTag = 'h4' +}) => { + return ( + <> + sent + Please check your email! +

    + An email has been sent to {email}. Please click on the + included link to reset your password. +

    + + + ); +}; + + +export default ConfirmMailContent; diff --git a/src/components/authentication/ForgetPasswordForm.jsx b/src/components/authentication/ForgetPasswordForm.jsx new file mode 100644 index 0000000..88c97b5 --- /dev/null +++ b/src/components/authentication/ForgetPasswordForm.jsx @@ -0,0 +1,50 @@ +import React, { useState } from 'react'; +import { Link } from 'react-router'; +import { toast } from 'react-toastify'; +import { Button, Form } from 'react-bootstrap'; + +const ForgetPasswordForm = () => { + // State + const [email, setEmail] = useState(''); + + // Handler + const handleSubmit = e => { + e.preventDefault(); + if (email) { + toast.success( +
    + An email is sent to {email} with password reset link +
    , + { + theme: 'colored' + }); + } + }; + + return ( +
    + + setEmail(target.value)} + type="email" + /> + + + + + + + + I can't recover my account using this page + + +
    + ); +}; + +export default ForgetPasswordForm; diff --git a/src/components/authentication/LockScreenForm.jsx b/src/components/authentication/LockScreenForm.jsx new file mode 100644 index 0000000..d52ee7e --- /dev/null +++ b/src/components/authentication/LockScreenForm.jsx @@ -0,0 +1,55 @@ +import { useState } from 'react'; +import { toast } from 'react-toastify'; +import { Button, Col, Form, Row } from 'react-bootstrap'; +import classNames from 'classnames'; + +const LockScreenForm = ({ type, ...rest }) => { + // State + const [password, setPassword] = useState(''); + + // Handler + const handleSubmit = e => { + e.preventDefault(); + // setRedirect(true); + toast.success( +
    + Logged in as Emma Watson +
    + , { + theme: 'colored' + }); + }; + + return ( + + + setPassword(target.value)} + type="password" + /> + + + + + + ); +}; + +export default LockScreenForm; diff --git a/src/components/authentication/LoginForm.jsx b/src/components/authentication/LoginForm.jsx new file mode 100644 index 0000000..fe02c9b --- /dev/null +++ b/src/components/authentication/LoginForm.jsx @@ -0,0 +1,111 @@ +import Divider from 'components/common/Divider'; +import { useState } from 'react'; +import { Button, Col, Form, Row } from 'react-bootstrap'; +import { Link } from 'react-router'; +import { toast } from 'react-toastify'; +import SocialAuthButtons from './SocialAuthButtons'; +import paths from 'routes/paths'; + +const forgotPasswordPaths = { + simple: paths.simpleForgotPassword, + split: paths.splitForgotPassword, + card: paths.cardForgotPassword +}; + +const LoginForm = ({ hasLabel = false, layout = 'simple' }) => { + // State + const [formData, setFormData] = useState({ + email: '', + password: '', + remember: false + }); + + // Handler + const handleSubmit = e => { + e.preventDefault(); + toast.success( +
    + Logged in as {formData.email} +
    + , { + theme: 'colored' + }); + }; + + const handleFieldChange = e => { + setFormData({ + ...formData, + [e.target.name]: e.target.value + }); + }; + + return ( +
    + + {hasLabel && Email address} + + + + + {hasLabel && Password} + + + + + + + + setFormData({ + ...formData, + remember: e.target.checked + }) + } + /> + + Remember me + + + + + + + Forgot Password? + + + + + + + + + or log in with + + + + ); +}; + +export default LoginForm; diff --git a/src/components/authentication/LogoutContent.jsx b/src/components/authentication/LogoutContent.jsx new file mode 100644 index 0000000..e2b210a --- /dev/null +++ b/src/components/authentication/LogoutContent.jsx @@ -0,0 +1,46 @@ +import { Button } from 'react-bootstrap'; +import { Link } from 'react-router'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import logoutImg from 'assets/img/icons/spot-illustrations/45.png'; +import paths from 'routes/paths'; + +const loginPaths = { + simple: paths.simpleLogin, + split: paths.splitLogin, + card: paths.cardLogin +}; + +const LogoutContent = ({ layout = 'simple', titleTag: TitleTag = 'h4' }) => { + return ( + <> + shield + See you again! +

    + Thanks for using Falcon. You are
    + now successfully signed out. +

    + + + ); +}; + + +export default LogoutContent; diff --git a/src/components/authentication/PasswordResetForm.jsx b/src/components/authentication/PasswordResetForm.jsx new file mode 100644 index 0000000..66706c4 --- /dev/null +++ b/src/components/authentication/PasswordResetForm.jsx @@ -0,0 +1,70 @@ +import { useState } from 'react'; +import { toast } from 'react-toastify'; +import { Button, Form } from 'react-bootstrap'; +import classNames from 'classnames'; + +const PasswordResetForm = ({ hasLabel }) => { + // State + const [formData, setFormData] = useState({ + password: '', + confirmPassword: '' + }); + + // Handler + const handleSubmit = e => { + e.preventDefault(); + toast.success( +
    + Login with your new password +
    + , { + theme: 'colored' + }); + }; + + const handleFieldChange = e => { + setFormData({ + ...formData, + [e.target.name]: e.target.value + }); + }; + + return ( +
    + + {hasLabel && New Password} + + + + + {hasLabel && Confirm Password} + + + + +
    + ); +}; + +export default PasswordResetForm; diff --git a/src/components/authentication/RegistrationForm.jsx b/src/components/authentication/RegistrationForm.jsx new file mode 100644 index 0000000..408787f --- /dev/null +++ b/src/components/authentication/RegistrationForm.jsx @@ -0,0 +1,126 @@ +import { useState } from 'react'; +import { Link } from 'react-router'; +import { toast } from 'react-toastify'; +import { Button, Form, Row, Col } from 'react-bootstrap'; +import Divider from 'components/common/Divider'; +import SocialAuthButtons from './SocialAuthButtons'; + +const RegistrationForm = ({ hasLabel }) => { + // State + const [formData, setFormData] = useState({ + name: '', + email: '', + password: '', + confirmPassword: '', + isAccepted: false + }); + + // Handler + const handleSubmit = e => { + e.preventDefault(); + toast.success( +
    + Successfully registered as {formData.name} +
    + , { + theme: 'colored' + }); + }; + + const handleFieldChange = e => { + setFormData({ + ...formData, + [e.target.name]: e.target.value + }); + }; + + return ( +
    + + {hasLabel && Name} + + + + + {hasLabel && Email address} + + + + + + {hasLabel && Password} + + + + {hasLabel && Confirm Password} + + + + + + + + setFormData({ + ...formData, + isAccepted: e.target.checked + }) + } + /> + + I accept the terms and{' '} + privacy policy + + + + + + + + or register with + + + + ); +}; + +export default RegistrationForm; diff --git a/src/components/authentication/SocialAuthButtons.jsx b/src/components/authentication/SocialAuthButtons.jsx new file mode 100644 index 0000000..85ceb76 --- /dev/null +++ b/src/components/authentication/SocialAuthButtons.jsx @@ -0,0 +1,40 @@ +import React from 'react'; +import { Form, Button, Col, Row } from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; + +const SocialAuthButtons = () => ( + + + + + + + + + + +); + +export default SocialAuthButtons; diff --git a/src/components/authentication/card/ConfirmMail.jsx b/src/components/authentication/card/ConfirmMail.jsx new file mode 100644 index 0000000..7f0d387 --- /dev/null +++ b/src/components/authentication/card/ConfirmMail.jsx @@ -0,0 +1,13 @@ +import React from 'react'; +import ConfirmMailContent from 'components/authentication/ConfirmMailContent'; +import AuthCardLayout from 'layouts/AuthCardLayout'; + +const ConfirmMail = () => ( + +
    + +
    +
    +); + +export default ConfirmMail; diff --git a/src/components/authentication/card/ForgetPassword.jsx b/src/components/authentication/card/ForgetPassword.jsx new file mode 100644 index 0000000..44e93c2 --- /dev/null +++ b/src/components/authentication/card/ForgetPassword.jsx @@ -0,0 +1,15 @@ +import React from 'react'; +import ForgetPasswordForm from 'components/authentication/ForgetPasswordForm'; +import AuthCardLayout from 'layouts/AuthCardLayout'; + +const ForgetPassword = () => { + return ( + +

    Forgot your password?

    +

    Enter your email and we'll send you a reset link.

    + +
    + ); +}; + +export default ForgetPassword; diff --git a/src/components/authentication/card/LockScreen.jsx b/src/components/authentication/card/LockScreen.jsx new file mode 100644 index 0000000..6870772 --- /dev/null +++ b/src/components/authentication/card/LockScreen.jsx @@ -0,0 +1,31 @@ +import React from 'react'; +import Avatar from 'components/common/Avatar'; +import LockScreenForm from 'components/authentication/LockScreenForm'; +import team1 from 'assets/img/team/1.jpg'; +import AuthCardLayout from 'layouts/AuthCardLayout'; +import Flex from 'components/common/Flex'; +import { Row, Col } from 'react-bootstrap'; + +const LockScreen = () => { + return ( + + + + + +
    +

    Hi! Emma

    +

    + Enter your password
    + to access the admin. +

    +
    +
    + + +
    +
    + ); +}; + +export default LockScreen; diff --git a/src/components/authentication/card/Login.jsx b/src/components/authentication/card/Login.jsx new file mode 100644 index 0000000..91a621d --- /dev/null +++ b/src/components/authentication/card/Login.jsx @@ -0,0 +1,30 @@ +import React from 'react'; +import { Link } from 'react-router'; +import LoginForm from 'components/authentication/LoginForm'; + +import AuthCardLayout from 'layouts/AuthCardLayout'; +import paths from 'routes/paths'; + +const Login = () => { + return ( + + Don't have an account? +
    + + Get started! + +

    + } + > +

    Account Login

    + +
    + ); +}; + +export default Login; diff --git a/src/components/authentication/card/Logout.jsx b/src/components/authentication/card/Logout.jsx new file mode 100644 index 0000000..2ca93f6 --- /dev/null +++ b/src/components/authentication/card/Logout.jsx @@ -0,0 +1,16 @@ +import React from 'react'; +import LogoutContent from 'components/authentication/LogoutContent'; + +import AuthCardLayout from 'layouts/AuthCardLayout'; + +const Logout = () => { + return ( + +
    + +
    +
    + ); +}; + +export default Logout; diff --git a/src/components/authentication/card/PasswordReset.jsx b/src/components/authentication/card/PasswordReset.jsx new file mode 100644 index 0000000..e8bffb6 --- /dev/null +++ b/src/components/authentication/card/PasswordReset.jsx @@ -0,0 +1,14 @@ +import React from 'react'; +import PasswordResetForm from 'components/authentication/PasswordResetForm'; +import AuthCardLayout from 'layouts/AuthCardLayout'; + +const PasswordReset = () => { + return ( + +

    Reset password

    + +
    + ); +}; + +export default PasswordReset; diff --git a/src/components/authentication/card/Registration.jsx b/src/components/authentication/card/Registration.jsx new file mode 100644 index 0000000..64da767 --- /dev/null +++ b/src/components/authentication/card/Registration.jsx @@ -0,0 +1,33 @@ +import React from 'react'; +import { Link } from 'react-router'; +import AuthCardLayout from 'layouts/AuthCardLayout'; +import RegistrationForm from 'components/authentication/RegistrationForm'; +import { Button } from 'react-bootstrap'; +import paths from 'routes/paths'; + +const Registration = () => { + return ( + + Have an account? +
    + +

    + } + footer={false} + > +

    Register

    + +
    + ); +}; + +export default Registration; diff --git a/src/components/authentication/modal/ModalAuth.jsx b/src/components/authentication/modal/ModalAuth.jsx new file mode 100644 index 0000000..1778ff5 --- /dev/null +++ b/src/components/authentication/modal/ModalAuth.jsx @@ -0,0 +1,38 @@ +import React from 'react'; +import { CloseButton, Modal } from 'react-bootstrap'; +import RegistrationForm from 'components/authentication/RegistrationForm'; +import { useAppContext } from 'providers/AppProvider'; + +export default function Example() { + const { + config: { openAuthModal }, + setConfig + } = useAppContext(); + + const handleClose = () => { + setConfig('openAuthModal', false); + }; + + return ( + + +
    +

    + Register +

    +

    + Please create your free Falcon account +

    +
    + +
    + + + +
    + ); +} diff --git a/src/components/authentication/simple/ConfirmMail.jsx b/src/components/authentication/simple/ConfirmMail.jsx new file mode 100644 index 0000000..6ec93d3 --- /dev/null +++ b/src/components/authentication/simple/ConfirmMail.jsx @@ -0,0 +1,10 @@ +import React from 'react'; +import ConfirmMailContent from 'components/authentication/ConfirmMailContent'; + +const ConfirmMail = () => ( +
    + +
    +); + +export default ConfirmMail; diff --git a/src/components/authentication/simple/ForgetPassword.jsx b/src/components/authentication/simple/ForgetPassword.jsx new file mode 100644 index 0000000..3a8241b --- /dev/null +++ b/src/components/authentication/simple/ForgetPassword.jsx @@ -0,0 +1,14 @@ +import React from 'react'; +import ForgetPasswordForm from 'components/authentication/ForgetPasswordForm'; + +const ForgetPassword = () => { + return ( +
    +
    Forgot your password?
    + Enter your email and we'll send you a reset link. + +
    + ); +}; + +export default ForgetPassword; diff --git a/src/components/authentication/simple/LockScreen.jsx b/src/components/authentication/simple/LockScreen.jsx new file mode 100644 index 0000000..d479cea --- /dev/null +++ b/src/components/authentication/simple/LockScreen.jsx @@ -0,0 +1,17 @@ +import React from 'react'; +import Avatar from 'components/common/Avatar'; +import LockScreenForm from 'components/authentication/LockScreenForm'; +import team1 from 'assets/img/team/1.jpg'; + +const LockScreen = () => { + return ( +
    + +
    Hi! Emma Watson
    + Enter your password to access the admin. + +
    + ); +}; + +export default LockScreen; diff --git a/src/components/authentication/simple/Login.jsx b/src/components/authentication/simple/Login.jsx new file mode 100644 index 0000000..8aa4618 --- /dev/null +++ b/src/components/authentication/simple/Login.jsx @@ -0,0 +1,19 @@ +import React from 'react'; +import { Link } from 'react-router'; +import Flex from 'components/common/Flex'; +import LoginForm from 'components/authentication/LoginForm'; +import paths from 'routes/paths'; + +const Login = () => ( + <> + +
    Log in
    +

    + or Create an account +

    +
    + + +); + +export default Login; diff --git a/src/components/authentication/simple/Logout.jsx b/src/components/authentication/simple/Logout.jsx new file mode 100644 index 0000000..f319bf3 --- /dev/null +++ b/src/components/authentication/simple/Logout.jsx @@ -0,0 +1,10 @@ +import React from 'react'; +import LogoutContent from 'components/authentication/LogoutContent'; + +const Logout = () => ( +
    + +
    +); + +export default Logout; diff --git a/src/components/authentication/simple/PasswordReset.jsx b/src/components/authentication/simple/PasswordReset.jsx new file mode 100644 index 0000000..c4e7a8f --- /dev/null +++ b/src/components/authentication/simple/PasswordReset.jsx @@ -0,0 +1,11 @@ +import React from 'react'; +import PasswordResetForm from 'components/authentication/PasswordResetForm'; + +const PasswordReset = () => ( +
    +
    Reset new password
    + +
    +); + +export default PasswordReset; diff --git a/src/components/authentication/simple/Registration.jsx b/src/components/authentication/simple/Registration.jsx new file mode 100644 index 0000000..c6224bc --- /dev/null +++ b/src/components/authentication/simple/Registration.jsx @@ -0,0 +1,23 @@ +import React from 'react'; +import { Col, Row } from 'react-bootstrap'; +import { Link } from 'react-router'; +import RegistrationForm from 'components/authentication/RegistrationForm'; +import paths from 'routes/paths'; + +const Registration = () => ( + <> + + +
    Register
    + + +

    + Have an account? Login +

    + +
    + + +); + +export default Registration; diff --git a/src/components/authentication/split/ConfirmMail.jsx b/src/components/authentication/split/ConfirmMail.jsx new file mode 100644 index 0000000..f848acc --- /dev/null +++ b/src/components/authentication/split/ConfirmMail.jsx @@ -0,0 +1,16 @@ +import React from 'react'; +import ConfirmMailContent from 'components/authentication/ConfirmMailContent'; +import bgImg from 'assets/img/generic/16.jpg'; +import AuthSplitLayout from 'layouts/AuthSplitLayout'; + +const ConfirmMail = () => { + return ( + +
    + +
    +
    + ); +}; + +export default ConfirmMail; diff --git a/src/components/authentication/split/ForgetPassword.jsx b/src/components/authentication/split/ForgetPassword.jsx new file mode 100644 index 0000000..705fe25 --- /dev/null +++ b/src/components/authentication/split/ForgetPassword.jsx @@ -0,0 +1,20 @@ +import React from 'react'; +import ForgetPasswordForm from 'components/authentication/ForgetPasswordForm'; +import bgImg from 'assets/img/generic/17.jpg'; +import AuthSplitLayout from 'layouts/AuthSplitLayout'; + +const ForgetPassword = () => { + return ( + +
    +

    Forgot your password?

    + Enter your email and we'll send you a reset link. + +
    +
    + ); +}; + +export default ForgetPassword; diff --git a/src/components/authentication/split/LockScreen.jsx b/src/components/authentication/split/LockScreen.jsx new file mode 100644 index 0000000..87540bd --- /dev/null +++ b/src/components/authentication/split/LockScreen.jsx @@ -0,0 +1,32 @@ +import React from 'react'; +import Avatar from 'components/common/Avatar'; +import LockScreenForm from 'components/authentication/LockScreenForm'; +import { Col, Row } from 'react-bootstrap'; +import team1 from 'assets/img/team/1.jpg'; +import bgImg from 'assets/img/generic/18.jpg'; +import AuthSplitLayout from 'layouts/AuthSplitLayout'; +import Flex from 'components/common/Flex'; + +const LockScreen = () => { + return ( + + + + + +
    +

    Hi! Emma

    +

    + Enter your password
    + to access the admin. +

    +
    +
    + + +
    +
    + ); +}; + +export default LockScreen; diff --git a/src/components/authentication/split/Login.jsx b/src/components/authentication/split/Login.jsx new file mode 100644 index 0000000..1c0939b --- /dev/null +++ b/src/components/authentication/split/Login.jsx @@ -0,0 +1,24 @@ +import React from 'react'; +import { Link } from 'react-router'; +import LoginForm from 'components/authentication/LoginForm'; +import AuthSplitLayout from 'layouts/AuthSplitLayout'; +import bgImg from 'assets/img/generic/14.jpg'; +import Flex from 'components/common/Flex'; +import paths from 'routes/paths'; + +const Login = () => { + return ( + + +

    Login

    +

    + New User? + Create account +

    +
    + +
    + ); +}; + +export default Login; diff --git a/src/components/authentication/split/Logout.jsx b/src/components/authentication/split/Logout.jsx new file mode 100644 index 0000000..d57b987 --- /dev/null +++ b/src/components/authentication/split/Logout.jsx @@ -0,0 +1,16 @@ +import React from 'react'; +import LogoutContent from 'components/authentication/LogoutContent'; +import bgImg from 'assets/img/generic/19.jpg'; +import AuthSplitLayout from 'layouts/AuthSplitLayout'; + +const Logout = () => { + return ( + +
    + +
    +
    + ); +}; + +export default Logout; diff --git a/src/components/authentication/split/PasswordReset.jsx b/src/components/authentication/split/PasswordReset.jsx new file mode 100644 index 0000000..1b22a36 --- /dev/null +++ b/src/components/authentication/split/PasswordReset.jsx @@ -0,0 +1,17 @@ +import React from 'react'; +import PasswordResetForm from 'components/authentication/PasswordResetForm'; +import bgImg from 'assets/img/generic/20.jpg'; +import AuthSplitLayout from 'layouts/AuthSplitLayout'; + +const PasswordReset = () => { + return ( + +
    +

    Reset password

    +
    + +
    + ); +}; + +export default PasswordReset; diff --git a/src/components/authentication/split/Registration.jsx b/src/components/authentication/split/Registration.jsx new file mode 100644 index 0000000..9a613d0 --- /dev/null +++ b/src/components/authentication/split/Registration.jsx @@ -0,0 +1,24 @@ +import React from 'react'; +import { Link } from 'react-router'; +import Flex from 'components/common/Flex'; +import RegistrationForm from 'components/authentication/RegistrationForm'; +import bgImg from 'assets/img/generic/15.jpg'; +import AuthSplitLayout from 'layouts/AuthSplitLayout'; +import paths from 'routes/paths'; + +const Registration = () => { + return ( + + +

    Register

    +

    + Already User? + Login +

    +
    + +
    + ); +}; + +export default Registration; diff --git a/src/components/authentication/wizard/WizardAuth.jsx b/src/components/authentication/wizard/WizardAuth.jsx new file mode 100644 index 0000000..f6e39fd --- /dev/null +++ b/src/components/authentication/wizard/WizardAuth.jsx @@ -0,0 +1,20 @@ +import React from 'react'; +import { Col, Row } from 'react-bootstrap'; +import Section from 'components/common/Section'; +import Logo from 'components/common/Logo'; +import Wizard from 'components/wizard/Wizard'; + +const WizardAuth = () => { + return ( +
    + + + + + + +
    + ); +}; + +export default WizardAuth; diff --git a/src/components/common/ActionButton.jsx b/src/components/common/ActionButton.jsx new file mode 100644 index 0000000..44e2834 --- /dev/null +++ b/src/components/common/ActionButton.jsx @@ -0,0 +1,17 @@ +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { Button, OverlayTrigger, Tooltip } from 'react-bootstrap'; + +const ActionButton = ({ placement = 'top', title, icon, ...rest }) => { + return ( + {title}} + > + + + ); +}; + +export default ActionButton; diff --git a/src/components/common/Avatar.jsx b/src/components/common/Avatar.jsx new file mode 100644 index 0000000..2fc5f66 --- /dev/null +++ b/src/components/common/Avatar.jsx @@ -0,0 +1,82 @@ +import { isIterableArray } from 'helpers/utils'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import Flex from './Flex'; +import classNames from 'classnames'; + +const Avatar = ({ + size = 'xl', + rounded = 'circle', + src, + name, + emoji = '😊', + className, + mediaClass, + isExact = false, + icon +}) => { + const classNames = ['avatar', `avatar-${size}`, className].join(' '); + const mediaClasses = [ + rounded ? `rounded-${rounded}` : 'rounded', + mediaClass + ].join(' '); + + const getAvatar = () => { + if (src) { + if (isIterableArray(src)) { + return ( +
    +
    + +
    +
    + + +
    +
    + ); + } else { + return ; + } + } + + if (name) { + return ( +
    + {isExact ? name : name.match(/\b\w/g).join('')} +
    + ); + } + + if (icon) { + return ( + + + + ); + } + + return ( +
    + + {emoji} + +
    + ); + }; + + return
    {getAvatar()}
    ; +}; + +export const AvatarGroup = ({ children, dense, className }) => { + return ( +
    + {children} +
    + ); +}; + +export default Avatar; diff --git a/src/components/common/Background.jsx b/src/components/common/Background.jsx new file mode 100644 index 0000000..a9cce8b --- /dev/null +++ b/src/components/common/Background.jsx @@ -0,0 +1,39 @@ +import classNames from 'classnames'; + +const Background = ({ image, overlay, position, video, className, style }) => { + const bgStyle = { backgroundImage: `url(${image})`, ...style }; + if (typeof position === 'string') { + bgStyle.backgroundPosition = position; + } else if (typeof position === 'object') { + position.x && (bgStyle.backgroundPositionX = position.x); + position.y && (bgStyle.backgroundPositionY = position.y); + } + + return ( +
    + {video && ( + + )} +
    + ); +}; + +export default Background; diff --git a/src/components/common/BasicEChart.jsx b/src/components/common/BasicEChart.jsx new file mode 100644 index 0000000..317fd8c --- /dev/null +++ b/src/components/common/BasicEChart.jsx @@ -0,0 +1,49 @@ +import merge from 'lodash.merge'; +import { useAppContext } from 'providers/AppProvider'; +import ReactEchart from './ReactEchart'; + +const getOption = getThemeColor => ({ + color: getThemeColor('primary'), + tooltip: { + trigger: 'item', + axisPointer: { + type: 'none' + }, + padding: [7, 10], + backgroundColor: getThemeColor('gray-100'), + borderColor: getThemeColor('gray-100'), + textStyle: { color: getThemeColor('gray-1100') }, + borderWidth: 1, + transitionDuration: 0 + }, + xAxis: { + type: 'category', + show: false, + boundaryGap: 0 + }, + yAxis: { + show: false, + type: 'value', + boundaryGap: 0 + }, + series: [ + { + type: 'bar', + symbol: 'none' + } + ], + grid: { right: '0', left: '0', bottom: '0', top: '0' } +}); + +const BasicECharts = ({ echarts, options, ...rest }) => { + const { getThemeColor } = useAppContext(); + return ( + + ); +}; + +export default BasicECharts; diff --git a/src/components/common/Calendar.jsx b/src/components/common/Calendar.jsx new file mode 100644 index 0000000..6311d5c --- /dev/null +++ b/src/components/common/Calendar.jsx @@ -0,0 +1,9 @@ + +const Calendar = ({ month, day }) => ( +
    + {month} + {day} +
    +); + +export default Calendar; diff --git a/src/components/common/CardDropdown.jsx b/src/components/common/CardDropdown.jsx new file mode 100644 index 0000000..5e5cdd1 --- /dev/null +++ b/src/components/common/CardDropdown.jsx @@ -0,0 +1,48 @@ +import { Dropdown } from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import classNames from 'classnames'; +import { useAppContext } from 'providers/AppProvider'; + +const CardDropdown = ({ + btnRevealClass, + drop, + children, + icon = 'ellipsis-h' +}) => { + const { + config: { isRTL } + } = useAppContext(); + + return ( + + + + + + {children} + {!children && ( +
    + View + Export + + Remove +
    + )} +
    +
    + ); +}; + +export default CardDropdown; diff --git a/src/components/common/CookieNotice.jsx b/src/components/common/CookieNotice.jsx new file mode 100644 index 0000000..7785eaf --- /dev/null +++ b/src/components/common/CookieNotice.jsx @@ -0,0 +1,19 @@ +import { Toast } from 'react-bootstrap'; + +const CookieNotice = ({ show, setShow, children, ...rest }) => { + return ( + setShow(false)} + show={show} + className="notice shadow-none bg-transparent" + style={{ + maxWidth: '35rem' + }} + {...rest} + > + {children} + + ); +}; + +export default CookieNotice; diff --git a/src/components/common/CustomDateInput.jsx b/src/components/common/CustomDateInput.jsx new file mode 100644 index 0000000..5fa22f5 --- /dev/null +++ b/src/components/common/CustomDateInput.jsx @@ -0,0 +1,23 @@ +import { Form } from 'react-bootstrap'; + +const CustomDateInput = ( + { value, onClick, isInvalid, isValid, formControlProps, errorMessage, ref } +) => { + return ( + <> + + + {errorMessage} + + + ); +}; + +export default CustomDateInput; diff --git a/src/components/common/Divider.jsx b/src/components/common/Divider.jsx new file mode 100644 index 0000000..35312ef --- /dev/null +++ b/src/components/common/Divider.jsx @@ -0,0 +1,10 @@ +import classNames from 'classnames'; + +const Divider = ({ className, children }) => ( +
    +
    +
    {children}
    +
    +); + +export default Divider; diff --git a/src/components/common/DropdownFilter.jsx b/src/components/common/DropdownFilter.jsx new file mode 100644 index 0000000..5b6f233 --- /dev/null +++ b/src/components/common/DropdownFilter.jsx @@ -0,0 +1,64 @@ +import { Dropdown } from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import Flex from './Flex'; +import classNames from 'classnames'; + +const DropdownItemFilter = ({ + filter, + currentFilter, + className, + children, + ...rest +}) => { + return ( + + <>{children} + {filter === currentFilter && ( + + )} + + ); +}; + +const DropdownFilter = ({ filters, handleFilter, currentFilter, icon }) => { + return ( + + + {currentFilter && {currentFilter}} + + + + + {filters.map((filter, index) => ( + { + handleFilter(filter); + }} + filter={filter} + className="text-capitalize" + key={index} + > + {filter} + + ))} + + + ); +}; + +export default DropdownFilter; diff --git a/src/components/common/FalconCardBody.jsx b/src/components/common/FalconCardBody.jsx new file mode 100644 index 0000000..daeff7b --- /dev/null +++ b/src/components/common/FalconCardBody.jsx @@ -0,0 +1,55 @@ +import React from 'react'; +import * as ReactBootstrap from 'react-bootstrap'; +import { LiveEditor, LiveError, LivePreview, LiveProvider } from 'react-live'; +import { themes } from 'prism-react-renderer'; +import classNames from 'classnames'; + +const FalconCardBody = ({ + code, + scope, + language = 'jsx', + hidePreview, + children, + noInline, + noLight, + className, + childrenPosition +}) => { + return ( + + code.replace(/^import.*$/gm, '')} + > + + + {childrenPosition !== 'bottom' && children} + {!hidePreview && } + {childrenPosition === 'bottom' && children} + + +
    + + {!hidePreview && } +
    +
    +
    +
    +
    + ); +}; + +export default FalconCardBody; diff --git a/src/components/common/FalconCardFooterLink.jsx b/src/components/common/FalconCardFooterLink.jsx new file mode 100644 index 0000000..962e9b0 --- /dev/null +++ b/src/components/common/FalconCardFooterLink.jsx @@ -0,0 +1,33 @@ +import { Button, Card } from 'react-bootstrap'; +import { Link } from 'react-router'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import classNames from 'classnames'; + +const FalconCardFooterLink = ({ + title, + bg = 'body-tertiary', + borderTop, + to = '#!', + className, + ...rest +}) => ( + + + +); + +export default FalconCardFooterLink; diff --git a/src/components/common/FalconCardHeader.jsx b/src/components/common/FalconCardHeader.jsx new file mode 100644 index 0000000..9b56b36 --- /dev/null +++ b/src/components/common/FalconCardHeader.jsx @@ -0,0 +1,61 @@ +import { Col, Card, Row } from 'react-bootstrap'; +import classNames from 'classnames'; + +const Title = ({ + titleTag: TitleTag = 'h5', + className, + breakPoint, + children +}) => ( + + {children} + +); + +const FalconCardHeader = ({ + title, + light, + titleTag, + titleClass, + className, + breakPoint, + endEl, + children +}) => ( + + {endEl ? ( + + + + {title} + + {children} + + + {endEl} + + + ) : ( + + {title} + + )} + +); + +export default FalconCardHeader; diff --git a/src/components/common/FalconCloseButton.jsx b/src/components/common/FalconCloseButton.jsx new file mode 100644 index 0000000..9f2ba27 --- /dev/null +++ b/src/components/common/FalconCloseButton.jsx @@ -0,0 +1,30 @@ +import { useAppContext } from 'providers/AppProvider'; +import classNames from 'classnames'; +import { CloseButton } from 'react-bootstrap'; + +const FalconCloseButton = ({ + size, + onClick, + noOutline, + variant, + className, + ...rest +}) => { + const { + config: { isDark } + } = useAppContext(); + return ( + + ); +}; + +export default FalconCloseButton; diff --git a/src/components/common/FalconComponentCard.jsx b/src/components/common/FalconComponentCard.jsx new file mode 100644 index 0000000..c780fdd --- /dev/null +++ b/src/components/common/FalconComponentCard.jsx @@ -0,0 +1,128 @@ +import { Card, Tab, Row, Col, Nav, Button } from 'react-bootstrap'; +import FalconCardBody from './FalconCardBody'; +import classNames from 'classnames'; +import { HashLink } from 'react-router-hash-link'; +import Flex from './Flex'; +import { useLocation } from 'react-router'; +import { camelize } from '../../helpers/utils'; +import { useAppContext } from 'providers/AppProvider'; + +const PreviewCode = () => { + return ( + + + + + + ); +}; + +const FalconComponentCardHeader = ({ + light, + className, + title, + children, + noPreview +}) => { + const location = useLocation(); + const { + config: { isRTL } + } = useAppContext(); + return ( + + + + {title && ( + +
    + {isRTL ? ( + <> + + # + + {title} + + ) : ( + <> + {title} + + # + + + )} +
    +
    + )} + {children} + + {!noPreview && ( + + + + )} +
    +
    + ); +}; + +const FalconComponentCard = ({ + children, + multiSections, + noGuttersBottom, + ...rest +}) => { + return ( + + {multiSections ? ( + <>{children} + ) : ( + {children} + )} + + ); +}; + +FalconComponentCard.Header = FalconComponentCardHeader; +FalconComponentCard.Body = FalconCardBody; + +export default FalconComponentCard; diff --git a/src/components/common/FalconDropzone.jsx b/src/components/common/FalconDropzone.jsx new file mode 100644 index 0000000..1d207e1 --- /dev/null +++ b/src/components/common/FalconDropzone.jsx @@ -0,0 +1,112 @@ +import Dropzone from 'react-dropzone'; +import classNames from 'classnames'; +import { isIterableArray } from 'helpers/utils'; +import Flex from './Flex'; +import cloudUpload from 'assets/img/icons/cloud-upload.svg'; + +const getSize = size => { + if (size < 1024) { + return ( + <> + {size} Byte + + ); + } else if (size < 1024 * 1024) { + return ( + <> + {(size / 1024).toFixed(2)} KB + + ); + } else { + return ( + <> + {(size / (1024 * 1024)).toFixed(2)} MB + + ); + } +}; + +const FalconDropzone = ({ + placeholder = , + className, + onChange, + files = [], + preview = false, + ...rest +}) => ( + <> + { + const stringFiles = []; + if (acceptedFiles.length) { + acceptedFiles.map(file => { + const reader = new FileReader(); + reader.readAsDataURL(file); + reader.onload = () => { + stringFiles.push({ + // id: uuid(), + base64: reader.result, + size: file.size, + path: file.path, + type: file.type + }); + onChange([...stringFiles]); + }; + return true; + }); + } + }} + > + {({ getRootProps, getInputProps }) => ( +
    + + {placeholder} +
    + )} +
    + {preview && isIterableArray(files) && ( +
    + {files.map(({ id, path, base64, size }) => ( + + {path} + +
    +
    {path}
    + +

    + {getSize(size)} +

    +
    +
    + {/* + + + + +
    + onChange(files.filter(file => file.id !== id))} + > + Remove File + +
    +
    +
    */} +
    +
    + ))} +
    + )} + +); + +export default FalconDropzone; diff --git a/src/components/common/FalconEditor.jsx b/src/components/common/FalconEditor.jsx new file mode 100644 index 0000000..08568b6 --- /dev/null +++ b/src/components/common/FalconEditor.jsx @@ -0,0 +1,66 @@ +import React from 'react'; +import * as reactBootstrap from 'react-bootstrap'; +import { LiveEditor, LiveError, LivePreview, LiveProvider } from 'react-live'; +import { themes } from 'prism-react-renderer'; +import classNames from 'classnames'; + +const FalconEditor = ({ + code, + scope, + language = 'markup', + hidePreview = false, + theme = themes.okaidia, + className +}) => { + const importRegex = + /import(?:["'\s]*([\w*{}\n, ]+)from\s*)["'\s]*([@\w/_-]+)["'\s]*;?/gm; + const requireRegex = + /(const|let|var)\s*([\w{}\n, ]+\s*)=\s*require\s*\(["'\s]*([@\w/_-]+)["'\s]*\s*\);?/gm; + const imports = { + CardDropdown: 'CardDropdown ' + }; + + const transformCode = code => { + return code + .replace(importRegex, (match, p1, p2) => { + const matchingImport = imports[p2]; + if (!matchingImport) { + // leave it alone if we don't have a matching import + return match; + } + + return 'var ' + p1 + ' = ' + matchingImport + ';'; + }) + .replace(requireRegex, (match, p1, p2, p3) => { + const matchingImport = imports[p3]; + if (!matchingImport) { + // leave it alone if we don't have a matching import + return match; + } + + return p1 + ' ' + p2 + ' = ' + matchingImport + ';'; + }); + }; + + return ( + + {!hidePreview && } + + {!hidePreview && } + + ); +}; + +export default FalconEditor; diff --git a/src/components/common/FalconLightBox.jsx b/src/components/common/FalconLightBox.jsx new file mode 100644 index 0000000..e893708 --- /dev/null +++ b/src/components/common/FalconLightBox.jsx @@ -0,0 +1,29 @@ +import React, { useState } from 'react'; +import Lightbox from 'yet-another-react-lightbox'; +import 'yet-another-react-lightbox/styles.css'; + +const FalconLightBox = ({ image, children }) => { + const [isOpen, setIsOpen] = useState(false); + return ( + <> +
    setIsOpen(true)}> + {children} +
    + {isOpen && ( + setIsOpen(false)} + styles={{ container: { zIndex: 999999 } }} + on={{ + view: () => { + window.dispatchEvent(new Event('resize')); + } + }} + /> + )} + + ); +}; + +export default FalconLightBox; diff --git a/src/components/common/FalconLightBoxGallery.jsx b/src/components/common/FalconLightBoxGallery.jsx new file mode 100644 index 0000000..b15bfc0 --- /dev/null +++ b/src/components/common/FalconLightBoxGallery.jsx @@ -0,0 +1,31 @@ +import React, { useState } from 'react'; +import Lightbox from 'yet-another-react-lightbox'; +import 'yet-another-react-lightbox/styles.css'; + +const FalconLightBoxGallery = ({ images, children }) => { + const [imgIndex, setImgIndex] = useState(null); + return ( +
    + {children(setImgIndex)} + {imgIndex !== null && ( + setImgIndex(null)} + slides={images.map((src) => ({ src }))} + index={imgIndex ?? 0} + styles={{ container: { zIndex: 999999 } }} + on={{ + view: () => { + window.dispatchEvent(new Event('resize')); + }, + currentIndex: ({ index }) => { + setImgIndex(index); + } + }} + /> + )} +
    + ); +}; + +export default FalconLightBoxGallery; diff --git a/src/components/common/FalconLink.jsx b/src/components/common/FalconLink.jsx new file mode 100644 index 0000000..d4ef471 --- /dev/null +++ b/src/components/common/FalconLink.jsx @@ -0,0 +1,20 @@ +import React from 'react'; +import { Button } from 'react-bootstrap'; +import { Link } from 'react-router'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; + +const FalconLink = ({ + to = '#!', + icon = 'chevron-right', + title, + className +}) => { + return ( + + ); +}; + +export default FalconLink; diff --git a/src/components/common/FalconLoader.jsx b/src/components/common/FalconLoader.jsx new file mode 100644 index 0000000..1a485a1 --- /dev/null +++ b/src/components/common/FalconLoader.jsx @@ -0,0 +1,25 @@ +import logo from 'assets/img/illustrations/falcon.png'; +import classNames from 'classnames'; + +const FalconLoader = ({ fullPage }) => { + return ( +
    +
    + falcon + falcon + falcon + falcon + falcon +
    +
    + ); +}; + +export default FalconLoader; diff --git a/src/components/common/Flex.jsx b/src/components/common/Flex.jsx new file mode 100644 index 0000000..768dc36 --- /dev/null +++ b/src/components/common/Flex.jsx @@ -0,0 +1,38 @@ +import React from 'react'; +import classNames from 'classnames'; + +const Flex = ({ + justifyContent, + alignItems, + alignContent, + inline, + wrap, + className, + tag: Tag = 'div', + children, + breakpoint, + direction, + ...rest +}) => { + return ( + + {children} + + ); +}; + +export default Flex; diff --git a/src/components/common/Hoverbox.jsx b/src/components/common/Hoverbox.jsx new file mode 100644 index 0000000..c29d8e1 --- /dev/null +++ b/src/components/common/Hoverbox.jsx @@ -0,0 +1,22 @@ +import React from 'react'; +import classNames from 'classnames'; + +const Hoverbox = ({ children, className }) => { + return ( +
    + {children} +
    + ); +}; + +export const HoverboxContent = ({ children, className }) => { + return ( +
    + {children} +
    + ); +}; + +Hoverbox.Content = HoverboxContent; + +export default Hoverbox; diff --git a/src/components/common/IconAlert.jsx b/src/components/common/IconAlert.jsx new file mode 100644 index 0000000..c5632eb --- /dev/null +++ b/src/components/common/IconAlert.jsx @@ -0,0 +1,38 @@ +import React from 'react'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { Alert, CloseButton } from 'react-bootstrap'; +import classNames from 'classnames'; + +const IconAlert = ({ + variant, + dismissible, + children, + className, + onClose, + ...rest +}) => { + const icon = { + success: 'check-circle', + info: 'info-circle', + warning: 'exclamation-circle', + danger: 'times-circle' + }; + return ( + +
    + +
    +
    {children}
    + {dismissible && } +
    + ); +}; + +export default IconAlert; diff --git a/src/components/common/IconButton.jsx b/src/components/common/IconButton.jsx new file mode 100644 index 0000000..b041bf2 --- /dev/null +++ b/src/components/common/IconButton.jsx @@ -0,0 +1,23 @@ +import React from 'react'; +import classNames from 'classnames'; +import { Button } from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; + +const IconButton = ( + { icon, iconAlign = 'left', iconClassName, transform, children, ref, ...rest } +) => ( + +); + +export default IconButton; diff --git a/src/components/common/Logo.jsx b/src/components/common/Logo.jsx new file mode 100644 index 0000000..11e105a --- /dev/null +++ b/src/components/common/Logo.jsx @@ -0,0 +1,35 @@ +import React from 'react'; +import classNames from 'classnames'; +import { Link } from 'react-router'; +import logo from 'assets/img/illustrations/falcon.png'; + +const Logo = ({ at = 'auth', width = 58, className, textClass, ...rest }) => { + return ( + +
    + Logo + falcon +
    + + ); +}; + +export default Logo; diff --git a/src/components/common/MultiSelect.jsx b/src/components/common/MultiSelect.jsx new file mode 100644 index 0000000..e123110 --- /dev/null +++ b/src/components/common/MultiSelect.jsx @@ -0,0 +1,18 @@ +import React from 'react'; +import Select from 'react-select'; + +const MultiSelect = ({ options, placeholder, ref, ...rest }) => { + return ( + + )} + setOpen(!open)} + > +

    + {item.name} +

    +
    +
    + +
      + {item.children.map((nestedItem, index) => ( + + ))} +
    +
    + + ) : ( +
    + {selection && ( + + )} + +

    + + {item.name} +

    +
    +
    + )} + + ); +}; + +const Treeview = ({ + data, + selection, + expanded = [], + selectedItems = [], + setSelectedItems +}) => { + const [openedItems, setOpenedItems] = useState(expanded); + + return ( +
      + {data.map((treeviewItem, index) => ( + + ))} +
    + ); +}; + +export default Treeview; diff --git a/src/components/common/VerifiedBadge.jsx b/src/components/common/VerifiedBadge.jsx new file mode 100644 index 0000000..89eaf87 --- /dev/null +++ b/src/components/common/VerifiedBadge.jsx @@ -0,0 +1,22 @@ +import React from 'react'; +import { OverlayTrigger, Tooltip } from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; + +const VerifiedBadge = ({ placement = 'top' }) => { + return ( + Verified} + > + + + + + ); +}; + +export default VerifiedBadge; diff --git a/src/components/common/advance-table/AdvanceTable.jsx b/src/components/common/advance-table/AdvanceTable.jsx new file mode 100644 index 0000000..7c71ef4 --- /dev/null +++ b/src/components/common/advance-table/AdvanceTable.jsx @@ -0,0 +1,64 @@ +import React from 'react'; +import { Table } from 'react-bootstrap'; +import { useAdvanceTableContext } from 'providers/AdvanceTableProvider'; +import { flexRender } from '@tanstack/react-table'; +import classNames from 'classnames'; + +const AdvanceTable = ({ + headerClassName, + bodyClassName, + rowClassName, + tableProps +}) => { + const table = useAdvanceTableContext(); + const { getRowModel, getFlatHeaders } = table; + + return ( +
    + + + + {getFlatHeaders().map(header => { + return ( + + ); + })} + + + + {getRowModel().rows.map(row => ( + + {row.getVisibleCells().map(cell => ( + + ))} + + ))} + +
    + {header.isPlaceholder + ? null + : flexRender( + header.column.columnDef.header, + header.getContext() + )} +
    + {flexRender(cell.column.columnDef.cell, cell.getContext())} +
    +
    + ); +}; + +export default AdvanceTable; diff --git a/src/components/common/advance-table/AdvanceTableFooter.jsx b/src/components/common/advance-table/AdvanceTableFooter.jsx new file mode 100644 index 0000000..d77441b --- /dev/null +++ b/src/components/common/advance-table/AdvanceTableFooter.jsx @@ -0,0 +1,119 @@ +/* eslint-disable react/prop-types */ +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import classNames from 'classnames'; +import React, { useState } from 'react'; +import { Button, Form } from 'react-bootstrap'; +import Flex from '../Flex'; +import { useAdvanceTableContext } from 'providers/AdvanceTableProvider'; + +export const AdvanceTableFooter = ({ + viewAllBtn, + navButtons, + className, + rowInfo, + rowsPerPageSelection, + rowsPerPageOptions = [5, 10, 15] +}) => { + const { + setPageSize, + previousPage, + nextPage, + getCanNextPage, + getCanPreviousPage, + getState, + getPrePaginationRowModel, + getPaginationRowModel + } = useAdvanceTableContext(); + + const { + pagination: { pageSize, pageIndex } + } = getState(); + const [perPage] = useState(pageSize); + const [isAllVisible, setIsAllVisible] = useState(false); + + return ( + + + {rowInfo && ( +

    + + {pageSize * pageIndex + 1} to{' '} + {pageSize * pageIndex + getPaginationRowModel().rows.length} of{' '} + {getPrePaginationRowModel().rows.length} + + {viewAllBtn && ( + <> + + + + )} +

    + )} + {rowsPerPageSelection && ( + <> +

    Rows per page:

    + setPageSize(Number(e.target.value))} + defaultValue={pageSize} + > + {rowsPerPageOptions.map(value => ( + + ))} + + + )} +
    + {navButtons && ( + + + + + )} +
    + ); +}; + +export default AdvanceTableFooter; diff --git a/src/components/common/advance-table/AdvanceTablePagination.jsx b/src/components/common/advance-table/AdvanceTablePagination.jsx new file mode 100644 index 0000000..c1cf1c9 --- /dev/null +++ b/src/components/common/advance-table/AdvanceTablePagination.jsx @@ -0,0 +1,61 @@ +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import classNames from 'classnames'; +import React from 'react'; +import { Button } from 'react-bootstrap'; +import Flex from '../Flex'; +import { useAdvanceTableContext } from 'providers/AdvanceTableProvider'; + +export const AdvanceTablePagination = () => { + const { + previousPage, + nextPage, + getCanNextPage, + getCanPreviousPage, + getState, + getPageCount, + setPageIndex + } = useAdvanceTableContext(); + + const { + pagination: { pageIndex } + } = getState(); + + return ( + + +
      + {Array.from(Array(getPageCount()).keys()).map((page, index) => ( +
    • + +
    • + ))} +
    + +
    + ); +}; + +export default AdvanceTablePagination; diff --git a/src/components/common/advance-table/AdvanceTableSearchBox.jsx b/src/components/common/advance-table/AdvanceTableSearchBox.jsx new file mode 100644 index 0000000..a680bce --- /dev/null +++ b/src/components/common/advance-table/AdvanceTableSearchBox.jsx @@ -0,0 +1,39 @@ +/* eslint-disable react/prop-types */ +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import classNames from 'classnames'; +import { useAdvanceTableContext } from 'providers/AdvanceTableProvider'; +import React, { useState } from 'react'; +import { Button, FormControl, InputGroup } from 'react-bootstrap'; + +const AdvanceTableSearchBox = ({ placeholder = 'Search...', className }) => { + const { globalFilter, setGlobalFilter } = useAdvanceTableContext(); + const [value, setValue] = useState(globalFilter); + + const onChange = value => setGlobalFilter(value || undefined); + + return ( + + { + setValue(value); + onChange(value); + }} + size="sm" + id="search" + placeholder={placeholder} + type="search" + className="shadow-none" + /> + + + ); +}; + +export default AdvanceTableSearchBox; diff --git a/src/components/common/advance-table/IndeterminateCheckbox.jsx b/src/components/common/advance-table/IndeterminateCheckbox.jsx new file mode 100644 index 0000000..22e8c86 --- /dev/null +++ b/src/components/common/advance-table/IndeterminateCheckbox.jsx @@ -0,0 +1,32 @@ +import React from 'react'; +import classNames from 'classnames'; +import { Form } from 'react-bootstrap'; + +const IndeterminateCheckbox = ({ indeterminate, className, ref, ...rest }) => { + const defaultRef = React.useRef(); + + const resolvedRef = ref || defaultRef; + + React.useEffect(() => { + resolvedRef.current.indeterminate = indeterminate; + }, [resolvedRef, indeterminate]); + + return ( + + + + ); + }; + +export default IndeterminateCheckbox; diff --git a/src/components/common/icon/IconGroup.jsx b/src/components/common/icon/IconGroup.jsx new file mode 100644 index 0000000..945bb14 --- /dev/null +++ b/src/components/common/icon/IconGroup.jsx @@ -0,0 +1,13 @@ +import React from 'react'; +import classNames from 'classnames'; +import IconItem from './IconItem'; + +const IconGroup = ({ icons, className, ...rest }) => ( +
    + {icons.map((icon, index) => ( + + ))} +
    +); + +export default IconGroup; diff --git a/src/components/common/icon/IconItem.jsx b/src/components/common/icon/IconItem.jsx new file mode 100644 index 0000000..eed6fee --- /dev/null +++ b/src/components/common/icon/IconItem.jsx @@ -0,0 +1,30 @@ +import React from 'react'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import classNames from 'classnames'; + +const IconItem = ({ + tag: Tag = 'a', + icon, + bg, + size, + color, + className, + transform, + iconClass, + onClick, + ...rest +}) => ( + + + +); + +export default IconItem; diff --git a/src/components/dashboards/analytics/ConnectCard.jsx b/src/components/dashboards/analytics/ConnectCard.jsx new file mode 100644 index 0000000..6721a10 --- /dev/null +++ b/src/components/dashboards/analytics/ConnectCard.jsx @@ -0,0 +1,42 @@ +import React from 'react'; +import { Button, Card, Col, Row } from 'react-bootstrap'; +import Background from 'components/common/Background'; +import bgImage from 'assets/img/icons/spot-illustrations/corner-5.png'; +import connectCircle from 'assets/img/icons/connect-circle.png'; + +const ConnectCard = () => { + return ( + + + + + + connectCircle + + + + +
    + Connect your domain to your website and get things done faster + with Falcon +
    + + + + +
    + +
    +
    +
    + ); +}; + +export default ConnectCard; diff --git a/src/components/dashboards/analytics/Intelligence.jsx b/src/components/dashboards/analytics/Intelligence.jsx new file mode 100644 index 0000000..5f37fa9 --- /dev/null +++ b/src/components/dashboards/analytics/Intelligence.jsx @@ -0,0 +1,55 @@ +import React from 'react'; +import { Card } from 'react-bootstrap'; +import Flex from 'components/common/Flex'; +import signalImg from 'assets/img/icons/signal.png'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { Link } from 'react-router'; +import FalconLink from 'components/common/FalconLink'; +import SimpleBar from 'simplebar-react'; + +const SingleItem = ({ icon, title, description }) => { + return ( +
    + + + +
    {title}
    + +
    +
    {description}
    +
    + ); +}; + +const Intelligence = ({ data }) => { + return ( + + + intelligence +
    + Ask Falcon Intelligence +
    +
    + + +
    + {data.map(item => ( + + ))} +
    +
    +
    + + + +
    + ); +}; + + +export default Intelligence; diff --git a/src/components/dashboards/analytics/active-users/ActiveUsers.jsx b/src/components/dashboards/analytics/active-users/ActiveUsers.jsx new file mode 100644 index 0000000..010fb9e --- /dev/null +++ b/src/components/dashboards/analytics/active-users/ActiveUsers.jsx @@ -0,0 +1,88 @@ +import React, { useState } from 'react'; +import { Card, Col, Form, Row } from 'react-bootstrap'; +import FalconCardHeader from 'components/common/FalconCardHeader'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import CardDropdown from 'components/common/CardDropdown'; +import FalconLink from 'components/common/FalconLink'; +import ActiveUsersChart from './ActiveUsersChart'; +import classNames from 'classnames'; +import { activeUsersChart } from 'data/dashboard/analytics'; + +const ActiveUsers = ({ ...rest }) => { + const [stats] = useState([ + { + label: 'Mobile', + color: 'primary', + value: 10325 + }, + { + label: 'Desktop', + color: 'success', + value: 4325 + }, + { + label: 'Tablet', + color: 'info', + value: 3575 + } + ]); + return ( + + } + /> + + + + + {stats.map((stat, index) => ( + +
    + + {stat.label} +
    +
    + {stat.value.toLocaleString()} +
    + + ))} +
    + + + + +
    +
    + + + + + + + + + + + + + + + +
    + ); +}; + +export default ActiveUsers; diff --git a/src/components/dashboards/analytics/active-users/ActiveUsersChart.jsx b/src/components/dashboards/analytics/active-users/ActiveUsersChart.jsx new file mode 100644 index 0000000..421aa21 --- /dev/null +++ b/src/components/dashboards/analytics/active-users/ActiveUsersChart.jsx @@ -0,0 +1,161 @@ +import ReactEchart from 'components/common/ReactEchart'; +import dayjs from 'dayjs'; +import { LineChart } from 'echarts/charts'; +import { + GridComponent, + LegendComponent, + TitleComponent, + TooltipComponent +} from 'echarts/components'; +import * as echarts from 'echarts/core'; +import { CanvasRenderer } from 'echarts/renderers'; +import { tooltipFormatter } from 'helpers/echart-utils'; +import { getPastDates } from 'helpers/utils'; +import { useAppContext } from 'providers/AppProvider'; +import React from 'react'; + +echarts.use([ + TitleComponent, + TooltipComponent, + GridComponent, + LineChart, + CanvasRenderer, + LegendComponent +]); + +const getOptions = (getThemeColor, data) => ({ + color: [ + getThemeColor('primary'), + getThemeColor('success'), + getThemeColor('info') + ], + tooltip: { + trigger: 'axis', + padding: [7, 10], + backgroundColor: getThemeColor('gray-100'), + borderColor: getThemeColor('gray-300'), + textStyle: { color: getThemeColor('gray-1100') }, + borderWidth: 1, + transitionDuration: 0, + formatter: tooltipFormatter + }, + xAxis: { + type: 'category', + data: getPastDates(30).map(date => dayjs(date).format('DD MMM, YYYY')), + boundaryGap: false, + silent: true, + axisPointer: { + lineStyle: { + color: getThemeColor('gray-300') + } + }, + splitLine: { show: false }, + axisLine: { + lineStyle: { + color: getThemeColor('gray-300') + } + }, + axisTick: { + show: true, + length: 20, + lineStyle: { + color: getThemeColor('gray-200') + }, + + interval: 5 + }, + axisLabel: { + color: getThemeColor('gray-600'), + formatter: value => dayjs(value).format('MMM DD'), + align: 'left', + fontSize: 11, + padding: [0, 0, 0, 5], + interval: 5 + } + }, + yAxis: { + type: 'value', + position: 'right', + axisPointer: { show: false }, + splitLine: { + lineStyle: { + color: getThemeColor('gray-200') + } + }, + axisLabel: { + show: true, + color: getThemeColor('gray-600'), + formatter: value => `${Math.round((value / 1000) * 10) / 10}k` + }, + axisTick: { show: false }, + axisLine: { show: false } + }, + series: [ + { + type: 'line', + name: 'Mobile', + data: data.mobile, + showSymbol: false, + symbol: 'circle', + itemStyle: { + borderColor: getThemeColor('primary'), + borderWidth: 2 + }, + lineStyle: { + color: getThemeColor('primary') + }, + symbolSize: 2 + }, + { + type: 'line', + name: 'Desktop', + data: data.desktop, + showSymbol: false, + symbol: 'circle', + itemStyle: { + borderColor: getThemeColor('success'), + borderWidth: 2 + }, + lineStyle: { + color: getThemeColor('success') + }, + symbolSize: 2 + }, + { + type: 'line', + name: 'Tablet', + data: data.tablet, + showSymbol: false, + symbol: 'circle', + itemStyle: { + borderColor: getThemeColor('info'), + borderWidth: 2 + }, + lineStyle: { + color: getThemeColor('info') + }, + symbolSize: 2 + } + ], + grid: { + right: 2, + left: 0, + bottom: 0, + top: 4, + outerBoundsMode: 'same', + outerBoundsContain: 'axisLabel' + } +}); + +const ActiveUsersChart = ({ data }) => { + const { getThemeColor } = useAppContext(); + return ( + + ); +}; + +export default ActiveUsersChart; diff --git a/src/components/dashboards/analytics/audience/Audience.jsx b/src/components/dashboards/analytics/audience/Audience.jsx new file mode 100644 index 0000000..a49f999 --- /dev/null +++ b/src/components/dashboards/analytics/audience/Audience.jsx @@ -0,0 +1,117 @@ +import React from 'react'; +import { Card, Col, Row, Tab, Nav, Form } from 'react-bootstrap'; +import Flex from 'components/common/Flex'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import AudienceChart from './AudienceChart'; +import FalconLink from 'components/common/FalconLink'; +import SimpleBar from 'simplebar-react'; +import classNames from 'classnames'; + +const TabTitle = ({ title, value, percentage, progress }) => ( +
    +
    {title}
    +
    {value}
    + + +
    + {percentage} +
    +
    +
    +); + +const Audience = ({ chartData, className }) => { + return ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +}; + +export default Audience; diff --git a/src/components/dashboards/analytics/audience/AudienceChart.jsx b/src/components/dashboards/analytics/audience/AudienceChart.jsx new file mode 100644 index 0000000..63a396b --- /dev/null +++ b/src/components/dashboards/analytics/audience/AudienceChart.jsx @@ -0,0 +1,174 @@ +import ReactEchart from 'components/common/ReactEchart'; +import dayjs from 'dayjs'; +import { LineChart } from 'echarts/charts'; +import { + GridComponent, + LegendComponent, + TitleComponent, + TooltipComponent +} from 'echarts/components'; +import * as echarts from 'echarts/core'; +import { CanvasRenderer } from 'echarts/renderers'; +import { getPastDates, rgbaColor } from 'helpers/utils'; +import { useAppContext } from 'providers/AppProvider'; +import React, { useRef } from 'react'; + +echarts.use([ + TitleComponent, + TooltipComponent, + GridComponent, + LineChart, + CanvasRenderer, + LegendComponent +]); + +const getOptions = (getThemeColor, data) => ({ + color: getThemeColor('gray-100'), + tooltip: { + trigger: 'axis', + padding: [7, 10], + backgroundColor: getThemeColor('gray-100'), + borderColor: getThemeColor('gray-300'), + textStyle: { color: getThemeColor('gray-1100') }, + borderWidth: 1, + transitionDuration: 0, + axisPointer: { + type: 'none' + }, + formatter: params => { + const percentage = + ((params[0].value - params[1].value) / params[1].value) * 100; + const perTemp = ` +
    +
    + ${percentage < 0 ? '▼' : '▲'} + ${Math.abs(percentage).toFixed(2)} %
    +
    + `; + + const currentDate = new Date(params[0].axisValue); + const prevDate = new Date(new Date().setDate(currentDate.getDate() - 7)); + return `
    +

    ${dayjs(params[0].axisValue).format( + 'MMM DD' + )} vs ${dayjs(prevDate).format('MMM DD')}

    +
    +

    + Users: ${params[0].data + } +

    + ${perTemp} +
    +
    `; + } + }, + xAxis: { + type: 'category', + data: getPastDates(7), + axisLabel: { + color: getThemeColor('gray-600'), + formatter: value => dayjs(value).format('MMM DD'), + align: 'left', + fontSize: 11, + padding: [0, 0, 0, 5], + showMaxLabel: false + }, + axisLine: { + lineStyle: { + color: getThemeColor('gray-200') + } + }, + axisTick: { + show: true, + length: 20, + lineStyle: { + color: getThemeColor('gray-200') + } + }, + boundaryGap: 0 + }, + yAxis: { + position: 'right', + axisPointer: { type: 'none' }, + axisTick: 'none', + splitLine: { + lineStyle: { + color: getThemeColor('gray-200') + } + }, + axisLine: { show: false }, + axisLabel: { color: getThemeColor('gray-600') } + }, + series: [ + { + type: 'line', + data: data[0], + showSymbol: false, + symbol: 'circle', + animation: false, + itemStyle: { + borderColor: getThemeColor('primary'), + borderWidth: 2 + }, + lineStyle: { + color: getThemeColor('primary') + }, + areaStyle: { + color: { + type: 'linear', + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [ + { + offset: 0, + color: rgbaColor(getThemeColor('primary'), 0.2) + }, + { + offset: 1, + color: rgbaColor(getThemeColor('primary'), 0) + } + ] + } + } + }, + { + type: 'line', + data: data[1], + symbol: 'none', + lineStyle: { + type: 'dashed', + width: 1, + color: getThemeColor('info') + } + } + ], + grid: { + right: 2, + left: 0, + bottom: 0, + top: 4, + outerBoundsMode: 'same', + outerBoundsContain: 'axisLabel' + } +}); + +const AudienceChart = ({ data }) => { + const chartRef = useRef(null); + const { getThemeColor } = useAppContext(); + + return ( + + ); +}; + +export default AudienceChart; diff --git a/src/components/dashboards/analytics/bounce-rate/BounceRate.jsx b/src/components/dashboards/analytics/bounce-rate/BounceRate.jsx new file mode 100644 index 0000000..ca1058e --- /dev/null +++ b/src/components/dashboards/analytics/bounce-rate/BounceRate.jsx @@ -0,0 +1,34 @@ +import FalconLink from 'components/common/FalconLink'; +import { bounceRate } from 'data/dashboard/analytics'; +import React from 'react'; +import { Card, Col, Form, Row } from 'react-bootstrap'; +import BounceRateChart from './BounceRateChart'; + +const BounceRate = ({ ...rest }) => { + return ( + + +
    Trend of Bounce Rate
    +
    Nov 1, 2020–Jan 31, 2021
    +
    + + + + + + + + + + + + + + + + +
    + ); +}; + +export default BounceRate; diff --git a/src/components/dashboards/analytics/bounce-rate/BounceRateChart.jsx b/src/components/dashboards/analytics/bounce-rate/BounceRateChart.jsx new file mode 100644 index 0000000..3ff61d1 --- /dev/null +++ b/src/components/dashboards/analytics/bounce-rate/BounceRateChart.jsx @@ -0,0 +1,123 @@ +import ReactEchart from 'components/common/ReactEchart'; +import dayjs from 'dayjs'; +import { LineChart } from 'echarts/charts'; +import { + GridComponent, + LegendComponent, + TitleComponent, + TooltipComponent +} from 'echarts/components'; +import * as echarts from 'echarts/core'; +import { CanvasRenderer } from 'echarts/renderers'; +import { tooltipFormatter } from 'helpers/echart-utils'; +import { getPastDates } from 'helpers/utils'; +import { useAppContext } from 'providers/AppProvider'; +import React from 'react'; + +echarts.use([ + TitleComponent, + TooltipComponent, + GridComponent, + LineChart, + CanvasRenderer, + LegendComponent +]); + +const getOptions = (getThemeColor, data) => ({ + color: getThemeColor('white'), + title: { + text: 'Bounce Rate', + left: 'left', + top: 'top', + padding: [5, 0, 0, 0], + textStyle: { + color: getThemeColor('gray-900'), + fontSize: 13, + fontWeight: 600 + } + }, + tooltip: { + trigger: 'axis', + axisPointer: { + type: 'none' + }, + padding: [7, 10], + backgroundColor: getThemeColor('gray-100'), + borderColor: getThemeColor('gray-300'), + textStyle: { color: getThemeColor('gray-1100') }, + borderWidth: 1, + transitionDuration: 0, + formatter: tooltipFormatter + }, + xAxis: { + type: 'category', + data: getPastDates(30).map(date => dayjs(date).format('DD MMM, YYYY')), + axisPointer: { + lineStyle: { + color: getThemeColor('gray-300') + } + }, + splitLine: { show: false }, + axisLine: { + lineStyle: { + color: getThemeColor('gray-400') + } + }, + axisTick: { + show: false + }, + axisLabel: { + color: getThemeColor('gray-600'), + formatter: value => dayjs(value).format('MMM DD'), + fontSize: 11 + } + }, + yAxis: { + type: 'value', + axisPointer: { show: false }, + splitLine: { + lineStyle: { + color: getThemeColor('gray-200') + } + }, + axisLabel: { + show: true, + color: getThemeColor('gray-600'), + formatter: value => `${value}%`, + margin: 15 + }, + axisTick: { show: false }, + axisLine: { show: false } + }, + series: [ + { + type: 'line', + name: 'Rate', + data, + showSymbol: false, + symbol: 'circle', + itemStyle: { + borderColor: getThemeColor('primary'), + borderWidth: 2 + }, + lineStyle: { + color: getThemeColor('primary') + }, + symbolSize: 2 + } + ], + grid: { right: '10px', left: -2, bottom: 13, top: '11%', outerBoundsMode: 'same', outerBoundsContain: 'axisLabel' } +}); + +const BounceRateChart = ({ data }) => { + const { getThemeColor } = useAppContext(); + return ( + + ); +}; + +export default BounceRateChart; diff --git a/src/components/dashboards/analytics/campaign-perfomance/CampaignChart.jsx b/src/components/dashboards/analytics/campaign-perfomance/CampaignChart.jsx new file mode 100644 index 0000000..18895a7 --- /dev/null +++ b/src/components/dashboards/analytics/campaign-perfomance/CampaignChart.jsx @@ -0,0 +1,65 @@ +import React from 'react'; +import * as echarts from 'echarts/core'; +import { LineChart } from 'echarts/charts'; +import { + GridComponent, + TooltipComponent, + TitleComponent +} from 'echarts/components'; +import { CanvasRenderer } from 'echarts/renderers'; +import BasicECharts from 'components/common/BasicEChart'; +import { rgbaColor } from 'helpers/utils'; + +echarts.use([ + TitleComponent, + TooltipComponent, + GridComponent, + LineChart, + CanvasRenderer +]); + +const getOptions = (color, data) => ({ + series: [ + { + type: 'line', + data, + symbol: 'none', + color, + areaStyle: { + color: { + type: 'linear', + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [ + { + offset: 0, + color: rgbaColor(color, 0.25) + }, + { + offset: 1, + color: rgbaColor(color, 0) + } + ] + } + } + } + ], + xAxis: { + boundaryGap: false + }, + grid: { right: '20px', left: '0', bottom: '0', top: '20px' } +}); + +const CampaignChart = ({ color, data }) => { + return ( + + ); +}; + +export default CampaignChart; diff --git a/src/components/dashboards/analytics/campaign-perfomance/CampaignPerfomance.jsx b/src/components/dashboards/analytics/campaign-perfomance/CampaignPerfomance.jsx new file mode 100644 index 0000000..3d12857 --- /dev/null +++ b/src/components/dashboards/analytics/campaign-perfomance/CampaignPerfomance.jsx @@ -0,0 +1,64 @@ +import React from 'react'; +import { Card, Col, Form, Row } from 'react-bootstrap'; +import FalconCardHeader from 'components/common/FalconCardHeader'; +import CardDropdown from 'components/common/CardDropdown'; +import FalconLink from 'components/common/FalconLink'; +import PerfomanceTable from './PerfomanceTable'; +import { campaignTable, campaignChart } from 'data/dashboard/analytics'; +import CampaignChart from './CampaignChart'; +import { useAppContext } from 'providers/AppProvider'; + +const CampaignPerfomance = () => { + const { getThemeColor } = useAppContext(); + return ( + + } + /> + + + +
    Revenue
    +

    $10.87k

    + + + +
    Clicks
    +

    3.8k

    + + +
    +
    + +
    +
    + + + + + + + + + + + + + + + +
    + ); +}; + +export default CampaignPerfomance; diff --git a/src/components/dashboards/analytics/campaign-perfomance/PerfomanceTable.jsx b/src/components/dashboards/analytics/campaign-perfomance/PerfomanceTable.jsx new file mode 100644 index 0000000..223ef03 --- /dev/null +++ b/src/components/dashboards/analytics/campaign-perfomance/PerfomanceTable.jsx @@ -0,0 +1,42 @@ +import React from 'react'; +import { Table } from 'react-bootstrap'; +import SimpleBar from 'simplebar-react'; + +const PerfomanceTableRow = ({ campaigns, cost, revenue }) => { + return ( + + {campaigns} + ${cost} + ${revenue} + + ); +}; + + +const PerfomanceTable = ({ data }) => { + return ( + + + + + + + + + + + {data.map(item => ( + + ))} + +
    Top CampaignsCostRevenue from Ads
    +
    + ); +}; + +export default PerfomanceTable; diff --git a/src/components/dashboards/analytics/index.jsx b/src/components/dashboards/analytics/index.jsx new file mode 100644 index 0000000..c8fbf7b --- /dev/null +++ b/src/components/dashboards/analytics/index.jsx @@ -0,0 +1,86 @@ +import React from 'react'; +import { Col, Row } from 'react-bootstrap'; +import RealTimeUsers from './real-time-users/RealTimeUsers'; +import Audience from './audience/Audience'; +import ConnectCard from './ConnectCard'; +import SessionByBrowser from './session-by-browser/SessionByBrowser'; +import { + audienceChart, + intelligence, + realTimeUsers, + sessionByBrowser, + sessionByCountry, + topPagesTableData +} from 'data/dashboard/analytics'; +import { countryData } from 'data/countryData'; +import UsersByCountry from './users-by-country/UsersByCountry'; +import Intelligence from './Intelligence'; +import ActiveUsers from './active-users/ActiveUsers'; +import CampaignPerfomance from './campaign-perfomance/CampaignPerfomance'; +import UsersAtTime from './users-at-a-time/UsersAtTime'; +import BounceRate from './bounce-rate/BounceRate'; +import TrafficSource from './traffic-source/TrafficSource'; +import Stats from './stats/Stats'; +import TopPages from './top-pages/TopPages'; + +const Analytics = () => { + return ( + <> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +}; + + +export default Analytics; diff --git a/src/components/dashboards/analytics/real-time-users/RealTimeUsers.jsx b/src/components/dashboards/analytics/real-time-users/RealTimeUsers.jsx new file mode 100644 index 0000000..b670935 --- /dev/null +++ b/src/components/dashboards/analytics/real-time-users/RealTimeUsers.jsx @@ -0,0 +1,76 @@ +import React, { useState } from 'react'; +import { Card } from 'react-bootstrap'; +import Flex from 'components/common/Flex'; +import RealTimeUsersChart from './RealTimeUsersChart'; +import { Link } from 'react-router'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; + +const SingleItem = ({ page, count }) => { + return ( +
    + +

    {page}

    +

    {count}

    +
    +
    + ); +}; + +const RealTimeUsers = ({ data }) => { + const [userCount, setUserCount] = useState(0); + return ( + + +
    Users Online Right Now
    +
    + {userCount} +
    +
    + + +

    + Pages views / second +

    + + +
    +
    + +

    Most Active Pages

    +

    User Count

    +
    +
    + + {data.map(item => ( + + ))} +
    +
    + + + Real-time Data + + + + +
    + ); +}; + +export default RealTimeUsers; diff --git a/src/components/dashboards/analytics/real-time-users/RealTimeUsersChart.jsx b/src/components/dashboards/analytics/real-time-users/RealTimeUsersChart.jsx new file mode 100644 index 0000000..e4ffa2f --- /dev/null +++ b/src/components/dashboards/analytics/real-time-users/RealTimeUsersChart.jsx @@ -0,0 +1,136 @@ +import ReactEchart from 'components/common/ReactEchart'; +import { LineChart } from 'echarts/charts'; +import { + GridComponent, + LegendComponent, + TitleComponent, + TooltipComponent +} from 'echarts/components'; +import * as echarts from 'echarts/core'; +import { CanvasRenderer } from 'echarts/renderers'; +import { getRandomNumber, rgbaColor } from 'helpers/utils'; +import { useAppContext } from 'providers/AppProvider'; +import React, { useEffect, useRef } from 'react'; + +echarts.use([ + TitleComponent, + TooltipComponent, + GridComponent, + LineChart, + CanvasRenderer, + LegendComponent +]); + +const data = [ + 921, 950, 916, 913, 909, 962, 926, 936, 977, 976, 999, 981, 998, 1000, 900, + 906, 973, 911, 994, 982, 917, 972, 952, 963, 991 +]; +const axisData = Array.from(Array(25).keys()); + +const getOptions = getThemeColor => ({ + tooltip: { + trigger: 'axis', + padding: [7, 10], + axisPointer: { + type: 'none' + }, + backgroundColor: getThemeColor('gray-100'), + borderColor: getThemeColor('gray-300'), + textStyle: { color: getThemeColor('gray-1100') }, + borderWidth: 1, + transitionDuration: 0, + formatter: params => { + return ` +
    +
    +
    + Users : ${params[0].value} +
    +
    + `; + } + }, + xAxis: { + type: 'category', + + axisLabel: { + show: false + }, + axisTick: { + show: false + }, + axisLine: { + show: false + }, + boundaryGap: [0.2, 0.2], + data: axisData + }, + yAxis: { + type: 'value', + scale: true, + boundaryGap: false, + axisLabel: { + show: false + }, + splitLine: { + show: false + }, + min: 500, + max: 1100 + }, + series: [ + { + type: 'bar', + barCategoryGap: '12%', + data, + itemStyle: { + color: rgbaColor('#fff', 0.3) + } + } + ], + grid: { right: '0px', left: '0px', bottom: 0, top: 0 } +}); + +const RealTimeUsersChart = ({ setUserCount }) => { + const chartRef = useRef(null); + const { getThemeColor } = useAppContext(); + + useEffect(() => { + const interval = setInterval(() => { + const rndData = getRandomNumber(900, 1000); + data.shift(); + data.push(rndData); + axisData.shift(); + axisData.push(getRandomNumber(100, 500)); + + setUserCount(rndData); + + chartRef.current.getEchartsInstance().setOption({ + xAxis: { + data: axisData + }, + series: [ + { + data + } + ] + }); + }, 2000); + return () => { + clearInterval(interval); + }; + }, []); + + return ( + + ); +}; + +export default RealTimeUsersChart; diff --git a/src/components/dashboards/analytics/session-by-browser/SessionByBrowser.jsx b/src/components/dashboards/analytics/session-by-browser/SessionByBrowser.jsx new file mode 100644 index 0000000..5227f71 --- /dev/null +++ b/src/components/dashboards/analytics/session-by-browser/SessionByBrowser.jsx @@ -0,0 +1,58 @@ +import React from 'react'; +import { Card, Col, Form, Row, Table } from 'react-bootstrap'; +import FalconCardHeader from 'components/common/FalconCardHeader'; +import CardDropdown from 'components/common/CardDropdown'; +import Flex from 'components/common/Flex'; +import FalconLink from 'components/common/FalconLink'; +import SessionByBrowserChart from './SessionByBrowserChart'; +import TableRow from './TableRow'; + +const SessionByBrowser = ({ data }) => { + return ( + + } + /> + +
    + +
    +
    + + + {data.map(item => ( + + ))} + +
    +
    +
    + + + + + + + + + + + + + + + +
    + ); +}; + +export default SessionByBrowser; diff --git a/src/components/dashboards/analytics/session-by-browser/SessionByBrowserChart.jsx b/src/components/dashboards/analytics/session-by-browser/SessionByBrowserChart.jsx new file mode 100644 index 0000000..bce0662 --- /dev/null +++ b/src/components/dashboards/analytics/session-by-browser/SessionByBrowserChart.jsx @@ -0,0 +1,79 @@ +import React from 'react'; +import { PieChart } from 'echarts/charts'; +import { + GridComponent, + LegendComponent, + TitleComponent, + TooltipComponent +} from 'echarts/components'; +import * as echarts from 'echarts/core'; +import { CanvasRenderer } from 'echarts/renderers'; +import { useAppContext } from 'providers/AppProvider'; +import ReactEchart from 'components/common/ReactEchart'; + +echarts.use([ + TitleComponent, + TooltipComponent, + GridComponent, + PieChart, + CanvasRenderer, + LegendComponent +]); + +const data = [ + { value: 50.3, name: 'Chrome' }, + { value: 20.6, name: 'Safari' }, + { value: 30.1, name: 'Mozilla' } +]; + +const getOptions = getThemeColor => ({ + color: [ + getThemeColor('primary'), + getThemeColor('success'), + getThemeColor('info') + ], + tooltip: { + trigger: 'item', + padding: [7, 10], + backgroundColor: getThemeColor('gray-100'), + borderColor: getThemeColor('gray-300'), + textStyle: { color: getThemeColor('gray-1100') }, + borderWidth: 1, + transitionDuration: 0, + formatter: params => + `${params.data.name}: ${params.data.value}%` + }, + + legend: { show: false }, + series: [ + { + type: 'pie', + radius: ['100%', '65%'], + avoidLabelOverlap: false, + itemStyle: { + borderWidth: 2, + borderColor: getThemeColor('gray-100') + }, + label: { + show: false + }, + emphasis: { + scale: false + }, + data + } + ] +}); + +const SessionByBrowserChart = () => { + const { getThemeColor } = useAppContext(); + return ( + + ); +}; + +export default SessionByBrowserChart; diff --git a/src/components/dashboards/analytics/session-by-browser/TableRow.jsx b/src/components/dashboards/analytics/session-by-browser/TableRow.jsx new file mode 100644 index 0000000..e9eb4c3 --- /dev/null +++ b/src/components/dashboards/analytics/session-by-browser/TableRow.jsx @@ -0,0 +1,37 @@ +import React from 'react'; +import Flex from 'components/common/Flex'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; + +const TableRow = ({ data }) => { + const { icon, label, value, color, progress, progressValue } = data; + return ( + + + + {label} +
    {label}
    +
    + + + + +
    {value}
    +
    + + + + +
    {progressValue}
    +
    + + + ); +}; + +export default TableRow; diff --git a/src/components/dashboards/analytics/stats/Stats.jsx b/src/components/dashboards/analytics/stats/Stats.jsx new file mode 100644 index 0000000..5f68d56 --- /dev/null +++ b/src/components/dashboards/analytics/stats/Stats.jsx @@ -0,0 +1,33 @@ +import React from 'react'; +import { Card, Col, Row } from 'react-bootstrap'; +import StatsChart from './StatsChart'; +import classNames from 'classnames'; +import { stats } from 'data/dashboard/analytics'; + +const Stats = () => { + return ( + + + + {stats.map((stat, index) => ( + +
    +
    +
    {stat.title}
    +

    {stat.value}

    +
    + +
    + + ))} +
    +
    +
    + ); +}; + +export default Stats; diff --git a/src/components/dashboards/analytics/stats/StatsChart.jsx b/src/components/dashboards/analytics/stats/StatsChart.jsx new file mode 100644 index 0000000..63a8a00 --- /dev/null +++ b/src/components/dashboards/analytics/stats/StatsChart.jsx @@ -0,0 +1,49 @@ +import * as echarts from 'echarts/core'; +import { LineChart } from 'echarts/charts'; +import { + GridComponent, + TooltipComponent, + TitleComponent +} from 'echarts/components'; +import { CanvasRenderer } from 'echarts/renderers'; +import BasicECharts from 'components/common/BasicEChart'; +import { useAppContext } from 'providers/AppProvider'; + +echarts.use([ + TitleComponent, + TooltipComponent, + GridComponent, + LineChart, + CanvasRenderer +]); + +const getOptions = (getThemeColor, data, grid) => ({ + tooltip: { + show: false + }, + series: [ + { + type: 'bar', + data, + symbol: 'none', + itemStyle: { + color: getThemeColor('primary'), + borderRadius: [5, 5, 0, 0] + } + } + ], + grid +}); + +const StatsChart = ({ data, grid }) => { + const { getThemeColor } = useAppContext(); + return ( + + ); +}; + +export default StatsChart; diff --git a/src/components/dashboards/analytics/top-pages/TopPages.jsx b/src/components/dashboards/analytics/top-pages/TopPages.jsx new file mode 100644 index 0000000..680166e --- /dev/null +++ b/src/components/dashboards/analytics/top-pages/TopPages.jsx @@ -0,0 +1,106 @@ +import { Card, Row, Col } from 'react-bootstrap'; +import { Link } from 'react-router'; +import AdvanceTable from 'components/common/advance-table/AdvanceTable'; +import AdvanceTableSearchBox from 'components/common/advance-table/AdvanceTableSearchBox'; +import AdvanceTableFooter from 'components/common/advance-table/AdvanceTableFooter'; +import useAdvanceTable from 'hooks/useAdvanceTable'; +import AdvanceTableProvider from 'providers/AdvanceTableProvider'; + +const columns = [ + { + accessorKey: 'path', + header: 'Page Path', + meta: { + headerProps: { + className: 'text-900' + } + }, + cell: ({ row: { original } }) => { + const { path } = original; + return ( + + {path} + + ); + } + }, + { + accessorKey: 'views', + header: 'Page Views', + meta: { + headerProps: { + className: 'text-end text-900' + }, + cellProps: { + className: 'text-end' + } + } + }, + { + accessorKey: 'time', + header: 'Avg Time on Page', + meta: { + headerProps: { + className: 'text-end text-900' + }, + cellProps: { + className: 'text-end' + } + } + }, + { + accessorKey: 'exitRate', + header: 'Exit Rate', + meta: { + headerProps: { + className: 'text-end text-900' + }, + cellProps: { + className: 'text-end' + } + } + } +]; + +const TopPages = ({ tableData, perPage = 8 }) => { + const table = useAdvanceTable({ + data: tableData, + columns, + sortable: true, + pagination: true, + perPage + }); + + return ( + + + + + +
    + What are my top pages today? +
    + + + + +
    +
    + + + + + + +
    +
    + ); +}; + +export default TopPages; diff --git a/src/components/dashboards/analytics/traffic-source/TrafficSource.jsx b/src/components/dashboards/analytics/traffic-source/TrafficSource.jsx new file mode 100644 index 0000000..1160b92 --- /dev/null +++ b/src/components/dashboards/analytics/traffic-source/TrafficSource.jsx @@ -0,0 +1,43 @@ +import React from 'react'; +import { Card, Col, Form, Row } from 'react-bootstrap'; +import FalconCardHeader from 'components/common/FalconCardHeader'; +import CardDropdown from 'components/common/CardDropdown'; +import FalconLink from 'components/common/FalconLink'; +import TrafficSourceChart from './TrafficSourceChart'; + +function TrafficSource() { + return ( + + } + /> + + + + + + + + + + + + + + + + + + + + ); +} + +export default TrafficSource; diff --git a/src/components/dashboards/analytics/traffic-source/TrafficSourceChart.jsx b/src/components/dashboards/analytics/traffic-source/TrafficSourceChart.jsx new file mode 100644 index 0000000..58d87be --- /dev/null +++ b/src/components/dashboards/analytics/traffic-source/TrafficSourceChart.jsx @@ -0,0 +1,156 @@ +import React from 'react'; +import dayjs from 'dayjs'; +import { BarChart } from 'echarts/charts'; +import { + GridComponent, + LegendComponent, + TitleComponent, + TooltipComponent +} from 'echarts/components'; +import * as echarts from 'echarts/core'; +import { CanvasRenderer } from 'echarts/renderers'; +import { tooltipFormatter } from 'helpers/echart-utils'; +import { getPastDates, rgbaColor } from 'helpers/utils'; +import { useAppContext } from 'providers/AppProvider'; +import ReactEchart from 'components/common/ReactEchart'; + +echarts.use([ + TitleComponent, + TooltipComponent, + GridComponent, + BarChart, + CanvasRenderer, + LegendComponent +]); + +const getOptions = getThemeColor => ({ + color: [ + getThemeColor('primary'), + rgbaColor(getThemeColor('primary'), 0.8), + rgbaColor(getThemeColor('primary'), 0.6), + rgbaColor(getThemeColor('primary'), 0.4), + rgbaColor(getThemeColor('primary'), 0.2) + ], + legend: { + data: ['Display', 'Direct', 'Organic Search', 'Paid Search', 'Other'], + left: 5, + top: 0, + itemWidth: 10, + itemHeight: 10, + borderRadius: 0, + icon: 'circle', + inactiveColor: getThemeColor('gray-400'), + textStyle: { color: getThemeColor('gray-700') }, + itemGap: 20 + }, + xAxis: { + type: 'category', + data: getPastDates(7).map(date => dayjs(date).format('DD MMM, YYYY')), + axisLine: { + show: false + }, + splitLine: { + lineStyle: { + color: getThemeColor('gray-200') + } + }, + axisTick: { + show: false + }, + axisLabel: { + color: getThemeColor('gray-600'), + formatter: value => dayjs(value).format('ddd') + } + }, + yAxis: { + type: 'value', + position: 'right', + splitLine: { + lineStyle: { + color: getThemeColor('gray-200') + } + }, + axisLine: { + show: false + }, + axisTick: { + show: false + }, + axisLabel: { + show: true, + color: getThemeColor('gray-600'), + margin: 15 + } + }, + tooltip: { + trigger: 'axis', + padding: [7, 10], + axisPointer: { + type: 'none' + }, + backgroundColor: getThemeColor('gray-100'), + borderColor: getThemeColor('gray-300'), + textStyle: { color: getThemeColor('gray-700') }, + borderWidth: 1, + transitionDuration: 0, + formatter: tooltipFormatter + }, + + series: [ + { + name: 'Display', + type: 'bar', + stack: 'total', + data: [320, 302, 301, 334, 390, 330, 320] + }, + { + name: 'Direct', + type: 'bar', + stack: 'total', + data: [120, 132, 101, 134, 90, 230, 210] + }, + { + name: 'Organic Search', + type: 'bar', + stack: 'total', + data: [220, 182, 191, 234, 290, 330, 310] + }, + { + name: 'Paid Search', + type: 'bar', + stack: 'total', + data: [150, 212, 201, 154, 190, 330, 410] + }, + { + name: 'Other', + type: 'bar', + stack: 'total', + data: [820, 832, 901, 934, 1290, 1330, 1320], + itemStyle: { + borderRadius: [5, 5, 0, 0] + } + } + ], + + grid: { + right: 2, + left: 0, + bottom: 0, + top: '13%', + outerBoundsMode: 'same', + outerBoundsContain: 'axisLabel' + } +}); + +const TrafficSourceChart = () => { + const { getThemeColor } = useAppContext(); + return ( + + ); +}; + +export default TrafficSourceChart; diff --git a/src/components/dashboards/analytics/users-at-a-time/UsersAtTime.jsx b/src/components/dashboards/analytics/users-at-a-time/UsersAtTime.jsx new file mode 100644 index 0000000..4356ea6 --- /dev/null +++ b/src/components/dashboards/analytics/users-at-a-time/UsersAtTime.jsx @@ -0,0 +1,38 @@ +import FalconCardHeader from 'components/common/FalconCardHeader'; +import FalconLink from 'components/common/FalconLink'; +import React from 'react'; +import { Card, Col, Form, Row } from 'react-bootstrap'; +import UsersAtTimeChart from './UsersAtTimeChart'; + +const UsersAtTime = () => { + return ( + + + + + + + + + + + + + + + + + + + + + + ); +}; + +export default UsersAtTime; diff --git a/src/components/dashboards/analytics/users-at-a-time/UsersAtTimeChart.jsx b/src/components/dashboards/analytics/users-at-a-time/UsersAtTimeChart.jsx new file mode 100644 index 0000000..6832d1b --- /dev/null +++ b/src/components/dashboards/analytics/users-at-a-time/UsersAtTimeChart.jsx @@ -0,0 +1,184 @@ +import ReactEchart from 'components/common/ReactEchart'; +import dayjs from 'dayjs'; +import { HeatmapChart } from 'echarts/charts'; +import { + GridComponent, + LegendComponent, + TitleComponent, + TooltipComponent, + VisualMapComponent +} from 'echarts/components'; +import * as echarts from 'echarts/core'; +import { CanvasRenderer } from 'echarts/renderers'; +import { getPastDates, getRandomNumber, rgbaColor } from 'helpers/utils'; +import { useAppContext } from 'providers/AppProvider'; +import React from 'react'; + +echarts.use([ + TitleComponent, + TooltipComponent, + GridComponent, + HeatmapChart, + CanvasRenderer, + LegendComponent, + VisualMapComponent +]); + +const hours = [ + '12 AM', + '1 AM', + '2 AM', + '3 AM', + '4 AM', + '5 AM', + '6 AM', + '7 AM', + '8 AM', + '9 AM', + '10 AM', + '11 AM', + '12 PM', + '1 PM', + '2 PM', + '3 PM', + '4 PM', + '5 PM', + '6 PM', + '7 PM', + '8 PM', + '9 PM', + '10 PM', + '11 PM' +]; + +const data = []; +for (let i = 0; i < 24; i += 1) { + for (let j = 0; j < 7; j += 1) { + data.push([j, i, getRandomNumber(20, 300)]); + } +} + +const tooltipFormatter = params => { + return `
    +

    ${dayjs(params.name).format( + 'MMM DD, YYYY' + )}

    +
    +

    + ${dayjs() + .hour(params.data[1]) + .format('hA')} : ${params.data[2] + } +

    +
    +
    `; +}; + +const getOptions = getThemeColor => ({ + gradientColor: [getThemeColor('info'), getThemeColor('primary')], + tooltip: { + position: 'top', + padding: [7, 10], + backgroundColor: getThemeColor('gray-100'), + borderColor: getThemeColor('gray-300'), + textStyle: { color: getThemeColor('gray-1100') }, + borderWidth: 1, + formatter: tooltipFormatter + }, + xAxis: { + type: 'category', + data: getPastDates(7), + splitArea: { + show: true + }, + axisTick: { show: false }, + axisLabel: { + color: getThemeColor('gray-600'), + formatter: value => dayjs(value).format('ddd') + }, + axisLine: { + lineStyle: { + color: getThemeColor('gray-400') + } + } + }, + yAxis: { + position: 'right', + type: 'category', + inverse: true, + data: hours, + splitArea: { + show: true + }, + axisTick: { show: false }, + axisLabel: { + color: getThemeColor('gray-600'), + margin: 20, + padding: [10, 0, 0, 0] + }, + axisLine: { + lineStyle: { + color: getThemeColor('gray-400') + } + } + }, + visualMap: { + show: true, + type: 'piecewise', + orient: 'horizontal', + left: -10, + bottom: 2, + itemSymbol: 'diamond', + itemWidth: '10px', + itemHeight: '10px', + min: 20, + max: 300, + splitNumber: 4, + textGap: 5, + textStyle: { + color: getThemeColor('gray-600'), + fontWeight: 500, + } + }, + series: [ + { + name: 'Users By Time', + type: 'heatmap', + data: data, + label: { + show: false + }, + itemStyle: { + borderColor: getThemeColor('gray-100'), + borderWidth: 3 + }, + emphasis: { + itemStyle: { + shadowBlur: 3, + shadowColor: rgbaColor(getThemeColor('black'), 0.5) + } + } + } + ], + grid: { + right: 2, + left: 0, + bottom: '15%', + top: 0, + outerBoundsMode: 'same', + outerBoundsContain: 'axisLabel' + } +}); + +const UsersAtTimeChart = () => { + const { getThemeColor } = useAppContext(); + return ( + + ); +}; + +export default UsersAtTimeChart; diff --git a/src/components/dashboards/analytics/users-by-country/UsersByCountry.jsx b/src/components/dashboards/analytics/users-by-country/UsersByCountry.jsx new file mode 100644 index 0000000..daca674 --- /dev/null +++ b/src/components/dashboards/analytics/users-by-country/UsersByCountry.jsx @@ -0,0 +1,65 @@ +import React, { useRef } from 'react'; +import CardDropdown from 'components/common/CardDropdown'; +import FalconCardHeader from 'components/common/FalconCardHeader'; +import FalconLink from 'components/common/FalconLink'; +import { Button, Card, Col, Form, Row } from 'react-bootstrap'; +import UsersByCountryChart from './UsersByCountryChart'; +import WorldMap from './WorldMap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import Flex from 'components/common/Flex'; + +const UsersByCountry = ({ chartData, mapData }) => { + const chartRef = useRef(null); + const handleMapReset = () => { + chartRef.current.getEchartsInstance().dispatchAction({ + type: 'restore' + }); + }; + return ( + + +
    + +
    + +
    + } + /> + + + + + + + + + + + + + + + + + + + + + ); +}; + +export default UsersByCountry; diff --git a/src/components/dashboards/analytics/users-by-country/UsersByCountryChart.jsx b/src/components/dashboards/analytics/users-by-country/UsersByCountryChart.jsx new file mode 100644 index 0000000..99e7372 --- /dev/null +++ b/src/components/dashboards/analytics/users-by-country/UsersByCountryChart.jsx @@ -0,0 +1,109 @@ +import { BarChart } from 'echarts/charts'; +import { + GridComponent, + LegendComponent, + TitleComponent, + TooltipComponent +} from 'echarts/components'; +import * as echarts from 'echarts/core'; +import { CanvasRenderer } from 'echarts/renderers'; +import { useAppContext } from 'providers/AppProvider'; +import ReactEchart from 'components/common/ReactEchart'; + +echarts.use([ + TitleComponent, + TooltipComponent, + GridComponent, + BarChart, + CanvasRenderer, + LegendComponent +]); + +const getOptions = (getThemeColor, data) => ({ + tooltip: { + trigger: 'axis', + padding: [7, 10], + axisPointer: { + type: 'none' + }, + backgroundColor: getThemeColor('gray-100'), + borderColor: getThemeColor('gray-300'), + textStyle: { color: getThemeColor('gray-1100') }, + borderWidth: 1, + transitionDuration: 0 + }, + xAxis: { + type: 'category', + data: data[0], + axisLabel: { + color: getThemeColor('gray-600'), + formatter: value => value.substring(0, 3) + }, + axisLine: { + lineStyle: { + color: getThemeColor('gray-400') + } + }, + axisTick: { + show: true, + alignWithLabel: true, + lineStyle: { + color: getThemeColor('gray-200') + } + } + }, + yAxis: { + type: 'value', + axisTick: { + show: false + }, + splitLine: { + lineStyle: { + color: getThemeColor('gray-300'), + type: 'dashed' + } + }, + axisLabel: { + color: getThemeColor('gray-600'), + formatter: value => `${value}%`, + fontWeight: 500, + padding: [3, 0, 0, 0], + margin: 12 + }, + axisLine: { + show: false + } + }, + series: [ + { + type: 'bar', + data: data[1], + itemStyle: { + borderRadius: [3, 3, 0, 0], + color: getThemeColor('primary') + }, + barWidth: 15 + } + ], + grid: { + right: 0, + left: -3, + bottom: 0, + top: 9, + outerBoundsMode: 'same', + outerBoundsContain: 'axisLabel' + } +}); + +const UsersByCountryChart = ({ data }) => { + const { getThemeColor } = useAppContext(); + return ( + + ); +}; + +export default UsersByCountryChart; diff --git a/src/components/dashboards/analytics/users-by-country/WorldMap.jsx b/src/components/dashboards/analytics/users-by-country/WorldMap.jsx new file mode 100644 index 0000000..6a3d134 --- /dev/null +++ b/src/components/dashboards/analytics/users-by-country/WorldMap.jsx @@ -0,0 +1,112 @@ +import React from 'react'; +import world from 'assets/json/world.json'; +import { MapChart } from 'echarts/charts'; +import { + GridComponent, + LegendComponent, + TitleComponent, + ToolboxComponent, + TooltipComponent, + VisualMapComponent +} from 'echarts/components'; +import * as echarts from 'echarts/core'; +import { CanvasRenderer } from 'echarts/renderers'; +import { rgbaColor } from 'helpers/utils'; +import { useAppContext } from 'providers/AppProvider'; +import ReactEchart from 'components/common/ReactEchart'; + +echarts.use([ + TitleComponent, + TooltipComponent, + GridComponent, + MapChart, + CanvasRenderer, + ToolboxComponent, + LegendComponent, + VisualMapComponent +]); + +echarts.registerMap('world', { geoJSON: world }); + +const total = 6961500; + +const getOptions = (getThemeColor, data, maxZoomLevel, minZoomLevel) => ({ + tooltip: { + trigger: 'item', + padding: [7, 10], + backgroundColor: getThemeColor('gray-100'), + borderColor: getThemeColor('gray-300'), + textStyle: { color: getThemeColor('gray-1100') }, + borderWidth: 1, + transitionDuration: 0, + formatter: params => + `${params.data?.name} : ${( + (params.data?.value / total) * + 100 + ).toFixed(2)}%` + }, + toolbox: { + show: false, + feature: { + restore: {} + } + }, + visualMap: { + show: false, + min: 800, + max: 50000, + inRange: { + color: [ + getThemeColor('primary'), + rgbaColor(getThemeColor('primary'), 0.8), + rgbaColor(getThemeColor('primary'), 0.6), + rgbaColor(getThemeColor('primary'), 0.4), + rgbaColor(getThemeColor('primary'), 0.2) + ].reverse() + } + }, + series: [ + { + type: 'map', + map: 'world', + data, + roam: true, + scaleLimit: { + min: minZoomLevel, + max: maxZoomLevel + }, + left: 0, + right: 0, + label: { + show: false + }, + itemStyle: { + borderColor: getThemeColor('gray-300') + }, + emphasis: { + label: { + show: false + }, + itemStyle: { + areaColor: getThemeColor('warning') + } + } + } + ] +}); + +const WorldMap = ( + { data, style, minZoomLevel = 1, maxZoomLevel = 5, ref } +) => { + const { getThemeColor } = useAppContext(); + return ( + + ); +}; + +export default WorldMap; diff --git a/src/components/dashboards/crm/CrmStats.jsx b/src/components/dashboards/crm/CrmStats.jsx new file mode 100644 index 0000000..c1900ff --- /dev/null +++ b/src/components/dashboards/crm/CrmStats.jsx @@ -0,0 +1,80 @@ +import React, { useState } from 'react'; +import { Card, Row, Col } from 'react-bootstrap'; +import Flex from 'components/common/Flex'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import CardDropdown from 'components/common/CardDropdown'; +import { statsData } from 'data/dashboard/crm'; +import classNames from 'classnames'; +import IconItem from 'components/common/icon/IconItem'; +import StatsChart from './StatsChart'; +import { useAppContext } from 'providers/AppProvider'; + +const StatsItem = ({ stat }) => { + const { icon, color, title, amount, caret, caretColor, target, data } = stat; + const { getThemeColor } = useAppContext(); + return ( + <> + + +
    {title}
    +
    + +
    +
    + +

    {amount}%

    +
    + +

    {target}

    +
    +
    + +
    +
    + + ); +}; + +const CrmStats = () => { + const [stats] = useState(statsData); + return ( + + + + {stats.map((stat, index) => ( + + + + ))} + + + + ); +}; + +export default CrmStats; diff --git a/src/components/dashboards/crm/DealForecastBar.jsx b/src/components/dashboards/crm/DealForecastBar.jsx new file mode 100644 index 0000000..3c1acd9 --- /dev/null +++ b/src/components/dashboards/crm/DealForecastBar.jsx @@ -0,0 +1,75 @@ +import React from 'react'; +import { Card, Col, ProgressBar, Row } from 'react-bootstrap'; +import FalconCardHeader from 'components/common/FalconCardHeader'; +import CardDropdown from 'components/common/CardDropdown'; +import { dealForecastData } from 'data/dashboard/crm'; +import classNames from 'classnames'; +import Flex from 'components/common/Flex'; + +const DealForecastBar = () => { + const total = dealForecastData.reduce((acc, data) => acc + data.amount, 0); + + return ( + + } + /> + +
    +

    ${total.toLocaleString()}

    + + {dealForecastData.map((item, index) => ( + + ${(item.amount / 1000).toFixed(1)}k + + } + /> + ))} + + + {dealForecastData.map((item, index) => ( + + + {item.title} + + ({((item.amount / total) * 100).toFixed(1)}%) + + + ))} + +
    +
    +
    + ); +}; + +export default DealForecastBar; diff --git a/src/components/dashboards/crm/LocationBySession/LocationBySession.jsx b/src/components/dashboards/crm/LocationBySession/LocationBySession.jsx new file mode 100644 index 0000000..aff0b84 --- /dev/null +++ b/src/components/dashboards/crm/LocationBySession/LocationBySession.jsx @@ -0,0 +1,112 @@ +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import CardDropdown from 'components/common/CardDropdown'; +import FalconCardHeader from 'components/common/FalconCardHeader'; +import Flex from 'components/common/Flex'; +import WorldMap from 'components/dashboards/analytics/users-by-country/WorldMap'; +import { countryData } from 'data/countryData'; +import { locationBySessionTableData } from 'data/dashboard/crm'; +import React, { useRef, useState } from 'react'; +import { Button, Card } from 'react-bootstrap'; +import LocationBySessionTable from './LocationBySessionTable'; + +const LocationBySession = () => { + const chartRef = useRef(null); + const [zoomLevel, setZoomLevel] = useState(1); + const [maxZoomLevel] = useState(5); + const [minZoomLevel] = useState(1); + + const handleMapReset = () => { + chartRef.current.getEchartsInstance().dispatchAction({ + type: 'restore' + }); + }; + const handleZoomIn = () => { + if (zoomLevel < maxZoomLevel) { + setZoomLevel(zoomLevel + 1); + } + chartRef.current.getEchartsInstance().setOption({ + series: { + zoom: zoomLevel + 1 + } + }); + }; + const handleZoomOut = () => { + if (zoomLevel > minZoomLevel) { + setZoomLevel(zoomLevel - 1); + } + chartRef.current.getEchartsInstance().setOption({ + series: { + zoom: zoomLevel - 1 + } + }); + }; + + return ( + + +
    + +
    + + + } + /> + + +
    + +
    + +
    + +
    + + +

    + 1 to 5 of 15 + + +

    +
    +
    + ); +}; + +export default LocationBySession; diff --git a/src/components/dashboards/crm/LocationBySession/LocationBySessionTable.jsx b/src/components/dashboards/crm/LocationBySession/LocationBySessionTable.jsx new file mode 100644 index 0000000..914c6de --- /dev/null +++ b/src/components/dashboards/crm/LocationBySession/LocationBySessionTable.jsx @@ -0,0 +1,99 @@ +import React from 'react'; +import { ProgressBar } from 'react-bootstrap'; +import { Link } from 'react-router'; +import Flex from 'components/common/Flex'; +import AdvanceTable from 'components/common/advance-table/AdvanceTable'; +import useAdvanceTable from 'hooks/useAdvanceTable'; +import AdvanceTableProvider from 'providers/AdvanceTableProvider'; + +const columns = [ + { + accessorKey: 'country', + header: 'Country', + meta: { + headerProps: { className: 'text-800' }, + cellProps: { + className: 'py-3' + } + }, + cell: ({ row: { original } }) => { + const { flag, country } = original; + return ( + + + ... +

    {country}

    +
    + + ); + } + }, + { + accessorKey: 'sessions', + header: 'Sessions', + meta: { + headerProps: { className: 'text-800' }, + cellProps: { + className: 'fw-semibold' + } + } + }, + { + accessorKey: 'users', + header: 'Users', + meta: { + headerProps: { className: 'text-800' } + } + }, + { + accessorKey: 'percentage', + header: 'Percentage', + enableSorting: false, + meta: { + headerProps: { + className: 'text-end text-800', + style: { + width: '9.625rem' + } + } + }, + cell: ({ row: { original } }) => { + const { percentage } = original; + return ( + +

    {percentage}%

    + +
    + ); + } + } +]; + +const LocationBySessionTable = ({ data }) => { + const table = useAdvanceTable({ + data, + columns, + sortable: true, + pagination: true, + perPage: 3 + }); + + return ( + +
    + +
    +
    + ); +}; + +export default LocationBySessionTable; diff --git a/src/components/dashboards/crm/StatsChart.jsx b/src/components/dashboards/crm/StatsChart.jsx new file mode 100644 index 0000000..2648cdf --- /dev/null +++ b/src/components/dashboards/crm/StatsChart.jsx @@ -0,0 +1,77 @@ +import React from 'react'; +import * as echarts from 'echarts/core'; +import { LineChart } from 'echarts/charts'; +import { + GridComponent, + TooltipComponent, + TitleComponent +} from 'echarts/components'; +import { CanvasRenderer } from 'echarts/renderers'; +import BasicECharts from 'components/common/BasicEChart'; +import { rgbaColor } from 'helpers/utils'; + +echarts.use([ + TitleComponent, + TooltipComponent, + GridComponent, + LineChart, + CanvasRenderer +]); + +const getOptions = (color, data) => ({ + tooltip: { + trigger: 'axis' + }, + series: [ + { + type: 'line', + data, + symbol: 'none', + color, + areaStyle: { + color: { + type: 'linear', + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [ + { + offset: 0, + color: rgbaColor(color, 0.25) + }, + { + offset: 1, + color: rgbaColor(color, 0) + } + ] + } + } + } + ], + xAxis: { + type: 'category', + data: [ + 'June 01', + 'June 02', + 'June 03', + 'June 04', + 'June 05', + 'June 06', + 'June 07' + ] + }, + grid: { right: 0, left: 0, bottom: 0, top: 0 } +}); + +const StatsChart = ({ color, data }) => { + return ( + + ); +}; + +export default StatsChart; diff --git a/src/components/dashboards/crm/ToDoList.jsx b/src/components/dashboards/crm/ToDoList.jsx new file mode 100644 index 0000000..62b8934 --- /dev/null +++ b/src/components/dashboards/crm/ToDoList.jsx @@ -0,0 +1,115 @@ +import React, { useState } from 'react'; +import { Button, Card, Col, Form, ProgressBar, Row } from 'react-bootstrap'; +import Flex from 'components/common/Flex'; +import { toDoList } from 'data/dashboard/crm'; +import CardDropdown from 'components/common/CardDropdown'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import IconItem from 'components/common/icon/IconItem'; +import classNames from 'classnames'; +import { Link } from 'react-router'; + +const ToDoListItem = ({ item, index, handleChange }) => { + return ( + + + handleChange(item.id, e.target.checked)} + className={classNames('rounded-3 mt-0', { + 'form-check-line-through': item.completed + })} + /> + + {item.task} + + +
    +
    + + +
    +
    +
    + 1 ? 'start' : undefined} + /> +
    +
    + ); +}; + +const ToDoList = () => { + const [todoItems, setTodoItems] = useState(toDoList); + const handleChange = (id, completed) => { + const updatedTodos = todoItems.map(item => + item.id === id ? { ...item, completed } : item + ); + setTodoItems(updatedTodos); + }; + return ( + + +
    To Do List
    +
    + + + +
    25%
    + + + + + + +
    + {todoItems.map((item, index) => ( + + ))} +
    + + + +
    + ); +}; + +export default ToDoList; diff --git a/src/components/dashboards/crm/avg-call-duration/AvgCallDuration.jsx b/src/components/dashboards/crm/avg-call-duration/AvgCallDuration.jsx new file mode 100644 index 0000000..ca7f61f --- /dev/null +++ b/src/components/dashboards/crm/avg-call-duration/AvgCallDuration.jsx @@ -0,0 +1,42 @@ +import React from 'react'; +import { Card, OverlayTrigger, Tooltip } from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import Flex from 'components/common/Flex'; +import AvgCallDurationChart from './AvgCallDurationChart'; + +const AvgCallDuration = () => { + return ( + + +
    Average Call Duration
    + + {' '} + Average call duration based of last 50 calls + + } + > +
    + +
    +
    +
    + +
    +

    10m:8s

    +

    Based on 50 calls

    +
    + +
    +
    + ); +}; + +export default AvgCallDuration; diff --git a/src/components/dashboards/crm/avg-call-duration/AvgCallDurationChart.jsx b/src/components/dashboards/crm/avg-call-duration/AvgCallDurationChart.jsx new file mode 100644 index 0000000..79fcf74 --- /dev/null +++ b/src/components/dashboards/crm/avg-call-duration/AvgCallDurationChart.jsx @@ -0,0 +1,59 @@ +import React from 'react'; +import * as echarts from 'echarts/core'; +import { LineChart } from 'echarts/charts'; +import { + GridComponent, + TooltipComponent, + TitleComponent +} from 'echarts/components'; +import { CanvasRenderer } from 'echarts/renderers'; +import BasicECharts from 'components/common/BasicEChart'; +import { rgbaColor } from 'helpers/utils'; +import { useAppContext } from 'providers/AppProvider'; + +echarts.use([ + TitleComponent, + TooltipComponent, + GridComponent, + LineChart, + CanvasRenderer +]); + +const getOptions = getThemeColor => ({ + series: [ + { + type: 'line', + data: [8, 15, 12, 14, 18, 12, 12, 25, 13, 12, 10, 13, 35], + color: getThemeColor('warning'), + areaStyle: { + color: { + colorStops: [ + { + offset: 0, + color: rgbaColor(getThemeColor('warning'), 0.23) + }, + { + offset: 1, + color: rgbaColor(getThemeColor('warning'), 0.04) + } + ] + } + } + } + ], + + grid: { bottom: '-10px', right: 0 } +}); + +const AvgCallDurationChart = () => { + const { getThemeColor } = useAppContext(); + return ( + + ); +}; + +export default AvgCallDurationChart; diff --git a/src/components/dashboards/crm/deal-forecast/DealForeCast.jsx b/src/components/dashboards/crm/deal-forecast/DealForeCast.jsx new file mode 100644 index 0000000..f46cc89 --- /dev/null +++ b/src/components/dashboards/crm/deal-forecast/DealForeCast.jsx @@ -0,0 +1,18 @@ +import React from 'react'; +import { Card } from 'react-bootstrap'; +import FalconCardHeader from 'components/common/FalconCardHeader'; +import DealForeCastTable from './DealForeCastTable'; +import { dealForecastByOwnerData } from 'data/dashboard/crm'; + +const DealForeCast = () => { + return ( + + + + + + + ); +}; + +export default DealForeCast; diff --git a/src/components/dashboards/crm/deal-forecast/DealForeCastTable.jsx b/src/components/dashboards/crm/deal-forecast/DealForeCastTable.jsx new file mode 100644 index 0000000..372d790 --- /dev/null +++ b/src/components/dashboards/crm/deal-forecast/DealForeCastTable.jsx @@ -0,0 +1,101 @@ +import React from 'react'; +import SimpleBar from 'simplebar-react'; +import { Table } from 'react-bootstrap'; +import { Link } from 'react-router'; +import classNames from 'classnames'; +import paths from 'routes/paths'; + +const getTotal = (data, key) => + data.reduce((acc, val) => acc + Number(val[key]), 0); + +const DealForeCastTableRow = ({ item, isLast }) => { + return ( + + + {item.owner} + + + {item.qualifiedItem} + + + {item.appointment} + + + {item.contactSent} + + + {item.closedWon} + + + ); +}; +const DealForeCastTable = ({ data }) => { + return ( + + + + + + + + + + + + + {data.map((item, index) => ( + + ))} + + + + + + + + + + +
    Owner + Qualified to buy + AppointmentContact sentClosed won
    Total + ${getTotal(data, 'qualifiedItem')} + + ${getTotal(data, 'appointment')} + + ${getTotal(data, 'contactSent')} + + ${getTotal(data, 'closedWon')} +
    +
    + ); +}; + +export default DealForeCastTable; diff --git a/src/components/dashboards/crm/deal-storage-funnel/DealStorageFunnel.jsx b/src/components/dashboards/crm/deal-storage-funnel/DealStorageFunnel.jsx new file mode 100644 index 0000000..881865e --- /dev/null +++ b/src/components/dashboards/crm/deal-storage-funnel/DealStorageFunnel.jsx @@ -0,0 +1,33 @@ +import React from 'react'; +import { Card } from 'react-bootstrap'; +import FalconCardHeader from 'components/common/FalconCardHeader'; +import DealStorageFunnelChart from './DealStorageFunnelChart'; +import Flex from 'components/common/Flex'; +import FalconLink from 'components/common/FalconLink'; + +const DealStorageFunnel = () => { + return ( + + } + /> + + +
    Deal Stage
    +
    Count of Deals
    +
    Conversion
    +
    + +
    +
    + ); +}; + +export default DealStorageFunnel; diff --git a/src/components/dashboards/crm/deal-storage-funnel/DealStorageFunnelChart.jsx b/src/components/dashboards/crm/deal-storage-funnel/DealStorageFunnelChart.jsx new file mode 100644 index 0000000..bc2c834 --- /dev/null +++ b/src/components/dashboards/crm/deal-storage-funnel/DealStorageFunnelChart.jsx @@ -0,0 +1,113 @@ +import React from 'react'; +import * as echarts from 'echarts/core'; +import { useAppContext } from 'providers/AppProvider'; +import ReactEchart from 'components/common/ReactEchart'; + +const getOptions = getThemeColor => ({ + yAxis: [ + { + data: [ + 'Processing', + 'Contact won', + 'Contact Sent', + 'Qualified to Buy', + 'Created' + ], + axisLabel: { + inside: true, + color: getThemeColor('gray-700'), + fontWeight: 500, + fontSize: 11, + fontFamily: 'poppins' + }, + axisTick: { + show: false + }, + axisLine: { + show: false + }, + z: 10 + }, + { + data: ['50%', '70%', '76%', '68%', '99%'], + axisLabel: { + inside: false, + color: getThemeColor('primary'), + fontWeight: 500, + fontSize: 11, + fontFamily: 'poppins', + borderRadius: 5, + backgroundColor: getThemeColor('primary-bg-subtle'), + padding: [6, 16, 6, 16], + width: 115 + }, + axisTick: { + show: false + }, + axisLine: { + show: false + }, + z: 10 + } + ], + xAxis: { + type: 'value', + min: 0, + max: 35, + axisLine: { + show: false + }, + splitLine: { + show: false + }, + inverse: true, + axisTick: { + show: false + }, + axisLabel: { + show: false + } + }, + + series: [ + { + type: 'bar', + showBackground: true, + barWidth: 25, + label: { + show: true, + formatter: '{c} ', + position: 'insideLeft' + }, + backgroundStyle: { + color: getThemeColor('gray-200'), + borderRadius: 5 + }, + itemStyle: { + color: getThemeColor('primary'), + borderRadius: 5 + }, + data: [7, 10, 13, 19, 19] + } + ], + grid: { + right: '65px', + left: '0', + bottom: '0', + top: '0', + outerBoundsMode: 'none' + } +}); + +const DealStorageFunnelChart = () => { + const { getThemeColor } = useAppContext(); + return ( + + ); +}; + +export default DealStorageFunnelChart; diff --git a/src/components/dashboards/crm/deal-vs-goal/DealVsGoal.jsx b/src/components/dashboards/crm/deal-vs-goal/DealVsGoal.jsx new file mode 100644 index 0000000..9427a8a --- /dev/null +++ b/src/components/dashboards/crm/deal-vs-goal/DealVsGoal.jsx @@ -0,0 +1,24 @@ +import React from 'react'; +import { Card } from 'react-bootstrap'; +import FalconCardHeader from 'components/common/FalconCardHeader'; +import CardDropdown from 'components/common/CardDropdown'; +import DealVSGoalChart from './DealVsGoalChart'; +import { dealClosedVsGoalChart } from 'data/dashboard/crm'; + +const DealVsGoal = () => { + return ( + + } + /> + + + + + ); +}; + +export default DealVsGoal; diff --git a/src/components/dashboards/crm/deal-vs-goal/DealVsGoalChart.jsx b/src/components/dashboards/crm/deal-vs-goal/DealVsGoalChart.jsx new file mode 100644 index 0000000..cc56520 --- /dev/null +++ b/src/components/dashboards/crm/deal-vs-goal/DealVsGoalChart.jsx @@ -0,0 +1,151 @@ +import React from 'react'; +import dayjs from 'dayjs'; +import * as echarts from 'echarts/core'; +import { getPosition, tooltipFormatter } from 'helpers/echart-utils'; +import { getPastDates, rgbaColor } from 'helpers/utils'; +import { useBreakpoints } from 'hooks/useBreakpoints'; +import { useAppContext } from 'providers/AppProvider'; +import ReactEchart from 'components/common/ReactEchart'; + +const getOptions = (getThemeColor, data) => ({ + color: [getThemeColor('primary'), getThemeColor('warning')], + tooltip: { + trigger: 'axis', + padding: [7, 10], + backgroundColor: getThemeColor('gray-100'), + borderColor: getThemeColor('gray-300'), + textStyle: { color: getThemeColor('gray-1100') }, + borderWidth: 1, + formatter: tooltipFormatter, + transitionDuration: 0, + position(pos, params, dom, rect, size) { + return getPosition(pos, params, dom, rect, size); + } + }, + + legend: { + left: 'left', + top: -5, + data: ['Closed Amount', 'Revenue Goal'], + itemWidth: 10, + itemHeight: 10, + icon: 'circle', + inactiveColor: getThemeColor('gray-400'), + textStyle: { color: getThemeColor('gray-700') }, + itemGap: 20 + }, + xAxis: { + type: 'category', + name: 'Closed Date', + nameGap: 50, + nameLocation: 'center', + offset: 0, + nameTextStyle: { + color: getThemeColor('gray-700') + }, + data: getPastDates(9), + boundaryGap: 0, + axisPointer: { + lineStyle: { + color: getThemeColor('gray-300'), + type: 'dashed' + } + }, + splitLine: { show: false }, + axisLine: { + lineStyle: { + color: rgbaColor('#000', 0.01), + type: 'dashed' + } + }, + axisTick: { show: false }, + axisLabel: { + color: getThemeColor('gray-400'), + align: 'right', + formatter: value => dayjs(value).format('DD MMM, YY'), + margin: 20 + } + }, + yAxis: { + type: 'value', + name: 'Closed Amount', + nameGap: 85, + nameLocation: 'middle', + nameTextStyle: { + color: getThemeColor('gray-700') + }, + splitNumber: 3, + axisPointer: { show: false }, + splitLine: { + lineStyle: { + color: getThemeColor('gray-200') + } + }, + boundaryGap: 0, + axisLabel: { + show: true, + color: getThemeColor('gray-400'), + formatter: function (value) { + return `$${value}`; + }, + margin: 15 + }, + axisTick: { show: false }, + axisLine: { show: false } + }, + series: [ + { + type: 'line', + name: 'Closed Amount', + data: data.closedAmount, + symbolSize: 5, + symbol: 'circle', + smooth: false, + lineStyle: { color: rgbaColor(getThemeColor('primary')) }, + itemStyle: { + borderColor: rgbaColor(getThemeColor('primary'), 0.6), + borderWidth: 2 + }, + emphasis: { + scale: true + } + }, + { + type: 'line', + name: 'Revenue Goal', + data: data.revenueGoal, + symbolSize: 5, + symbol: 'circle', + smooth: false, + emphasis: { + scale: true + }, + lineStyle: { color: rgbaColor(getThemeColor('warning')) }, + itemStyle: { + borderColor: rgbaColor(getThemeColor('warning'), 0.6), + borderWidth: 2 + } + } + ], + grid: { + right: 5, + left: 100, + bottom: 30, + top: 30, + outerBoundsMode: 'none' + } +}); + +const DealVSGoalChart = ({ data }) => { + const { breakpoints } = useBreakpoints(); + const { getThemeColor } = useAppContext(); + return ( + + ); +}; + +export default DealVSGoalChart; diff --git a/src/components/dashboards/crm/greetings/Greetings.jsx b/src/components/dashboards/crm/greetings/Greetings.jsx new file mode 100644 index 0000000..31a9308 --- /dev/null +++ b/src/components/dashboards/crm/greetings/Greetings.jsx @@ -0,0 +1,47 @@ +import React from 'react'; +import Flex from 'components/common/Flex'; +import { Card, Col, Row } from 'react-bootstrap'; +import barChart from 'assets/img/illustrations/crm-bar-chart.png'; +import lineChart from 'assets/img/illustrations/crm-line-chart.png'; +import GreetingsDate from './GreetingsDate'; + +const Greetings = () => { + return ( + + + + + + ... +
    +
    Welcome to
    +

    + Falcon + CRM +

    +
    + ... +
    + + + + +
    Showing Data For:
    + + + + +
    + +
    +
    +
    + ); +}; + +export default Greetings; diff --git a/src/components/dashboards/crm/greetings/GreetingsDate.jsx b/src/components/dashboards/crm/greetings/GreetingsDate.jsx new file mode 100644 index 0000000..b06c0c4 --- /dev/null +++ b/src/components/dashboards/crm/greetings/GreetingsDate.jsx @@ -0,0 +1,48 @@ +import React, { useState } from 'react'; +import { Form } from 'react-bootstrap'; +import DatePicker from 'react-datepicker'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; + +const GreetingsDateInput = ({ value, onClick, ref }) => ( +
    + { + console.log({ e }); + }} + /> + +
    +); + +const GreetingsDate = () => { + const date = new Date(); + const [startDate, setStartDate] = useState(new Date()); + const [endDate, setEndDate] = useState(date.setDate(date.getDate() + 7)); + const onChange = dates => { + const [start, end] = dates; + setStartDate(start); + setEndDate(end); + }; + return ( + day.slice(0, 3)} + endDate={endDate} + selectsRange + dateFormat="MMM dd" + customInput={} + /> + ); +}; + +export default GreetingsDate; diff --git a/src/components/dashboards/crm/index.jsx b/src/components/dashboards/crm/index.jsx new file mode 100644 index 0000000..c8f0084 --- /dev/null +++ b/src/components/dashboards/crm/index.jsx @@ -0,0 +1,69 @@ +import React from 'react'; +import { Col, Row } from 'react-bootstrap'; +import CrmStats from './CrmStats'; +import DealForecastBar from './DealForecastBar'; +import DealStorageFunnel from './deal-storage-funnel/DealStorageFunnel'; +import MostLeads from './most-leads/MostLeads'; +import Revenue from './revenue/Revenue'; +import DealVsGoal from './deal-vs-goal/DealVsGoal'; +import DealForeCast from './deal-forecast/DealForeCast'; +import LocationBySession from './LocationBySession/LocationBySession'; +import AvgCallDuration from './avg-call-duration/AvgCallDuration'; +import LeadConversation from './lead-conversation/LeadConversation'; +import ToDoList from './ToDoList'; +import RecentLeads from './recent-leads/RecentLeads'; +import Greetings from './greetings/Greetings'; + +const Crm = () => { + return ( + <> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +}; + +export default Crm; diff --git a/src/components/dashboards/crm/lead-conversation/LeadConversation.jsx b/src/components/dashboards/crm/lead-conversation/LeadConversation.jsx new file mode 100644 index 0000000..b581b54 --- /dev/null +++ b/src/components/dashboards/crm/lead-conversation/LeadConversation.jsx @@ -0,0 +1,47 @@ +import React from 'react'; +import FalconCardHeader from 'components/common/FalconCardHeader'; +import CardDropdown from 'components/common/CardDropdown'; +import { Card, Col, Row } from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import LeadConversationChart from './LeadConversationChart'; +import FalconCardFooterLink from 'components/common/FalconCardFooterLink'; + +const LeadConversation = () => { + return ( + + } + /> + + + +

    + Current Rate: + + 4.5% + + +

    + + +

    + Target Rate: + 6% +

    + +
    + +
    + + +
    + ); +}; + +export default LeadConversation; diff --git a/src/components/dashboards/crm/lead-conversation/LeadConversationChart.jsx b/src/components/dashboards/crm/lead-conversation/LeadConversationChart.jsx new file mode 100644 index 0000000..7d634e0 --- /dev/null +++ b/src/components/dashboards/crm/lead-conversation/LeadConversationChart.jsx @@ -0,0 +1,152 @@ +import React from 'react'; +import { BarChart } from 'echarts/charts'; +import { + GridComponent, + LegendComponent, + TitleComponent, + TooltipComponent +} from 'echarts/components'; +import * as echarts from 'echarts/core'; +import { CanvasRenderer } from 'echarts/renderers'; +import { getPosition, tooltipFormatter } from 'helpers/echart-utils'; +import { rgbaColor } from 'helpers/utils'; +import { useAppContext } from 'providers/AppProvider'; +import ReactEchart from 'components/common/ReactEchart'; + +echarts.use([ + TitleComponent, + TooltipComponent, + GridComponent, + BarChart, + CanvasRenderer, + LegendComponent +]); + +const getOptions = getThemeColor => ({ + color: [ + rgbaColor(getThemeColor('primary'), 0.7), + rgbaColor(getThemeColor('info'), 0.6), + rgbaColor(getThemeColor('secondary'), 0.2), + rgbaColor(getThemeColor('warning'), 0.6) + ], + legend: { + data: ['Campaigns', 'Lead', 'Opportunity', 'Deal'], + left: '0%', + top: 0, + icon: 'circle', + inactiveColor: getThemeColor('gray-400'), + textStyle: { color: getThemeColor('gray-700') }, + itemGap: 10 + }, + yAxis: { + type: 'category', + data: [ + 'kerry Ingram', + 'Bradie Pitter', + 'Harrington', + 'Ashley Shaw', + 'Jenny Horas', + 'Chris Pratt' + ], + axisLine: { + show: false + }, + boundaryGap: 0, + splitLine: { + lineStyle: { + color: getThemeColor('gray-200') + } + }, + axisTick: { + show: false + }, + axisLabel: { + color: getThemeColor('gray-600') + } + }, + xAxis: { + type: 'value', + splitLine: { + lineStyle: { + color: getThemeColor('gray-200') + } + }, + axisLine: { + show: false + }, + axisTick: { + show: false + }, + axisLabel: { + show: false + } + }, + tooltip: { + trigger: 'axis', + padding: [7, 10], + axisPointer: { + type: 'none' + }, + backgroundColor: getThemeColor('gray-100'), + borderColor: getThemeColor('gray-300'), + textStyle: { color: getThemeColor('gray-1100') }, + borderWidth: 1, + transitionDuration: 0, + position(pos, params, dom, rect, size) { + return getPosition(pos, params, dom, rect, size); + }, + formatter: tooltipFormatter + }, + + series: [ + { + name: 'Campaigns', + type: 'bar', + stack: 'total', + data: [1405, 1300, 1620, 1430, 1500, 1520], + barWidth: '20%' + }, + { + name: 'Lead', + type: 'bar', + stack: 'total', + data: [320, 302, 301, 334, 340, 390], + barWidth: '20%' + }, + { + name: 'Opportunity', + type: 'bar', + stack: 'total', + data: [220, 182, 351, 234, 290, 300], + barWidth: '20%' + }, + { + name: 'Deal', + type: 'bar', + stack: 'total', + data: [120, 182, 191, 134, 190, 170], + barWidth: '20%' + } + ], + grid: { + right: 5, + left: 2, + bottom: 2, + top: 54, + outerBoundsMode: 'same', + outerBoundsContain: 'axisLabel' + } +}); + +const LeadConversationChart = () => { + const { getThemeColor } = useAppContext(); + return ( + + ); +}; + +export default LeadConversationChart; diff --git a/src/components/dashboards/crm/most-leads/MostLeads.jsx b/src/components/dashboards/crm/most-leads/MostLeads.jsx new file mode 100644 index 0000000..1ab20a8 --- /dev/null +++ b/src/components/dashboards/crm/most-leads/MostLeads.jsx @@ -0,0 +1,59 @@ +import React from 'react'; +import CardDropdown from 'components/common/CardDropdown'; +import Flex from 'components/common/Flex'; +import { Card, Col, Row } from 'react-bootstrap'; +import MostLeadsChart from './MostLeadsChart'; +import { leadsData } from 'data/dashboard/crm'; +import FalconCardFooterLink from 'components/common/FalconCardFooterLink'; +import classNames from 'classnames'; +import FalconCardHeader from 'components/common/FalconCardHeader'; + +const LeadItem = ({ item, isLast }) => { + return ( + + + ... +
    {item.title}
    +
    +

    {item.target}

    +
    {item.amount}%
    +
    + ); +}; + +const MostLeads = () => { + return ( + + } + /> + + + + + +
    + {leadsData.map((item, index) => ( + + ))} + +
    + +
    + ); +}; + +export default MostLeads; diff --git a/src/components/dashboards/crm/most-leads/MostLeadsChart.jsx b/src/components/dashboards/crm/most-leads/MostLeadsChart.jsx new file mode 100644 index 0000000..e232e8d --- /dev/null +++ b/src/components/dashboards/crm/most-leads/MostLeadsChart.jsx @@ -0,0 +1,90 @@ +import React, { useRef } from 'react'; +import { PieChart } from 'echarts/charts'; +import { + GridComponent, + LegendComponent, + TitleComponent, + TooltipComponent +} from 'echarts/components'; +import * as echarts from 'echarts/core'; +import { CanvasRenderer } from 'echarts/renderers'; +import { useAppContext } from 'providers/AppProvider'; +import ReactEchart from 'components/common/ReactEchart'; + +echarts.use([ + TitleComponent, + TooltipComponent, + GridComponent, + PieChart, + CanvasRenderer, + LegendComponent +]); + +const getOptions = getThemeColor => ({ + color: [ + getThemeColor('primary'), + getThemeColor('info'), + getThemeColor('warning'), + getThemeColor('info') + ], + tooltip: { + trigger: 'item', + padding: [7, 10], + backgroundColor: getThemeColor('gray-100'), + borderColor: getThemeColor('gray-300'), + textStyle: { color: getThemeColor('gray-1100') }, + borderWidth: 1, + transitionDuration: 0, + formatter: function (params) { + return `${params.data.name}: ${params.percent}%`; + } + }, + legend: { show: false }, + series: [ + { + name: 'Total', + type: 'pie', + radius: ['100%', '67%'], + avoidLabelOverlap: false, + itemStyle: { + borderWidth: 2, + borderColor: getThemeColor('gray-100') + }, + label: { + show: false + }, + emphasis: { + scale: false + }, + labelLine: { show: false }, + data: [ + { value: 60, name: 'Email' }, + { value: 30, name: 'Social' }, + { value: 10, name: 'Call' }, + { value: 120, name: 'Other' } + ] + } + ] +}); + +const MostLeadsChart = () => { + const chartRef = useRef(null); + const { getThemeColor } = useAppContext(); + + return ( +
    + +
    +

    Total

    +

    15.6k

    +
    +
    + ); +}; + +export default MostLeadsChart; diff --git a/src/components/dashboards/crm/recent-leads/RecentLeads.jsx b/src/components/dashboards/crm/recent-leads/RecentLeads.jsx new file mode 100644 index 0000000..ab4d11f --- /dev/null +++ b/src/components/dashboards/crm/recent-leads/RecentLeads.jsx @@ -0,0 +1,142 @@ +import React from 'react'; +import { Card } from 'react-bootstrap'; +import { Link } from 'react-router'; +import AdvanceTable from 'components/common/advance-table/AdvanceTable'; +import Avatar from 'components/common/Avatar'; +import CardDropdown from 'components/common/CardDropdown'; +import FalconCardFooterLink from 'components/common/FalconCardFooterLink'; +import FalconCardHeader from 'components/common/FalconCardHeader'; +import Flex from 'components/common/Flex'; +import IconItem from 'components/common/icon/IconItem'; +import SubtleBadge from 'components/common/SubtleBadge'; +import { recentLeadsTableData } from 'data/dashboard/crm'; +import useAdvanceTable from 'hooks/useAdvanceTable'; +import AdvanceTableProvider from 'providers/AdvanceTableProvider'; + +const columns = [ + { + accessorKey: 'name', + header: 'Name', + meta: { + headerProps: { + className: 'py-0 ps-0 text-900' + }, + cellProps: { + className: 'ps-0' + } + }, + cell: ({ row: { original } }) => { + const { name, img } = original; + return ( + + + +
    {name}
    +
    + + ); + } + }, + { + accessorKey: 'email', + header: 'Email and Phone', + meta: { + headerProps: { className: 'text-900' } + }, + cell: ({ row: { original } }) => { + const { email } = original; + return ( + + {email} + + ); + } + }, + { + accessorKey: 'status', + header: 'Status', + meta: { + headerProps: { className: 'text-900' } + }, + cell: ({ row: { original } }) => { + const { status, variant } = original; + return ( + + {status} + + ); + } + }, + { + accessorKey: 'Action', + header: 'Action', + meta: { + headerProps: { + className: 'text-end text-900' + }, + cellProps: { + className: 'text-end' + } + }, + enableSorting: false, + cell: () => ( +
    +
    + + +
    + +
    + ) + } +]; + +const RecentLeads = () => { + const table = useAdvanceTable({ + data: recentLeadsTableData, + columns, + selection: true, + sortable: true, + pagination: true, + perPage: 10, + selectionColumnWidth: 28, + selectionHeaderClassname: 'py-0' + }); + + return ( + + + } + /> + + + + + + + + + ); +}; + +export default RecentLeads; diff --git a/src/components/dashboards/crm/revenue/Revenue.jsx b/src/components/dashboards/crm/revenue/Revenue.jsx new file mode 100644 index 0000000..f209e35 --- /dev/null +++ b/src/components/dashboards/crm/revenue/Revenue.jsx @@ -0,0 +1,127 @@ +import React, { useState } from 'react'; +import { Card, Col, Form, Nav, Row, Tab } from 'react-bootstrap'; +import Flex from 'components/common/Flex'; +import RevenueChart from './RevenueChart'; +import { revenueChartData } from 'data/dashboard/crm'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import CardDropdown from 'components/common/CardDropdown'; + +const NavItem = ({ item }) => { + return ( + + + {item} + + + ); +}; + +const Revenue = () => { + const [navItems] = useState(['Revenue', 'Users', 'Deals', 'Profit']); + return ( + + + + + + + + + + + + +
    +

    $37,950

    +

    + + Closed Amount +

    +

    + + Revenue Goal +

    +
    + + + + + + +
    $4.2k
    +
    Email
    + + +
    $5.6k
    +
    Social
    + + +
    $6.7k
    +
    Call
    + + +
    $2.3k
    +
    Other
    + +
    + +
    + + + + + + + + + + + + + + + + + +
    +
    +
    +
    + ); +}; + +export default Revenue; diff --git a/src/components/dashboards/crm/revenue/RevenueChart.jsx b/src/components/dashboards/crm/revenue/RevenueChart.jsx new file mode 100644 index 0000000..877979c --- /dev/null +++ b/src/components/dashboards/crm/revenue/RevenueChart.jsx @@ -0,0 +1,144 @@ +import React from 'react'; +import dayjs from 'dayjs'; +import { BarChart, LineChart } from 'echarts/charts'; +import { + GridComponent, + LegendComponent, + TitleComponent, + TooltipComponent +} from 'echarts/components'; +import * as echarts from 'echarts/core'; +import { CanvasRenderer } from 'echarts/renderers'; +import { getPastDates } from 'helpers/utils'; +import { useAppContext } from 'providers/AppProvider'; +import ReactEchart from 'components/common/ReactEchart'; + +echarts.use([ + TitleComponent, + TooltipComponent, + GridComponent, + LineChart, + CanvasRenderer, + LegendComponent, + BarChart +]); + +const tooltipFormatter = params => { + return ` +
    +
    +
    ${params[0].axisValue}
    +
    +
    +
    + + Revenue: + $${params[0].data} +
    +
    + + Revenue Goal: + $${params[1].data} +
    +
    +
    `; +}; + +const getOptions = (getThemeColor, data1, data2) => ({ + color: getThemeColor('white'), + tooltip: { + trigger: 'axis', + padding: 0, + backgroundColor: 'transparent', + borderWidth: 0, + transitionDuration: 0, + axisPointer: { + type: 'none' + }, + formatter: tooltipFormatter + }, + xAxis: { + type: 'category', + data: getPastDates(25).map(date => dayjs(date).format('DD MMM, YYYY')), + axisLabel: { + color: getThemeColor('gray-600'), + formatter: value => dayjs(value).format('MMM DD'), + align: 'left', + fontSize: 11, + padding: [0, 0, 0, 5], + showMaxLabel: false + }, + axisLine: { + show: false + }, + axisTick: { + show: false + }, + boundaryGap: 1 + }, + yAxis: { + position: 'right', + axisPointer: { type: 'none' }, + axisTick: 'none', + splitLine: { + show: false + }, + axisLine: { + show: false + }, + axisLabel: { + show: false + } + }, + series: [ + { + type: 'bar', + name: 'Revenue', + data: data1, + lineStyle: { + color: getThemeColor('primary') + }, + itemStyle: { + borderRadius: [4, 4, 0, 0], + color: getThemeColor('gray-100'), + borderColor: getThemeColor('gray-300'), + borderWidth: 1 + }, + emphasis: { + itemStyle: { + color: getThemeColor('primary') + } + } + }, + { + type: 'line', + name: 'Revenue Goal', + data: data2, + symbol: 'circle', + symbolSize: 6, + animation: false, + itemStyle: { + color: getThemeColor('warning') + }, + lineStyle: { + type: 'dashed', + width: 2, + color: getThemeColor('warning') + } + } + ], + grid: { right: 5, left: 5, bottom: '8%', top: '5%' } +}); + +const RevenueChart = ({ data }) => { + const { getThemeColor } = useAppContext(); + return ( + + ); +}; + +export default RevenueChart; diff --git a/src/components/dashboards/default/ActiveUsers.jsx b/src/components/dashboards/default/ActiveUsers.jsx new file mode 100644 index 0000000..45d2d69 --- /dev/null +++ b/src/components/dashboards/default/ActiveUsers.jsx @@ -0,0 +1,54 @@ +import React from 'react'; +import FalconCardFooterLink from 'components/common/FalconCardFooterLink'; +import FalconCardHeader from 'components/common/FalconCardHeader'; +import CardDropdown from 'components/common/CardDropdown'; +import { Card } from 'react-bootstrap'; +import Flex from 'components/common/Flex'; +import { Link } from 'react-router'; +import Avatar from 'components/common/Avatar'; +import classNames from 'classnames'; +import paths from 'routes/paths'; + +const ActiveUsers = ({ users, end = 5, ...rest }) => { + return ( + + } + /> + + {users.slice(0, end).map(({ id, ...rest }, index) => ( + + ))} + + + + ); +}; + +const ActiveUser = ({ name, avatar, role, isLast }) => ( + + +
    +
    + + {name} + +
    +

    {role}

    +
    +
    +); + +export default ActiveUsers; diff --git a/src/components/dashboards/default/BandwidthSaved.jsx b/src/components/dashboards/default/BandwidthSaved.jsx new file mode 100644 index 0000000..b53e60d --- /dev/null +++ b/src/components/dashboards/default/BandwidthSaved.jsx @@ -0,0 +1,142 @@ +import React, { useState } from 'react'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import classNames from 'classnames'; +import CardDropdown from 'components/common/CardDropdown'; +import FalconCardHeader from 'components/common/FalconCardHeader'; +import Flex from 'components/common/Flex'; +import { GaugeChart } from 'echarts/charts'; +import { + GridComponent, + LegendComponent, + TitleComponent, + TooltipComponent +} from 'echarts/components'; +import * as echarts from 'echarts/core'; +import { CanvasRenderer } from 'echarts/renderers'; +import { Card, Col, Form, Row } from 'react-bootstrap'; +import { Link } from 'react-router'; +import { useAppContext } from 'providers/AppProvider'; +import ReactEchart from 'components/common/ReactEchart'; + +echarts.use([ + TitleComponent, + TooltipComponent, + GridComponent, + GaugeChart, + CanvasRenderer, + LegendComponent +]); + +const getOptions = (getThemeColor, data) => ({ + series: [ + { + type: 'gauge', + startAngle: 90, + endAngle: -270, + radius: '90%', + pointer: { + show: false + }, + progress: { + show: true, + overlap: false, + roundCap: true, + clip: false, + itemStyle: { + color: getThemeColor('primary') + } + }, + axisLine: { + lineStyle: { + width: 8, + color: [[1, getThemeColor('gray-200')]] + } + }, + splitLine: { + show: false + }, + axisTick: { + show: false + }, + axisLabel: { + show: false + }, + data: [ + { + value: data, + detail: { + offsetCenter: ['7%', '4%'] + } + } + ], + detail: { + width: 50, + height: 14, + fontSize: 28, + fontWeight: 500, + fontFamily: 'poppins', + color: getThemeColor('gray-500'), + formatter: '{value}%' + } + } + ] +}); + +const BandwidthSaved = ({ bodyClassName }) => { + const { getThemeColor } = useAppContext(); + const [total] = useState(38.44); + const [saved] = useState(35.75); + + return ( + + } + /> + + +
    +
    + + {saved} GB saved +
    +

    {total} GB total bandwidth

    +
    +
    + + + + + + + + + + + + Help + + + + +
    + ); +}; + +export default BandwidthSaved; diff --git a/src/components/dashboards/default/BestSellingProducts.jsx b/src/components/dashboards/default/BestSellingProducts.jsx new file mode 100644 index 0000000..e78171d --- /dev/null +++ b/src/components/dashboards/default/BestSellingProducts.jsx @@ -0,0 +1,116 @@ +import classNames from 'classnames'; +import Flex from 'components/common/Flex'; +import React from 'react'; +import { + Button, + Card, + Col, + Form, + ProgressBar, + Row, + Table +} from 'react-bootstrap'; +import { Link } from 'react-router'; + +const getTotalPrice = items => + items + .map(({ unit, price }) => unit * price) + .reduce((total, currentValue) => total + currentValue, 0); + +const getProductItemCalculatedData = (unit, price, totalPrice) => { + const productTotalPrice = unit * price; + const percentage = ((productTotalPrice * 100) / totalPrice).toFixed(0); + return { productTotalPrice, percentage }; +}; + +const BestSellingProduct = ({ product, totalPrice, isLast }) => { + const { img, title, type, unit, price } = product; + const { productTotalPrice, percentage } = getProductItemCalculatedData( + unit, + price, + totalPrice + ); + + return ( + + + + {title} +
    +
    + + {title} + +
    +

    {type}

    +
    +
    + + + ${productTotalPrice} + + + + +
    {percentage}%
    +
    + + + ); +}; + +const BestSellingProducts = ({ products }) => { + const totalPrice = getTotalPrice(products); + const noOfProducts = products.length; + + return ( + + + + + + + + + + + + {products.map((product, index) => ( + + ))} + +
    Best Selling ProductsRevenue ( ${totalPrice}) + Revenue (%) +
    +
    + + + + + + + + + + + + + + +
    + ); +}; + +export default BestSellingProducts; diff --git a/src/components/dashboards/default/MarketShare.jsx b/src/components/dashboards/default/MarketShare.jsx new file mode 100644 index 0000000..a378bf6 --- /dev/null +++ b/src/components/dashboards/default/MarketShare.jsx @@ -0,0 +1,122 @@ +import React from 'react'; +import { Card, Col, Row } from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import Flex from 'components/common/Flex'; +import { PieChart } from 'echarts/charts'; +import * as echarts from 'echarts/core'; +import BasicECharts from 'components/common/BasicEChart'; +import { + GridComponent, + TitleComponent, + TooltipComponent +} from 'echarts/components'; +import { CanvasRenderer } from 'echarts/renderers'; +import { useAppContext } from 'providers/AppProvider'; + +echarts.use([ + TitleComponent, + TooltipComponent, + GridComponent, + PieChart, + CanvasRenderer +]); + +const getOptions = (getThemeColor, data, radius) => ({ + color: [ + getThemeColor(data[0].color), + getThemeColor(data[1].color), + getThemeColor(data[2].color) + ], + + tooltip: { + padding: [7, 10], + transitionDuration: 0, + backgroundColor: getThemeColor('gray-100'), + borderColor: getThemeColor('gray-300'), + textStyle: { color: getThemeColor('gray-1100') }, + borderWidth: 1, + formatter: params => + `${params.data.name}: ${params.percent}%` + }, + series: [ + { + name: '26M', + type: 'pie', + radius, + avoidLabelOverlap: false, + emphasis: { + scale: false + }, + itemStyle: { + borderWidth: 2, + borderColor: getThemeColor('gray-100') + }, + label: { + show: true, + position: 'center', + formatter: '{a}', + fontSize: 23, + color: getThemeColor('gray-1100') + }, + data + } + ] +}); + +const MarketShareItem = ({ item, index, total }) => { + const { name, color, value } = item; + + const percentage = ((value * 100) / total).toFixed(0); + return ( + +

    + + {name} +

    +
    {percentage}%
    +
    + ); +}; + +const MarketShare = ({ data, radius }) => { + const { getThemeColor } = useAppContext(); + const total = data.reduce((acc, val) => val.value + acc, 0); + return ( + + + + +
    Market Share
    + + {data.map((item, index) => ( + + ))} + + +
    + +
    + +
    +
    +
    + ); +}; + +export default MarketShare; diff --git a/src/components/dashboards/default/RunningProjects.jsx b/src/components/dashboards/default/RunningProjects.jsx new file mode 100644 index 0000000..2c384e4 --- /dev/null +++ b/src/components/dashboards/default/RunningProjects.jsx @@ -0,0 +1,80 @@ +import classNames from 'classnames'; +import FalconCardFooterLink from 'components/common/FalconCardFooterLink'; +import FalconCardHeader from 'components/common/FalconCardHeader'; +import Flex from 'components/common/Flex'; +import React from 'react'; +import { Badge, Card, Col, Form, ProgressBar, Row } from 'react-bootstrap'; + +const Project = ({ project, isLast }) => { + const { color, progress, duration, title } = project; + return ( + + + +
    +
    + + {title[0]} + +
    +
    + + + {title} + + + {progress}% + + +
    + + + + +
    {duration}
    + + + + +
    + +
    + ); +}; + +const RunningProjects = ({ data }) => { + return ( + + + + + + + } + /> + + + {data.map((project, index) => ( + + ))} + + + + + ); +}; + +export default RunningProjects; diff --git a/src/components/dashboards/default/SharedFiles.jsx b/src/components/dashboards/default/SharedFiles.jsx new file mode 100644 index 0000000..0cb4d6e --- /dev/null +++ b/src/components/dashboards/default/SharedFiles.jsx @@ -0,0 +1,103 @@ +import React from 'react'; +import { Button, Card, OverlayTrigger, Tooltip } from 'react-bootstrap'; +import FalconCardHeader from 'components/common/FalconCardHeader'; +import { Link } from 'react-router'; +import Flex from 'components/common/Flex'; +import classNames from 'classnames'; +import cloudDownload from 'assets/img/icons/cloud-download.svg'; +import editAlt from 'assets/img/icons/edit-alt.svg'; + +const SharedFiles = ({ files, className }) => { + return ( + + + View All + + } + /> + + {files.map((file, index) => ( + + ))} + + + ); +}; + +const SharedFile = ({ file, isLast }) => { + const { img, name, user, time, border } = file; + return ( + <> + +
    + +
    +
    +
    + + {name} + +
    +
    + {user} + {time} +
    +
    + + Download + + } + > + + + + Edit + + } + > + + +
    +
    +
    + {!isLast &&
    } + + ); +}; + +export default SharedFiles; diff --git a/src/components/dashboards/default/SpaceWarning.jsx b/src/components/dashboards/default/SpaceWarning.jsx new file mode 100644 index 0000000..87bff81 --- /dev/null +++ b/src/components/dashboards/default/SpaceWarning.jsx @@ -0,0 +1,30 @@ +import React from 'react'; +import { Card, Button } from 'react-bootstrap'; +import corner1 from 'assets/img/illustrations/corner-1.png'; +import { Link } from 'react-router'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import Background from 'components/common/Background'; + +const SpaceWarning = ({ className }) => ( + + + +
    Running out of your space?
    +

    + Your storage will be running out soon. Get more +
    space and powerful productivity features. +

    + +
    +
    +); + +export default SpaceWarning; diff --git a/src/components/dashboards/default/StorageStatus.jsx b/src/components/dashboards/default/StorageStatus.jsx new file mode 100644 index 0000000..d056ff1 --- /dev/null +++ b/src/components/dashboards/default/StorageStatus.jsx @@ -0,0 +1,71 @@ +import React from 'react'; +import classNames from 'classnames'; +import Flex from 'components/common/Flex'; +import { Card, Col, ProgressBar, Row } from 'react-bootstrap'; + +const StorageStatus = ({ data, className }) => { + const totalStorage = data + .map(d => d.size) + .reduce((total, currentValue) => total + currentValue, 0); + const freeStorage = data.find(d => d.name === 'Free').size; + + return ( + + +
    +
    + Using Storage{' '} + + {totalStorage - freeStorage} MB{' '} + + of {Math.round(totalStorage / 1024)} GB +
    + + {data.map((status, index) => ( + + ))} + + + {data.map(status => ( + + + + {status.name} + + ({status.size}MB) + + + ))} + +
    +
    +
    + ); +}; + +export default StorageStatus; diff --git a/src/components/dashboards/default/TopProducts.jsx b/src/components/dashboards/default/TopProducts.jsx new file mode 100644 index 0000000..712458a --- /dev/null +++ b/src/components/dashboards/default/TopProducts.jsx @@ -0,0 +1,145 @@ +import React from 'react'; +import CardDropdown from 'components/common/CardDropdown'; +import FalconCardHeader from 'components/common/FalconCardHeader'; +import Flex from 'components/common/Flex'; +import { BarChart } from 'echarts/charts'; +import { + DatasetComponent, + GridComponent, + LegendComponent, + TitleComponent, + TooltipComponent +} from 'echarts/components'; +import * as echarts from 'echarts/core'; +import { CanvasRenderer } from 'echarts/renderers'; +import { Button, Card } from 'react-bootstrap'; +import { Link } from 'react-router'; +import { useAppContext } from 'providers/AppProvider'; +import ReactEchart from 'components/common/ReactEchart'; + +echarts.use([ + TitleComponent, + TooltipComponent, + GridComponent, + BarChart, + CanvasRenderer, + LegendComponent, + DatasetComponent +]); + +const getOption = (getThemeColor, data) => ({ + color: [getThemeColor('primary'), getThemeColor('gray-300')], + dataset: { source: data }, + tooltip: { + trigger: 'item', + padding: [7, 10], + backgroundColor: getThemeColor('gray-100'), + borderColor: getThemeColor('gray-300'), + textStyle: { color: getThemeColor('gray-1100') }, + borderWidth: 1, + transitionDuration: 0, + formatter: function (params) { + return `
    ${params.seriesName + }
    ${params.name}: ${params.value[params.componentIndex + 1] + }
    `; + } + }, + legend: { + data: ['2019', '2018'], + left: 'left', + top: 'top', + itemWidth: 10, + itemHeight: 10, + itemGap: 10, + borderRadius: 0, + icon: 'circle', + inactiveColor: getThemeColor('gray-400'), + textStyle: { color: getThemeColor('gray-700') } + }, + xAxis: { + type: 'category', + axisLabel: { color: getThemeColor('gray-400') }, + axisLine: { + lineStyle: { + color: getThemeColor('gray-300'), + type: 'dashed' + } + }, + axisTick: false, + boundaryGap: 1 + }, + yAxis: { + axisPointer: { type: 'none' }, + axisTick: 'none', + splitLine: { + lineStyle: { + color: getThemeColor('gray-300'), + type: 'dashed' + } + }, + axisLine: { show: false }, + axisLabel: { color: getThemeColor('gray-400') } + }, + series: [ + { + type: 'bar', + barWidth: '10px', + barGap: '30%', + label: { show: false }, + z: 10, + itemStyle: { + borderRadius: [10, 10, 0, 0], + color: getThemeColor('primary') + } + }, + { + type: 'bar', + barWidth: '10px', + barGap: '30%', + label: { show: false }, + itemStyle: { + borderRadius: [10, 10, 0, 0], + color: getThemeColor('gray-300') + } + } + ], + grid: { + right: '0', + left: -1, + bottom: '3%', + top: '18%', + outerBoundsMode: 'same', + outerBoundsContain: 'axisLabel' + } +}); + +const TopProducts = ({ data }) => { + const { getThemeColor } = useAppContext(); + return ( + + + + + + } + /> + + + + + ); +}; + +export default TopProducts; diff --git a/src/components/dashboards/default/TotalOrder.jsx b/src/components/dashboards/default/TotalOrder.jsx new file mode 100644 index 0000000..2606d2b --- /dev/null +++ b/src/components/dashboards/default/TotalOrder.jsx @@ -0,0 +1,105 @@ +import React from 'react'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { Badge, Card } from 'react-bootstrap'; +import Flex from 'components/common/Flex'; +import { rgbaColor } from 'helpers/utils'; +import * as echarts from 'echarts/core'; +import { LineChart } from 'echarts/charts'; + +import { + GridComponent, + TooltipComponent, + TitleComponent +} from 'echarts/components'; +import { CanvasRenderer } from 'echarts/renderers'; +import BasicECharts from 'components/common/BasicEChart'; +import { useAppContext } from 'providers/AppProvider'; + +echarts.use([ + TitleComponent, + TooltipComponent, + GridComponent, + LineChart, + CanvasRenderer +]); + +const getOptions = (getThemeColor, data) => ({ + tooltip: { + trigger: 'axis', + formatter: '{b0} : {c0}' + }, + xAxis: { + data: ['Week 4', 'Week 5', 'week 6', 'week 7'] + }, + series: [ + { + type: 'line', + data, + smooth: true, + lineStyle: { + width: 3 + }, + + areaStyle: { + color: { + type: 'linear', + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [ + { + offset: 0, + color: rgbaColor(getThemeColor('primary'), 0.25) + }, + { + offset: 1, + color: rgbaColor(getThemeColor('primary'), 0) + } + ] + } + } + } + ], + grid: { + bottom: '2%', + top: '2%', + right: '0px', + left: '10px' + } +}); + +const TotalOrder = ({ data }) => { + const { getThemeColor } = useAppContext(); + return ( + + +
    Total Order
    +
    + + +
    +

    58.4K

    + + + 13.6% + +
    +
    + +
    +
    +
    + ); +}; + +export default TotalOrder; diff --git a/src/components/dashboards/default/TotalSales.jsx b/src/components/dashboards/default/TotalSales.jsx new file mode 100644 index 0000000..9174fef --- /dev/null +++ b/src/components/dashboards/default/TotalSales.jsx @@ -0,0 +1,169 @@ +import CardDropdown from 'components/common/CardDropdown'; +import FalconCardHeader from 'components/common/FalconCardHeader'; +import Flex from 'components/common/Flex'; +import { LineChart } from 'echarts/charts'; +import * as echarts from 'echarts/core'; +import React, { useState } from 'react'; +import { Card, Form } from 'react-bootstrap'; + +import { months } from 'data/common'; +import { + GridComponent, + LegendComponent, + TitleComponent, + TooltipComponent +} from 'echarts/components'; +import { CanvasRenderer } from 'echarts/renderers'; +import { capitalize, rgbaColor } from 'helpers/utils'; +import { useAppContext } from 'providers/AppProvider'; +import ReactEchart from 'components/common/ReactEchart'; + +echarts.use([ + TitleComponent, + TooltipComponent, + GridComponent, + LineChart, + CanvasRenderer, + LegendComponent +]); + +const getOptions = (getThemeColor, month, data) => ({ + color: getThemeColor('gray-100'), + tooltip: { + trigger: 'axis', + padding: [7, 10], + backgroundColor: getThemeColor('gray-100'), + borderColor: getThemeColor('gray-100'), + textStyle: { color: getThemeColor('gray-1100') }, + borderWidth: 1, + formatter: params => { + const { name, value } = params[0]; + return `${month} ${name} : ${value}`; + }, + transitionDuration: 0 + }, + xAxis: { + type: 'category', + data: [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23], + boundaryGap: 0, + axisPointer: { + lineStyle: { + color: getThemeColor('gray-300'), + type: 'dashed' + } + }, + splitLine: { show: false }, + axisLine: { + lineStyle: { + color: getThemeColor('gray-300'), + type: 'dashed' + } + }, + axisTick: { show: false }, + axisLabel: { + color: getThemeColor('gray-400'), + formatter: value => `${capitalize(month.slice(0, 3))} ${value}`, + margin: 15 + } + }, + yAxis: { + type: 'value', + axisPointer: { show: false }, + splitLine: { + lineStyle: { + color: getThemeColor('gray-300'), + type: 'dashed' + } + }, + boundaryGap: 0, + axisLabel: { + show: true, + color: getThemeColor('gray-400'), + margin: 15 + }, + axisTick: { show: false }, + axisLine: { show: false } + }, + series: [ + { + type: 'line', + data, + lineStyle: { color: getThemeColor('primary') }, + itemStyle: { + borderColor: getThemeColor('primary'), + borderWidth: 2 + }, + symbol: 'circle', + symbolSize: 10, + smooth: false, + areaStyle: { + color: { + type: 'linear', + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [ + { + offset: 0, + color: rgbaColor(getThemeColor('primary'), 0.2) + }, + { + offset: 1, + color: rgbaColor(getThemeColor('primary'), 0) + } + ] + } + } + } + ], + grid: { + right: 6, + left: -3, + bottom: 0, + top: 4, + outerBoundsMode: 'same', + outerBoundsContain: 'axisLabel' + } +}); + +const TotalSales = ({ data }) => { + const [month, setMonth] = useState(0); + const { getThemeColor } = useAppContext(); + return ( + + + setMonth(e.target.value)} + className="me-2" + > + {months.map((month, index) => ( + + ))} + + + + } + /> + + + + + + ); +}; + +export default TotalSales; diff --git a/src/components/dashboards/default/Weather.jsx b/src/components/dashboards/default/Weather.jsx new file mode 100644 index 0000000..b853df4 --- /dev/null +++ b/src/components/dashboards/default/Weather.jsx @@ -0,0 +1,52 @@ +import React from 'react'; +import { Card, Col, Row } from 'react-bootstrap'; +import FalconCardHeader from 'components/common/FalconCardHeader'; +import CardDropdown from 'components/common/CardDropdown'; +import weatherIcon from 'assets/img/icons/weather-icon.png'; +import Flex from 'components/common/Flex'; + +const Weather = ({ + data: { + city, + condition, + precipitation, + temperature, + highestTemperature, + lowestTemperature + }, + ...rest +}) => ( + + } + /> + + + + +
    +
    {city}
    +
    +
    {condition}
    + Precipitation: {precipitation} +
    +
    + + +
    + {temperature}° +
    +
    + {highestTemperature}° / {lowestTemperature}° +
    + +
    +
    +
    +); + +export default Weather; diff --git a/src/components/dashboards/default/WeeklySales.jsx b/src/components/dashboards/default/WeeklySales.jsx new file mode 100644 index 0000000..63ec558 --- /dev/null +++ b/src/components/dashboards/default/WeeklySales.jsx @@ -0,0 +1,124 @@ +import React from 'react'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import classNames from 'classnames'; +import BasicECharts from 'components/common/BasicEChart'; +import Flex from 'components/common/Flex'; +import SubtleBadge from 'components/common/SubtleBadge'; +import { BarChart } from 'echarts/charts'; +import { + GridComponent, + TitleComponent, + TooltipComponent +} from 'echarts/components'; +import * as echarts from 'echarts/core'; +import { CanvasRenderer } from 'echarts/renderers'; +import { useAppContext } from 'providers/AppProvider'; +import { Card, OverlayTrigger, Tooltip } from 'react-bootstrap'; + +echarts.use([ + TitleComponent, + TooltipComponent, + GridComponent, + BarChart, + CanvasRenderer +]); + +const getOptions = (getThemeColor, data) => ({ + tooltip: { + trigger: 'axis', + padding: [7, 10], + formatter: '{b0} : {c0}', + transitionDuration: 0, + backgroundColor: getThemeColor('gray-100'), + borderColor: getThemeColor('gray-300'), + textStyle: { color: getThemeColor('gray-1100') }, + borderWidth: 1 + }, + xAxis: { + type: 'category', + data: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + boundaryGap: false, + axisLine: { show: false }, + axisLabel: { show: false }, + axisTick: { show: false }, + axisPointer: { type: 'none' } + }, + yAxis: { + type: 'value', + splitLine: { show: false }, + axisLine: { show: false }, + axisLabel: { show: false }, + axisTick: { show: false }, + axisPointer: { type: 'none' } + }, + series: [ + { + type: 'bar', + showBackground: true, + backgroundStyle: { + borderRadius: 10 + }, + barWidth: '5px', + itemStyle: { + borderRadius: 10, + color: getThemeColor('primary') + }, + data, + z: 10 + } + ], + grid: { right: 5, left: 10, top: 0, bottom: 0 } +}); + +const WeeklySales = ({ data, width, amountClassName }) => { + const { getThemeColor } = useAppContext(); + return ( + + +
    + Weekly Sales + + Calculated according to last week's sales + + } + > + + + + +
    +
    + + +
    +

    + $47K +

    + + +3.5% + +
    + +
    +
    + ); +}; + +export default WeeklySales; diff --git a/src/components/dashboards/default/index.jsx b/src/components/dashboards/default/index.jsx new file mode 100644 index 0000000..2f5f90e --- /dev/null +++ b/src/components/dashboards/default/index.jsx @@ -0,0 +1,91 @@ +import React from 'react'; +import WeeklySales from './WeeklySales'; +import { Row, Col } from 'react-bootstrap'; +import { + marketShare, + totalOrder, + totalSales, + weeklySalesData, + weather, + products, + storageStatus, + files, + users, + topProducts, + runningProjects +} from 'data/dashboard/default'; + +import TotalOrder from './TotalOrder'; +import MarketShare from './MarketShare'; +import TotalSales from './TotalSales'; +import RunningProjects from './RunningProjects'; +import StorageStatus from './StorageStatus'; +import SpaceWarning from './SpaceWarning'; +import BestSellingProducts from './BestSellingProducts'; +import SharedFiles from './SharedFiles'; +import ActiveUsers from './ActiveUsers'; +import BandwidthSaved from './BandwidthSaved'; +import TopProducts from './TopProducts'; +import Weather from './Weather'; + +const Dashboard = () => { + return ( + <> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +}; + +export default Dashboard; diff --git a/src/components/dashboards/e-commerce/BestSellingProducts.jsx b/src/components/dashboards/e-commerce/BestSellingProducts.jsx new file mode 100644 index 0000000..b2c63a2 --- /dev/null +++ b/src/components/dashboards/e-commerce/BestSellingProducts.jsx @@ -0,0 +1,140 @@ +import React from 'react'; +import { + Button, + Card, + Col, + Row, + Table, + Form, + ProgressBar +} from 'react-bootstrap'; +import { Link } from 'react-router'; +import Flex from 'components/common/Flex'; +import SimpleBar from 'simplebar-react'; +import paths from 'routes/paths'; + +const getTotalPrice = items => + items + .map(({ unit, price }) => unit * price) + .reduce((total, currentValue) => total + currentValue, 0); + +const getTotalOrder = items => + items + .map(({ unit }) => unit) + .reduce((total, currentValue) => total + currentValue, 0); + +const getProductItemCalculatedData = (unit, price, totalPrice) => { + const productTotalPrice = unit * price; + const percentage = ((productTotalPrice * 100) / totalPrice).toFixed(0); + return { productTotalPrice, percentage }; +}; + +const BestSellingTableRow = ({ product, totalPrice, totalOrder }) => { + const { img, title, type, unit, price } = product; + const { productTotalPrice, percentage } = getProductItemCalculatedData( + unit, + price, + totalPrice + ); + + return ( + + + + {title} +
    +
    + + {title} + +
    +

    {type}

    +
    +
    + + {unit} + + {parseInt((totalOrder * unit) / 100)}% + + + ${productTotalPrice} + + + + +
    {percentage}%
    +
    + + + ); +}; + +const BestSellingProducts = ({ products }) => { + const totalPrice = getTotalPrice(products); + const totalOrder = getTotalOrder(products); + + return ( + + + + + + + + + + + + + + + {products.map(product => ( + + ))} + +
    Best Selling ProductsOrders({totalOrder})Order(%)Revenue + Revenue (%) +
    +
    +
    + + + + + + + + + + + + + + +
    + ); +}; + +export default BestSellingProducts; diff --git a/src/components/dashboards/e-commerce/EcomStat.jsx b/src/components/dashboards/e-commerce/EcomStat.jsx new file mode 100644 index 0000000..79f5f50 --- /dev/null +++ b/src/components/dashboards/e-commerce/EcomStat.jsx @@ -0,0 +1,49 @@ +import React from 'react'; +import { Card, Row, Col } from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import classNames from 'classnames'; + +const EcomStatItem = ({ stat }) => { + return ( + +
    {stat.title}
    +

    {stat.amount}

    +
    +
    {stat.subAmount}
    +
    + + {stat.percent}% +
    +
    + + ); +}; + +const EcomStat = ({ data }) => { + return ( + + + + {data.map((stat, index) => ( + + ))} + + + + ); +}; + +export default EcomStat; diff --git a/src/components/dashboards/e-commerce/ProductShare/ProductShare.jsx b/src/components/dashboards/e-commerce/ProductShare/ProductShare.jsx new file mode 100644 index 0000000..34d46ae --- /dev/null +++ b/src/components/dashboards/e-commerce/ProductShare/ProductShare.jsx @@ -0,0 +1,36 @@ +import React from 'react'; +import { Card } from 'react-bootstrap'; +import SubtleBadge from 'components/common/SubtleBadge'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import Flex from 'components/common/Flex'; +import ProductShareChart from './ProductShareChart'; + +const ProductShare = () => { + return ( + + +
    Product Share
    +
    + + +
    +

    34.6%

    + + + 3.5% + +
    +
    +
    + +
    +

    + Target: 55% +

    +
    +
    +
    + ); +}; + +export default ProductShare; diff --git a/src/components/dashboards/e-commerce/ProductShare/ProductShareChart.jsx b/src/components/dashboards/e-commerce/ProductShare/ProductShareChart.jsx new file mode 100644 index 0000000..55fc99e --- /dev/null +++ b/src/components/dashboards/e-commerce/ProductShare/ProductShareChart.jsx @@ -0,0 +1,35 @@ +import React from 'react'; +import { chartJsDefaultTooltip } from 'helpers/chartjs-utils'; +import { Doughnut } from 'react-chartjs-2'; +import { useAppContext } from 'providers/AppProvider'; + +const ProductShareChart = () => { + const { getThemeColor } = useAppContext(); + + const options = { + tooltip: chartJsDefaultTooltip(getThemeColor), + rotation: -90, + circumference: '180', + cutout: '80%', + plugins: { + legend: { + display: false + }, + tooltip: chartJsDefaultTooltip(getThemeColor) + } + }; + + const data = { + labels: ['Falcon', 'Sparrow'], + datasets: [ + { + data: [50, 88], + backgroundColor: [getThemeColor('primary'), getThemeColor('gray-300')], + borderColor: [getThemeColor('primary'), getThemeColor('gray-300')] + } + ] + }; + return ; +}; + +export default ProductShareChart; diff --git a/src/components/dashboards/e-commerce/ReturningCustomer/ReturningCustomer.jsx b/src/components/dashboards/e-commerce/ReturningCustomer/ReturningCustomer.jsx new file mode 100644 index 0000000..764c174 --- /dev/null +++ b/src/components/dashboards/e-commerce/ReturningCustomer/ReturningCustomer.jsx @@ -0,0 +1,109 @@ +import React, { useState, useRef } from 'react'; +import { Button, Card, Col, Form, Row } from 'react-bootstrap'; +import FalconLink from 'components/common/FalconLink'; +import { monthsShort } from 'data/common'; +import Flex from 'components/common/Flex'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import ReturningCustomerChart from './ReturningCustomerChart'; +import { returningCustomerData } from 'data/dashboard/ecom'; +import classNames from 'classnames'; + +const ReturningCustomer = () => { + const [month, setMonth] = useState(0); + const [isNew, setIsNew] = useState(true); + const [isReturning, setIsReturning] = useState(true); + const chartRef = useRef(null); + + const handleLegend = seriesName => { + seriesName === 'New' && setIsNew(!isNew); + seriesName === 'Returning' && setIsReturning(!isReturning); + chartRef.current.getEchartsInstance().dispatchAction({ + type: 'legendToggleSelect', + name: seriesName + }); + }; + + return ( + + + + +
    Returning Customer Rate
    + +

    59.09%

    + + 3.5% + +
    + + + setMonth(parseInt(e.target.value))} + className="pe-4" + > + {monthsShort.map((month, index) => ( + + ))} + + +
    +
    + + + + + + + + + + + + + + + + + +
    + ); +}; + +export default ReturningCustomer; diff --git a/src/components/dashboards/e-commerce/ReturningCustomer/ReturningCustomerChart.jsx b/src/components/dashboards/e-commerce/ReturningCustomer/ReturningCustomerChart.jsx new file mode 100644 index 0000000..8298779 --- /dev/null +++ b/src/components/dashboards/e-commerce/ReturningCustomer/ReturningCustomerChart.jsx @@ -0,0 +1,201 @@ +import React from 'react'; +import dayjs from 'dayjs'; +import { LineChart } from 'echarts/charts'; +import { + GridComponent, + LegendComponent, + TitleComponent, + TooltipComponent +} from 'echarts/components'; +import * as echarts from 'echarts/core'; +import { CanvasRenderer } from 'echarts/renderers'; +import { tooltipFormatter } from 'helpers/echart-utils'; +import { getDates, rgbaColor } from 'helpers/utils'; +import { useAppContext } from 'providers/AppProvider'; +import ReactEchart from 'components/common/ReactEchart'; + +echarts.use([ + TitleComponent, + TooltipComponent, + GridComponent, + LineChart, + CanvasRenderer, + LegendComponent +]); + +const dates = month => { + return getDates( + dayjs().month(month).date(1), + dayjs() + .month(Number(month) + 1) + .date(0), + 1000 * 60 * 60 * 24 * 3 + ); +}; + +const getOptions = (getThemeColor, newData, returningData, month) => ({ + title: { + text: 'Customers', + left: 'left', + top: 'top', + textStyle: { + fontWeight: 500, + fontSize: 13, + fontFamily: 'poppins', + color: getThemeColor('gray-900') + } + }, + legend: { + show: false, + data: ['New', 'Returning'] + }, + + tooltip: { + trigger: 'axis', + padding: [7, 10], + backgroundColor: getThemeColor('gray-100'), + borderColor: getThemeColor('gray-100'), + color: getThemeColor('gray-1100'), + borderWidth: 1, + formatter: tooltipFormatter + }, + xAxis: { + type: 'category', + data: dates(month), + boundaryGap: false, + axisPointer: { + lineStyle: { + color: getThemeColor('gray-300') + } + }, + axisLine: { + lineStyle: { + color: getThemeColor('gray-300'), + type: 'solid' + } + }, + axisTick: { show: false }, + axisLabel: { + color: getThemeColor('gray-400'), + formatter(value, index) { + if (index === 0) { + return `${dayjs(value).format('MMM DD')}`; + } + return `${dayjs(value).format('DD')}`; + }, + margin: 15 + }, + splitLine: { + show: true, + lineStyle: { + color: getThemeColor('gray-300'), + type: 'dashed' + } + } + }, + yAxis: { + type: 'value', + splitLine: { + lineStyle: { + color: getThemeColor('gray-300') + } + }, + axisLabel: { + color: getThemeColor('gray-400'), + margin: 15 + } + }, + series: [ + { + name: 'New', + type: 'line', + data: newData, + lineStyle: { color: getThemeColor('primary') }, + itemStyle: { + borderColor: getThemeColor('primary'), + borderWidth: 2 + }, + areaStyle: { + color: { + type: 'linear', + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [ + { + offset: 0, + color: rgbaColor(getThemeColor('primary'), 0.2) + }, + { + offset: 1, + color: rgbaColor(getThemeColor('primary'), 0.01) + } + ] + } + }, + symbol: 'none', + emphasis: { + scale: true + } + }, + { + name: 'Returning', + type: 'line', + data: returningData, + lineStyle: { color: getThemeColor('warning') }, + itemStyle: { + borderColor: getThemeColor('warning'), + borderWidth: 2 + }, + areaStyle: { + color: { + type: 'linear', + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [ + { + offset: 0, + color: rgbaColor(getThemeColor('warning'), 0.2) + }, + { + offset: 1, + color: rgbaColor(getThemeColor('warning'), 0.01) + } + ] + } + }, + symbol: 'none', + emphasis: { + scale: true + } + } + ], + + grid: { + right: -2, + left: -3, + bottom: 5, + top: 43, + outerBoundsMode: 'same', + outerBoundsContain: 'axisLabel' + } +}); + +const ReturningCustomerChart = ({ newData, returningData, month, ref }) => { + const { getThemeColor } = useAppContext(); + return ( + <> + + + ); +}; + +export default ReturningCustomerChart; diff --git a/src/components/dashboards/e-commerce/SalesPosLocation/SalesPosLocation.jsx b/src/components/dashboards/e-commerce/SalesPosLocation/SalesPosLocation.jsx new file mode 100644 index 0000000..3a9c2c0 --- /dev/null +++ b/src/components/dashboards/e-commerce/SalesPosLocation/SalesPosLocation.jsx @@ -0,0 +1,26 @@ +import React from 'react'; +import { Card } from 'react-bootstrap'; +import FalconCardHeader from 'components/common/FalconCardHeader'; +import FalconLink from 'components/common/FalconLink'; +import SalesPosLocationTable from './SalesPosLocationTable'; +import SalesPosLocationChart from './SalesPosLocationChart'; + +const SalesPosLocation = ({ ...rest }) => { + return ( + + } + /> + + + + + + ); +}; + +export default SalesPosLocation; diff --git a/src/components/dashboards/e-commerce/SalesPosLocation/SalesPosLocationChart.jsx b/src/components/dashboards/e-commerce/SalesPosLocation/SalesPosLocationChart.jsx new file mode 100644 index 0000000..1fd192f --- /dev/null +++ b/src/components/dashboards/e-commerce/SalesPosLocation/SalesPosLocationChart.jsx @@ -0,0 +1,146 @@ +import React from 'react'; +import { RadarChart } from 'echarts/charts'; +import { + GridComponent, + LegendComponent, + TitleComponent, + TooltipComponent +} from 'echarts/components'; +import * as echarts from 'echarts/core'; +import { CanvasRenderer } from 'echarts/renderers'; +import { rgbaColor } from 'helpers/utils'; +import { useAppContext } from 'providers/AppProvider'; +import ReactEchart from 'components/common/ReactEchart'; + +echarts.use([ + TitleComponent, + TooltipComponent, + GridComponent, + RadarChart, + CanvasRenderer, + LegendComponent +]); + +const tooltipFormatter = params => { + return ` ${params.name} +
    + Marketing: ${params.value[0]}
    + Sales: ${params.value[1]}
    + Dev: ${params.value[2]}
    + Support: ${params.value[3]}
    + Tech: ${params.value[4]}
    + Admin: ${params.value[5]}
    +
    `; +}; + +const getOptions = getThemeColor => ({ + tooltip: { + trigger: 'item', + padding: [7, 10], + backgroundColor: getThemeColor('gray-100'), + borderColor: getThemeColor('gray-300'), + textStyle: { color: getThemeColor('gray-1100') }, + borderWidth: 1, + transitionDuration: 0, + formatter: tooltipFormatter + }, + radar: { + splitNumber: 7, + radius: '75%', + axisLine: { + show: true, + symbol: 'circle', + symbolSize: [13, 13], + lineStyle: { + color: { + type: 'radial', + x: 0.5, + y: 0.5, + r: 0.5, + colorStops: [ + { + offset: 0.7, + color: getThemeColor('gray-100') + }, + { + offset: 1, + color: getThemeColor('gray-400') + } + ] + } + } + }, + splitArea: { + show: false + }, + splitLine: { + lineStyle: { + color: getThemeColor('gray-300') + } + }, + axisName: { + color: getThemeColor('gray-600'), + fontWeight: 500 + }, + indicator: [ + { name: 'Marketing', max: 70 }, + { name: 'Admin', max: 70 }, + { name: 'Tech', max: 70 }, + { name: 'Support', max: 70 }, + { name: 'Dev', max: 70 }, + { name: 'Sales', max: 70 } + ] + }, + series: [ + { + name: 'Budget vs spending', + type: 'radar', + symbol: 'pin', + data: [ + { + value: [20, 50, 60, 50, 60, 60], + name: 'Budget', + itemStyle: { + color: rgbaColor(getThemeColor('warning'), 0.5) + }, + areaStyle: { + color: rgbaColor(getThemeColor('warning'), 0.24) + }, + symbol: 'circle', + symbolSize: 8 + }, + { + value: [40, 60, 30, 15, 60, 35], + name: 'Spending', + areaStyle: { + color: rgbaColor(getThemeColor('primary'), 0.24) + }, + symbol: 'circle', + symbolSize: 8, + itemStyle: { + color: getThemeColor('primary') + } + } + ] + } + ], + grid: { + top: 0, + bottom: '100px' + } +}); + +const SalesPosLocationChart = () => { + const { getThemeColor } = useAppContext(); + return ( + <> + + + ); +}; + +export default SalesPosLocationChart; diff --git a/src/components/dashboards/e-commerce/SalesPosLocation/SalesPosLocationTable.jsx b/src/components/dashboards/e-commerce/SalesPosLocation/SalesPosLocationTable.jsx new file mode 100644 index 0000000..993d30b --- /dev/null +++ b/src/components/dashboards/e-commerce/SalesPosLocation/SalesPosLocationTable.jsx @@ -0,0 +1,48 @@ +import React from 'react'; +import { Table } from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; + +const SalesPosLocationTable = () => { + return ( + + + + + + + + + + + + + +
    + + Allocated Budget + $13,325.98 + + 10% +
    + + Actual Spending + $12,348.46 + + 13% +
    + ); +}; + +export default SalesPosLocationTable; diff --git a/src/components/dashboards/e-commerce/ShoppingCart.jsx b/src/components/dashboards/e-commerce/ShoppingCart.jsx new file mode 100644 index 0000000..7252076 --- /dev/null +++ b/src/components/dashboards/e-commerce/ShoppingCart.jsx @@ -0,0 +1,64 @@ +import React from 'react'; +import CardDropdown from 'components/common/CardDropdown'; +import FalconCardHeader from 'components/common/FalconCardHeader'; +import { shoppingCartItems } from 'data/dashboard/ecom'; +import createMarkup from 'helpers/createMarkup'; +import { Card, Col, ProgressBar, Row } from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import classNames from 'classnames'; + +const ShoppingCartItem = ({ item, index }) => { + const { id, title, amount, barWidth, items, variant, icon, iconColor } = item; + return ( + + +
    {title}
    + + + + + + +

    + + {amount}% +

    +

    + + + ); +}; + +const ShoppingCart = () => { + return ( + + } + /> + +

    + {shoppingCartItems.map((item, index) => ( + + ))} +
    + + + ); +}; + +export default ShoppingCart; diff --git a/src/components/dashboards/e-commerce/TotalOrder.jsx b/src/components/dashboards/e-commerce/TotalOrder.jsx new file mode 100644 index 0000000..ffffaf5 --- /dev/null +++ b/src/components/dashboards/e-commerce/TotalOrder.jsx @@ -0,0 +1,102 @@ +import React from 'react'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { Badge, Card } from 'react-bootstrap'; +import Flex from 'components/common/Flex'; +import { rgbaColor } from 'helpers/utils'; +import * as echarts from 'echarts/core'; +import { LineChart } from 'echarts/charts'; +import { + GridComponent, + TooltipComponent, + TitleComponent +} from 'echarts/components'; +import { CanvasRenderer } from 'echarts/renderers'; +import BasicECharts from 'components/common/BasicEChart'; +import { useAppContext } from 'providers/AppProvider'; + +echarts.use([ + TitleComponent, + TooltipComponent, + GridComponent, + LineChart, + CanvasRenderer +]); + +const getOptions = (getThemeColor, data) => ({ + tooltip: { + trigger: 'axis' + }, + series: [ + { + type: 'line', + data, + areaStyle: { + color: { + type: 'linear', + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [ + { + offset: 0, + color: rgbaColor(getThemeColor('primary'), 0.25) + }, + { + offset: 1, + color: rgbaColor(getThemeColor('primary'), 0) + } + ] + } + } + } + ], + xAxis: { + type: 'category', + data: [ + 'June 01', + 'June 02', + 'June 03', + 'June 04', + 'June 05', + 'June 06', + 'June 07' + ] + }, + grid: { bottom: '-10px', outerBoundsMode: 'none' } +}); + +const TotalOrder = ({ data }) => { + const { getThemeColor } = useAppContext(); + return ( + + +
    Total Order
    +
    + + +
    +

    58.4K

    + + + 13.6% + +
    +
    + +
    +
    +
    + ); +}; + +export default TotalOrder; diff --git a/src/components/dashboards/e-commerce/greetings/GreetingCard.jsx b/src/components/dashboards/e-commerce/greetings/GreetingCard.jsx new file mode 100644 index 0000000..e504624 --- /dev/null +++ b/src/components/dashboards/e-commerce/greetings/GreetingCard.jsx @@ -0,0 +1,55 @@ +import ecomBg from 'assets/img/illustrations/ecommerce-bg.png'; +import Background from 'components/common/Background'; +import Flex from 'components/common/Flex'; +import React from 'react'; +import { Card, ListGroup } from 'react-bootstrap'; +import Notification from './Notification'; + +const GreetingCard = ({ notifications }) => { + return ( + + + +
    +
    +

    Good Afternoon, Jonathan!

    +

    + Here’s what happening with your store today +

    +
    + +
    +

    Today's visit

    +

    14,209

    +
    +
    +

    Today’s total sales

    +

    $21,349.29

    +
    +
    +
    +
    + + + {notifications.map((notification, index) => ( + + ))} + + +
    + ); +}; + +export default GreetingCard; diff --git a/src/components/dashboards/e-commerce/greetings/Notification.jsx b/src/components/dashboards/e-commerce/greetings/Notification.jsx new file mode 100644 index 0000000..ee1ea33 --- /dev/null +++ b/src/components/dashboards/e-commerce/greetings/Notification.jsx @@ -0,0 +1,49 @@ +import React from 'react'; +import classNames from 'classnames'; +import { Col, ListGroup, Row } from 'react-bootstrap'; +import Flex from 'components/common/Flex'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import createMarkup from 'helpers/createMarkup'; +import { Link } from 'react-router'; + +const Notification = ({ notification: { title, linkFor, type }, isLast }) => { + return ( + + + + + +

    +
    + + + + {`View ${linkFor}`} + + + +
    +
    + ); +}; + +export default Notification; diff --git a/src/components/dashboards/e-commerce/index.jsx b/src/components/dashboards/e-commerce/index.jsx new file mode 100644 index 0000000..b3e658c --- /dev/null +++ b/src/components/dashboards/e-commerce/index.jsx @@ -0,0 +1,90 @@ +import React from 'react'; +import { Col, Row } from 'react-bootstrap'; +import EcomStat from './EcomStat'; +import GreetingCard from './greetings/GreetingCard'; +import TotalSales from './totalsales/TotalSales'; +import { totalSale } from 'data/dashboard/ecom'; +import TopProducts from '../default/TopProducts'; +import { topProducts } from 'data/dashboard/ecom'; +import { + notifications, + products, + saleItems, + totalOrder +} from 'data/dashboard/ecom'; +import { weeklySalesData } from 'data/dashboard/default'; +import { marketShare } from 'data/dashboard/ecom'; +import WeeklySales from 'components/dashboards/default/WeeklySales'; +import MarketShare from 'components/dashboards/default/MarketShare'; +import TotalOrder from 'components/dashboards/e-commerce/TotalOrder'; +import ShoppingCart from './ShoppingCart'; +import ReturningCustomer from './ReturningCustomer/ReturningCustomer'; +import SalesPosLocation from './SalesPosLocation/SalesPosLocation'; +import ProductShare from './ProductShare/ProductShare'; +import BestSellingProducts from './BestSellingProducts'; +import RecentPurchases from 'components/dashboards/e-commerce/recent-purchases/RecentPurchases'; + +const Ecommerce = () => { + return ( + <> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +}; + +export default Ecommerce; diff --git a/src/components/dashboards/e-commerce/recent-purchases/RecentPurchases.jsx b/src/components/dashboards/e-commerce/recent-purchases/RecentPurchases.jsx new file mode 100644 index 0000000..3bfe4d8 --- /dev/null +++ b/src/components/dashboards/e-commerce/recent-purchases/RecentPurchases.jsx @@ -0,0 +1,142 @@ +import React, { useState } from 'react'; +import { Card, Dropdown } from 'react-bootstrap'; +import CardDropdown from 'components/common/CardDropdown'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import SubtleBadge from 'components/common/SubtleBadge'; +import { Link } from 'react-router'; +import AdvanceTable from 'components/common/advance-table/AdvanceTable'; +import { recentPurchaseTableData } from 'data/dashboard/ecom'; +import RecentPurchasesHeader from './RecentPurchasesHeader'; +import AdvanceTableFooter from 'components/common/advance-table/AdvanceTableFooter'; +import paths from 'routes/paths'; +import useAdvanceTable from 'hooks/useAdvanceTable'; +import AdvanceTableProvider from 'providers/AdvanceTableProvider'; + +const columns = [ + { + accessorKey: 'customer', + header: 'Customer', + meta: { + headerProps: { className: 'pe-1 sticky-column text-900' }, + cellProps: { + className: 'fw-semibold' + } + }, + cell: ({ row: { original } }) => { + const { customer } = original; + return {customer}; + } + }, + { + accessorKey: 'email', + header: 'Email', + meta: { + headerProps: { className: 'pe-7 text-900' } + } + }, + { + accessorKey: 'product', + header: 'Product', + meta: { + headerProps: { className: 'text-900' } + } + }, + { + accessorKey: 'payment', + header: 'Payment', + meta: { + headerProps: { className: 'text-center text-900' }, + cellProps: { className: 'fs-9' } + }, + cell: ({ row: { original } }) => { + const { status } = original; + return ( + + {status.content} + + + ); + } + }, + { + accessorKey: 'amount', + header: 'Amount', + meta: { + headerProps: { + className: 'text-end text-900' + }, + cellProps: { + className: 'text-end' + } + } + }, + { + accessorKey: 'none', + header: '', + enableSorting: false, + meta: { + cellProps: { + className: 'text-end py-2' + } + }, + cell: () => { + return ( + +
    + View + Edit + Refund + + + Archive + + + Delete + +
    +
    + ); + } + } +]; + +const RecentPurchases = () => { + const [data] = useState(recentPurchaseTableData); + const table = useAdvanceTable({ + data, + columns, + selection: true, + sortable: true, + pagination: true, + perPage: 7 + }); + + return ( + + + + + + + + + + + + + + ); +}; + +export default RecentPurchases; diff --git a/src/components/dashboards/e-commerce/recent-purchases/RecentPurchasesHeader.jsx b/src/components/dashboards/e-commerce/recent-purchases/RecentPurchasesHeader.jsx new file mode 100644 index 0000000..2e81264 --- /dev/null +++ b/src/components/dashboards/e-commerce/recent-purchases/RecentPurchasesHeader.jsx @@ -0,0 +1,66 @@ +import React from 'react'; +import IconButton from 'components/common/IconButton'; +import { useAdvanceTableContext } from 'providers/AdvanceTableProvider'; +import { Col, Form, Row, Button } from 'react-bootstrap'; + +const RecentPurchasesHeader = () => { + const { getSelectedRowModel } = useAdvanceTableContext(); + + return ( + + +
    Recent Purchases
    + + + {getSelectedRowModel().rows.length > 0 ? ( +
    + + + + + + + +
    + ) : ( +
    + + New + + + Filter + + + Export + +
    + )} + +
    + ); +}; + +export default RecentPurchasesHeader; diff --git a/src/components/dashboards/e-commerce/totalsales/TotalSales.jsx b/src/components/dashboards/e-commerce/totalsales/TotalSales.jsx new file mode 100644 index 0000000..ce9801c --- /dev/null +++ b/src/components/dashboards/e-commerce/totalsales/TotalSales.jsx @@ -0,0 +1,76 @@ +import React, { useRef } from 'react'; +import { Card, Col, Form, Row } from 'react-bootstrap'; +import CardDropdown from 'components/common/CardDropdown'; +import TotalSalesChart from './TotalSalesChart'; +import Flex from 'components/common/Flex'; + +const TotalSales = ({ data }) => { + const chartRef = useRef(null); + + const handleLegendToggle = name => { + chartRef.current.getEchartsInstance().dispatchAction({ + type: 'legendToggleSelect', + name + }); + }; + + return ( + + + + +
    Total Sales
    + + + + + handleLegendToggle('lastMonth')} + defaultChecked + /> + + Last Month: + $32,502.00 + + + + handleLegendToggle('previousYear')} + defaultChecked + /> + + Prev Year: + $46,018.00 + + + + + + + +
    +
    + + + +
    + ); +}; + +export default TotalSales; diff --git a/src/components/dashboards/e-commerce/totalsales/TotalSalesChart.jsx b/src/components/dashboards/e-commerce/totalsales/TotalSalesChart.jsx new file mode 100644 index 0000000..769890e --- /dev/null +++ b/src/components/dashboards/e-commerce/totalsales/TotalSalesChart.jsx @@ -0,0 +1,158 @@ +import React from 'react'; +import dayjs from 'dayjs'; +import { LineChart } from 'echarts/charts'; +import { + GridComponent, + LegendComponent, + TitleComponent, + TooltipComponent +} from 'echarts/components'; +import * as echarts from 'echarts/core'; +import { getPastDates, rgbaColor } from 'helpers/utils'; +import { useAppContext } from 'providers/AppProvider'; +import ReactEchart from 'components/common/ReactEchart'; + +echarts.use([ + TitleComponent, + TooltipComponent, + GridComponent, + LineChart, + LegendComponent +]); + +const tooltipFormatter = params => { + return params + .map( + ({ value, borderColor }, index) => + `
    + ${index === 0 ? 'Last Month' : 'Previous Year' + }: ${value}` + ) + .join('
    '); +}; + +const getOptions = (getThemeColor, data) => ({ + color: getThemeColor('gray-100'), + tooltip: { + trigger: 'axis', + padding: [7, 10], + backgroundColor: getThemeColor('gray-100'), + borderColor: getThemeColor('gray-100'), + textStyle: { color: getThemeColor('gray-1100') }, + borderWidth: 1, + formatter: tooltipFormatter, + transitionDuration: 0 + }, + legend: { + data: ['lastMonth', 'previousYear'], + show: false + }, + xAxis: { + type: 'category', + data: getPastDates(12), + boundaryGap: 0, + axisPointer: { + lineStyle: { + color: getThemeColor('gray-300'), + type: 'dashed' + } + }, + splitLine: { show: false }, + axisLine: { + lineStyle: { + color: rgbaColor('#000', 0.01), + type: 'dashed' + } + }, + axisTick: { show: false }, + axisLabel: { + color: getThemeColor('gray-400'), + margin: 15, + formatter: value => dayjs(value).format('MMM DD') + } + }, + yAxis: { + type: 'value', + axisPointer: { show: false }, + splitLine: { + lineStyle: { + color: getThemeColor('gray-300'), + type: 'dashed' + } + }, + boundaryGap: 0, + axisLabel: { + show: true, + color: getThemeColor('gray-400'), + margin: 15 + }, + axisTick: { show: false }, + axisLine: { show: false } + }, + series: [ + { + name: 'lastMonth', + type: 'line', + data: data.lastMonth, + lineStyle: { color: getThemeColor('primary') }, + itemStyle: { + borderColor: getThemeColor('primary'), + borderWidth: 2, + backgroundColor: 'transparent' + }, + symbol: 'circle', + symbolSize: 10, + emphasis: { + scale: true + }, + areaStyle: { + color: { + type: 'linear', + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [ + { + offset: 0, + color: rgbaColor(getThemeColor('primary'), 0.2) + }, + { + offset: 1, + color: rgbaColor(getThemeColor('primary'), 0) + } + ] + } + } + }, + { + name: 'previousYear', + type: 'line', + data: data.previousYear, + lineStyle: { color: rgbaColor(getThemeColor('warning'), 0.3) }, + itemStyle: { + borderColor: rgbaColor(getThemeColor('warning'), 0.6), + borderWidth: 2 + }, + symbol: 'circle', + symbolSize: 10, + emphasis: { + scale: true + } + } + ], + grid: { right: '18px', left: '40px', bottom: '15%', top: '5%', outerBoundsMode: 'none' } +}); + +const TotalSalesChart = ({ data, ref }) => { + const { getThemeColor } = useAppContext(); + return ( + + ); +}; + +export default TotalSalesChart; diff --git a/src/components/dashboards/lms/average-enrollment/AverageEnrollment.jsx b/src/components/dashboards/lms/average-enrollment/AverageEnrollment.jsx new file mode 100644 index 0000000..aad7d54 --- /dev/null +++ b/src/components/dashboards/lms/average-enrollment/AverageEnrollment.jsx @@ -0,0 +1,74 @@ +import React, { useRef } from 'react'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { Button, Card, Col, Row } from 'react-bootstrap'; +import CardDropdown from 'components/common/CardDropdown'; +import Flex from 'components/common/Flex'; +import AverageEnrollmentChart from './AverageEnrollmentChart'; + +const AverageEnrollment = ({ data }) => { + const chartRef = useRef(null); + + const handleLegendToggle = (event, name) => { + chartRef.current.getEchartsInstance().dispatchAction({ + type: 'legendToggleSelect', + name + }); + event.target.closest('button').classList.toggle('opacity-50'); + }; + + return ( + + + + +
    Avarage Enrollment Rate
    + + + + + + + + + + +
    +
    + + + +
    + ); +}; + +export default AverageEnrollment; diff --git a/src/components/dashboards/lms/average-enrollment/AverageEnrollmentChart.jsx b/src/components/dashboards/lms/average-enrollment/AverageEnrollmentChart.jsx new file mode 100644 index 0000000..194665b --- /dev/null +++ b/src/components/dashboards/lms/average-enrollment/AverageEnrollmentChart.jsx @@ -0,0 +1,235 @@ +import React from 'react'; +import { LineChart } from 'echarts/charts'; +import { + GridComponent, + LegendComponent, + TitleComponent, + TooltipComponent +} from 'echarts/components'; +import * as echarts from 'echarts/core'; +import { rgbaColor } from 'helpers/utils'; +import { useAppContext } from 'providers/AppProvider'; +import ReactEchart from 'components/common/ReactEchart'; + +echarts.use([ + TitleComponent, + TooltipComponent, + GridComponent, + LineChart, + LegendComponent +]); + +const tooltipFormatter = params => { + return params + .map( + ({ value, seriesName, borderColor }) => + `
    + ${seriesName}: ${value}` + ) + .join('
    '); +}; + +const getOptions = (getThemeColor, data) => ({ + color: getThemeColor('gray-100'), + tooltip: { + trigger: 'axis', + padding: [7, 10], + backgroundColor: getThemeColor('gray-100'), + borderColor: getThemeColor('gray-100'), + textStyle: { color: getThemeColor('gray-1100') }, + borderWidth: 1, + formatter: tooltipFormatter, + transitionDuration: 0 + }, + legend: { + data: ['onSaleCourse', 'regularPaidCourse'], + show: false + }, + xAxis: [ + { + type: 'category', + position: 'bottom', + data: [ + 'launch', + 'week 1', + 'week 2', + 'week 3', + 'week 4', + 'week 5', + 'week 6', + 'week 7', + 'week 8', + 'week 9', + 'week 10', + 'week 11', + 'week 12' + ], + boundaryGap: 0, + axisPointer: { + lineStyle: { + color: getThemeColor('gray-200'), + type: 'line' + } + }, + splitLine: { show: false }, + axisLine: { + lineStyle: { + color: getThemeColor('gray-200'), + type: 'line' + } + }, + + axisTick: { show: false }, + axisLabel: { + color: getThemeColor('gray-500'), + formatter(value) { + return value; + }, + interval: 3, + margin: 15, + showMinLabel: true, + showMaxLabel: false, + align: 'center' + } + }, + { + type: 'category', + position: 'bottom', + data: [ + 'launch', + 'week 1', + 'week 2', + 'week 3', + 'week 4', + 'week 5', + 'week 6', + 'week 7', + 'week 8', + 'week 9', + 'week 10', + 'week 11', + 'week 12' + ], + boundaryGap: 0, + axisPointer: { + lineStyle: { + color: getThemeColor('gray-200'), + type: 'line' + } + }, + splitLine: { show: false }, + axisLine: { + lineStyle: { + color: getThemeColor('gray-200'), + type: 'line' + } + }, + + axisTick: { show: false }, + axisLabel: { + color: getThemeColor('gray-500'), + formatter(value) { + return value; + }, + interval: 200, + margin: 15, + showMaxLabel: true, + showMinLabel: false, + align: 'right' + } + } + ], + yAxis: { + type: 'value', + splitNumber: 3, + axisPointer: { show: false }, + splitLine: { + lineStyle: { + color: getThemeColor('gray-200'), + type: 'line' + } + }, + boundaryGap: 0, + axisLabel: { + showMinLabel: false, + show: true, + color: getThemeColor('gray-400'), + margin: 15, + formatter: value => `${Math.round((value / 1000) * 10) / 10}k` + }, + axisTick: { show: false }, + axisLine: { show: false } + }, + series: [ + { + name: 'On Sale Course', + type: 'line', + data: data.onSaleCourse, + lineStyle: { color: getThemeColor('primary') }, + itemStyle: { + borderColor: getThemeColor('primary'), + borderWidth: 2 + }, + symbol: 'circle', + symbolSize: 10, + emphasis: { + scale: true + } + }, + { + name: 'Regular Paid Course', + type: 'line', + data: data.regularPaidCourse, + lineStyle: { color: getThemeColor('warning'), type: 'dashed' }, + itemStyle: { + borderColor: getThemeColor('warning'), + borderWidth: 2 + }, + symbol: 'circle', + symbolSize: 10, + emphasis: { + scale: true + }, + areaStyle: { + color: { + type: 'linear', + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [ + { + offset: 0, + color: rgbaColor(getThemeColor('warning'), 0.2) + }, + { + offset: 1, + color: rgbaColor(getThemeColor('warning'), 0) + } + ] + } + } + } + ], + grid: { + right: 7, + left: -1, + bottom: '6%', + top: 9, + outerBoundsMode: 'same', + outerBoundsContain: 'axisLabel' + } +}); + +const AverageEnrollmentChart = ({ data, ref }) => { + const { getThemeColor } = useAppContext(); + return ( + + ); +}; + +export default AverageEnrollmentChart; diff --git a/src/components/dashboards/lms/course-enrollments/CourseEnrollments.jsx b/src/components/dashboards/lms/course-enrollments/CourseEnrollments.jsx new file mode 100644 index 0000000..55ec769 --- /dev/null +++ b/src/components/dashboards/lms/course-enrollments/CourseEnrollments.jsx @@ -0,0 +1,170 @@ +import React from 'react'; +import { BarChart } from 'echarts/charts'; +import { + DatasetComponent, + GridComponent, + LegendComponent, + TitleComponent, + TooltipComponent +} from 'echarts/components'; +import * as echarts from 'echarts/core'; +import { CanvasRenderer } from 'echarts/renderers'; +import { Card, Form } from 'react-bootstrap'; +import FalconCardHeader from 'components/common/FalconCardHeader'; +import { rgbaColor } from 'helpers/utils'; +import { useAppContext } from 'providers/AppProvider'; +import ReactEchart from 'components/common/ReactEchart'; + +echarts.use([ + TitleComponent, + TooltipComponent, + GridComponent, + BarChart, + CanvasRenderer, + LegendComponent, + DatasetComponent +]); + +const getOption = (getThemeColor, data) => ({ + color: [ + rgbaColor(getThemeColor('info'), 0.6), + getThemeColor('primary'), + rgbaColor(getThemeColor('warning'), 0.4) + ], + dataset: { source: data }, + tooltip: { + trigger: 'item', + padding: [7, 10], + backgroundColor: getThemeColor('gray-100'), + borderColor: getThemeColor('gray-300'), + textStyle: { color: getThemeColor('gray-1100') }, + borderWidth: 1, + transitionDuration: 0, + formatter: function (params) { + return `
    ${params.seriesName + }
    ${params.name}: ${params.value[params.componentIndex + 1] + }
    `; + } + }, + legend: { + data: ['Free Course', 'Paid Course', 'On sale Course'], + left: 'left', + top: 'top', + itemWidth: 10, + itemHeight: 10, + itemGap: 10, + borderRadius: 0, + icon: 'circle', + inactiveColor: getThemeColor('gray-400'), + textStyle: { color: getThemeColor('gray-700') } + }, + xAxis: { + type: 'category', + axisLabel: { color: getThemeColor('gray-400') }, + axisLine: { + lineStyle: { + color: getThemeColor('gray-300'), + type: 'line' + } + }, + splitLine: { + show: true, + lineStyle: { + color: getThemeColor('gray-200'), + type: 'line', + width: 0.5 + } + }, + axisTick: { show: false }, + boundaryGap: true + }, + yAxis: { + axisPointer: { type: 'none' }, + axisTick: 'none', + splitLine: { + lineStyle: { + color: getThemeColor('gray-200'), + type: 'dashed' + } + }, + axisLine: { + show: false + }, + axisLabel: { + color: getThemeColor('gray-400'), + formatter: value => `${Math.round((value / 1000) * 10) / 10}k` + } + }, + series: [ + { + type: 'bar', + barWidth: '15%', + barGap: '30%', + label: { show: false }, + z: 10, + emphasis: { + focus: 'series' + }, + itemStyle: { + borderRadius: [2, 2, 0, 0] + } + }, + { + type: 'bar', + barWidth: '15%', + barGap: '30%', + label: { show: false }, + z: 10, + emphasis: { + focus: 'series' + }, + itemStyle: { + borderRadius: [2, 2, 0, 0] + } + }, + { + type: 'bar', + barWidth: '15%', + barGap: '30%', + label: { show: false }, + z: 10, + emphasis: { + focus: 'series' + }, + itemStyle: { + borderRadius: [2, 2, 0, 0] + } + } + ], + grid: { right: '0', left: '30px', bottom: '10%', top: '20%' } +}); + +const CourseEnrollments = ({ data }) => { + const { getThemeColor } = useAppContext(); + return ( + + + + + + + } + /> + + + + + ); +}; + +export default CourseEnrollments; diff --git a/src/components/dashboards/lms/index.jsx b/src/components/dashboards/lms/index.jsx new file mode 100644 index 0000000..2720834 --- /dev/null +++ b/src/components/dashboards/lms/index.jsx @@ -0,0 +1,66 @@ +import React from 'react'; +import { Col, Row } from 'react-bootstrap'; +import { + lmsStatistics, + avgEnrollments, + topCourses, + courseEnrollments, + marketingExpensesData +} from 'data/dashboard/lms'; +import { countryData } from 'data/countryData'; + +import LmsStats from './lms-stats/LmsStats'; +import TrendingKeywords from './trending-keywords/TrendingKeywords'; +import AverageEnrollment from './average-enrollment/AverageEnrollment'; +import TopCourses from './top-courses/TopCourses'; +import UsersLocation from './users-location/UsersLocation'; +import MarketingExpenses from './marketing-expenses/MarketingExpenses'; +import CourseEnrollments from './course-enrollments/CourseEnrollments'; +import WeeklyGoals from './weekly-goals/WeeklyGoals'; +import LmsRevenue from './monthly-targets/LmsRevenue'; +import LmsVisitor from './monthly-targets/LmsVisitor'; + +const Lms = () => { + return ( + <> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +}; + +export default Lms; diff --git a/src/components/dashboards/lms/lms-stats/LmsStatItem.jsx b/src/components/dashboards/lms/lms-stats/LmsStatItem.jsx new file mode 100644 index 0000000..1658921 --- /dev/null +++ b/src/components/dashboards/lms/lms-stats/LmsStatItem.jsx @@ -0,0 +1,34 @@ +import React from 'react'; +import { Col } from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import CountUp from 'react-countup'; + +const LmsStatItem = ({ stat }) => { + return ( + +
    + +
    +

    + + {' ' + stat.title} +

    + +

    + {stat.amountLastMonth}{' '} + last month +

    + + ); +}; + +export default LmsStatItem; diff --git a/src/components/dashboards/lms/lms-stats/LmsStats.jsx b/src/components/dashboards/lms/lms-stats/LmsStats.jsx new file mode 100644 index 0000000..e69281c --- /dev/null +++ b/src/components/dashboards/lms/lms-stats/LmsStats.jsx @@ -0,0 +1,19 @@ +import React from 'react'; +import { Card, Row } from 'react-bootstrap'; +import LmsStatItem from './LmsStatItem'; + +const LmsStats = ({ data }) => { + return ( + + + + {data.map(stat => ( + + ))} + + + + ); +}; + +export default LmsStats; diff --git a/src/components/dashboards/lms/marketing-expenses/MarketingExpenses.jsx b/src/components/dashboards/lms/marketing-expenses/MarketingExpenses.jsx new file mode 100644 index 0000000..a2b3782 --- /dev/null +++ b/src/components/dashboards/lms/marketing-expenses/MarketingExpenses.jsx @@ -0,0 +1,41 @@ +import React from 'react'; +import { Card, Form } from 'react-bootstrap'; +import FalconLink from 'components/common/FalconLink'; +import FalconCardHeader from 'components/common/FalconCardHeader'; +import MarketingExpensesChart from './MarketingExpensesChart'; +import MarketingExpensesList from './MarketingExpensesList'; + +const MarketingExpenses = ({ listData }) => { + return ( + + + } + /> + + + + + + +
    + + + + + +
    +
    +
    + ); +}; + +export default MarketingExpenses; diff --git a/src/components/dashboards/lms/marketing-expenses/MarketingExpensesChart.jsx b/src/components/dashboards/lms/marketing-expenses/MarketingExpensesChart.jsx new file mode 100644 index 0000000..308bde7 --- /dev/null +++ b/src/components/dashboards/lms/marketing-expenses/MarketingExpensesChart.jsx @@ -0,0 +1,178 @@ +import React, { useRef } from 'react'; +import { PieChart } from 'echarts/charts'; +import { + GridComponent, + LegendComponent, + TitleComponent, + TooltipComponent +} from 'echarts/components'; +import * as echarts from 'echarts/core'; +import { CanvasRenderer } from 'echarts/renderers'; +import { rgbaColor } from 'helpers/utils'; +import { useAppContext } from 'providers/AppProvider'; +import ReactEchart from 'components/common/ReactEchart'; + +echarts.use([ + TitleComponent, + TooltipComponent, + GridComponent, + PieChart, + CanvasRenderer, + LegendComponent +]); + +const getOptions = getThemeColor => ({ + tooltip: { + trigger: 'item', + backgroundColor: getThemeColor('gray-100'), + textStyle: { color: getThemeColor('gray-1100') }, + formatter: '{b}
    {c} ({d}%)' + }, + legend: { show: false }, + series: [ + { + name: 'Marketing Expenses', + type: 'pie', + radius: ['45%', '60%'], + selectedMode: 'single', + itemStyle: { + borderWidth: 2, + borderColor: getThemeColor('gray-100') + }, + label: { + show: false + }, + labelLine: { show: false }, + data: [ + { + value: 91600, + name: 'Event Sponsorship', + itemStyle: { + color: rgbaColor(getThemeColor('primary'), 0.4) + } + }, + { + value: 183000, + name: 'Outrich Event', + itemStyle: { + color: rgbaColor(getThemeColor('primary'), 0.6) + } + }, + { + value: 138000, + name: 'Ad Campaign', + itemStyle: { + color: rgbaColor(getThemeColor('primary'), 0.8) + } + }, + { + value: 183000, + name: 'Social Media', + itemStyle: { + color: rgbaColor(getThemeColor('info'), 0.2) + } + }, + { + value: 45900, + name: 'Google Ads', + itemStyle: { + color: rgbaColor(getThemeColor('info'), 0.35) + } + }, + { + value: 138000, + name: 'Influencer Marketing', + itemStyle: { + color: rgbaColor(getThemeColor('info'), 0.5) + } + }, + { + value: 183000, + name: 'Email Marketing', + itemStyle: { + color: rgbaColor(getThemeColor('info'), 0.7) + } + }, + { + value: 91600, + name: 'Generate Backlinks', + itemStyle: { + color: rgbaColor(getThemeColor('info'), 0.8) + } + } + ] + }, + { + name: 'Marketing Expenses', + type: 'pie', + radius: ['70%', '75%'], + barWidth: 10, + itemStyle: { + borderWidth: 2, + borderColor: getThemeColor('gray-100') + }, + label: { + formatter: '{per|{d}%}', + rich: { + per: { + fontSize: 14, + fontWeight: 'bold', + lineHeight: 33 + } + } + }, + labelLine: { show: false }, + data: [ + { + value: 412600, + name: 'Offline Marketing', + itemStyle: { color: getThemeColor('primary') }, + label: { + rich: { + per: { + color: '#1C4F93' + } + } + } + }, + { + value: 641500, + name: 'Digital Marketing', + itemStyle: { + color: rgbaColor(getThemeColor('info'), 0.35) + }, + label: { + rich: { + per: { + color: '#1978A2' + } + } + } + } + ] + } + ] +}); + +const MarketingExpensesChart = () => { + const { getThemeColor } = useAppContext(); + const chartRef = useRef(null); + + return ( +
    + +
    +
    +

    $1.1M

    +
    +
    +
    + ); +}; + +export default MarketingExpensesChart; diff --git a/src/components/dashboards/lms/marketing-expenses/MarketingExpensesList.jsx b/src/components/dashboards/lms/marketing-expenses/MarketingExpensesList.jsx new file mode 100644 index 0000000..0f545e5 --- /dev/null +++ b/src/components/dashboards/lms/marketing-expenses/MarketingExpensesList.jsx @@ -0,0 +1,52 @@ +import React from 'react'; +import { Col, Row } from 'react-bootstrap'; + +const ItemList = ({ data }) => { + return ( +
      + {data.map((item, index) => ( +
    • + +

      + {item.field} + {item.value} +

      +
    • + ))} +
    + ); +}; + +const MarketingExpensesList = ({ data }) => { + return ( + + +
    +
    + +
    Digital Marketing
    +
    + +
    + + +
    +
    + +
    Offline Marketing
    +
    + +
    + +
    + ); +}; + +export default MarketingExpensesList; diff --git a/src/components/dashboards/lms/monthly-targets/HalfDoughnutChart.jsx b/src/components/dashboards/lms/monthly-targets/HalfDoughnutChart.jsx new file mode 100644 index 0000000..46ea93e --- /dev/null +++ b/src/components/dashboards/lms/monthly-targets/HalfDoughnutChart.jsx @@ -0,0 +1,39 @@ +import React from 'react'; +import { Doughnut } from 'react-chartjs-2'; +import { chartJsDefaultTooltip } from 'helpers/chartjs-utils'; +import { useAppContext } from 'providers/AppProvider'; + +const HalfDoughnutChart = ({ + color = 'primary', + target = 50, + reached = 50 +}) => { + const { getThemeColor } = useAppContext(); + + const options = { + rotation: -90, + circumference: '180', + cutout: '80%', + hover: { mode: null }, + plugins: { + legend: { + display: false + }, + tooltip: chartJsDefaultTooltip(getThemeColor) + } + }; + + const data = { + labels: ['Reached', 'Remaining'], + datasets: [ + { + data: [reached, target - reached], + backgroundColor: [getThemeColor(color), getThemeColor('gray-300')], + borderColor: [getThemeColor(color), getThemeColor('gray-300')] + } + ] + }; + return ; +}; + +export default HalfDoughnutChart; diff --git a/src/components/dashboards/lms/monthly-targets/LmsRevenue.jsx b/src/components/dashboards/lms/monthly-targets/LmsRevenue.jsx new file mode 100644 index 0000000..10ebdd1 --- /dev/null +++ b/src/components/dashboards/lms/monthly-targets/LmsRevenue.jsx @@ -0,0 +1,65 @@ +import React, { useState } from 'react'; +import { Card, Col, Row } from 'react-bootstrap'; +import HalfDoughnutChart from './HalfDoughnutChart'; +import CountUp from 'react-countup'; + +const LmsRevenue = () => { + const [stat] = useState({ + target: 1200000, + reached: 823000 + }); + return ( + + +
    Monthly Revenue Target
    +
    + + + + + + +
    Target:
    + + +
    $1.2M
    + +
    + + +
    Reached:
    + + +
    $823K
    + +
    + + +
    +
    + +
    + +
    + +
    +
    +
    + ); +}; + +export default LmsRevenue; diff --git a/src/components/dashboards/lms/monthly-targets/LmsVisitor.jsx b/src/components/dashboards/lms/monthly-targets/LmsVisitor.jsx new file mode 100644 index 0000000..d9ad92c --- /dev/null +++ b/src/components/dashboards/lms/monthly-targets/LmsVisitor.jsx @@ -0,0 +1,65 @@ +import React, { useState } from 'react'; +import { Card, Col, Row } from 'react-bootstrap'; +import HalfDoughnutChart from './HalfDoughnutChart'; +import CountUp from 'react-countup'; + +const LmsVisitor = () => { + const [stat] = useState({ + target: 7500000, + reached: 4800000 + }); + return ( + + +
    Monthly Visitor Target
    +
    + + + + + + +
    Target:
    + + +
    $7.5M
    + +
    + + +
    Reached:
    + + +
    $4.8M
    + +
    + + +
    +
    + +
    + +
    + +
    +
    +
    + ); +}; + +export default LmsVisitor; diff --git a/src/components/dashboards/lms/top-courses/TopCourses.jsx b/src/components/dashboards/lms/top-courses/TopCourses.jsx new file mode 100644 index 0000000..11f4a21 --- /dev/null +++ b/src/components/dashboards/lms/top-courses/TopCourses.jsx @@ -0,0 +1,116 @@ +import React from 'react'; +import { Card, Col, Row, Tab, Nav, Form } from 'react-bootstrap'; +import Flex from 'components/common/Flex'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import TopCoursesTable from './TopCoursesTable'; +import FalconLink from 'components/common/FalconLink'; +import SimpleBar from 'simplebar-react'; +import classNames from 'classnames'; + +const TabTitle = ({ title, isPaid, icon }) => ( + + + {isPaid && ( + + )} + + +
    +
    {title}
    +
    {isPaid ? 'Paid' : 'Free'}
    +
    +
    +); + +const TopCourses = ({ tableData, className }) => { + return ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +}; + +export default TopCourses; diff --git a/src/components/dashboards/lms/top-courses/TopCoursesTable.jsx b/src/components/dashboards/lms/top-courses/TopCoursesTable.jsx new file mode 100644 index 0000000..ac6f43d --- /dev/null +++ b/src/components/dashboards/lms/top-courses/TopCoursesTable.jsx @@ -0,0 +1,126 @@ +import React, { useState } from 'react'; +import { Dropdown } from 'react-bootstrap'; +import { Link } from 'react-router'; +import CardDropdown from 'components/common/CardDropdown'; +import AdvanceTable from 'components/common/advance-table/AdvanceTable'; +import paths from 'routes/paths'; +import useAdvanceTable from 'hooks/useAdvanceTable'; +import AdvanceTableProvider from 'providers/AdvanceTableProvider'; + +const columns = [ + { + accessorKey: 'title', + header: 'Course Title', + meta: { + headerProps: { className: 'pe-1 fw-medium text-900' } + }, + cell: ({ row: { original } }) => { + const { title } = original; + return {title}; + } + }, + { + accessorKey: 'trainer', + header: 'Trainer', + meta: { + headerProps: { + className: 'pe-7 fw-medium text-900' + } + }, + cell: ({ row: { original } }) => { + const { trainer } = original; + return ( + + {trainer} + + ); + } + }, + { + accessorKey: 'published', + header: 'Published on', + meta: { + headerProps: { + className: 'text-end fw-medium text-900' + }, + cellProps: { + className: 'text-end' + } + } + }, + { + accessorKey: 'enrolled', + header: 'Enrolled', + meta: { + headerProps: { + className: 'text-end fw-medium text-900' + }, + cellProps: { + className: 'text-end' + } + } + }, + { + accessorKey: 'price', + header: 'Price', + meta: { + headerProps: { + className: 'text-end fw-medium text-900' + }, + cellProps: { + className: 'text-end' + } + } + }, + { + accessorKey: 'none', + header: '', + enableSorting: false, + meta: { + cellProps: { + className: 'text-end' + } + }, + cell: () => { + return ( + +
    + View + Edit + Refund + + + Archive + + + Delete + +
    +
    + ); + } + } +]; + +const TopCoursesTable = ({ tableData }) => { + const [data] = useState(tableData); + const table = useAdvanceTable({ + data, + columns, + sortable: true + }); + + return ( + + + + ); +}; + +export default TopCoursesTable; diff --git a/src/components/dashboards/lms/trending-keywords/BubbleChart.jsx b/src/components/dashboards/lms/trending-keywords/BubbleChart.jsx new file mode 100644 index 0000000..dbb1045 --- /dev/null +++ b/src/components/dashboards/lms/trending-keywords/BubbleChart.jsx @@ -0,0 +1,117 @@ +import React, { useState, useEffect } from 'react'; +import * as d3 from 'd3'; + +const width = 460; +const height = 400; +const fontSize = 1; //rem + +const ForceGraph = ({ nodes }) => { + const [animatedNodes, setAnimatedNodes] = useState([]); + + const radiusScale = value => { + const fx = d3 + .scaleSqrt() + .range([15, 55]) + .domain([ + 0.95 * + d3.min(nodes, item => { + return item.v; + }), + 1.05 * + d3.max(nodes, item => { + return item.v; + }) + ]); + return fx(value); + }; + + // Tooltip + const showTooltip = function (e, item) { + e.target.classList.add('opacity-75'); + d3.select('.d3-tooltip').transition().duration(200); + d3.select('.d3-tooltip') + .style('opacity', 1) + .style('border', `1px solid ${item.color}`) + .text(item.name + ': ' + item.v) + .style('left', e.clientX - 40 + 'px') + .style('top', e.clientY - 40 + 'px'); + }; + + const moveTooltip = function (e) { + e.target.classList.add('opacity-75'); + d3.select('.d3-tooltip') + .style('opacity', 1) + .style('left', e.clientX - 40 + 'px') + .style('top', e.clientY - 40 + 'px'); + }; + + const hideTooltip = function (e) { + e.target.classList.remove('opacity-75'); + d3.select('.d3-tooltip').transition().duration(200).style('opacity', 0); + }; + + useEffect(() => { + const simulation = d3 + .forceSimulation() + .velocityDecay(0.7) + .force('x', d3.forceX().strength(0.05)) + .force('y', d3.forceY().strength(0.05)) + .force( + 'collide', + d3.forceCollide(d => radiusScale(d.v) + 4) + ); + + simulation.on('tick', () => { + setAnimatedNodes([...simulation.nodes()]); + }); + + simulation.nodes([...nodes]); + + simulation.alpha(0.01).restart(); + + return () => simulation.stop(); + }, [nodes]); + + return ( + <> + {animatedNodes.map((node, index) => ( + showTooltip(e, node)} + onMouseMove={e => moveTooltip(e)} + onMouseLeave={e => hideTooltip(e)} + > + + + {node.name} + + + ))} + + ); +}; + +const BubbleChart = ({ data }) => { + return ( +
    +
    + + + +
    + ); +}; + +export default BubbleChart; diff --git a/src/components/dashboards/lms/trending-keywords/TrendingKeywords.jsx b/src/components/dashboards/lms/trending-keywords/TrendingKeywords.jsx new file mode 100644 index 0000000..40fe0e3 --- /dev/null +++ b/src/components/dashboards/lms/trending-keywords/TrendingKeywords.jsx @@ -0,0 +1,42 @@ +import React from 'react'; +import FalconCardHeader from 'components/common/FalconCardHeader'; +import CardDropdown from 'components/common/CardDropdown'; +import { Button, Card, Col, Form, Row } from 'react-bootstrap'; +import { Link } from 'react-router'; +import BubbleChart from './BubbleChart'; +import { trendingKeywords } from 'data/dashboard/lms'; + +const TrendingKeywords = ({ ...rest }) => { + return ( + + } + /> + + + + + + + + + + + + + + + + + + + ); +}; + +export default TrendingKeywords; diff --git a/src/components/dashboards/lms/users-location/UsersLocation.jsx b/src/components/dashboards/lms/users-location/UsersLocation.jsx new file mode 100644 index 0000000..52bbbdc --- /dev/null +++ b/src/components/dashboards/lms/users-location/UsersLocation.jsx @@ -0,0 +1,113 @@ +import React, { useRef, useState } from 'react'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { countryData } from 'data/countryData'; +import { UsersLocationTableData } from 'data/dashboard/lms'; +import { Button, Card } from 'react-bootstrap'; +import CardDropdown from 'components/common/CardDropdown'; +import FalconCardHeader from 'components/common/FalconCardHeader'; +import FalconLink from 'components/common/FalconLink'; +import Flex from 'components/common/Flex'; +import WorldMap from 'components/dashboards/analytics/users-by-country/WorldMap'; +import UsersLocationTable from './UsersLocationTable'; + +const UsersLocation = () => { + const chartRef = useRef(null); + const [zoomLevel, setZoomLevel] = useState(1); + const [maxZoomLevel] = useState(5); + const [minZoomLevel] = useState(1); + + const handleMapReset = () => { + chartRef.current.getEchartsInstance().dispatchAction({ + type: 'restore' + }); + }; + const handleZoomIn = () => { + if (zoomLevel < maxZoomLevel) { + setZoomLevel(zoomLevel + 1); + } + chartRef.current.getEchartsInstance().setOption({ + series: { + zoom: zoomLevel + 1 + } + }); + }; + const handleZoomOut = () => { + if (zoomLevel > minZoomLevel) { + setZoomLevel(zoomLevel - 1); + } + chartRef.current.getEchartsInstance().setOption({ + series: { + zoom: zoomLevel - 1 + } + }); + }; + + return ( + + +
    + +
    + + + } + /> + + +
    + +
    + +
    +
    +
    +
    +

    less than 1k

    +

    more than 100k

    +
    +
    + + + + + + + + ); +}; + +export default UsersLocation; diff --git a/src/components/dashboards/lms/users-location/UsersLocationTable.jsx b/src/components/dashboards/lms/users-location/UsersLocationTable.jsx new file mode 100644 index 0000000..cdb39f2 --- /dev/null +++ b/src/components/dashboards/lms/users-location/UsersLocationTable.jsx @@ -0,0 +1,79 @@ +import React from 'react'; +import { Link } from 'react-router'; +import AdvanceTable from 'components/common/advance-table/AdvanceTable'; +import SubtleBadge from 'components/common/SubtleBadge'; +import useAdvanceTable from 'hooks/useAdvanceTable'; +import AdvanceTableProvider from 'providers/AdvanceTableProvider'; + +const columns = [ + { + accessorKey: 'country', + header: 'Country', + meta: { + cellProps: { className: 'py-3' }, + headerProps: { style: { width: '40%' }, className: 'text-800' } + }, + cell: ({ row: { original } }) => { + const { country } = original; + return {country}; + } + }, + { + accessorKey: 'users', + header: 'User Count', + meta: { + cellProps: { className: 'text-end' }, + headerProps: { className: 'text-end text-800' } + } + }, + { + accessorKey: 'revenue', + header: 'Revenue', + meta: { + cellProps: { className: 'text-end' }, + headerProps: { className: 'text-end text-800' } + } + }, + { + accessorKey: 'language', + header: 'Language Support', + meta: { + cellProps: { className: 'text-end' }, + headerProps: { className: 'text-end text-800' } + }, + cell: ({ row: { original } }) => { + const { status, variant } = original; + return ( + + {status} + + ); + } + } +]; + +const UsersLocationTable = ({ data }) => { + const table = useAdvanceTable({ + data, + columns, + sortable: true, + pagination: true, + perPage: 4 + }); + + return ( + +
    + +
    +
    + ); +}; + +export default UsersLocationTable; diff --git a/src/components/dashboards/lms/weekly-goals/WeeklyGoals.jsx b/src/components/dashboards/lms/weekly-goals/WeeklyGoals.jsx new file mode 100644 index 0000000..18bc277 --- /dev/null +++ b/src/components/dashboards/lms/weekly-goals/WeeklyGoals.jsx @@ -0,0 +1,101 @@ +import React, { useState } from 'react'; +import FalconCardHeader from 'components/common/FalconCardHeader'; +import CardDropdown from 'components/common/CardDropdown'; +import CountUp from 'react-countup'; +import { Card, Col, Row } from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import Flex from 'components/common/Flex'; +import SubtleBadge from 'components/common/SubtleBadge'; +import WeeklyGoalsChart from './WeeklyGoalsChart'; + +const WeeklyGoals = () => { + const [stats] = useState([ + { + title: 'Site Visit', + value: 79, + color: 'info', + badge: { + text: 'On par', + icon: 'check', + color: 'success' + } + }, + { + title: 'Support', + value: 85, + color: 'primary', + badge: { + text: 'Ahead', + icon: 'caret-up', + color: 'primary' + } + }, + { + title: 'Revenue', + value: 70, + color: 'success', + badge: { + text: 'Behind', + icon: 'caret-down', + color: 'danger' + } + } + ]); + + return ( + + } + /> + + + + {stats.map((stat, index) => ( +
    +
    +
    +
    {stat.title}
    + + + + {' '} + {stat.badge.text} + + +
    +
    + ))} + + + + + + + + ); +}; + +export default WeeklyGoals; diff --git a/src/components/dashboards/lms/weekly-goals/WeeklyGoalsChart.jsx b/src/components/dashboards/lms/weekly-goals/WeeklyGoalsChart.jsx new file mode 100644 index 0000000..37552bd --- /dev/null +++ b/src/components/dashboards/lms/weekly-goals/WeeklyGoalsChart.jsx @@ -0,0 +1,168 @@ +import React, { useRef } from 'react'; +import { GaugeChart } from 'echarts/charts'; +import { + GridComponent, + LegendComponent, + TitleComponent, + TooltipComponent +} from 'echarts/components'; +import * as echarts from 'echarts/core'; +import { CanvasRenderer } from 'echarts/renderers'; +import { useAppContext } from 'providers/AppProvider'; +import ReactEchart from 'components/common/ReactEchart'; + +echarts.use([ + TitleComponent, + TooltipComponent, + GridComponent, + GaugeChart, + CanvasRenderer, + LegendComponent +]); + +const getOptions = getThemeColor => ({ + tooltip: { + trigger: 'item', + backgroundColor: getThemeColor('gray-100'), + textStyle: { color: getThemeColor('gray-1100') }, + formatter: params => + `
    ${params.seriesName}: ${params.value}%
    ` + }, + series: [ + { + type: 'gauge', + name: 'Site visit', + startAngle: 90, + endAngle: -270, + radius: '85%', + pointer: { + show: false + }, + center: ['50%', '50%'], + progress: { + show: true, + overlap: false, + roundCap: true, + clip: false, + itemStyle: { + color: getThemeColor('info') + } + }, + axisLine: { + lineStyle: { + width: 8, + color: [[1, getThemeColor('gray-200')]] + } + }, + splitLine: { + show: false + }, + axisTick: { + show: false + }, + axisLabel: { + show: false + }, + data: [79], + detail: { + show: false + }, + animationDuration: 2000 + }, + { + type: 'gauge', + startAngle: 90, + endAngle: -270, + radius: '70%', + name: 'Support', + pointer: { + show: false + }, + center: ['50%', '50%'], + progress: { + show: true, + overlap: false, + roundCap: true, + clip: false, + itemStyle: { + color: getThemeColor('primary') + } + }, + axisLine: { + lineStyle: { + width: 8, + color: [[1, getThemeColor('gray-200')]] + } + }, + splitLine: { + show: false + }, + axisTick: { + show: false + }, + axisLabel: { + show: false + }, + data: [85], + detail: { + show: false + }, + animationDuration: 2000 + }, + { + type: 'gauge', + name: 'Revenue', + startAngle: 90, + endAngle: -270, + radius: '55%', + pointer: { + show: false + }, + center: ['50%', '50%'], + progress: { + show: true, + overlap: false, + roundCap: true, + clip: false, + itemStyle: { + color: getThemeColor('success') + } + }, + axisLine: { + lineStyle: { + width: 8, + color: [[1, getThemeColor('gray-200')]] + } + }, + splitLine: { + show: false + }, + axisTick: { + show: false + }, + axisLabel: { + show: false + }, + data: [70], + detail: { + show: false + }, + animationDuration: 2000 + } + ] +}); + +const WeeklyGoalsChart = () => { + const { getThemeColor } = useAppContext(); + const chartRef = useRef(null); + return ( + + ); +}; + +export default WeeklyGoalsChart; diff --git a/src/components/dashboards/project-management/Discussion.jsx b/src/components/dashboards/project-management/Discussion.jsx new file mode 100644 index 0000000..83063c7 --- /dev/null +++ b/src/components/dashboards/project-management/Discussion.jsx @@ -0,0 +1,66 @@ +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import Avatar, { AvatarGroup } from 'components/common/Avatar'; +import Flex from 'components/common/Flex'; +import React from 'react'; +import { Card, Col, Row, Button } from 'react-bootstrap'; + +const Discussion = ({ data }) => { + return ( + + + +
    +

    Upcoming schedule

    +
    Falcon discussion
    +
    +
    +
    + 09 + MAR +
    +
    +
    +
    + + + + +

    + The very first general meeting for planning Falcon’s design and + development roadmap +

    + + + + + + + + + {data.map(({ img, name, size, id }) => { + return ( + + ); + })} + + +
    +
    +
    + ); +}; + +export default Discussion; diff --git a/src/components/dashboards/project-management/Greetings.jsx b/src/components/dashboards/project-management/Greetings.jsx new file mode 100644 index 0000000..a734f6a --- /dev/null +++ b/src/components/dashboards/project-management/Greetings.jsx @@ -0,0 +1,42 @@ +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import Background from 'components/common/Background'; +import Flex from 'components/common/Flex'; +import React from 'react'; +import { Card, Col, Row } from 'react-bootstrap'; +import { Link } from 'react-router'; +import corner1 from 'assets/img/icons/spot-illustrations/corner-3.png'; + +const Greetings = ({ data }) => { + return ( + + + +
    Welcome to Falcon!
    +
    Here are some quick links for you to start
    +
    + + + {data.map(({ icon, color, title, text }) => { + return ( + + +
    + +
    +
    + +
    {title}
    + +

    {text}

    +
    +
    + + ); + })} +
    +
    +
    + ); +}; + +export default Greetings; diff --git a/src/components/dashboards/project-management/MemberInfo.jsx b/src/components/dashboards/project-management/MemberInfo.jsx new file mode 100644 index 0000000..038ee35 --- /dev/null +++ b/src/components/dashboards/project-management/MemberInfo.jsx @@ -0,0 +1,136 @@ +import classNames from 'classnames'; +import Avatar from 'components/common/Avatar'; +import Flex from 'components/common/Flex'; +import React from 'react'; +import { Card, Col, Form, Row, Table } from 'react-bootstrap'; +import { Link } from 'react-router'; +import SubtleBadge from 'components/common/SubtleBadge'; +import BasicECharts from 'components/common/BasicEChart'; +import * as echarts from 'echarts/core'; +import FalconLink from 'components/common/FalconLink'; +import SimpleBar from 'simplebar-react'; +import { useAppContext } from 'providers/AppProvider'; + +const MembersRow = ({ + name, + img, + role, + isLast, + status, + attendance, + today, + thisWeek, + data +}) => { + const { getThemeColor } = useAppContext(); + return ( + + + + +
    +
    + + {name} + +
    +

    {role}

    +
    +
    + + + + {attendance.text} + + + + + {today.amount}% + +

    {today.time}

    + + + + + + {thisWeek.amount}% + +

    {thisWeek.time}

    + + + + +
    + + + ); +}; + +const MemberInfo = ({ data }) => { + return ( + + + + + + + + + + + + + + {data.map((info, index) => ( + + ))} + +
    Member infoAttendanceTodayThis Week
    +
    +
    + + + + + + + + + + + + + + + +
    + ); +}; + +export default MemberInfo; diff --git a/src/components/dashboards/project-management/MembersActivity.jsx b/src/components/dashboards/project-management/MembersActivity.jsx new file mode 100644 index 0000000..05e5542 --- /dev/null +++ b/src/components/dashboards/project-management/MembersActivity.jsx @@ -0,0 +1,57 @@ +import React from 'react'; +import { Card, Row, Col, Image } from 'react-bootstrap'; +import FalconCardHeader from 'components/common/FalconCardHeader'; +import CardDropdown from 'components/common/CardDropdown'; +import SimpleBar from 'simplebar-react'; +import FalconLink from 'components/common/FalconLink'; +import Avatar from 'components/common/Avatar'; +import SubtleBadge from 'components/common/SubtleBadge'; + +const Activity = ({ activity: { name, avatar, activity } }) => { + return ( + + + +
    {name}
    + + {activity.map(item => ( + + {name} + + {item.amount} + + + ))} +
    + ); +}; + +const MembersActivity = ({ data }) => { + return ( + + } + /> + + + {data.map(activity => ( + + ))} + + + + + + + ); +}; + +export default MembersActivity; diff --git a/src/components/dashboards/project-management/RecentActivity.jsx b/src/components/dashboards/project-management/RecentActivity.jsx new file mode 100644 index 0000000..0214597 --- /dev/null +++ b/src/components/dashboards/project-management/RecentActivity.jsx @@ -0,0 +1,64 @@ +import React from 'react'; +import { Card, Col, Row } from 'react-bootstrap'; +import FalconCardHeader from 'components/common/FalconCardHeader'; +import classNames from 'classnames'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import SimpleBar from 'simplebar-react'; + +const Activity = ({ + activity: { title, text, icon, time, status }, + isLast +}) => { + return ( + + +
    +
    + +
    +
    + + + + +
    {title}
    +

    {text}

    + + +

    {time}

    + +
    + +
    + ); +}; + +const RecentActivity = ({ data }) => { + return ( + + + + + {data.map((activity, index) => ( + + ))} + + + + ); +}; + +export default RecentActivity; diff --git a/src/components/dashboards/project-management/RunningProjects.jsx b/src/components/dashboards/project-management/RunningProjects.jsx new file mode 100644 index 0000000..8d435ca --- /dev/null +++ b/src/components/dashboards/project-management/RunningProjects.jsx @@ -0,0 +1,147 @@ +import React from 'react'; +import { Card, ProgressBar } from 'react-bootstrap'; +import Flex from 'components/common/Flex'; +import Avatar, { AvatarGroup } from 'components/common/Avatar'; +import { Link } from 'react-router'; +import FalconCardFooterLink from 'components/common/FalconCardFooterLink'; +import FalconCardHeader from 'components/common/FalconCardHeader'; +import AdvanceTable from 'components/common/advance-table/AdvanceTable'; +import useAdvanceTable from 'hooks/useAdvanceTable'; +import AdvanceTableProvider from 'providers/AdvanceTableProvider'; + +const columns = [ + { + accessorKey: 'title', + header: 'Projects', + meta: { + headerProps: { className: 'text-800' } + }, + cell: ({ row: { original } }) => { + const { avatar, color, title, projectName } = original; + return ( + + +
    +
    + + {title} + +
    +

    {projectName}

    +
    +
    + ); + } + }, + { + accessorKey: 'progress', + header: 'Worked', + meta: { + headerProps: { + className: 'text-center text-800' + }, + cellProps: { + className: 'text-center' + } + }, + cell: ({ row: { original } }) => { + const { progress } = original; + return ( + + ); + } + }, + { + accessorKey: 'duration', + header: 'Progress', + meta: { + cellProps: { + className: 'text-center fw-semibold fs-10' + }, + headerProps: { + className: 'text-center text-800' + } + } + }, + { + accessorKey: 'date', + header: 'Due Date', + meta: { + cellProps: { + className: 'text-center fw-semibold fs-10' + }, + headerProps: { + className: 'text-center text-800' + } + } + }, + { + accessorKey: 'members', + header: 'Members', + enableSorting: false, + meta: { + headerProps: { + className: 'text-end text-800' + } + }, + cell: ({ row: { original } }) => { + const { members } = original; + return ( + + {members.map(({ img, name, id }) => { + return ( + + ); + })} + + ); + } + } +]; + +const RunningProjects = ({ data }) => { + const table = useAdvanceTable({ + data, + columns, + sortable: true, + pagination: true, + perPage: 10 + }); + + return ( + + + + + + + + + + ); +}; + +export default RunningProjects; diff --git a/src/components/dashboards/project-management/TeamProgress.jsx b/src/components/dashboards/project-management/TeamProgress.jsx new file mode 100644 index 0000000..4735bcf --- /dev/null +++ b/src/components/dashboards/project-management/TeamProgress.jsx @@ -0,0 +1,32 @@ +import FalconCardHeader from 'components/common/FalconCardHeader'; +import FalconLink from 'components/common/FalconLink'; +import React from 'react'; +import { Card, ProgressBar } from 'react-bootstrap'; + +const TeamProgress = () => { + return ( + + } + /> + +

    + See team members' time worked,
    activity levels, and progress +

    + + + +

    75% completed

    +

    Jan 1st to 30th

    +
    +
    + ); +}; + +export default TeamProgress; diff --git a/src/components/dashboards/project-management/ToDoList.jsx b/src/components/dashboards/project-management/ToDoList.jsx new file mode 100644 index 0000000..1362d87 --- /dev/null +++ b/src/components/dashboards/project-management/ToDoList.jsx @@ -0,0 +1,101 @@ +import React, { useState } from 'react'; +import { Button, Card, Form } from 'react-bootstrap'; +import Flex from 'components/common/Flex'; +import CardDropdown from 'components/common/CardDropdown'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import IconItem from 'components/common/icon/IconItem'; +import classNames from 'classnames'; +import { Link } from 'react-router'; +import { todoList } from 'data/dashboard/projectManagement'; +import FalconCardHeader from 'components/common/FalconCardHeader'; + +const ToDoListItem = ({ item, index, handleChange }) => { + return ( + + + handleChange(item.id, e.target.checked)} + className={classNames( + `mt-0 rounded-circle form-check-input-${item.color}`, + { + 'form-check-line-through': item.completed + } + )} + /> + + {item.task} + + +
    +
    + + +
    + 1 ? 'start' : undefined} + /> +
    +
    + ); +}; + +const ToDoList = () => { + const [todoItems, setTodoItems] = useState(todoList); + const handleChange = (id, completed) => { + const updatedTodos = todoItems.map(item => + item.id === id ? { ...item, completed } : item + ); + setTodoItems(updatedTodos); + }; + return ( + + + + {todoItems.map((item, index) => ( + + ))} + + + + + + ); +}; + +export default ToDoList; diff --git a/src/components/dashboards/project-management/calendar/CalendarManagement.jsx b/src/components/dashboards/project-management/calendar/CalendarManagement.jsx new file mode 100644 index 0000000..a2e2656 --- /dev/null +++ b/src/components/dashboards/project-management/calendar/CalendarManagement.jsx @@ -0,0 +1,202 @@ +import React, { useEffect, useRef, useState } from 'react'; +import { + Button, + Card, + Col, + OverlayTrigger, + Row, + Tooltip +} from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import IconButton from 'components/common/IconButton'; +import FullCalendar from '@fullcalendar/react'; +import dayGridPlugin from '@fullcalendar/daygrid'; +import timeGridPlugin from '@fullcalendar/timegrid'; +import interactionPlugin from '@fullcalendar/interaction'; +import AddScheduleModal from 'components/app/calendar/AddScheduleModal'; +import CalendarEventModal from 'components/app/calendar/CalendarEventModal'; +import Flex from 'components/common/Flex'; +import { useAppContext } from 'providers/AppProvider'; + +const CalendarManagement = ({ data }) => { + const { + config: { isRTL } + } = useAppContext(); + const calendarRef = useRef(); + const [title, setTitle] = useState(''); + const [day, setDay] = useState(''); + const [calendarApi, setCalendarApi] = useState({}); + const [isOpenScheduleModal, setIsOpenScheduleModal] = useState(false); + const [isOpenEventModal, setIsOpenEventModal] = useState(false); + const [modalEventContent, setModalEventContent] = useState({}); + const [scheduleStartDate, setScheduleStartDate] = useState(); + const [scheduleEndDate, setScheduleEndDate] = useState(); + + const handleEventClick = eventsInfo => { + setModalEventContent({ event: calendarApi.getEventById(eventsInfo.id) }); + setIsOpenEventModal(true); + }; + + useEffect(() => { + setCalendarApi(calendarRef.current.getApi()); + }, []); + + const getDate = () => { + return calendarApi.getCurrentData().currentDate.toLocaleString('en-us', { + weekday: 'long' + }); + }; + + return ( + <> + + + + +
    + +
    + + Previous + + } + > + + + + + Next + + } + > + + +
    + + { + setIsOpenScheduleModal(!isOpenScheduleModal); + }} + > + New Schedule + +
    +
    +
    + { + setIsOpenScheduleModal(true); + setScheduleStartDate(info.date); + }} + events={data} + /> +
    + + +
    +

    + {title || + `${calendarApi.currentDataManager?.data?.viewTitle}`} +

    +

    + {day || + `${new Date().toLocaleString('en-us', { + weekday: 'long' + })}`} +

    +
      + {data.map(events => ( +
    • handleEventClick(events)} + key={events.id} + > +
      +
      + {events.title} +
      +

      + {events.startTime || ''} {events.endTime ? '- ' : ''} + {events.endTime || ''} +

      +
      +
    • + ))} +
    +
    + +
    +
    +
    + + + + + + ); +}; + +export default CalendarManagement; diff --git a/src/components/dashboards/project-management/index.jsx b/src/components/dashboards/project-management/index.jsx new file mode 100644 index 0000000..b57b810 --- /dev/null +++ b/src/components/dashboards/project-management/index.jsx @@ -0,0 +1,92 @@ +import React from 'react'; +import { Col, Row } from 'react-bootstrap'; +import Greetings from './Greetings'; +import TeamProgress from './TeamProgress'; +import Discussion from './Discussion'; +import CalendarManagement from './calendar/CalendarManagement'; +import ProjectStatistics from './project-statistics/ProjectStatistics'; +import Statistics from './statistics/Statistics'; +import ToDoList from './ToDoList'; +import ReportForThisWeek from './report-for-this-week/ReportForThisWeek'; +import MemberInfo from './MemberInfo'; +import RunningProjects from './RunningProjects'; +import ProjectLocation from './project-location/ProjectLocation'; +import { + recentActivities, + membersActivities, + markers, + greetingItems, + discussionMembers, + weeklyReport, + progressBar, + projectsTable, + projectUsers, + membersInfo, + runningProjects, + managementEvents +} from 'data/dashboard/projectManagement'; +import RecentActivity from './RecentActivity'; +import MembersActivity from './MembersActivity'; + +const ProjectManagement = () => { + return ( + <> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +}; + +export default ProjectManagement; diff --git a/src/components/dashboards/project-management/project-location/LeafletMap.jsx b/src/components/dashboards/project-management/project-location/LeafletMap.jsx new file mode 100644 index 0000000..6aed782 --- /dev/null +++ b/src/components/dashboards/project-management/project-location/LeafletMap.jsx @@ -0,0 +1,92 @@ +import React, { useEffect } from 'react'; +import L from 'leaflet'; +import { MapContainer, TileLayer, Marker, Popup, useMap } from 'react-leaflet'; +import MarkerClusterGroup from 'react-leaflet-markercluster'; +import 'leaflet.tilelayer.colorfilter'; +import 'leaflet/dist/leaflet.css'; +import 'react-leaflet-markercluster/styles'; +import { useAppContext } from 'providers/AppProvider'; + +const LayerComponent = ({ data }) => { + const mapMarker = L.icon({ + iconUrl: `data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAApCAYAAADAk4LOAAAACXBIWXMAAAFgAAABYAEg2RPaAAADpElEQVRYCZ1XS1LbQBBtybIdiMEJKSpUqihgEW/xDdARyAnirOIl3MBH8NK7mBvkBpFv4Gy9IRSpFIQiRPyNfqkeZkY9HwmFt7Lm06+7p/vN2MmyDIrQ6QebALAHAD4AbFuWfQeAAACGs5H/w5jlsJJw4wMA+GhMFuMA99jIDJJOP+ihZwDQFmNuowWO1wS3viDXpdEdZPEc0odruj0EgN5s5H8tJOEEX8R3rbkMtcU34NTqhe5nSQTJ7Tkk80s6/Gk28scGiULguFBffgdufdEwWoQ0uoXo8hdAlooVH0REjISfwZSlyHGh0V5n6aHAtKTxXI5g6nQnMH0P4bEgwtR18Yw8Pj8QZ4ARUAI0Hl+fQZZGisGEBVwHr7XKzox57DXZ/ij8Cdwe2u057z9/wygOxRl4S2vSUHx1oucaMQGAHTrgtdag9mK5aN+Wx/uAAQ9Zenp/SRce4TpaNbQK4+sTcGqeTB/aIXv3XN5oj2VKqii++U0JunpZ8urxee4hvjqVc2hHpBDXuKKT9XMgVYJ1/1fPGSeaikzgmWWkMIi9bVf8UhotXxzORn5gWFchI8QyttlzjS0qpsaIGY2MMsujV/AUSdcY0dDpB6/EiOPYzclR1CI5mOez3ekHvrFLxa7cR5pTscfrXjk0Vhm5V2PqLUWnH3R5GbPGpMVD7E1ckXesKBQ7AS/vmQ1c0+kHuxpBj98lTCm8pbc5QRJRdZ6qHb/wGryXq3Lxszv+5gySuwvxueXySwYvHEjuQ9ofTGKYlrmK1EsCHMd5SoD7mZ1HHFCBHLNbMEshvrugqWLn01hpVVJhFgVGkDvK7hR6n2B+d9C7xsqWsbkqHv4cCsWezEb+o2SR+SFweUBxfA5wH7kShjKt2vWL57Px3GhIFEezkb8pxvUWHYhotAfCk2AtkEcxoOttrxUWDR5svb1emSQKj0WXK1HYIgFREbiBqmoZcB2RkbE+byMZiosorVgAZF1ID7yQhEs38wa7nUqNDezdlavC2HbBGSQkGgZ8uJVBmzeiKCRRpEa9ilWghORVeGB7BxeSKF5xqbFBkxBrFKUk/JHA7ppENQaCnCjthK+3opCEYyANztXmZN858cDYWSUSHk3A311GAZDvo6deNKUk1EsqnJoQlkYBNlmxQZeaMgmxoUokICoHDce351RCCiuKoirJWEgNOYvQplM2VCLhUqF7jf94rW9kHVUjQeheV4riv0i4ZOzzz/2y/+0KAOAfr4EE4HpCFhwAAAAASUVORK5CYII=` + }); + const map = useMap(); + const { config } = useAppContext(); + + const { isDark } = config; + const filter = isDark + ? [ + 'invert:98%', + 'grayscale:69%', + 'bright:89%', + 'contrast:111%', + 'hue:205deg', + 'saturate:1000%' + ] + : ['bright:101%', 'contrast:101%', 'hue:23deg', 'saturate:225%']; + + useEffect(() => { + map.invalidateSize(); + }, [config]); + + useEffect(() => { + if (map) { + L.tileLayer( + 'https://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}{r}.png', + { + attribution: null, + transparent: true, + colorFilter: filter + } + ).addTo(map); + } + }, [isDark]); + + return ( + <> + + + {data.map(marker => ( + + +
    {marker.name}
    +

    + {marker.street} {marker.location} +

    +
    +
    + ))} +
    + + ); +}; + +const LeafletMap = ({ data, ...rest }) => { + const position = [10.737, 0]; + const { + config: { isRTL } + } = useAppContext(); + + return ( + + + + ); +}; + +export default LeafletMap; diff --git a/src/components/dashboards/project-management/project-location/ProjectLocation.jsx b/src/components/dashboards/project-management/project-location/ProjectLocation.jsx new file mode 100644 index 0000000..1650a9d --- /dev/null +++ b/src/components/dashboards/project-management/project-location/ProjectLocation.jsx @@ -0,0 +1,53 @@ +import React from 'react'; +import { Card, Col, Form, Row } from 'react-bootstrap'; +import FalconCardHeader from 'components/common/FalconCardHeader'; +import CardDropdown from 'components/common/CardDropdown'; +import IconButton from 'components/common/IconButton'; +import LeafletMap from './LeafletMap'; +import 'leaflet/dist/leaflet.css'; + +const ProjectLocation = ({ data }) => { + return ( + + } + light={true} + /> + + + + + + + + + + + + + + + + Location overview + + + + + + + ); +}; + +export default ProjectLocation; diff --git a/src/components/dashboards/project-management/project-statistics/ProjectStatistics.jsx b/src/components/dashboards/project-management/project-statistics/ProjectStatistics.jsx new file mode 100644 index 0000000..4ddadce --- /dev/null +++ b/src/components/dashboards/project-management/project-statistics/ProjectStatistics.jsx @@ -0,0 +1,42 @@ +import CardDropdown from 'components/common/CardDropdown'; +import FalconCardHeader from 'components/common/FalconCardHeader'; +import React from 'react'; +import { Card } from 'react-bootstrap'; +import Avatar, { AvatarGroup } from 'components/common/Avatar'; +import Statistics from './Statistics'; +import ProjectTable from './ProjectTable'; + +const ProjectStatistics = ({ progressBar, projectsTable, projectUsers }) => { + return ( + + } + /> + + + +

    Assignees in Sprint

    + + {projectUsers.map(({ img, name, id }) => { + return ( + + ); + })} + + + +
    +
    + ); +}; + +export default ProjectStatistics; diff --git a/src/components/dashboards/project-management/project-statistics/ProjectTable.jsx b/src/components/dashboards/project-management/project-statistics/ProjectTable.jsx new file mode 100644 index 0000000..0f218b9 --- /dev/null +++ b/src/components/dashboards/project-management/project-statistics/ProjectTable.jsx @@ -0,0 +1,45 @@ +import React from 'react'; +import Flex from 'components/common/Flex'; +import classNames from 'classnames'; +import { Link } from 'react-router'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; + +const ProjectTable = ({ data }) => { + return ( + <> + +
    Project
    +
    Team
    +
    + {data.map((project, index) => { + return ( + + <> + +
    + + {project.project} +
    + + + {project.team} + + +
    + ); + })} + + ); +}; + +export default ProjectTable; diff --git a/src/components/dashboards/project-management/project-statistics/Statistics.jsx b/src/components/dashboards/project-management/project-statistics/Statistics.jsx new file mode 100644 index 0000000..c743852 --- /dev/null +++ b/src/components/dashboards/project-management/project-statistics/Statistics.jsx @@ -0,0 +1,47 @@ +import React from 'react'; +import { Col, ProgressBar, Row } from 'react-bootstrap'; +import classNames from 'classnames'; + +const Statistics = ({ data }) => { + return ( + <> + + +

    5,432

    +

    Total Work Hours

    + + +

    13

    +

    Projects

    + + +

    7

    +

    Ongoing

    + +
    + + {data.map((item, index) => ( + {item.amount}% + } + /> + ))} + + + ); +}; + +export default Statistics; diff --git a/src/components/dashboards/project-management/report-for-this-week/ReportForThisWeek.jsx b/src/components/dashboards/project-management/report-for-this-week/ReportForThisWeek.jsx new file mode 100644 index 0000000..57bbec2 --- /dev/null +++ b/src/components/dashboards/project-management/report-for-this-week/ReportForThisWeek.jsx @@ -0,0 +1,57 @@ +import React, { useRef } from 'react'; +import { Card, Col, Row, Button } from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import ReportForThisWeekChart from './ReportForThisWeekChart'; +import FalconCardFooterLink from 'components/common/FalconCardFooterLink'; +import Flex from 'components/common/Flex'; + +const ReportForThisWeek = ({ data }) => { + const chartRef = useRef(null); + const handleLegend = (event, name) => { + chartRef.current.getEchartsInstance().dispatchAction({ + type: 'legendToggleSelect', + name: name + }); + event.target.closest('button').classList.toggle('opacity-50'); + }; + return ( + + + + +
    Report for this week
    + + + + + +
    +
    + + + + +
    + ); +}; + +export default ReportForThisWeek; diff --git a/src/components/dashboards/project-management/report-for-this-week/ReportForThisWeekChart.jsx b/src/components/dashboards/project-management/report-for-this-week/ReportForThisWeekChart.jsx new file mode 100644 index 0000000..d37d79b --- /dev/null +++ b/src/components/dashboards/project-management/report-for-this-week/ReportForThisWeekChart.jsx @@ -0,0 +1,117 @@ +import React from 'react'; +import { BarChart } from 'echarts/charts'; +import { + DatasetComponent, + GridComponent, + LegendComponent, + TitleComponent, + TooltipComponent +} from 'echarts/components'; +import * as echarts from 'echarts/core'; +import { CanvasRenderer } from 'echarts/renderers'; +import { useAppContext } from 'providers/AppProvider'; +import ReactEchart from 'components/common/ReactEchart'; + +echarts.use([ + TitleComponent, + TooltipComponent, + GridComponent, + BarChart, + CanvasRenderer, + LegendComponent, + DatasetComponent +]); + +const getOption = (getThemeColor, data) => ({ + color: [getThemeColor('primary'), getThemeColor('gray-300')], + dataset: { source: data }, + tooltip: { + trigger: 'item', + padding: [7, 10], + backgroundColor: getThemeColor('gray-100'), + borderColor: getThemeColor('gray-300'), + textStyle: { color: getThemeColor('gray-1100') }, + borderWidth: 1, + transitionDuration: 0, + formatter: function (params) { + return `
    ${params.seriesName + }
    ${params.name}: ${params.value[params.componentIndex + 1] + }
    `; + } + }, + legend: { + show: false + }, + xAxis: { + type: 'category', + axisLabel: { color: getThemeColor('gray-400') }, + axisLine: { + lineStyle: { + color: getThemeColor('gray-300'), + type: 'dashed' + } + }, + axisTick: false, + boundaryGap: 1 + }, + yAxis: { + axisPointer: { type: 'none' }, + axisTick: 'none', + splitLine: { + lineStyle: { + color: getThemeColor('gray-300'), + type: 'dashed' + } + }, + axisLine: { show: false }, + axisLabel: { + color: getThemeColor('gray-400'), + formatter: value => `${value} hr` + } + }, + series: [ + { + type: 'bar', + barWidth: '12%', + barGap: '30%', + label: { show: false }, + z: 10, + itemStyle: { + borderRadius: [10, 10, 0, 0], + color: getThemeColor('primary') + } + }, + { + type: 'bar', + barWidth: '12%', + barGap: '30%', + label: { show: false }, + itemStyle: { + borderRadius: [4, 4, 0, 0], + color: getThemeColor('gray-300') + } + } + ], + grid: { + right: 0, + left: -5, + bottom: 8, + top: 36, + outerBoundsMode: 'same', + outerBoundsContain: 'axisLabel' + } +}); + +const ReportForThisWeekChart = ({ data, ref }) => { + const { getThemeColor } = useAppContext(); + return ( + + ); +}; + +export default ReportForThisWeekChart; diff --git a/src/components/dashboards/project-management/statistics/Statistics.jsx b/src/components/dashboards/project-management/statistics/Statistics.jsx new file mode 100644 index 0000000..828bb46 --- /dev/null +++ b/src/components/dashboards/project-management/statistics/Statistics.jsx @@ -0,0 +1,18 @@ +import React from 'react'; +import { Col, Row } from 'react-bootstrap'; +import { statsData } from 'data/dashboard/saas'; +import StatisticsCard from 'components/dashboards/saas/stats-cards/StatisticsCard'; + +const Statistics = () => { + return ( + + {statsData.slice(0, 2).map(stat => ( + + + + ))} + + ); +}; + +export default Statistics; diff --git a/src/components/dashboards/saas/DepositeStatus.jsx b/src/components/dashboards/saas/DepositeStatus.jsx new file mode 100644 index 0000000..1a20e06 --- /dev/null +++ b/src/components/dashboards/saas/DepositeStatus.jsx @@ -0,0 +1,26 @@ +import React from 'react'; +import { Card } from 'react-bootstrap'; +import { Link } from 'react-router'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; + +const DepositeStatus = () => { + return ( + + +

    + + + A payout for $921.42 was deposited 13 days ago. + {' '} + Your next deposit is expected on Tuesday, March 13. +

    +
    +
    + ); +}; + +export default DepositeStatus; diff --git a/src/components/dashboards/saas/DoMoreCard.jsx b/src/components/dashboards/saas/DoMoreCard.jsx new file mode 100644 index 0000000..79e4ba3 --- /dev/null +++ b/src/components/dashboards/saas/DoMoreCard.jsx @@ -0,0 +1,68 @@ +import React from 'react'; +import { Alert, Card } from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import IconButton from 'components/common/IconButton'; + +const moreItems = [ + { + id: 1, + label: 'Unlimited downloads', + icon: 'infinity' + }, + { + id: 2, + label: 'Commercial use', + icon: 'check' + }, + { id: 3, label: '100% moneyback guarantee', icon: 'check' }, + { + id: 4, + label: 'Lifetime free updates', + icon: 'check' + } +]; + +const DoMoreCard = ({ ...rest }) => { + return ( + + +

    More with Falcon

    +
    + Get 70% OFF with + Falcon+ +
    + +

    + $29 + + /month + +

    +
    +
      + {moreItems.map(item => ( +
    • +
      + + {item.label} +
      +
    • + ))} +
    + + Upgrade to Falcon+ + +
    +
    + ); +}; + +export default DoMoreCard; diff --git a/src/components/dashboards/saas/SaasActiveUser.jsx b/src/components/dashboards/saas/SaasActiveUser.jsx new file mode 100644 index 0000000..2ab0fd0 --- /dev/null +++ b/src/components/dashboards/saas/SaasActiveUser.jsx @@ -0,0 +1,73 @@ +import React from 'react'; +import { Card, Col, Row } from 'react-bootstrap'; +import BasicECharts from 'components/common/BasicEChart'; +import * as echarts from 'echarts/core'; +import { LineChart } from 'echarts/charts'; +import { + GridComponent, + TooltipComponent, + TitleComponent +} from 'echarts/components'; +import { rgbaColor } from 'helpers/utils'; +import { useAppContext } from 'providers/AppProvider'; + +echarts.use([TitleComponent, TooltipComponent, GridComponent, LineChart]); + +const getOptions = (getThemeColor, data) => ({ + xAxis: { + show: false, + boundaryGap: false + }, + series: [ + { + data: data, + type: 'line', + symbol: 'none', + areaStyle: { + color: { + type: 'linear', + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [ + { + offset: 0, + color: rgbaColor(getThemeColor('primary'), 0.25) + }, + { + offset: 1, + color: rgbaColor(getThemeColor('primary'), 0) + } + ] + } + } + } + ], + grid: { right: '0px', left: '0px', bottom: '0px', top: '0px' } +}); + +const SaasActiveUser = ({ data }) => { + const { getThemeColor } = useAppContext(); + return ( + + + + +
    Active Users
    +

    765k

    + + + + +
    +
    +
    + ); +}; + +export default SaasActiveUser; diff --git a/src/components/dashboards/saas/SaasConversion.jsx b/src/components/dashboards/saas/SaasConversion.jsx new file mode 100644 index 0000000..fa861e5 --- /dev/null +++ b/src/components/dashboards/saas/SaasConversion.jsx @@ -0,0 +1,36 @@ +import React from 'react'; +import { Card, Col, Row } from 'react-bootstrap'; +import SubtleBadge from 'components/common/SubtleBadge'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import CountUp from 'react-countup'; + +const SaasConversion = () => { + return ( + + + + +
    Conversion
    + + 29.4% + + + +

    + +

    + +
    +
    +
    + ); +}; + +export default SaasConversion; diff --git a/src/components/dashboards/saas/SaasRevenue.jsx b/src/components/dashboards/saas/SaasRevenue.jsx new file mode 100644 index 0000000..019b099 --- /dev/null +++ b/src/components/dashboards/saas/SaasRevenue.jsx @@ -0,0 +1,37 @@ +import React from 'react'; +import { Card, Col, Row } from 'react-bootstrap'; +import SubtleBadge from 'components/common/SubtleBadge'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import CountUp from 'react-countup'; + +const SaasRevenue = () => { + return ( + + + + +
    Revenue
    + + 61.8% + + + +

    + +

    + +
    +
    +
    + ); +}; + +export default SaasRevenue; diff --git a/src/components/dashboards/saas/TransactionSummary.jsx b/src/components/dashboards/saas/TransactionSummary.jsx new file mode 100644 index 0000000..96bcdfe --- /dev/null +++ b/src/components/dashboards/saas/TransactionSummary.jsx @@ -0,0 +1,115 @@ +import React from 'react'; +import { Card, Col, Form, Image, Row, Table } from 'react-bootstrap'; +import FalconCardHeader from 'components/common/FalconCardHeader'; +import CardDropdown from 'components/common/CardDropdown'; +import classNames from 'classnames'; +import Flex from 'components/common/Flex'; +import { Link } from 'react-router'; +import SubtleBadge from 'components/common/SubtleBadge'; +import SimpleBar from 'simplebar-react'; +import FalconLink from 'components/common/FalconLink'; + +const TransactionItem = ({ + summary: { img, title, subtitle, status, amount, date }, + isLast +}) => { + return ( + + + + {title} +
    + +
    {title}
    + +

    {subtitle}

    +
    +
    + + + + {status} + + + +
    {amount}
    +

    {date}

    + + + + + + + + + + ); +}; + +const TransactionSummary = ({ data: transactions }) => { + return ( + + } + /> + + + + + {transactions.map((item, index) => ( + + ))} + +
    +
    +
    + + + + + + + + + + + + + + +
    + ); +}; + +export default TransactionSummary; diff --git a/src/components/dashboards/saas/candle-chart/CandleChart.jsx b/src/components/dashboards/saas/candle-chart/CandleChart.jsx new file mode 100644 index 0000000..229d286 --- /dev/null +++ b/src/components/dashboards/saas/candle-chart/CandleChart.jsx @@ -0,0 +1,79 @@ +import React, { useRef, useState } from 'react'; +import { Card, Col, Row, ButtonGroup, Button } from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import Stat from './Stat'; +import CandleChartBody from './CandleChartBody'; +import { candleChartStatsData } from 'data/dashboard/saas'; + +const CandleChart = ({ data }) => { + const chartRef = useRef(null); + const [zoomStart] = useState(0); + const [zoomEnd, setZoomEnd] = useState(70); + + const zoomInAction = () => { + zoomEnd > 10 && setZoomEnd(zoomEnd - 10); + }; + + const zoomOutAction = () => { + zoomEnd < 100 && setZoomEnd(zoomEnd + 10); + }; + + return ( + + + + +
    Candle Chart
    + + + + {candleChartStatsData.map((stat, index) => ( + + ))} + + +
    +
    + + + + + + + +
    + ); +}; + +export default CandleChart; diff --git a/src/components/dashboards/saas/candle-chart/CandleChartBody.jsx b/src/components/dashboards/saas/candle-chart/CandleChartBody.jsx new file mode 100644 index 0000000..9efe9d9 --- /dev/null +++ b/src/components/dashboards/saas/candle-chart/CandleChartBody.jsx @@ -0,0 +1,138 @@ +import React from 'react'; +import dayjs from 'dayjs'; +import { CandlestickChart } from 'echarts/charts'; +import { + DataZoomComponent, + DataZoomInsideComponent, + GridComponent, + TooltipComponent +} from 'echarts/components'; +import * as echarts from 'echarts/core'; +import { useAppContext } from 'providers/AppProvider'; +import ReactEchart from 'components/common/ReactEchart'; + +echarts.use([ + CandlestickChart, + TooltipComponent, + GridComponent, + DataZoomComponent, + DataZoomInsideComponent +]); + +const splitData = rawData => { + let categoryData = []; + let values = []; + + rawData.forEach(item => { + categoryData.push(item.slice(0, 1)[0]); + values.push(item.slice(1)); + }); + return { categoryData, values }; +}; + +const getOptions = (getThemeColor, data, zoomStart, zoomEnd) => ({ + tooltip: { + trigger: 'axis', + padding: [7, 10], + backgroundColor: getThemeColor('gray-100'), + borderColor: getThemeColor('gray-300'), + textStyle: { color: getThemeColor('gray-1100') }, + borderWidth: 1 + }, + xAxis: { + type: 'category', + data: data.categoryData, + scale: true, + splitLine: { show: false }, + splitNumber: 10, + min: 'dataMin', + max: 'dataMax', + boundaryGap: 1, + axisPointer: { + lineStyle: { + color: getThemeColor('gray-300'), + type: 'dashed' + } + }, + axisLine: { + lineStyle: { + color: getThemeColor('gray-300'), + type: 'solid' + } + }, + axisTick: { show: false }, + axisLabel: { + color: getThemeColor('gray-600'), + formatter: value => dayjs(value).format('MMM D'), + margin: 15, + fontWeight: 500 + } + }, + yAxis: { + scale: true, + position: 'right', + axisPointer: { show: false }, + splitLine: { + lineStyle: { + color: getThemeColor('gray-200'), + type: 'dashed' + } + }, + boundaryGap: 0, + axisLabel: { + show: true, + color: getThemeColor('gray-600'), + margin: 15, + fontWeight: 500 + }, + axisTick: { show: false }, + axisLine: { show: false } + }, + dataZoom: [ + { + type: 'inside', + start: zoomStart, + end: zoomEnd + } + ], + + series: [ + { + name: 'candlestick', + type: 'candlestick', + data: data.values, + itemStyle: { + color: getThemeColor('warning'), + color0: getThemeColor('primary'), + borderColor: getThemeColor('warning'), + borderColor0: getThemeColor('primary') + } + } + ], + grid: { + right: 20, + left: 3, + bottom: 0, + top: 14, + outerBoundsMode: 'same', + outerBoundsContain: 'axisLabel' + } +}); + +const CandleChartBody = ( + { data, zoomStart, zoomEnd, ref, ...rest } +) => { + const { getThemeColor } = useAppContext(); + const chartData = splitData(data); + + return ( + + ); +}; + +export default CandleChartBody; diff --git a/src/components/dashboards/saas/candle-chart/Stat.jsx b/src/components/dashboards/saas/candle-chart/Stat.jsx new file mode 100644 index 0000000..a8d9b24 --- /dev/null +++ b/src/components/dashboards/saas/candle-chart/Stat.jsx @@ -0,0 +1,35 @@ +import React from 'react'; +import Flex from 'components/common/Flex'; +import { Col } from 'react-bootstrap'; +import SubtleBadge from 'components/common/SubtleBadge'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import classNames from 'classnames'; + +const Stat = ({ statInfo: { title, grow, amount }, isLast }) => { + return ( + +
    +
    {title}
    + +
    {amount}
    + + {' '} + {grow.growAmount}% + +
    +
    + + ); +}; + +export default Stat; diff --git a/src/components/dashboards/saas/gross-revenue/GrossRevenue.jsx b/src/components/dashboards/saas/gross-revenue/GrossRevenue.jsx new file mode 100644 index 0000000..cde20d5 --- /dev/null +++ b/src/components/dashboards/saas/gross-revenue/GrossRevenue.jsx @@ -0,0 +1,180 @@ +import React, { useState, useEffect, useRef } from 'react'; +import { Card, Col, Form, Row, Table, Button } from 'react-bootstrap'; +import Flex from 'components/common/Flex'; +import SubtleBadge from 'components/common/SubtleBadge'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import classNames from 'classnames'; +import GrossRevenueChart from './GrossRevenueChart'; +import FalconLink from 'components/common/FalconLink'; + +const months = [ + 'Jan', + 'Feb', + 'Mar', + 'Apr', + 'May', + 'Jun', + 'Jul', + 'Aug', + 'Sep', + 'Oct', + 'Nov', + 'Dec' +]; + +const grossTableRows = [ + { + id: 1, + title: 'Point of sale', + revenue: '$791.64', + marketValue: { + up: false, + value: '13%' + } + }, + { + id: 2, + title: 'Online Store', + revenue: '$113.86', + marketValue: { + up: true, + value: '178%' + } + }, + { + id: 3, + title: 'Online Store', + revenue: '$0.00', + marketValue: { + up: false, + value: '' + } + } +]; + +const GrossRevenue = ({ data }) => { + const [selectedMonth, setSelectedMonth] = useState(months[0]); + const [previousMonth, setPreviousMonth] = useState(months[11]); + const chartRef = useRef(null); + + useEffect(() => { + if (selectedMonth) { + const monthIndex = months.indexOf(selectedMonth) - 1; + const prevMon = monthIndex >= 0 ? months[monthIndex] : months[11]; + + setPreviousMonth(prevMon); + } + }, [selectedMonth]); + + const handleLegend = (event, name) => { + chartRef.current.getEchartsInstance().dispatchAction({ + type: 'legendToggleSelect', + name: name + }); + event.target.closest('button').classList.toggle('opacity-50'); + }; + + return ( + + + + +

    Gross revenue

    + +

    $165.50

    +
    + + 5% + +
    +
    + + + setSelectedMonth(target.value)} + > + {months.map(mon => ( + + ))} + + +
    +
    + +
    + + + {grossTableRows.map(row => ( + + + + + + ))} + +
    {row.title} + {row.revenue} + + {row.marketValue.value && ( + + )} + + {row.marketValue.value ? row.marketValue.value : '-'} +
    + +
    +
    + + + + + + + +
    + ); +}; + +export default GrossRevenue; diff --git a/src/components/dashboards/saas/gross-revenue/GrossRevenueChart.jsx b/src/components/dashboards/saas/gross-revenue/GrossRevenueChart.jsx new file mode 100644 index 0000000..9f59c88 --- /dev/null +++ b/src/components/dashboards/saas/gross-revenue/GrossRevenueChart.jsx @@ -0,0 +1,187 @@ +import React from 'react'; +import dayjs from 'dayjs'; +import { LineChart } from 'echarts/charts'; +import { + GridComponent, + LegendComponent, + TooltipComponent +} from 'echarts/components'; +import * as echarts from 'echarts/core'; +import { getDates } from 'helpers/utils'; +import { useAppContext } from 'providers/AppProvider'; +import ReactEchart from 'components/common/ReactEchart'; + +echarts.use([LineChart, TooltipComponent, GridComponent, LegendComponent]); + +const months = [ + 'Jan', + 'Feb', + 'Mar', + 'Apr', + 'May', + 'Jun', + 'Jul', + 'Aug', + 'Sep', + 'Oct', + 'Nov', + 'Dec' +]; + +const dates = month => { + return getDates( + dayjs().month(months.indexOf(month)).date(1), + dayjs() + .month(Number(months.indexOf(month)) + 1) + .date(0), + 1000 * 60 * 60 * 24 * 3 + ); +}; + +const tooltipFormatter = (params, selectedMonth, previousMonth) => { + let tooltipItem = ``; + params.forEach(el => { + const currentDate = dayjs(el.axisValue); + tooltipItem = + tooltipItem + + `
    +
    + ${el.seriesName === 'prevMonth' ? previousMonth : selectedMonth + } ${currentDate.format('DD')} : ${el.value} +
    `; + }); + return `
    + ${tooltipItem} +
    `; +}; + +const getOption = (getThemeColor, data, selectedMonth, previousMonth) => ({ + title: { + text: 'Sales over time', + left: 'left', + top: 'top', + textStyle: { + fontWeight: 500, + fontSize: 13, + fontFamily: 'poppins' + } + }, + color: getThemeColor('white'), + tooltip: { + trigger: 'axis', + padding: [7, 10], + backgroundColor: getThemeColor('gray-100'), + borderColor: getThemeColor('gray-300'), + textStyle: { color: getThemeColor('gray-1100') }, + borderWidth: 1, + formatter: params => tooltipFormatter(params, selectedMonth, previousMonth), + transitionDuration: 0 + }, + legend: { + show: false, + data: ['currentMonth', 'prevMonth'] + }, + xAxis: { + type: 'category', + data: dates(selectedMonth), + boundaryGap: 0, + axisPointer: { + lineStyle: { + color: getThemeColor('gray-300'), + type: 'dashed' + } + }, + axisLine: { + lineStyle: { + color: getThemeColor('gray-300'), + type: 'solid' + } + }, + axisTick: { show: false }, + axisLabel: { + color: getThemeColor('gray-400'), + margin: 15, + formatter: value => dayjs(value).format('MMM DD') + }, + splitLine: { + show: true, + lineStyle: { + color: getThemeColor('gray-300'), + type: 'dashed' + } + } + }, + yAxis: { + type: 'value', + axisPointer: { show: false }, + splitLine: { + lineStyle: { + color: getThemeColor('gray-300') + } + }, + boundaryGap: 0, + axisLabel: { + show: true, + color: getThemeColor('gray-400'), + margin: 15 + }, + axisTick: { show: false }, + axisLine: { show: false } + }, + series: [ + { + name: 'prevMonth', + type: 'line', + data: data[previousMonth], + lineStyle: { color: getThemeColor('gray-300') }, + itemStyle: { + borderColor: getThemeColor('gray-300'), + borderWidth: 2 + }, + symbol: 'none', + smooth: false, + emphasis: { + scale: true + } + }, + { + name: 'currentMonth', + type: 'line', + data: data[selectedMonth], + lineStyle: { color: getThemeColor('primary') }, + itemStyle: { + borderColor: getThemeColor('primary'), + borderWidth: 2 + }, + symbol: 'none', + smooth: false, + emphasis: { + scale: true + } + } + ], + grid: { + right: -2, + left: 2, + bottom: 8, + top: 40, + outerBoundsMode: 'same', + outerBoundsContain: 'axisLabel' + } +}); + +const GrossRevenueChart = ( + { data, selectedMonth, previousMonth, ref, ...rest } +) => { + const { getThemeColor } = useAppContext(); + return ( + + ); +} + +export default GrossRevenueChart; diff --git a/src/components/dashboards/saas/index.jsx b/src/components/dashboards/saas/index.jsx new file mode 100644 index 0000000..b49daa3 --- /dev/null +++ b/src/components/dashboards/saas/index.jsx @@ -0,0 +1,84 @@ +import React from 'react'; +import { Col, Row } from 'react-bootstrap'; +import LinePayment from './line-payment/LinePayment'; +import { + payment, + activeUser, + transactionSummary, + grossRevenue, + candleChartData +} from 'data/dashboard/saas'; +import SaasActiveUser from './SaasActiveUser'; +import SaasRevenue from './SaasRevenue'; +import SaasConversion from './SaasConversion'; +import DepositeStatus from './DepositeStatus'; +import StatisticsCards from './stats-cards/StatisticsCards'; +import { users, files } from 'data/dashboard/default'; +import ActiveUsers from '../default/ActiveUsers'; +import SharedFiles from '../default/SharedFiles'; +import BandwidthSaved from '../default/BandwidthSaved'; +import DoMoreCard from './DoMoreCard'; +import TransactionSummary from './TransactionSummary'; +import GrossRevenue from './gross-revenue/GrossRevenue'; +import CandleChart from './candle-chart/CandleChart'; + +const Saas = () => { + return ( + <> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +}; + +export default Saas; diff --git a/src/components/dashboards/saas/line-payment/LinePayment.jsx b/src/components/dashboards/saas/line-payment/LinePayment.jsx new file mode 100644 index 0000000..0b5e20c --- /dev/null +++ b/src/components/dashboards/saas/line-payment/LinePayment.jsx @@ -0,0 +1,49 @@ +import React, { useRef, useState } from 'react'; +import { Card, Col, Form, Row } from 'react-bootstrap'; +import Flex from 'components/common/Flex'; +import LinePaymentChart from './LinePaymentChart'; + +const LinePayment = ({ data }) => { + const chartRef = useRef(null); + const [paymentStatus, setPaymentStatus] = useState('successful'); + + return ( + + + + +

    Today $764.39

    +

    + Yesterday $684.87 +

    + + + setPaymentStatus(e.target.value)} + > + + + + + +
    + +
    +
    + ); +}; + +export default LinePayment; diff --git a/src/components/dashboards/saas/line-payment/LinePaymentChart.jsx b/src/components/dashboards/saas/line-payment/LinePaymentChart.jsx new file mode 100644 index 0000000..085fc84 --- /dev/null +++ b/src/components/dashboards/saas/line-payment/LinePaymentChart.jsx @@ -0,0 +1,155 @@ +import React from 'react'; +import { useAppContext } from 'providers/AppProvider'; +import { LineChart } from 'echarts/charts'; +import { + GridComponent, + LegendComponent, + TooltipComponent +} from 'echarts/components'; +import * as echarts from 'echarts/core'; +import { rgbaColor } from 'helpers/utils'; +import ReactEchart from 'components/common/ReactEchart'; + +echarts.use([LineChart, TooltipComponent, GridComponent, LegendComponent]); + +const getOption = (getThemeColor, data, paymentStatus, isDark) => ({ + tooltip: { + trigger: 'axis', + axisPointer: { + type: 'none' + }, + padding: [7, 10], + backgroundColor: getThemeColor('gray-100'), + borderColor: getThemeColor('gray-300'), + borderWidth: 1, + transitionDuration: 0, + textStyle: { + fontWeight: 500, + fontSize: 12, + color: getThemeColor('gray-1100') + }, + formatter: params => `${params[0].axisValue} - ${params[0].value} USD` + }, + xAxis: { + type: 'category', + data: [ + '9:00 AM', + '10:00 AM', + '11:00 AM', + '12:00 PM', + '1:00 PM', + '2:00 PM', + '3:00 PM', + '4:00 PM', + '5:00 PM', + '6:00 PM', + '7:00 PM', + '8:00 PM' + ], + boundaryGap: false, + splitLine: { + show: true, + lineStyle: { + color: rgbaColor('#fff', 0.1) + }, + interval: 0 + }, + axisLine: { + lineStyle: { + color: rgbaColor('#fff', 0.1) + } + }, + axisTick: { + show: true, + length: 10, + lineStyle: { + color: rgbaColor('#fff', 0.1) + } + }, + axisLabel: { + color: getThemeColor('gray-400'), + fontWeight: 600, + fontSize: 12, + margin: 15, + // interval: window.innerWidth < 768 ? 'auto' : 0, + formatter: value => value.substring(0, value.length - 3) + } + }, + yAxis: { + type: 'value', + axisPointer: { + show: false + }, + splitLine: { + show: false + }, + axisLabel: { + show: false + }, + axisTick: { show: false }, + axisLine: { show: false } + }, + series: [ + { + type: 'line', + smooth: true, + data: data[paymentStatus].map(item => (item * 3.24).toFixed(2)), + symbol: 'emptyCircle', + itemStyle: { + color: isDark ? getThemeColor('primary') : getThemeColor('white') + }, + lineStyle: { + color: isDark + ? rgbaColor(getThemeColor('primary'), 0.8) + : rgbaColor(getThemeColor('white'), 0.8) + }, + areaStyle: { + color: { + type: 'linear', + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [ + { + offset: 0, + color: isDark + ? rgbaColor(getThemeColor('primary'), 0.5) + : rgbaColor('#fff', 0.5) + }, + { + offset: 1, + color: isDark + ? rgbaColor(getThemeColor('primary'), 0) + : rgbaColor('#fff', 0) + } + ] + } + }, + emphasis: { + lineStyle: { + width: 2 + } + } + } + ], + grid: { right: 15, left: 15, bottom: '15%', top: 0 } +}); + +const LinePaymentChart = ({ data, paymentStatus, style, ref }) => { + const { + config: { isDark }, + getThemeColor + } = useAppContext(); + + return ( + + ); +}; + +export default LinePaymentChart; diff --git a/src/components/dashboards/saas/stats-cards/StatisticsCard.jsx b/src/components/dashboards/saas/stats-cards/StatisticsCard.jsx new file mode 100644 index 0000000..6e3fc7b --- /dev/null +++ b/src/components/dashboards/saas/stats-cards/StatisticsCard.jsx @@ -0,0 +1,67 @@ +import React from 'react'; +import { Card } from 'react-bootstrap'; +import classNames from 'classnames'; +import Background from 'components/common/Background'; +import SubtleBadge from 'components/common/SubtleBadge'; +import { Link } from 'react-router'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import CountUp from 'react-countup'; + +const StatisticsCard = ({ stat, ...rest }) => { + const { + title, + value, + decimal, + suffix, + prefix, + valueClassName, + linkText, + link, + badgeText, + badgeBg, + image, + className + } = stat; + return ( + + + +
    + {title} + {badgeText && ( + + {badgeText} + + )} +
    +
    + +
    + + {linkText} + + +
    +
    + ); +}; + +export default StatisticsCard; diff --git a/src/components/dashboards/saas/stats-cards/StatisticsCards.jsx b/src/components/dashboards/saas/stats-cards/StatisticsCards.jsx new file mode 100644 index 0000000..2914406 --- /dev/null +++ b/src/components/dashboards/saas/stats-cards/StatisticsCards.jsx @@ -0,0 +1,18 @@ +import React from 'react'; +import { Col, Row } from 'react-bootstrap'; +import StatisticsCard from './StatisticsCard'; +import { statsData } from 'data/dashboard/saas'; + +const StatisticsCards = () => { + return ( + + {statsData.map((stat, index) => ( + + + + ))} + + ); +}; + +export default StatisticsCards; diff --git a/src/components/dashboards/support-desk/Greetings.jsx b/src/components/dashboards/support-desk/Greetings.jsx new file mode 100644 index 0000000..6cf6115 --- /dev/null +++ b/src/components/dashboards/support-desk/Greetings.jsx @@ -0,0 +1,25 @@ +import React from 'react'; +import { Card } from 'react-bootstrap'; +import greetingImage from '../../../assets/img/illustrations/ticket-greetings.png'; +import greetingsBg from '../../../assets/img/illustrations/ticket-greetings-bg.png'; +import Background from 'components/common/Background'; + +function Greetings() { + return ( + + + + +
    +
    Welcome to
    +

    + Falcon + Support Desk +

    +
    +
    +
    + ); +} + +export default Greetings; diff --git a/src/components/dashboards/support-desk/TicketStatus.jsx b/src/components/dashboards/support-desk/TicketStatus.jsx new file mode 100644 index 0000000..b8bd2c3 --- /dev/null +++ b/src/components/dashboards/support-desk/TicketStatus.jsx @@ -0,0 +1,128 @@ +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import BasicECharts from 'components/common/BasicEChart'; +import React from 'react'; +import { Badge, Card, Col, Row } from 'react-bootstrap'; +import * as echarts from 'echarts/core'; +import { LineChart } from 'echarts/charts'; +import { + GridComponent, + ToolboxComponent, + TitleComponent +} from 'echarts/components'; + +import { CanvasRenderer } from 'echarts/renderers'; + +echarts.use([ + GridComponent, + ToolboxComponent, + TitleComponent, + LineChart, + CanvasRenderer +]); + +const getOptions = data => ({ + tooltip: { + trigger: 'axis', + formatter: '{b0} : {c0}' + }, + xAxis: { + data: ['Week 1', 'Week 2', 'Week 3', 'Week 4', 'Week 5', 'Week 6'] + }, + series: [ + { + type: 'line', + data: data.dataArray, + color: data.chartColor, + smooth: true, + lineStyle: { + width: 2 + }, + areaStyle: { + color: { + type: 'linear', + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [ + { + offset: 0, + color: + data.chartColor === '#2c7be5' + ? 'rgba(44, 123, 229, .25)' + : data.chartColor === '#00d27a' + ? 'rgba(0, 210, 122, .25)' + : data.chartColor === '#27bcfd' + ? 'rgba(39, 188, 253, .25)' + : 'rgba(245, 128, 62, .25)' + }, + { + offset: 1, + color: + data.chartColor === '#2c7be5' + ? 'rgba(44, 123, 229, 0)' + : data.chartColor === '#00d27a' + ? 'rgba(0, 210, 122, 0)' + : data.chartColor === '#27bcfd' + ? 'rgba(39, 188, 253, 0)' + : 'rgba(245, 128, 62, 0)' + } + ] + } + } + } + ], + grid: { + bottom: '2%', + top: '2%', + right: '0', + left: '0px' + } +}); + +const SingleItem = ({ singleData }) => { + return ( + + + + +

    + {singleData.count} + + + {singleData.percentage} + +

    +
    {singleData.title}
    + + + + +
    + + ); +}; + +const TicketStatus = ({ data }) => { + return ( + + + + {data.map(item => ( + + ))} + + + + ); +}; + +export default TicketStatus; diff --git a/src/components/dashboards/support-desk/ToDoList.jsx b/src/components/dashboards/support-desk/ToDoList.jsx new file mode 100644 index 0000000..16b3cb9 --- /dev/null +++ b/src/components/dashboards/support-desk/ToDoList.jsx @@ -0,0 +1,90 @@ +import IconButton from 'components/common/IconButton'; +import React, { useState } from 'react'; +import { Button, Card, Form } from 'react-bootstrap'; +import { todoList } from 'data/dashboard/support-desk'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import classNames from 'classnames'; + +const ToDoItems = ({ item, index, length, handleChange }) => { + return ( +
    + + handleChange(item.id, e.target.checked)} + className={classNames('mb-1', { + 'form-check-line-through': item.completed + })} + /> + + {item.task} + + {item.title} + + + +
    + +
    +
    + ); +}; + +const ToDoList = ({ previewClassName }) => { + const [todoItems, setTodoItems] = useState(todoList); + const handleChange = (id, completed) => { + const updatedTodos = todoItems.map(item => + item.id === id ? { ...item, completed } : item + ); + setTodoItems(updatedTodos); + }; + return ( + + +
    To-do List
    + + Add + +
    + + {todoItems.map((item, index) => ( + + ))} + + + + View all + + + +
    + ); +}; + +export default ToDoList; diff --git a/src/components/dashboards/support-desk/customer-satisfaction/CustomerSatisfaction.jsx b/src/components/dashboards/support-desk/customer-satisfaction/CustomerSatisfaction.jsx new file mode 100644 index 0000000..79a33b4 --- /dev/null +++ b/src/components/dashboards/support-desk/customer-satisfaction/CustomerSatisfaction.jsx @@ -0,0 +1,66 @@ +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import CardDropdown from 'components/common/CardDropdown'; +import FalconCardHeader from 'components/common/FalconCardHeader'; +import React from 'react'; +import { Badge, Card, Col, Row } from 'react-bootstrap'; +import CustomerSatisfactionChart from './CustomerSatisfactionChart'; + +const CustomerSatisfaction = () => { + return ( + + } + /> + + + + + + +
    +
    Positive
    +
    + 150 + + + 23.3% + +
    +
    + + +
    +
    Negative
    +
    + 20 + + + 5.23% + +
    +
    + +
    +
    +
    + ); +}; + +export default CustomerSatisfaction; diff --git a/src/components/dashboards/support-desk/customer-satisfaction/CustomerSatisfactionChart.jsx b/src/components/dashboards/support-desk/customer-satisfaction/CustomerSatisfactionChart.jsx new file mode 100644 index 0000000..01768ec --- /dev/null +++ b/src/components/dashboards/support-desk/customer-satisfaction/CustomerSatisfactionChart.jsx @@ -0,0 +1,98 @@ +import React from 'react'; +import { rgbaColor } from 'helpers/utils'; +import * as echarts from 'echarts/core'; +import { + GridComponent, + LegendComponent, + TitleComponent, + TooltipComponent +} from 'echarts/components'; +import { PieChart } from 'echarts/charts'; +import { CanvasRenderer } from 'echarts/renderers'; +import { useAppContext } from 'providers/AppProvider'; +import ReactEchart from 'components/common/ReactEchart'; + +echarts.use([ + TitleComponent, + TooltipComponent, + GridComponent, + PieChart, + CanvasRenderer, + LegendComponent +]); + +const getOption = (getThemeColor, isDark) => ({ + legend: { + left: 'center', + bottom: 22, + itemWidth: 12, + itemHeight: 12, + borderRadius: 0, + icon: 'circle', + inactiveColor: getThemeColor('gray-400'), + inactiveBorderColor: 'transparent', + textStyle: { + color: getThemeColor('gray-600'), + fontSize: 12, + fontFamily: 'Poppins', + fontWeight: '500' + }, + itemGap: 16 + }, + series: [ + { + type: 'pie', + radius: '70%', + label: { + show: false + }, + center: ['50%', '45%'], + itemStyle: { + borderWidth: 2, + borderColor: isDark ? '#121E2D' : getThemeColor('gray-100') + }, + data: [ + { + value: 1100, + name: 'Positive', + itemStyle: { + color: getThemeColor('primary') + } + }, + { + value: 550, + name: 'Nagative', + itemStyle: { + color: rgbaColor(getThemeColor('primary'), 0.5) + } + } + ] + } + ], + tooltip: { + trigger: 'item', + padding: [7, 10], + backgroundColor: getThemeColor('gray-100'), + borderColor: getThemeColor('gray-300'), + textStyle: { color: getThemeColor('gray-1100') }, + borderWidth: 1, + transitionDuration: 0, + axisPointer: { + type: 'none' + } + } +}); + +const CustomerSatisfactionChart = () => { + const { config, getThemeColor } = useAppContext(); + const { isDark } = config; + return ( + + ); +}; + +export default CustomerSatisfactionChart; diff --git a/src/components/dashboards/support-desk/index.jsx b/src/components/dashboards/support-desk/index.jsx new file mode 100644 index 0000000..4187ac8 --- /dev/null +++ b/src/components/dashboards/support-desk/index.jsx @@ -0,0 +1,53 @@ +import React from 'react'; +import { Col, Row } from 'react-bootstrap'; +import { + statusData, + unresolvedTickets, + numbersOfTickets, + tickets +} from 'data/dashboard/support-desk'; +import Greetings from './Greetings'; +import TicketStatus from './TicketStatus'; +import UnresolvedTickets from './unresolved-tickets/UnresolvedTickets'; +import NumberOfTickets from './number-of-tickets/NumberOfTickets'; +import CustomerSatisfaction from './customer-satisfaction/CustomerSatisfaction'; +import ToDoList from './ToDoList'; +import UnsolvedTickets from './unsolved-tickets/UnsolvedTickets'; + +const SupportDesk = () => { + return ( + <> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +}; + +export default SupportDesk; diff --git a/src/components/dashboards/support-desk/number-of-tickets/NumberOfTickets.jsx b/src/components/dashboards/support-desk/number-of-tickets/NumberOfTickets.jsx new file mode 100644 index 0000000..0b4435a --- /dev/null +++ b/src/components/dashboards/support-desk/number-of-tickets/NumberOfTickets.jsx @@ -0,0 +1,173 @@ +import React, { useRef } from 'react'; +import classNames from 'classnames'; +import { Badge, Card, Col, Form, Row } from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import NumberOfTicketsChart from './NumberOfTicketsChart'; + +const FormCheck = ({ title, id, inputClass, checkBoxClass, handleLegend }) => { + return ( + + handleLegend(event, title)} + type="checkbox" + id={id} + defaultChecked + className={classNames( + inputClass, + 'dot mt-0 shadow-none remove-checked-icon rounded-circle cursor-pointer' + )} + /> + + {title} + + + ); +}; + +const TicketsCategory = ({ title, number, percentage, icon, badgeColor }) => { + return ( +
    +
    + {number} + + + {percentage} + +
    +
    {title}
    +
    + ); +}; + +const NumberOfTickets = ({ data }) => { + const chartRef = useRef(null); + const handleLegend = (event, name) => { + chartRef.current.getEchartsInstance().dispatchAction({ + type: 'legendToggleSelect', + name: name + }); + }; + return ( + + +
    Number of Tickets
    + + + + + + + + + + +
    + +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + View all reports + + + + + +
    + ); +}; + +export default NumberOfTickets; diff --git a/src/components/dashboards/support-desk/number-of-tickets/NumberOfTicketsChart.jsx b/src/components/dashboards/support-desk/number-of-tickets/NumberOfTicketsChart.jsx new file mode 100644 index 0000000..cbe35bc --- /dev/null +++ b/src/components/dashboards/support-desk/number-of-tickets/NumberOfTicketsChart.jsx @@ -0,0 +1,161 @@ +import React from 'react'; +import { BarChart } from 'echarts/charts'; +import { + GridComponent, + LegendComponent, + TitleComponent, + TooltipComponent +} from 'echarts/components'; +import { CanvasRenderer } from 'echarts/renderers'; +import * as echarts from 'echarts/core'; +import { getPastDates, rgbaColor } from 'helpers/utils'; +import dayjs from 'dayjs'; +import { useAppContext } from 'providers/AppProvider'; +import ReactEchart from 'components/common/ReactEchart'; + +echarts.use([ + TitleComponent, + TooltipComponent, + GridComponent, + BarChart, + CanvasRenderer, + LegendComponent +]); + +const getOption = (getThemeColor, data, isDark) => ({ + color: [ + getThemeColor('primary'), + isDark ? '#1E4C88' : '#94BCF1', + isDark ? '#1A3A64' : '#C0D8F7', + isDark ? '#225FAE' : '#6AA3ED' + ], + tooltip: { + trigger: 'item', + padding: [7, 10], + backgroundColor: getThemeColor('gray-100'), + borderColor: getThemeColor('gray-300'), + textStyle: { color: getThemeColor('gray-900') }, + borderWidth: 1, + transitionDuration: 0, + axisPointer: { + type: 'none' + }, + formatter: function (params) { + return `
    ${params.seriesName}
    +
    +
    +
    + ${dayjs(params.name).format('MMM DD')} : +
    + ${params.value} +
    `; + } + }, + legend: { + show: false + }, + xAxis: { + data: getPastDates(6), + splitLine: { show: false }, + splitArea: { show: false }, + axisLabel: { + formatter: value => dayjs(value).format('MMM DD'), + color: getThemeColor('gray-600') + }, + axisLine: { + lineStyle: { + color: getThemeColor('gray-300'), + type: 'dashed' + } + }, + axisTick: { + show: false + } + }, + yAxis: { + splitLine: { + lineStyle: { + color: getThemeColor('gray-300'), + type: 'dashed' + } + }, + axisLabel: { + color: getThemeColor('gray-600') + } + }, + series: [ + { + name: 'On Hold Tickets', + type: 'bar', + stack: 'one', + emphasis: { + itemStyle: { + shadowColor: rgbaColor(getThemeColor('gray-1100'), 0.3) + } + }, + data: data[0] + }, + { + name: 'Open Tickets', + type: 'bar', + stack: 'two', + emphasis: { + itemStyle: { + shadowColor: rgbaColor(getThemeColor('gray-1100'), 0.3) + } + }, + data: data[1] + }, + { + name: 'Due Tickets', + type: 'bar', + stack: 'three', + emphasis: { + itemStyle: { + shadowColor: rgbaColor(getThemeColor('gray-1100'), 0.3) + } + }, + data: data[2] + }, + { + name: 'Unassigned Tickets', + type: 'bar', + stack: 'four', + emphasis: { + itemStyle: { + shadowColor: rgbaColor(getThemeColor('gray-1100'), 0.3) + } + }, + data: data[3] + } + ], + itemStyle: { + borderRadius: [3, 3, 0, 0] + }, + + barWidth: '12px', + grid: { + top: 22, + bottom: 0, + left: -3, + right: -2, + outerBoundsMode: 'same', + outerBoundsContain: 'axisLabel' + } +}); + +const NumberOfTicketsChart = ({ data, ref }) => { + const { config, getThemeColor } = useAppContext(); + const { isDark } = config; + return ( + + ); +}; + +export default NumberOfTicketsChart; diff --git a/src/components/dashboards/support-desk/unresolved-tickets/UnresolvedTickets.jsx b/src/components/dashboards/support-desk/unresolved-tickets/UnresolvedTickets.jsx new file mode 100644 index 0000000..fc2027d --- /dev/null +++ b/src/components/dashboards/support-desk/unresolved-tickets/UnresolvedTickets.jsx @@ -0,0 +1,149 @@ +import React, { useRef } from 'react'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import CardDropdown from 'components/common/CardDropdown'; +import FalconCardHeader from 'components/common/FalconCardHeader'; +import { Card, Col, Form, Row } from 'react-bootstrap'; +import UnresolvedTicktsChart from './UnresolvedTicktsChart'; + +const UnresolvedTickets = ({ data }) => { + const chartRef = useRef(null); + const handleLegend = (event, name) => { + chartRef.current.getEchartsInstance().dispatchAction({ + type: 'legendToggleSelect', + name: name + }); + }; + return ( + + } + /> + + + + + +
    + + 14 + + handleLegend(event, 'Urgent')} + type="checkbox" + id="urgent" + defaultChecked + className="small-dot mt-0 shadow-none remove-checked-icon rounded-circle cursor-pointer" + /> +
    + + Urgent + + + +
    + + 16 + + handleLegend(event, 'High')} + type="checkbox" + id="high" + defaultChecked + className="small-dot mt-0 shadow-none remove-checked-icon rounded-circle cursor-pointer form-check-input-info" + /> +
    + + High + + + +
    + + 53 + + handleLegend(event, 'Medium')} + type="checkbox" + id="medium" + defaultChecked + className="small-dot mt-0 shadow-none remove-checked-icon rounded-circle cursor-pointer bg-priority-medium" + /> +
    + + Medium + + + +
    + + 25 + + handleLegend(event, 'Low')} + type="checkbox" + id="low" + defaultChecked + className="small-dot mt-0 shadow-none remove-checked-icon rounded-circle cursor-pointer bg-priority-low" + /> +
    + + Low + + +
    + + + + +
    +
    + + + View all + + + +
    + ); +}; + +export default UnresolvedTickets; diff --git a/src/components/dashboards/support-desk/unresolved-tickets/UnresolvedTicktsChart.jsx b/src/components/dashboards/support-desk/unresolved-tickets/UnresolvedTicktsChart.jsx new file mode 100644 index 0000000..8a830df --- /dev/null +++ b/src/components/dashboards/support-desk/unresolved-tickets/UnresolvedTicktsChart.jsx @@ -0,0 +1,153 @@ +import React from 'react'; +import { BarChart } from 'echarts/charts'; +import { + GridComponent, + LegendComponent, + TitleComponent, + TooltipComponent +} from 'echarts/components'; +import { CanvasRenderer } from 'echarts/renderers'; +import * as echarts from 'echarts/core'; +import { rgbaColor } from 'helpers/utils'; +import { useAppContext } from 'providers/AppProvider'; +import ReactEchart from 'components/common/ReactEchart'; + +echarts.use([ + TitleComponent, + TooltipComponent, + GridComponent, + BarChart, + CanvasRenderer, + LegendComponent +]); + +const getOption = (getThemeColor, data, isDark) => ({ + color: [ + getThemeColor('primary'), + getThemeColor('info'), + isDark ? '#229BD2' : '#73D3FE', + isDark ? '#195979' : '#A9E4FF' + ], + tooltip: { + trigger: 'item', + padding: [7, 10], + backgroundColor: getThemeColor('gray-100'), + borderColor: getThemeColor('gray-300'), + textStyle: { color: getThemeColor('gray-900') }, + borderWidth: 1, + transitionDuration: 0, + axisPointer: { + type: 'none' + } + }, + legend: { + show: false + }, + xAxis: { + data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'], + splitLine: { show: false }, + splitArea: { show: false }, + + axisLabel: { + color: getThemeColor('gray-600'), + margin: 8 + }, + + axisLine: { + lineStyle: { + color: getThemeColor('gray-300'), + type: 'dashed' + } + }, + axisTick: { + show: false + } + }, + yAxis: { + splitLine: { + lineStyle: { + color: getThemeColor('gray-300'), + type: 'dashed' + } + }, + axisLabel: { + color: getThemeColor('gray-600') + }, + position: 'right' + }, + series: [ + { + name: 'Urgent', + type: 'bar', + stack: 'one', + emphasis: { + itemStyle: { + shadowColor: rgbaColor(getThemeColor('gray-1100'), 0.3) + } + }, + data: data[0] + }, + { + name: 'High', + type: 'bar', + stack: 'one', + emphasis: { + itemStyle: { + shadowColor: rgbaColor(getThemeColor('gray-1100'), 0.3) + } + }, + data: data[1] + }, + { + name: 'Medium', + type: 'bar', + stack: 'one', + emphasis: { + itemStyle: { + shadowColor: rgbaColor(getThemeColor('gray-1100'), 0.3) + } + }, + data: data[2] + }, + { + name: 'Low', + type: 'bar', + stack: 'one', + emphasis: { + itemStyle: { + shadowColor: rgbaColor(getThemeColor('gray-1100'), 0.3) + } + }, + data: data[3], + itemStyle: { + borderRadius: [2, 2, 0, 0] + } + } + ], + + barWidth: '15px', + grid: { + top: 21, + bottom: 18, + left: 0, + right: -1, + outerBoundsMode: 'same', + outerBoundsContain: 'axisLabel' + } +}); + +const UnresolvedTicktsChart = ({ data, ref }) => { + const { config, getThemeColor } = useAppContext(); + + const { isDark } = config; + return ( + + ); +}; + +export default UnresolvedTicktsChart; diff --git a/src/components/dashboards/support-desk/unsolved-tickets/UnsolvedTickets.jsx b/src/components/dashboards/support-desk/unsolved-tickets/UnsolvedTickets.jsx new file mode 100644 index 0000000..1614152 --- /dev/null +++ b/src/components/dashboards/support-desk/unsolved-tickets/UnsolvedTickets.jsx @@ -0,0 +1,51 @@ +import React, { useState } from 'react'; +import { Card } from 'react-bootstrap'; +import AdvanceTableProvider from 'providers/AdvanceTableProvider'; +import UnsolvedTicketsHeader from './UnsolvedTicketsHeader'; +import AdvanceTable from 'components/common/advance-table/AdvanceTable'; +import AdvanceTableFooter from 'components/common/advance-table/AdvanceTableFooter'; +import useSupportDeskTable from 'hooks/useSupportDeskTable'; +import CardLayout from 'components/app/support-desk/tickets-layout/CardLayout'; + +const UnsolvedTickets = () => { + const [layout, setLayout] = useState('tableView'); + + const table = useSupportDeskTable({ + selection: true, + sortable: true, + pagination: true, + perPage: 6, + selectionColumnWidth: 52 + }); + + return ( + + + + + + {layout === 'tableView' ? ( + + + + ) : ( + + + + )} + + + + + + ); +}; + +export default UnsolvedTickets; diff --git a/src/components/dashboards/support-desk/unsolved-tickets/UnsolvedTicketsHeader.jsx b/src/components/dashboards/support-desk/unsolved-tickets/UnsolvedTicketsHeader.jsx new file mode 100644 index 0000000..53328f1 --- /dev/null +++ b/src/components/dashboards/support-desk/unsolved-tickets/UnsolvedTicketsHeader.jsx @@ -0,0 +1,133 @@ +import React from 'react'; +import { Button, Col, Dropdown, Form, Row } from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { useAdvanceTableContext } from 'providers/AdvanceTableProvider'; +import IconButton from 'components/common/IconButton'; +import AdvanceTableSearchBox from 'components/common/advance-table/AdvanceTableSearchBox'; + +const UnsolvedTicketsHeader = ({ setLayout, layout }) => { + const { getSelectedRowModel } = useAdvanceTableContext(); + + return ( +
    + + +
    Unsolved Tickets
    + + + + +
    +
    +
    + + Filter + +
    + {getSelectedRowModel().rows.length > 0 ? ( +
    + + + + + + + +
    + ) : ( +
    + + + + {layout === 'tableView' ? 'Table view' : 'Card view'} + + + + +
    + setLayout('tableView')} + > + Table View + + setLayout('cardView')} + > + Card View + +
    +
    +
    + + + New + + + + + Export + + + + + + + + +
    + + View + + Export + + Remove +
    +
    +
    +
    + )} +
    +
    + ); +}; + +export default UnsolvedTicketsHeader; diff --git a/src/components/doc-components/Accordion.jsx b/src/components/doc-components/Accordion.jsx new file mode 100644 index 0000000..88916ca --- /dev/null +++ b/src/components/doc-components/Accordion.jsx @@ -0,0 +1,201 @@ +import React from 'react'; +import { reactBootstrapDocsUrl } from 'helpers/utils'; +import { Button } from 'react-bootstrap'; +import PageHeader from 'components/common/PageHeader'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import FalconComponentCard from 'components/common/FalconComponentCard'; + +const basicExampleCode = ` + + + Accordion Item #1 + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim + veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea + commodo consequat. Duis aute irure dolor in reprehenderit in voluptate + velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat + cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id + est laborum. + + + + Accordion Item #2 + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim + veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea + commodo consequat. Duis aute irure dolor in reprehenderit in voluptate + velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat + cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id + est laborum. + + + +`; + +const fullyCollapsedStateCode = ` + + + Accordion Item #1 + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim + veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea + commodo consequat. Duis aute irure dolor in reprehenderit in voluptate + velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat + cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id + est laborum. + + + + Accordion Item #2 + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim + veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea + commodo consequat. Duis aute irure dolor in reprehenderit in voluptate + velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat + cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id + est laborum. + + + +`; + +const flushCode = ` + + + Accordion Item #1 + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim + veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea + commodo consequat. Duis aute irure dolor in reprehenderit in voluptate + velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat + cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id + est laborum. + + + + Accordion Item #2 + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim + veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea + commodo consequat. Duis aute irure dolor in reprehenderit in voluptate + velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat + cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id + est laborum. + + + +`; + +const customAccordionCode = ` +function CustomToggle({ children, eventKey }) { + const decoratedOnClick = useAccordionButton(eventKey) + return ( + + ); +} + +function Example() { + return ( + + + + Click me! + + + Hello! I'm the body + + + + + Click me! + + + Hello! I'm another body + + + + ); +} + +render()`; + +const Accordion = () => { + return ( + <> + + + + + + + + + + + +

    + If you want your Accordion to start in a + fully-collapsed state, then simply don't pass in a{' '} + defaultActiveKey prop to Accordion. +

    +
    + +
    + + + +

    + Add flush to remove the default background-color, some + borders, and some rounded corners to render accordions edge-to-edge + with their parent container. +

    +
    + +
    + + + +

    + You can still create card-based accordions like those in Bootstrap + 4. You can hook into the Accordion toggle functionality via{' '} + useAccordionButton to make custom toggle components. +

    +
    + +
    + + ); +}; + +export default Accordion; diff --git a/src/components/doc-components/AdvanceSelect.jsx b/src/components/doc-components/AdvanceSelect.jsx new file mode 100644 index 0000000..e314390 --- /dev/null +++ b/src/components/doc-components/AdvanceSelect.jsx @@ -0,0 +1,219 @@ +import React from 'react'; +import { Button, Form } from 'react-bootstrap'; +import PageHeader from 'components/common/PageHeader'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import FalconComponentCard from 'components/common/FalconComponentCard'; +import Select from 'react-select'; +import * as yup from 'yup'; +import { Controller, useForm } from 'react-hook-form'; +import MultiSelect from 'components/common/MultiSelect'; +import { yupResolver } from '@hookform/resolvers/yup'; +import classNames from 'classnames'; + +const singleSelectCode = `function SingleSelectExample() { + const [value, setValue] = useState(null); + const organizerOptions = [ + { value: '1', label: ' Massachusetts Institute of Technology' }, + { value: '2', label: 'University of Chicago' }, + { value: '3', label: 'GSAS Open Labs At Harvard' }, + { value: '4', label: 'California Institute of Technology' } + ]; + return ( + setValue(value)} + /> + ); +}`; + +const reactSelectValidationCode = ` + const schema = yup + .object({ + tags: yup.array().min(1, 'This field is required.').required() + }) + .required(); + + const ReactSelectValidation = () => { + const { + handleSubmit, + control, + formState: { errors } + } = useForm({ + resolver: yupResolver(schema) + }); + + const tagOptions = [ + { value: 'gamingLaptop', label: 'Gaming laptop' }, + { value: 'ultrabooks', label: 'Ultrabooks' }, + { value: 'budgetLaptop', label: 'Budget laptop' }, + { value: 'professional', label: 'Professional' } + ]; + + const onSubmit = data => { + console.log(data); + }; + + return ( +
    + + ( + + )} + control={control} + /> + + {errors.tags?.message} + + + {/*
    {errors.tags?.message}
    */} + + +
    + ); + };`; + +const Placeholder = () => ( + <> + + + + + + + + + + + + + + + + + + + + + +); + +export default Placeholder; + +const schema = yup + .object({ + tags: yup.array().min(1).required('This field is required.') + }) + .required(); + +const ReactSelectValidation = () => { + const { + handleSubmit, + control, + formState: { errors } + } = useForm({ + resolver: yupResolver(schema) + }); + + const tagOptions = [ + { value: 'gamingLaptop', label: 'Gaming laptop' }, + { value: 'ultrabooks', label: 'Ultrabooks' }, + { value: 'budgetLaptop', label: 'Budget laptop' }, + { value: 'professional', label: 'Professional' } + ]; + + const onSubmit = data => { + console.log(data); + }; + + return ( +
    + + ( + + )} + control={control} + /> + + {errors.tags?.message} + + + +
    + ); +}; diff --git a/src/components/doc-components/AdvanceTableExamples.jsx b/src/components/doc-components/AdvanceTableExamples.jsx new file mode 100644 index 0000000..5d4e75d --- /dev/null +++ b/src/components/doc-components/AdvanceTableExamples.jsx @@ -0,0 +1,589 @@ +import React from 'react'; +import { Button } from 'react-bootstrap'; +import PageHeader from 'components/common/PageHeader'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import FalconComponentCard from 'components/common/FalconComponentCard'; +import IconButton from 'components/common/IconButton'; +import AdvanceTable from 'components/common/advance-table/AdvanceTable'; +import AdvanceTableFooter from 'components/common/advance-table/AdvanceTableFooter'; +import AdvanceTableSearchBox from 'components/common/advance-table/AdvanceTableSearchBox'; +import AdvanceTablePagination from 'components/common/advance-table/AdvanceTablePagination'; +import useAdvanceTable from 'hooks/useAdvanceTable'; +import AdvanceTableProvider, { + useAdvanceTableContext +} from 'providers/AdvanceTableProvider'; + +const data = `const columns = [ + { + accessorKey: 'name', + header: 'Name', + meta: { + headerProps: { className: 'text-900' } + }, + }, + { + accessorKey: 'email', + header: 'Email', + meta: { + headerProps: { className: 'text-900' } + }, + }, + { + accessorKey: 'age', + header: 'Age', + meta: { + headerProps: { className: 'text-900' } + }, + } +]; + +const data = [ + { + name: 'Anna', + email: 'anna@example.com', + age: 18 + }, + { + name: 'Homer', + email: 'homer@example.com', + age: 35 + }, + { + name: 'Oscar', + email: 'oscar@example.com', + age: 52 + }, + { + name: 'Emily', + email: 'emily@example.com', + age: 30 + }, + { + name: 'Jara', + email: 'jara@example.com', + age: 25 + }, + { + name: 'Clark', + email: 'clark@example.com', + age: 39 + }, + { + name: 'Jennifer', + email: 'jennifer@example.com', + age: 52 + }, + { + name: 'Tony', + email: 'tony@example.com', + age: 30 + }, + { + name: 'Tom', + email: 'tom@example.com', + age: 25 + }, + { + name: 'Michael', + email: 'michael@example.com', + age: 39 + }, + { + name: 'Antony', + email: 'antony@example.com', + age: 39 + }, + { + name: 'Raymond', + email: 'raymond@example.com', + age: 52 + }, + { + name: 'Marie', + email: 'marie@example.com', + age: 30 + }, + { + name: 'Cohen', + email: 'cohen@example.com', + age: 25 + }, + { + name: 'Rowen', + email: 'rowen@example.com', + age: 39 + } +];`; + +const exampleCode = `${data} + +function AdvanceTableExample() { + + const table = useAdvanceTable({ + data, + columns, + sortable: true, + pagination: true, + perPage: 5 + }); + + return( + + +
    + +
    +
    + ) +} + +render() +`; + +const paginationNumberingCode = `${data} + +function AdvanceTableExample() { + + const table = useAdvanceTable({ + data, + columns, + sortable: true, + pagination: true, + perPage: 5 + }); + + return( + + +
    + +
    +
    + ) +} + +render() +`; + +const selectionCode = `const columns = [ + { + accessorKey: 'name', + header: 'Name', + meta: { + headerProps: { className: 'text-900' } + } + }, + { + accessorKey: 'email', + header: 'Email', + meta: { + headerProps: { className: 'text-900' }, + }, + cell: ({ row: { original } }) => { + const { email } = original;; + return( + + {email} + + ) + } + }, + { + accessorKey: 'age', + header: 'Age', + meta: { + headerProps: { className: 'text-900' }, + cellProps:{ + className:'fw-medium' + } + }, + } +]; + +const data = [ + { + name: 'Anna', + email: 'anna@example.com', + age: 18 + }, + { + name: 'Homer', + email: 'homer@example.com', + age: 35 + }, + { + name: 'Oscar', + email: 'oscar@example.com', + age: 52 + }, + { + name: 'Emily', + email: 'emily@example.com', + age: 30 + }, + { + name: 'Jara', + email: 'jara@example.com', + age: 25 + } +]; + +function BulAction(){ + const { getSelectedRowModel } = useAdvanceTableContext(); + return ( + + +
    + { + getSelectedRowModel().rows.length > 0 ? + 'You have selected ' + getSelectedRowModel().rows.length + ' rows' + : + 'Selection Example' + } +
    + + + {getSelectedRowModel().rows.length > 0 ? ( +
    + + + + + + + +
    + ) : ( +
    + + New + + + Export + +
    + )} + +
    + ); +}; + +function AdvanceTableExample() { + + const table = useAdvanceTable({ + data, + columns, + sortable: true, + selection: true, + pagination: true, + perPage: 5, + selectionColumnWidth: 30 + }); + + return( + + + + + ) +} + +render() +`; + +const customCellCode = `const columns = [ + { + accessorKey: 'name', + header: 'Name', + meta: { + headerProps: { className: 'text-900' } + } + }, + { + accessorKey: 'email', + header: 'Email', + meta: { + headerProps: { className: 'text-900' }, + }, + cell: ({ row: { original } }) => { + const { email } = original; + return( + + {email} + + ) + } + }, + { + accessorKey: 'age', + header: 'Age', + meta: { + headerProps: { className: 'text-900' }, + }, + cellProps:{ + className:'fw-medium' + } + } +]; + +const data = [ + { + name: 'Anna', + email: 'anna@example.com', + age: 18 + }, + { + name: 'Homer', + email: 'homer@example.com', + age: 35 + }, + { + name: 'Oscar', + email: 'oscar@example.com', + age: 52 + }, + { + name: 'Emily', + email: 'emily@example.com', + age: 30 + }, + { + name: 'Jara', + email: 'jara@example.com', + age: 25 + } +]; + +function AdvanceTableExample() { + + const table = useAdvanceTable({ + data, + columns, + sortable: true + }); + + return( + + + + ) +} + +render() +`; + +const searchableTableCode = `${data} + +function AdvanceTableExample() { + + const table = useAdvanceTable({ + data, + columns, + sortable: true, + pagination: true, + perPage: 5 + }); + + return ( + + + + + + + +
    + +
    +
    + ); +} + +render()`; + +const AdvanceTableExamples = () => ( + <> + React Table for advance features of table. React Table is a collection of hooks for building powerful tables and datagrid experiences. These hooks are lightweight, composable, and ultra-extensible, but do not render any markup or styles for you. This effectively means that React Table is a "headless" UI library"`} + className="mb-3" + > + + + + + + + + + + + + + + + + + + + + + + + + + + + + +); + +export default AdvanceTableExamples; diff --git a/src/components/doc-components/Alerts.jsx b/src/components/doc-components/Alerts.jsx new file mode 100644 index 0000000..7d40948 --- /dev/null +++ b/src/components/doc-components/Alerts.jsx @@ -0,0 +1,228 @@ +import React from 'react'; +import { Button, Tab, Alert } from 'react-bootstrap'; +import PageHeader from 'components/common/PageHeader'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import FalconComponentCard from 'components/common/FalconComponentCard'; +import { reactBootstrapDocsUrl } from 'helpers/utils'; +import IconAlert from 'components/common/IconAlert'; + +const alertCode = ` + function BasicExample() { + return ( + [ + 'primary', + 'secondary', + 'success', + 'danger', + 'warning', + 'info', + 'light', + 'dark', + ].map((variant, idx) => ( + + This is a {variant} alert—check it out! + + )) + ); + }`; + +const linkCode = ` +function linkExample() { + return ( + [ + 'primary', + 'secondary', + 'success', + 'danger', + 'warning', + 'info', + 'light', + 'dark', + ].map((variant, idx) => ( + + This is a {variant} alert with{' '} + an example link. Give it a click if you + like. + + )) + ) +}`; + +const iconAlertCode = `function IconAlertDemo({ variant }) { + const [show, setShow] = useState(true); + + if (show) { + return ( + setShow(false)}> +

    This is a {variant} alert—check it out!

    +
    + ); + } + return ; +} + +function Example() { + return ( + <> + {['success', 'danger', 'warning', 'info'].map(variant => ( + + This is a {variant} alert—check it out! + + ))} + + ); +} + +render()`; + +const dismissCodeOne = `function AlertDismissibleExample() { + const [show, setShow] = useState(true); + + if (show) { + return ( + setShow(false)} dismissible> + Oh snap! You got an error! +

    + Change this and that and try again. Duis mollis, est non commodo + luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. + Cras mattis consectetur purus sit amet fermentum. +

    +
    + ); + } + return ; + }`; + +const dismissCodeTwo = ` +function AlertDismissible() { + const [show, setShow] = useState(true); + + return ( + <> + + How's it going?! +

    + Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget + lacinia odio sem nec elit. Cras mattis consectetur purus sit amet + fermentum. +

    +
    +
    + +
    +
    + + {!show && } + + ); +} +`; +const additionalContentCode = ` + + Hey, nice to see you +

    + Aww yeah, you successfully read this important alert message. This example + text is going to run a bit longer so that you can see how spacing within an + alert works with this kind of content. +

    +
    +

    + Whenever you need to, be sure to use margin utilities to keep things nice + and tidy. +

    +
    `; + +const Alerts = () => ( + <> + + + + + + + + + + + +

    + Alerts are available for any length of text, as well as an optional + dismiss button. For proper styling, use one of the eight{' '} + variants. +

    +
    + +
    + + + +

    + For links, use the {` `} component to + provide matching colored links within any alert. +

    +
    + +
    + + + +

    + Add the dismissible prop to add a functioning dismiss + button to the Alert. +

    +
    + +
    + + + + +

    + Alerts can contain whatever content you like. Headers, paragraphs, + dividers, go crazy. +

    +
    + +
    + + +

    + You can also control the visual state directly which is great if you + want to build more complicated alerts. +

    +
    + +
    +
    + +); + +export default Alerts; diff --git a/src/components/doc-components/AnimatedIcons.jsx b/src/components/doc-components/AnimatedIcons.jsx new file mode 100644 index 0000000..9526b4b --- /dev/null +++ b/src/components/doc-components/AnimatedIcons.jsx @@ -0,0 +1,159 @@ +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import checkPrimaryLight from 'assets/img/animated-icons/check-primary-light.json'; +import heart from 'assets/img/animated-icons/heart.json'; +import infiniteLoop from 'assets/img/animated-icons/infinite-loop.json'; +import loadingSquare from 'assets/img/animated-icons/loading-square.json'; +import loading from 'assets/img/animated-icons/loading.json'; +import shoppingList from 'assets/img/animated-icons/shopping-list.json'; +import sleeping404 from 'assets/img/animated-icons/sleeping-404.json'; +import starFeedback from 'assets/img/animated-icons/star-feedback.json'; +import warningLight from 'assets/img/animated-icons/warning-light.json'; +import FalconComponentCard from 'components/common/FalconComponentCard'; +import PageHeader from 'components/common/PageHeader'; +import Lottie from 'lottie-react'; +import React from 'react'; +import { Button } from 'react-bootstrap'; + +const exampleCode = `function Animated (){ + + return ( + + + + + + + + + + + + ); +};`; + +const loadingCode = `function Animated (){ + + return ( + + + + + + + + + + + + ); +};`; + +const featuredAnimationCode = `function Animated (){ + + return ( + + + + + + + + + + + + ); +};`; + +const AnimatedIcons = () => ( + <> + + + + + + +

    + You can update colors, animation duration, and other stuff from this + excellent editor. +

    + +
    + +
    + + + + + + + + + + + + + + + +); + +export default AnimatedIcons; diff --git a/src/components/doc-components/Avatar.jsx b/src/components/doc-components/Avatar.jsx new file mode 100644 index 0000000..4532b3e --- /dev/null +++ b/src/components/doc-components/Avatar.jsx @@ -0,0 +1,233 @@ +import React from 'react'; +import { Row, Col, Card } from 'react-bootstrap'; +import PageHeader from 'components/common/PageHeader'; +import Avatar, { AvatarGroup } from 'components/common/Avatar'; +import FalconEditor from 'components/common/FalconEditor'; + +import FalconComponentCard from 'components/common/FalconComponentCard'; +import user1 from 'assets/img/team/1.jpg'; +import user2 from 'assets/img/team/2.jpg'; +import user3 from 'assets/img/team/3.jpg'; + +const circularCode = ``; + +const squareCode = ``; + +const softCode = ``; + +const contentCode = ``; + +const nameCode = ``; + +const emojiCode = ``; + +const statusCode = ` + + + + + + + + + + + + +`; + +const sizesCode = ` + + + + + + + + + + + + + + + + + + + + + + + + +`; + +const groupCode = ` +function AvatarGroupExample() { + return ['s', 'm', 'l', 'xl', '2xl', '3xl', '4xl', '5xl'].map(size => ( + + + + + + )); +}`; +const groupDenseCode = ` +function AvatarGroupExample() { + return ['s', 'm', 'l', 'xl', '2xl', '3xl', '4xl', '5xl'].map(size => ( + + + + + + )); +}`; + +const Avatars = () => { + return ( + <> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +}; + +export default Avatars; diff --git a/src/components/doc-components/Backgrounds.jsx b/src/components/doc-components/Backgrounds.jsx new file mode 100644 index 0000000..d64ad97 --- /dev/null +++ b/src/components/doc-components/Backgrounds.jsx @@ -0,0 +1,52 @@ +import React from 'react'; +import PageHeader from 'components/common/PageHeader'; +import FalconComponentCard from 'components/common/FalconComponentCard'; +import Background from 'components/common/Background'; +import gallery2 from 'assets/img/gallery/2.jpg'; +import beachMp4 from 'assets/video/beach.mp4'; +import beachWebm from 'assets/video/beach.webm'; +import beachImage from 'assets/video/beach.jpg'; + +const imageCode = `
    + +
    +

    Image Background

    +
    +
    `; + +const videoCode = `
    + +
    +

    Video Background

    +
    +
    `; + +const Backgrounds = () => ( + <> + + + + + + + + + + + + +); + +export default Backgrounds; diff --git a/src/components/doc-components/Badges.jsx b/src/components/doc-components/Badges.jsx new file mode 100644 index 0000000..4f2e135 --- /dev/null +++ b/src/components/doc-components/Badges.jsx @@ -0,0 +1,121 @@ +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import FalconComponentCard from 'components/common/FalconComponentCard'; +import PageHeader from 'components/common/PageHeader'; +import SubtleBadge from 'components/common/SubtleBadge'; +import { reactBootstrapDocsUrl } from 'helpers/utils'; +import React from 'react'; +import { Button } from 'react-bootstrap'; + +const SubtleBadgesCode = `
    + Primary + Secondary + Success + Info + Warning + Danger + Light + Dark +
    `; + +const subtlePillBadgesCode = `
    + Primary + Secondary + Success + Info + Warning + Danger + Light + Dark +
    `; + +const solidPillBagesCode = `
    + + Primary + + + Secondary + + + Success + + + Danger + + + Warning + + + Info + + + Light + + + Dark + +
    `; + +const solidBagesCode = `
    + Primary + Secondary + Success + Danger + + Warning + + Info + + Light + + Dark +
    `; + +const Badges = () => ( + <> + + + + + + + + + + + + + + + + + + + + + + + +); + +export default Badges; diff --git a/src/components/doc-components/BootstrapCarousel.jsx b/src/components/doc-components/BootstrapCarousel.jsx new file mode 100644 index 0000000..a0d49c6 --- /dev/null +++ b/src/components/doc-components/BootstrapCarousel.jsx @@ -0,0 +1,362 @@ +import React from 'react'; +import { Button } from 'react-bootstrap'; +import PageHeader from 'components/common/PageHeader'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import FalconComponentCard from 'components/common/FalconComponentCard'; +import { reactBootstrapDocsUrl } from 'helpers/utils'; +import generic6 from 'assets/img/generic/6.jpg'; +import generic7 from 'assets/img/generic/7.jpg'; +import generic8 from 'assets/img/generic/8.jpg'; +import generic5 from 'assets/img/generic/5.jpg'; +import generic9 from 'assets/img/generic/9.jpg'; +import chat8 from 'assets/img/chat/8.jpg'; + +const exampleCode = ` + + + First slide + + + Second slide + + + Third slide + + +`; +const customStyledCode = ` + + } + prevIcon={ + + } +> + + First slide + + + Second slide + + + Third slide + + +`; + +const controlledCode = ` +function ControlledCarousel() { + const [index, setIndex] = useState(0); + + const handleSelect = (selectedIndex, e) => { + setIndex(selectedIndex); + }; + + return ( + + + First slide + + + Second slide + + + Third slide + + + ); +} +`; + +const withCaptionsCode = ` + + + First slide + +

    First slide label

    +

    Nulla vitae elit libero, a pharetra augue mollis interdum.

    +
    +
    + + Second slide + + +

    Second slide label

    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit.

    +
    +
    + + Third slide + + +

    Third slide label

    +

    Praesent commodo cursus magna, vel scelerisque nisl consectetur.

    +
    +
    +
    +`; + +const fadeCode = ` + + + First slide + + + Second slide + + + Third slide + + +`; +const intervalCode = ` + + + First slide + +

    First slide label

    +

    Nulla vitae elit libero, a pharetra augue mollis interdum.

    +
    +
    + + Second slide + + +

    Second slide label

    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit.

    +
    +
    + + Third slide + + +

    Third slide label

    +

    Praesent commodo cursus magna, vel scelerisque nisl consectetur.

    +
    +
    +
    +`; + +const darkCode = ` + + + First slide + +

    First slide label

    +

    Nulla vitae elit libero, a pharetra augue mollis interdum.

    +
    +
    + + Second slide + + +

    Second slide label

    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit.

    +
    +
    + + Third slide + + +

    Third slide label

    +

    Praesent commodo cursus magna, vel scelerisque nisl consectetur.

    +
    +
    +
    +`; + +const Carousel = () => ( + <> + + + + + + + + + + + + + + + + + + + + + +

    + You can also control the Carousel state, via the + activeIndex prop and onSelect handler. +

    +
    + +
    + + + +

    + Add the fade prop to your carousel to animate slides with + a fade transition instead of a slide. +

    +
    + +
    + + + +

    + You can specify individual intervals for each carousel item via the{' '} + interval + prop. +

    +
    + +
    + + + +

    + Add variant="dark" to the Carousel for + darker controls, indicators, and captions. +

    +
    + +
    + +); + +export default Carousel; diff --git a/src/components/doc-components/Breadcrumb.jsx b/src/components/doc-components/Breadcrumb.jsx new file mode 100644 index 0000000..f449e12 --- /dev/null +++ b/src/components/doc-components/Breadcrumb.jsx @@ -0,0 +1,55 @@ +import React from 'react'; +import { Button } from 'react-bootstrap'; +import PageHeader from 'components/common/PageHeader'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import FalconComponentCard from 'components/common/FalconComponentCard'; +import { reactBootstrapDocsUrl } from 'helpers/utils'; + +const exampleCode = ` +
    + + Home + + + Home + + Library + + + + Home + + Library + + Data + +
    +`; + +const Breadcrumb = () => ( + <> + + + + + + + + + +); + +export default Breadcrumb; diff --git a/src/components/doc-components/ButtonGroup.jsx b/src/components/doc-components/ButtonGroup.jsx new file mode 100644 index 0000000..35722ad --- /dev/null +++ b/src/components/doc-components/ButtonGroup.jsx @@ -0,0 +1,378 @@ +import React from 'react'; +import { Button } from 'react-bootstrap'; +import PageHeader from 'components/common/PageHeader'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import FalconComponentCard from 'components/common/FalconComponentCard'; +import { reactBootstrapDocsUrl } from 'helpers/utils'; + +const exampleCode = ` + + + + + +`; +const btnToolbarCode = ` + + + + + + + + + + + + + + + + +`; + +const inputGroupExampleCode = ` +<> + + + {' '} + {' '} + {' '} + + + + @ + + + + + + + {' '} + {' '} + {' '} + + + + @ + + + + +`; + +const sizingCode = ` +<> + + + + + + + + + + + + + + + + +`; + +const nestingCode = ` + + + + + + Dropdown link + Dropdown link + + +`; +const verticalVariationCode = ` + + + + + + Dropdown link + Dropdown link + + + + + + + Dropdown link + Dropdown link + + + + Dropdown link + Dropdown link + + +`; + +const toggleBtnCode = ` +function ToggleButtonExample() { + const [checked, setChecked] = useState(false); + const [radioValue, setRadioValue] = useState('1'); + + const radios = [ + { name: 'Active', value: '1' }, + { name: 'Radio', value: '2' }, + { name: 'Radio', value: '3' }, + ]; + + return ( + <> + + setChecked(e.currentTarget.checked)} + > + Checked + + +
    + + {radios.map((radio, idx) => ( + setRadioValue(e.currentTarget.value)} + > + {radio.name} + + ))} + +
    + setChecked(e.currentTarget.checked)} + > + Checked + +
    + + {radios.map((radio, idx) => ( + setRadioValue(e.currentTarget.value)} + > + {radio.name} + + ))} + + + ); +} +`; + +const unControlledCode = ` +<> + + + Checkbox 1 (pre-checked) + + + Checkbox 2 + + + Checkbox 3 (pre-checked) + + +
    + + + Radio 1 (pre-checked) + + + Radio 2 + + + Radio 3 + + + +`; +const controlledCode = ` +function ToggleButtonGroupControlled() { + const [value, setValue] = useState([1, 3]); + + /* + * The second argument that will be passed to + * 'handleChange' from 'ToggleButtonGroup' + * is the SyntheticEvent object, but we are + * not using it in this example so we will omit it. + */ + const handleChange = (val) => setValue(val); + + return ( + + Option 1 + Option 2 + Option 3 + + ); +} +`; + +const ButtonGroup = () => ( + <> + + + + + + +

    + Wrap a series of <Button>s in a{' '} + <ButtonGroup>. +

    +
    + +
    + + + +

    + Combine sets of <ButtonGroup>s into a{' '} + <ButtonToolbar> for more complex components. +

    +
    + +
    + + + +

    + Feel free to mix input groups with button groups in your toolbars. + Similar to the example above, you’ll likely need some utilities though + to space things properly. +

    +
    + +
    + + + +

    + Instead of applying button sizing props to every button in a group, + just add size prop to the{' '} + <ButtonGroup>. +

    +
    + +
    + + + +

    + You can place other button types within the + <ButtonGroup> like{' '} + <DropdownButton>s. +

    +
    + +
    + + + +

    + Make a set of buttons appear vertically stacked rather than + horizontally, by adding + vertical to the <ButtonGroup>. + Split button dropdowns are not supported here. +

    +
    + +
    + + + +

    + Buttons can also be used to style checkbox and + radio form elements. This is helpful when you want a + toggle button that works neatly inside an HTML form. +

    +
    + +
    + + + +

    + For a nicer experience with checked state management use the + <ToggleButtonGroup> instead of a{' '} + <ButtonGroup> component. The group behaves as a + form component, where the value is an array of the + selected + values for a named checkbox group or the single toggled + value in a similarly named radio group. +

    +
    + +
    + + + + + + +); + +export default ButtonGroup; diff --git a/src/components/doc-components/Buttons.jsx b/src/components/doc-components/Buttons.jsx new file mode 100644 index 0000000..25ca930 --- /dev/null +++ b/src/components/doc-components/Buttons.jsx @@ -0,0 +1,356 @@ +import React from 'react'; +import { Button } from 'react-bootstrap'; +import PageHeader from 'components/common/PageHeader'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import FalconComponentCard from 'components/common/FalconComponentCard'; +import IconButton from 'components/common/IconButton'; +import { reactBootstrapDocsUrl } from 'helpers/utils'; +import ButtonGroup from './ButtonGroup'; +import FalconCloseButton from 'components/common/FalconCloseButton'; +import Flex from 'components/common/Flex'; +import FalconEditor from 'components/common/FalconEditor'; + +const faconBtnsCode = ` +<> + + + + + + + +`; +const solidBtnsCode = ` +<> + + + + + + + + + + +`; +const outlineBtnsCode = ` +<> + {' '} + {' '} + {' '} + {' '} + {' '} + {' '} + {' '} + + +`; +const btnSizesCode = ` +<> + {' '} + {' '} + {' '} + +`; +const iconBtnCode = ` +<> + + Small + + + Regular + + + Large + +
    + + Regular + + + Outline + +
    + + Delete + + +`; + +const roundedBtnCode = ` +<> + + + Icon Left + + + Icon Right + + +
    + + + + +`; + +const blockBtnCode = ` +
    + + +
    +`; + +const activeStateCode = ` +<> + + + +`; +const disableStateCode = ` +<> + + + +`; +const loadingStateCode = ` +function LoadingButton() { + const [isLoading, setLoading] = useState(false); + + useEffect(() => { + if (isLoading) { + setTimeout(() => { + setLoading(false); + }, 2000); + } + }, [isLoading]); + + const handleClick = () => setLoading(true); + + return ( + + ); +}`; + +const closeBtnCode = `<> + + +`; + +const closeBtnWhiteCode = `
    + + +
    `; + +const falconCloseBtnCode = ` +<> + + + + +`; + +const Buttons = () => ( + <> + + + + + + + + + + + + + + + + +

    + For a lighter touch, Buttons also come in outline-* + variants with no background color. +

    +
    + +
    + + + +

    + To ensure the maximum accessibility for Close Button components, it is + recommended that you provide relevant text for screen readers. The + example below provides an example of accessible usage of this + component by way of the + aria-label property. +

    +
    + +
    + + + +

    + Change the default dark color to white using{' '} + variant="white". +

    +
    + +
    + + + +

    + Falcon close button is properly optimized for both light and dark + mode.To use falcon close button wrap{' '} + <FlaconCloseButton> inside a{' '} + position-relative element. +

    +
    + +
    + + + +

    + Fancy larger or smaller buttons? Add size="lg", + size="sm" for additional sizes. +

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

    + Create responsive stacks of full-width, “block buttons” like those in + Bootstrap 4 with a mix of our display and gap utilities.{' '} +

    +
    + +
    + + + +

    + To set a button's active state simply set the component's{' '} + active prop. +

    +
    + +
    + + + +

    + Make buttons look inactive by adding the disabled prop + to. +

    +
    + +
    + + + +

    + When activating an asynchronous action from a button it is a good UX + pattern to give the user feedback as to the loading state, this can + easily be done by updating your <Button/>s props + from a state change like below. +

    +
    + +
    + + +); + +export default Buttons; diff --git a/src/components/doc-components/CalendarExample.jsx b/src/components/doc-components/CalendarExample.jsx new file mode 100644 index 0000000..a462517 --- /dev/null +++ b/src/components/doc-components/CalendarExample.jsx @@ -0,0 +1,55 @@ +import React from 'react'; +import { Button } from 'react-bootstrap'; +import PageHeader from 'components/common/PageHeader'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import FalconComponentCard from 'components/common/FalconComponentCard'; +import FullCalendar from '@fullcalendar/react'; +import dayGridPlugin from '@fullcalendar/daygrid'; +import timeGridPlugin from '@fullcalendar/timegrid'; + +const calenderCode = `function fullCalendarExample() { + return ( + + ); +}`; + +const Figures = () => ( + <> + + + + + + + + + +); + +export default Figures; diff --git a/src/components/doc-components/Cards.jsx b/src/components/doc-components/Cards.jsx new file mode 100644 index 0000000..077d251 --- /dev/null +++ b/src/components/doc-components/Cards.jsx @@ -0,0 +1,269 @@ +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import generic1 from 'assets/img/generic/1.jpg'; +import generic10 from 'assets/img/generic/10.jpg'; +import generic11 from 'assets/img/generic/11.jpg'; +import generic12 from 'assets/img/generic/12.jpg'; +import generic3 from 'assets/img/generic/3.jpg'; +import team1 from 'assets/img/team/1.jpg'; +import classNames from 'classnames'; +import FalconComponentCard from 'components/common/FalconComponentCard'; +import PageHeader from 'components/common/PageHeader'; +import Notification from 'components/notification/Notification'; +import { reactBootstrapDocsUrl } from 'helpers/utils'; +import React from 'react'; +import { Button, Col, Row } from 'react-bootstrap'; + +const exampleCode = ` + + + + + Card title + + + Some quick example text to build on the card + title and make up the bulk of the card's + content. + + + + +`; + +const cardWithImageCode = ` + + + + Card title + + Some quick example text to build on the card title and make up the bulk of the card's content. + + + + Cras justo odio + Dapibus ac facilisis in + Vestibulum at eros + + Card Link + Another Link + + + +`; + +const cardStylesCode = ` + + {['Primary', 'Secondary', 'Success', 'Danger', 'Warning', 'Info', 'Light', 'Dark'].map( + (variant, idx) => ( + + + + {variant} Card Title + + Some quick example text to build on the card title and make up the bulk of the + card's content. + + + + + ) + )} + +`; + +const cardWithBgCode = ` + + + +`; + +const notificationCode = ` +
    + +
    +`; + +const backgroundCode = ` + + + + + Card Title + + + Some quick example text to build on the card title and make up the bulk of the card's + content. + + + +`; + +const cardGroupCode = ` + + + + + First card title + + This is a wider card with supporting text below as a natural lead-in to additional content. This + content is a little bit longer. + +

    + Last updated 45 mins ago +

    +
    +
    + + + + Second card title + This card has supporting text below as a natural lead-in to additional content. +

    + Last updated an hour ago +

    +
    +
    + + + + Yet another card title + + This is a wider card with supporting text below as a natural lead-in to additional content. This card + has even longer content than the first to show that equal height action. + +

    + Last updated yesterday +

    +
    +
    +
    +`; + +const Card = () => { + return ( + <> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    + You can change a card's appearance by changing their{' '} + <bg>, and <text> props. +

    +
    + +
    + + ); +}; + +export default Card; diff --git a/src/components/doc-components/Checks.jsx b/src/components/doc-components/Checks.jsx new file mode 100644 index 0000000..f840708 --- /dev/null +++ b/src/components/doc-components/Checks.jsx @@ -0,0 +1,210 @@ +import React from 'react'; +import { Button } from 'react-bootstrap'; +import PageHeader from 'components/common/PageHeader'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import FalconComponentCard from 'components/common/FalconComponentCard'; +import { reactBootstrapDocsUrl } from 'helpers/utils'; + +const checksExampleCode = ` +<> + + + + +`; +const radioExampleCode = ` +<> + + + + +`; +const switchesCode = ` +<> + + + + + +`; +const inlineCheckboxCode = ` +<> + + + + +`; +const inlineRadioCode = ` +<> + + + + +`; + +const customRenderCode = ` +<> + {['checkbox', 'radio'].map((type) => ( +
    + + + {'Custom api ' + type } + You did it! + +
    + ))} + +`; + +const Checks = () => ( + <> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    + When you need tighter control, or want to customize how the{' '} + FormCheck component renders, it may better to use it's + constituent parts directly. +

    +

    + By provided children to the FormCheck you + can forgo the default rendering and handle it yourself. (You can still + provide an id to the FormCheck or{' '} + FormGroup and have it propagate to the label and input). +

    +
    + +
    + +); + +export default Checks; diff --git a/src/components/doc-components/Collapse.jsx b/src/components/doc-components/Collapse.jsx new file mode 100644 index 0000000..7f5d125 --- /dev/null +++ b/src/components/doc-components/Collapse.jsx @@ -0,0 +1,97 @@ +import React from 'react'; +import { Button } from 'react-bootstrap'; +import PageHeader from 'components/common/PageHeader'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import FalconComponentCard from 'components/common/FalconComponentCard'; +import { reactBootstrapDocsUrl } from 'helpers/utils'; + +const exampleCode = `function Example() { + const [open, setOpen] = useState(false); + + return ( + <> + + +
    +
    + Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. +
    +
    +
    + + ); +}`; + +const fadeCode = `function Example() { + const [open, setOpen] = useState(false); + + return ( + <> + + +
    +
    + Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. +
    +
    +
    + + ); +}`; + +const Collapse = () => ( + <> + + + + + + +

    + Add a collapse toggle animation to an element or component. +

    +
    + +
    + + + +

    + Add a fade animation to a child element or component. +

    +
    + +
    + +); + +export default Collapse; diff --git a/src/components/doc-components/ComboNavbar.jsx b/src/components/doc-components/ComboNavbar.jsx new file mode 100644 index 0000000..bd994cd --- /dev/null +++ b/src/components/doc-components/ComboNavbar.jsx @@ -0,0 +1,83 @@ +import React from 'react'; +import { Button } from 'react-bootstrap'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import PageHeader from 'components/common/PageHeader'; +import FalconEditor from 'components/common/FalconEditor'; +import FalconComponentCard from 'components/common/FalconComponentCard'; +import { useAppContext } from 'providers/AppProvider'; + +const comboCode = `settings:{ + // ...rest + navbarPosition:'combo' +}`; + +const ComboNavbar = () => { + const { + config: { navbarPosition }, + setConfig + } = useAppContext(); + + return ( + <> + + + + + + + +

    + Combo layout uses Falcon's{' '} + + Navbar vertical{' '} + + and{' '} + + Navbar top + + . +

    +

    + To enable Combo Nav + clear your browser's localstorage then from your project directory + go to, + src/config.js and set + navbarPosition:'combo' of settings{' '} + object. +

    + +
    +
    + + + + +

    + For responsive collapsing pass{' '} + {`expand = {'sm | md | lg | xl'}`} prop to + React-Bootstrap's Navbar component. +

    +
    +
    + + ); +}; + +export default ComboNavbar; diff --git a/src/components/doc-components/CookieNoticeExample.jsx b/src/components/doc-components/CookieNoticeExample.jsx new file mode 100644 index 0000000..7260d95 --- /dev/null +++ b/src/components/doc-components/CookieNoticeExample.jsx @@ -0,0 +1,92 @@ +import React, { useState } from 'react'; +import { Button } from 'react-bootstrap'; +import PageHeader from 'components/common/PageHeader'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import FalconComponentCard from 'components/common/FalconComponentCard'; +import Flex from 'components/common/Flex'; +import cookieImg from 'assets/img/icons/cookie-1.png'; +import CookieNotice from 'components/common/CookieNotice'; + +const exampleCode = `<> + + + + + + +
    + cookie +
    +
    +

    + We use third party cookies to personalize content, ads + and analyze site traffic. +

    + +
    +
    +
    +
    +
    +`; + +const CookieNoticeExample = () => { + const [show, setShow] = useState(false); + return ( + <> + + + + + + +

    + Falcon React's Cookie Notice uses React-Bootstrap's "Toast" feature + to show the notice content. .notice class is + responsible for showing the notice as a popup. You can pass any + React-Bootstrap's "Toast" props to CookieNotice{' '} + component. See{' '} + + Toasts documentation on React-Bootstrap. + +

    +
    + +
    + + ); +}; + +export default CookieNoticeExample; diff --git a/src/components/doc-components/CountUp.jsx b/src/components/doc-components/CountUp.jsx new file mode 100644 index 0000000..6e576a4 --- /dev/null +++ b/src/components/doc-components/CountUp.jsx @@ -0,0 +1,77 @@ +import React from 'react'; +import { Button } from 'react-bootstrap'; +import PageHeader from 'components/common/PageHeader'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import FalconComponentCard from 'components/common/FalconComponentCard'; +import CountUp from 'react-countup'; + +const exampleCode = ` + +

    + +

    +
    (Default)
    + + +

    + +

    +
    (Duration 10s)
    + + +

    + +

    +
    (No Separator)
    + + +

    + +

    +
    (Space)
    + + +

    + +

    +
    (Suffix)
    + + +

    + +

    +
    (Prefix)
    + +
    `; + +const Countup = () => ( + <> + + + + + + + + + +); + +export default Countup; diff --git a/src/components/doc-components/DatePicker.jsx b/src/components/doc-components/DatePicker.jsx new file mode 100644 index 0000000..3ae9b9a --- /dev/null +++ b/src/components/doc-components/DatePicker.jsx @@ -0,0 +1,353 @@ +import React from 'react'; +import { Button, Row, Col, ListGroup } from 'react-bootstrap'; +import PageHeader from 'components/common/PageHeader'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import FalconComponentCard from 'components/common/FalconComponentCard'; +import DatePicker, { registerLocale } from 'react-datepicker'; +import es from 'date-fns/locale/es'; +import FalconEditor from 'components/common/FalconEditor'; + +registerLocale('es', es); + +const timeCode = `function DatepickerExample() { + const [date, setDate] = useState(null); + + return ( + setDate(date)} + className='form-control' + placeholderText="Select Time" + timeIntervals={5} + dateFormat="h:mm aa" + showTimeSelect + showTimeSelectOnly + /> + ); +}`; + +const dateCode = `function DatePickerExample() { + const [date, setDate] = useState(null); + + return ( + + setDate(date)} + formatWeekDay={day => day.slice(0, 3)} + className='form-control' + placeholderText="Select Date" + /> + ); +}`; + +const dateTimeCode = `function DatePickerExample() { + const [date, setDate] = useState(null); + + return ( + setDate(date)} + formatWeekDay={day => day.slice(0, 3)} + className='form-control' + placeholderText="Select Date & Time" + timeIntervals={5} + dateFormat="MM/dd/yyyy h:mm aa" + showTimeSelect + fixedHeight + /> + ); +}`; + +const formatCode = `function DatepickerExample() { + const [date, setDate] = useState(null); + + return ( + setDate(date)} + className='form-control' + placeholderText="DD-MM-YYYY hh:mm aa" + timeIntervals={5} + dateFormat="dd-MM-yyyy hh:mm aa" + showTimeSelect + fixedHeight + /> + ); +}`; + +const rangeCode = `function DatepickerExample() { + const date = new Date(); + const [startDate, setStartDate] = useState(new Date()); + const [endDate, setEndDate] = useState(date.setDate(date.getDate() + 7)); + const onChange = dates => { + const [start, end] = dates; + setStartDate(start); + setEndDate(end); + }; + return ( + day.slice(0, 3)} + endDate={endDate} + selectsRange + dateFormat="MMM dd" + className='form-control' + /> + ); +}`; + +const predefinedRangesCode = `function DatepickerExample() { + const date = new Date(); + const [startDate, setStartDate] = useState(new Date()); + const [endDate, setEndDate] = useState(date.setDate(date.getDate() + 7)); + const onChange = dates => { + const [start, end] = dates; + setStartDate(start); + setEndDate(end); + }; + const handleLastMonth = () => { + const today = new Date(); + const lastMonth = new Date(today.getFullYear(), today.getMonth() - 1, 1); + const endOfLastMonth = new Date(today.getFullYear(), today.getMonth(), 0); + + setStartDate(lastMonth); + setEndDate(endOfLastMonth); + }; + const handleThisMonth = () => { + const today = new Date(); + const startOfMonth = new Date(today.getFullYear(), today.getMonth(), 1); + const endOfMonth = new Date(today.getFullYear(), today.getMonth() + 1, 0); + + setStartDate(startOfMonth); + setEndDate(endOfMonth); + }; + const handleLastWeek = () => { + const today = new Date(); + const lastSunday = new Date(today.getFullYear(), today.getMonth(), today.getDate() - today.getDay() - 7); + const lastSaturday = new Date(today.getFullYear(), today.getMonth(), today.getDate() - today.getDay() - 1); + + setStartDate(lastSunday); + setEndDate(lastSaturday); + }; + return ( + day.slice(0, 3)} + calendarContainer={({ children }) => ( +
    + + + Last Week + + + Last Month + + + This Month + + + {children} +
    + )} + showPreviousMonths + endDate={endDate} + selectsRange + dateFormat="MMM dd" + className='form-control' + /> + ); +}`; + +const customInputCode = `function DatepickerExample() { + const [startDate, setStartDate] = useState(new Date()); + const ExampleCustomInput = ({ value, onClick, ref }) => ( +
    + {}} + /> + +
    + ); + return ( + setStartDate(date)} + customInput={} + /> + ); +}`; + +const localeDocCode = `import { registerLocale, setDefaultLocale } from "react-datepicker"; +import es from 'date-fns/locale/es'; +registerLocale('es', es) + + +`; + +const LocalizationCode = `function DatepickerExample() { + const [date, setDate] = useState(null); + + return ( + setDate(date)} + className='form-control' + placeholderText="Select Date" + dateFormat="dd-MM-yyyy" + locale='es' + /> + ); +}`; + +const DatePickerExample = () => ( + <> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    + To localize React Datepicker display components + import registerLocale from react-datepicker and{' '} + locale object from date-fns.Then use{' '} + registerLocale to loads the imported locale object from + date-fns.For more details visit{' '} + + React Datepicker Localization Documentation. + +

    + +
    +
    + + + + + + +); + +export default DatePickerExample; diff --git a/src/components/doc-components/DraggableExample.jsx b/src/components/doc-components/DraggableExample.jsx new file mode 100644 index 0000000..af1914d --- /dev/null +++ b/src/components/doc-components/DraggableExample.jsx @@ -0,0 +1,310 @@ +import React, { useState } from 'react'; +import { Button } from 'react-bootstrap'; +import PageHeader from 'components/common/PageHeader'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import FalconComponentCard from 'components/common/FalconComponentCard'; +import { Link } from 'react-router'; +import { DndContext, closestCorners, DragOverlay } from '@dnd-kit/core'; +import paths from 'routes/paths'; +import { + SortableContext, + verticalListSortingStrategy, + useSortable, + arrayMove +} from '@dnd-kit/sortable'; +import { CSS } from '@dnd-kit/utilities'; +import { useGetDndSensor } from 'hooks/useGetDndSensor'; + +const data = [ + { + id: 1, + contents: [ + { + id: 10000001, + text: 'Add a pdf file that describes all the symptoms of COVID-19' + }, + { + id: 10000002, + text: 'Make a Registration form that include Name, Email and a Password input field' + }, + { + id: 10000003, + text: 'Add a cookie notice which will be shown in the bottom of the page and have a link of "Privacy Policy"' + }, + { + id: 10000004, + text: 'Update profile page layout with cover image and user setting menu' + } + ] + }, + { + id: 2, + contents: [ + { + id: 20000001, + text: 'Update all the npm packages and also remove the outdated plugins' + }, + { + id: 20000002, + text: 'Add a getting started page that allows users to see the starting process' + }, + { + id: 20000003, + text: 'Review and test all the task and deploy to the server' + }, + { + id: 20000004, + text: 'Get all the data by API call and show them to the landing page by adding a new section' + } + ] + } +]; + +const draggableCode = `DraggableComponent = () => { + const [draggableData, setDraggableData] = useState(data); + const [activeTask, setActiveTask] = useState(null); + const [columnId, setColumnId] = useState(null); + + const sensor = useGetDndSensor(); + + + const findColumn = (id) => { + return draggableData.find( + (col) => col.contents.some((item) => item.id === id) || col.id === id + ); + }; + + const handleDragStart = event => { + setActiveTask(event.active.data.current?.item); + setColumnId(event.active.data.current?.columnId); + } + const handleDragOver = ({ active, over }) => { + if (!active || !over) return; + + const activeId = active.id; + const overId = over.id; + + const activeColumn = findColumn(activeId); + const overColumn = findColumn(overId); + + if (!activeColumn || !overColumn || activeColumn.id === overColumn.id) return; + + setDraggableData((prevData) => { + const activeItemIndex = activeColumn.contents.findIndex( + (item) => item.id === activeId + ); + + if (activeItemIndex === -1) return prevData; + + const activeItem = activeColumn.contents[activeItemIndex]; + const updatedActiveContents = activeColumn.contents.filter( + (item) => item.id !== activeId + ); + + const updatedOverContents = [...overColumn.contents]; + const overItemIndex = overColumn.contents.findIndex( + (item) => item.id === overId + ); + + updatedOverContents.splice( + overItemIndex >= 0 ? overItemIndex : updatedOverContents.length, + 0, + activeItem + ); + + return prevData.map((column) => { + if (column.id === activeColumn.id) { + return { ...column, contents: updatedActiveContents }; + } + if (column.id === overColumn.id) { + return { ...column, contents: updatedOverContents }; + } + return column; + }); + }); + }; + const handleDragEnd = ({ active, over }) => { + if (!over) return; + const activeColumnId = active.data.current.columnId; + const overColumnId = over.data.current.columnId || over.id; + if (activeColumnId === overColumnId) { + const columnIndex = draggableData.findIndex( + (col) => col.id === activeColumnId + ); + const column = draggableData[columnIndex]; + const oldIndex = column.contents.findIndex( + (item) => item.id === active.id + ); + const newIndex = column.contents.findIndex((item) => item.id === over.id); + + const updatedContents = arrayMove(column.contents, oldIndex, newIndex); + + const newDraggableData = [...draggableData]; + newDraggableData[columnIndex] = { ...column, contents: updatedContents }; + setDraggableData(newDraggableData); + } else { + const sourceColumnIndex = draggableData.findIndex( + (col) => col.id === activeColumnId + ); + const destinationColumnIndex = draggableData.findIndex( + (col) => col.id === overColumnId + ); + + const activeTask = draggableData[sourceColumnIndex].contents.find( + (item) => item.id === active.id + ); + + const newDraggableData = [...draggableData]; + newDraggableData[sourceColumnIndex].contents = newDraggableData[ + sourceColumnIndex + ].contents.filter((item) => item.id !== active.id); + newDraggableData[destinationColumnIndex].contents = [ + ...newDraggableData[destinationColumnIndex].contents, + activeTask + ]; + + setDraggableData(newDraggableData); + } + setActiveTask(null); + setColumnId(null); + }; + + return ( + + + { + draggableData.map(column => ( + +
    + item.id)} + strategy={verticalListSortingStrategy} + > + { + column.contents.map(content => + + + +

    + {content.text} +

    +
    +
    +
    + ) + } +
    +
    + + )) + } +
    + + { + activeTask && + + +

    + {activeTask.text} +

    +
    +
    + } +
    +
    + ); +};`; + +const SortableItem = ({ item, columnId, id, children }) => { + const { + setNodeRef, + attributes, + listeners, + transform, + transition, + isDragging + } = useSortable({ + id, + data: { + type: 'task', + item: item, + columnId + } + }); + + const styles = { + transform: CSS.Transform.toString(transform), + transition, + cursor: isDragging ? 'grab' : 'pointer', + zIndex: isDragging ? 2 : 'auto', + opacity: isDragging ? 0.8 : 1 + }; + return ( +
    + {children} +
    + ); +}; + +const DraggableExample = () => ( + <> + + + + + + +

    + Here is the example of the Multiple Container Sortable feature of the + Draggable library. We also design{' '} + Kanban Board using this Draggable + Library.{' '} + You can drag any card in between the two columns below: +

    +
    + +
    + +); + +export default DraggableExample; diff --git a/src/components/doc-components/Dropdowns.jsx b/src/components/doc-components/Dropdowns.jsx new file mode 100644 index 0000000..8472454 --- /dev/null +++ b/src/components/doc-components/Dropdowns.jsx @@ -0,0 +1,388 @@ +import React from 'react'; +import { Button, Row, Col } from 'react-bootstrap'; +import PageHeader from 'components/common/PageHeader'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import FalconComponentCard from 'components/common/FalconComponentCard'; +import { reactBootstrapDocsUrl } from 'helpers/utils'; + +const exampleCode = ` + + + Dropdown + + + Action + Another action + Something else + + Separated link + + +`; +const dropdownBtnCode = ` + + Action + Another action + Something else + + Separated link + +`; + +const btnVariantCode = ` +<> + {['Primary', 'Secondary', 'Success', 'Info', 'Warning', 'Danger', 'Light', 'Dark'].map( + (variant) => ( + + Action + Another action + + Active Item + + + Separated link + + ), + )} + +`; + +const splitBtnCode = ` +<> + {['Primary', 'Secondary', 'Success', 'Info', 'Warning', 'Danger', 'Light', 'Dark'].map( + (variant) => ( + + Action + Another action + + Active Item + + + Separated link + + ), + )} + +`; + +const sizingCode = ` +<> +
    + + Action + Another action + Something else here + + Separated link + + + + Action + Another action + Something else here + + Separated link + + + + Action + Another action + Something else here + + Separated link + +
    +
    +
    + + Action + Another action + Something else here + + Separated link + + + + Action + Another action + Something else here + + Separated link + + + + Action + Another action + Something else here + + Separated link + +
    + +`; + +const directionCode = ` +<> +
    + {['up', 'down', 'start', 'end'].map((direction) => ( + + Action + Another action + Something else here + + Separated link + + ))} +
    +
    +
    + {['up', 'down', 'start', 'end'].map((direction) => ( + + Action + Another action + Something else here + + Separated link + + ))} +
    + +`; + +const dropdownItemsCode = ` + + Dropdown item text + Action + Another action + Something else + +`; + +const menuAlignMentCode = ` + + Action + Another action + Something else here + + Separated link + +`; + +const headerCode = ` + + Dropdown Header + Action + Another action + Something else + +`; +const dividerCode = ` + + Action + Another action + + Something else + +`; + +const responsiveAlignmentCode = ` +<> +
    + + Action 1 + Action 2 + +
    +
    + + Action 1 + Action 2 + +
    + +`; + +const Dropdowns = () => ( + <> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    + Historically dropdown menu contents had to be links, but that’s no + longer the case with v4. Now you can optionally use + <button> elements in your dropdowns instead of just{' '} + <a>s. +

    +

    + You can also create non-interactive dropdown items with{' '} + <Dropdown.ItemText>. Feel free to style further + with custom CSS or text utilities. +

    +
    + +
    + + + +

    + By default, a dropdown menu is aligned to the left, but you can switch + it by passing align="end" to a{' '} + <Dropdown>, <DropdownButton>, or{' '} + <SplitButton>. +

    +
    + +
    + + + +

    + If you want to use responsive menu alignment, pass an object + containing a breakpoint to the + align prop on the <DropdownMenu>,{' '} + <DropdownButton>, or{' '} + <SplitButton>. You can specify start{' '} + or end for the various breakpoints. +

    +
    + +
    + + + + + + + + + + + + + + + + +); + +export default Dropdowns; diff --git a/src/components/doc-components/Editor.jsx b/src/components/doc-components/Editor.jsx new file mode 100644 index 0000000..c0763ea --- /dev/null +++ b/src/components/doc-components/Editor.jsx @@ -0,0 +1,163 @@ +import React from 'react'; +import { Button, Form } from 'react-bootstrap'; +import PageHeader from 'components/common/PageHeader'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import FalconComponentCard from 'components/common/FalconComponentCard'; +import TinymceEditor from 'components/common/TinymceEditor'; +import FalconEditor from 'components/common/FalconEditor'; +import { Controller, useForm } from 'react-hook-form'; +import * as yup from 'yup'; +import { yupResolver } from '@hookform/resolvers/yup'; + +const exampleCode = `function SingleSelectExample() { + const [value, setValue] = useState(null); + return( + setValue(newValue)} + /> + ) +}`; + +const Editor = () => ( + <> + + + + + + +

    + To use Tinymce editor at first you need to sign up in{' '} + + Tiny Cloud + + . And collect your api key and paste it in .env file variable + REACT_APP_TINYMCE_APIKEY +

    +
    + + + +
    + + + +

    + Please note that we have used{' '} + + self hosted + + tinymce in our Phoenix project. To do this we have added{' '} + tinymce package in our public directory. Then added{' '} + tinymceScriptSrc="/tinymce/tinymce.min.js" and{' '} + license_key: 'gpl' in tinymce editor. If you use{' '} + + Tiny Cloud + {' '} + remove tinymceScriptSrc and license_key. +

    +
    + + + `} + hidePreview + /> + +
    + + + + + + + + + + + + + +); + +export default Editor; + +const schema = yup + .object({ + description: yup.string().required('This field is required.') + }) + .required(); + +const TinymceValidation = () => { + const { + handleSubmit, + control, + formState: { errors } + } = useForm({ + resolver: yupResolver(schema) + }); + const onSubmit = data => { + console.log(data); + }; + return ( +
    + ( + + )} + /> +
    {errors.description?.message}
    + + + ); +}; diff --git a/src/components/doc-components/Embed.jsx b/src/components/doc-components/Embed.jsx new file mode 100644 index 0000000..18ea22b --- /dev/null +++ b/src/components/doc-components/Embed.jsx @@ -0,0 +1,35 @@ +import React from 'react'; +import PageHeader from 'components/common/PageHeader'; +import FalconComponentCard from 'components/common/FalconComponentCard'; + +const exampleCode = ` +