commit 7f080c735f9f9e50b353e77c8b9cb8a4b34bb5af Author: Zamzam Nurzaman Date: Thu Oct 17 17:01:25 2024 +0700 init diff --git a/.env b/.env new file mode 100644 index 0000000..e69de29 diff --git a/.env.development b/.env.development new file mode 100644 index 0000000..99122df --- /dev/null +++ b/.env.development @@ -0,0 +1 @@ +NEXT_PUBLIC_API_URL='https://api-silos-kpr.basys.co.id' diff --git a/.env.production b/.env.production new file mode 100644 index 0000000..99122df --- /dev/null +++ b/.env.production @@ -0,0 +1 @@ +NEXT_PUBLIC_API_URL='https://api-silos-kpr.basys.co.id' diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fd3dbb5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,36 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js +.yarn/install-state.gz + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# local env files +.env*.local + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..b58b603 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,5 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/.idea/edc-gis.iml b/.idea/edc-gis.iml new file mode 100644 index 0000000..24643cc --- /dev/null +++ b/.idea/edc-gis.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..9b901bf --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/watcherTasks.xml b/.idea/watcherTasks.xml new file mode 100644 index 0000000..fb0d65a --- /dev/null +++ b/.idea/watcherTasks.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..09a8a4d --- /dev/null +++ b/README.md @@ -0,0 +1,36 @@ +This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app). + +## Getting Started + +First, run the development server: + +```bash +npm run dev +# or +yarn dev +# or +pnpm dev +# or +bun dev +``` + +Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. + +You can start editing the page by modifying `app/page.js`. The page auto-updates as you edit the file. + +This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel. + +## Learn More + +To learn more about Next.js, take a look at the following resources: + +- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. +- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. + +You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome! + +## Deploy on Vercel + +The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. + +Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details. diff --git a/jsconfig.json b/jsconfig.json new file mode 100644 index 0000000..2e9e3c0 --- /dev/null +++ b/jsconfig.json @@ -0,0 +1,12 @@ +{ + "compilerOptions": { + "paths": { + "@/*": [ + "./src/*" + ], + "@@/*": [ + "./*" + ] + } + } +} diff --git a/next.config.js b/next.config.js new file mode 100644 index 0000000..3052038 --- /dev/null +++ b/next.config.js @@ -0,0 +1,23 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = { + reactStrictMode: false, + output: 'export', + images: { + loader: "custom", + imageSizes: [16, 32, 48, 64, 96, 128, 256, 384], + deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840], + }, + transpilePackages: ["next-image-export-optimizer"], + env: { + nextImageExportOptimizer_imageFolderPath: "public/images", + nextImageExportOptimizer_exportFolderPath: "out", + nextImageExportOptimizer_quality: "75", + nextImageExportOptimizer_storePicturesInWEBP: "true", + nextImageExportOptimizer_exportFolderName: "nextImageExportOptimizer", + nextImageExportOptimizer_generateAndUseBlurImages: "true", + nextImageExportOptimizer_remoteImageCacheTTL: "0", + }, +} + + +module.exports = nextConfig; diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..b85812c --- /dev/null +++ b/package-lock.json @@ -0,0 +1,10926 @@ +{ + "name": "edc-gis", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "edc-gis", + "version": "0.1.0", + "dependencies": { + "@ant-design/icons": "^5.3.0", + "antd": "^5.12.5", + "cookies-next": "^4.1.1", + "dayjs": "^1.11.10", + "docxtemplater": "^3.40.0", + "exceljs": "^4.4.0", + "file-saver": "^2.0.5", + "framer-motion": "^10.16.4", + "html2canvas": "^1.4.1", + "jspdf": "^2.5.1", + "jspdf-autotable": "^3.8.2", + "next": "14.2.15", + "next-image-export-optimizer": "^1.12.3", + "next-pwa": "^5.6.0", + "nextjs-toploader": "^1.6.6", + "react": "^18", + "react-dom": "^18", + "react-hook-form": "^7.45.4", + "react-query": "^3.39.3", + "sass": "^1.69.5", + "styled-components": "^5.3.9", + "uuid": "^10.0.0", + "zingchart": "^2.9.14", + "zingchart-react": "^3.2.0", + "zustand": "^4.4.7" + }, + "devDependencies": { + "eslint": "^8", + "eslint-config-next": "14.2.5" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@ant-design/colors": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-7.1.0.tgz", + "integrity": "sha512-MMoDGWn1y9LdQJQSHiCC20x3uZ3CwQnv9QMz6pCmJOrqdgM9YxsoVVY0wtrdXbmfSgnV0KNk6zi09NAhMR2jvg==", + "dependencies": { + "@ctrl/tinycolor": "^3.6.1" + } + }, + "node_modules/@ant-design/cssinjs": { + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/@ant-design/cssinjs/-/cssinjs-1.21.1.tgz", + "integrity": "sha512-tyWnlK+XH7Bumd0byfbCiZNK43HEubMoCcu9VxwsAwiHdHTgWa+tMN0/yvxa+e8EzuFP1WdUNNPclRpVtD33lg==", + "dependencies": { + "@babel/runtime": "^7.11.1", + "@emotion/hash": "^0.8.0", + "@emotion/unitless": "^0.7.5", + "classnames": "^2.3.1", + "csstype": "^3.1.3", + "rc-util": "^5.35.0", + "stylis": "^4.3.3" + }, + "peerDependencies": { + "react": ">=16.0.0", + "react-dom": ">=16.0.0" + } + }, + "node_modules/@ant-design/cssinjs-utils": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@ant-design/cssinjs-utils/-/cssinjs-utils-1.1.1.tgz", + "integrity": "sha512-2HAiyGGGnM0es40SxdszeQAU5iWp41wBIInq+ONTCKjlSKOrzQfnw4JDtB8IBmqE6tQaEKwmzTP2LGdt5DSwYQ==", + "dependencies": { + "@ant-design/cssinjs": "^1.21.0", + "@babel/runtime": "^7.23.2", + "rc-util": "^5.38.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@ant-design/fast-color": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@ant-design/fast-color/-/fast-color-2.0.6.tgz", + "integrity": "sha512-y2217gk4NqL35giHl72o6Zzqji9O7vHh9YmhUVkPtAOpoTCH4uWxo/pr4VE8t0+ChEPs0qo4eJRC5Q1eXWo3vA==", + "dependencies": { + "@babel/runtime": "^7.24.7" + }, + "engines": { + "node": ">=8.x" + } + }, + "node_modules/@ant-design/icons": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-5.5.1.tgz", + "integrity": "sha512-0UrM02MA2iDIgvLatWrj6YTCYe0F/cwXvVE0E2SqGrL7PZireQwgEKTKBisWpZyal5eXZLvuM98kju6YtYne8w==", + "dependencies": { + "@ant-design/colors": "^7.0.0", + "@ant-design/icons-svg": "^4.4.0", + "@babel/runtime": "^7.24.8", + "classnames": "^2.2.6", + "rc-util": "^5.31.1" + }, + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "react": ">=16.0.0", + "react-dom": ">=16.0.0" + } + }, + "node_modules/@ant-design/icons-svg": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@ant-design/icons-svg/-/icons-svg-4.4.2.tgz", + "integrity": "sha512-vHbT+zJEVzllwP+CM+ul7reTEfBR0vgxFe7+lREAsAA7YGsYpboiq2sQNeQeRvh09GfQgs/GyFEvZpJ9cLXpXA==" + }, + "node_modules/@ant-design/react-slick": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@ant-design/react-slick/-/react-slick-1.1.2.tgz", + "integrity": "sha512-EzlvzE6xQUBrZuuhSAFTdsr4P2bBBHGZwKFemEfq8gIGyIQCxalYfZW/T2ORbtQx5rU69o+WycP3exY/7T1hGA==", + "dependencies": { + "@babel/runtime": "^7.10.4", + "classnames": "^2.2.5", + "json2mq": "^0.2.0", + "resize-observer-polyfill": "^1.5.1", + "throttle-debounce": "^5.0.0" + }, + "peerDependencies": { + "react": ">=16.9.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.25.7.tgz", + "integrity": "sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==", + "dependencies": { + "@babel/highlight": "^7.25.7", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.8.tgz", + "integrity": "sha512-ZsysZyXY4Tlx+Q53XdnOFmqwfB9QDTHYxaZYajWRoBLuLEAwI2UIbtxOjWh/cFaa9IKUlcB+DDuoskLuKu56JA==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.8.tgz", + "integrity": "sha512-Oixnb+DzmRT30qu9d3tJSQkxuygWm32DFykT4bRoORPa9hZ/L4KhVB/XiRm6KG+roIEM7DBQlmg27kw2HZkdZg==", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.25.7", + "@babel/generator": "^7.25.7", + "@babel/helper-compilation-targets": "^7.25.7", + "@babel/helper-module-transforms": "^7.25.7", + "@babel/helpers": "^7.25.7", + "@babel/parser": "^7.25.8", + "@babel/template": "^7.25.7", + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.8", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.7.tgz", + "integrity": "sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA==", + "dependencies": { + "@babel/types": "^7.25.7", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.7.tgz", + "integrity": "sha512-4xwU8StnqnlIhhioZf1tqnVWeQ9pvH/ujS8hRfw/WOza+/a+1qv69BWNy+oY231maTCWgKWhfBU7kDpsds6zAA==", + "dependencies": { + "@babel/types": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.25.7.tgz", + "integrity": "sha512-12xfNeKNH7jubQNm7PAkzlLwEmCs1tfuX3UjIw6vP6QXi+leKh6+LyC/+Ed4EIQermwd58wsyh070yjDHFlNGg==", + "dependencies": { + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.7.tgz", + "integrity": "sha512-DniTEax0sv6isaw6qSQSfV4gVRNtw2rte8HHM45t9ZR0xILaufBRNkpMifCRiAPyvL4ACD6v0gfCwCmtOQaV4A==", + "dependencies": { + "@babel/compat-data": "^7.25.7", + "@babel/helper-validator-option": "^7.25.7", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.7.tgz", + "integrity": "sha512-bD4WQhbkx80mAyj/WCm4ZHcF4rDxkoLFO6ph8/5/mQ3z4vAzltQXAmbc7GvVJx5H+lk5Mi5EmbTeox5nMGCsbw==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.7", + "@babel/helper-member-expression-to-functions": "^7.25.7", + "@babel/helper-optimise-call-expression": "^7.25.7", + "@babel/helper-replace-supers": "^7.25.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7", + "@babel/traverse": "^7.25.7", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.7.tgz", + "integrity": "sha512-byHhumTj/X47wJ6C6eLpK7wW/WBEcnUeb7D0FNc/jFQnQVw7DOso3Zz5u9x/zLrFVkHa89ZGDbkAa1D54NdrCQ==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.7", + "regexpu-core": "^6.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", + "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.7.tgz", + "integrity": "sha512-O31Ssjd5K6lPbTX9AAYpSKrZmLeagt9uwschJd+Ixo6QiRyfpvgtVQp8qrDR9UNFjZ8+DO34ZkdrN+BnPXemeA==", + "dependencies": { + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.7.tgz", + "integrity": "sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw==", + "dependencies": { + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.7.tgz", + "integrity": "sha512-k/6f8dKG3yDz/qCwSM+RKovjMix563SLxQFo0UhRNo239SP6n9u5/eLtKD6EAjwta2JHJ49CsD8pms2HdNiMMQ==", + "dependencies": { + "@babel/helper-module-imports": "^7.25.7", + "@babel/helper-simple-access": "^7.25.7", + "@babel/helper-validator-identifier": "^7.25.7", + "@babel/traverse": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.7.tgz", + "integrity": "sha512-VAwcwuYhv/AT+Vfr28c9y6SHzTan1ryqrydSTFGjU0uDJHw3uZ+PduI8plCLkRsDnqK2DMEDmwrOQRsK/Ykjng==", + "dependencies": { + "@babel/types": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.7.tgz", + "integrity": "sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.7.tgz", + "integrity": "sha512-kRGE89hLnPfcz6fTrlNU+uhgcwv0mBE4Gv3P9Ke9kLVJYpi4AMVVEElXvB5CabrPZW4nCM8P8UyyjrzCM0O2sw==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.7", + "@babel/helper-wrap-function": "^7.25.7", + "@babel/traverse": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.7.tgz", + "integrity": "sha512-iy8JhqlUW9PtZkd4pHM96v6BdJ66Ba9yWSE4z0W4TvSZwLBPkyDsiIU3ENe4SmrzRBs76F7rQXTy1lYC49n6Lw==", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.25.7", + "@babel/helper-optimise-call-expression": "^7.25.7", + "@babel/traverse": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.7.tgz", + "integrity": "sha512-FPGAkJmyoChQeM+ruBGIDyrT2tKfZJO8NcxdC+CWNJi7N8/rZpSxK7yvBJ5O/nF1gfu5KzN7VKG3YVSLFfRSxQ==", + "dependencies": { + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.7.tgz", + "integrity": "sha512-pPbNbchZBkPMD50K0p3JGcFMNLVUCuU/ABybm/PGNj4JiHrpmNyqqCphBk4i19xXtNV0JhldQJJtbSW5aUvbyA==", + "dependencies": { + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.7.tgz", + "integrity": "sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz", + "integrity": "sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.7.tgz", + "integrity": "sha512-ytbPLsm+GjArDYXJ8Ydr1c/KJuutjF2besPNbIZnZ6MKUxi/uTA22t2ymmA4WFjZFpjiAMO0xuuJPqK2nvDVfQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.7.tgz", + "integrity": "sha512-MA0roW3JF2bD1ptAaJnvcabsVlNQShUaThyJbCDD4bCp8NEgiFvpoqRI2YS22hHlc2thjO/fTg2ShLMC3jygAg==", + "dependencies": { + "@babel/template": "^7.25.7", + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.7.tgz", + "integrity": "sha512-Sv6pASx7Esm38KQpF/U/OXLwPPrdGHNKoeblRxgZRLXnAtnkEe4ptJPDtAZM7fBLadbc1Q07kQpSiGQ0Jg6tRA==", + "dependencies": { + "@babel/template": "^7.25.7", + "@babel/types": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.7.tgz", + "integrity": "sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.25.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.8.tgz", + "integrity": "sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==", + "dependencies": { + "@babel/types": "^7.25.8" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.7.tgz", + "integrity": "sha512-UV9Lg53zyebzD1DwQoT9mzkEKa922LNUp5YkTJ6Uta0RbyXaQNUgcvSt7qIu1PpPzVb6rd10OVNTzkyBGeVmxQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/traverse": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.7.tgz", + "integrity": "sha512-GDDWeVLNxRIkQTnJn2pDOM1pkCgYdSqPeT1a9vh9yIqu2uzzgw1zcqEb+IJOhy+dTBMlNdThrDIksr2o09qrrQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.7.tgz", + "integrity": "sha512-wxyWg2RYaSUYgmd9MR0FyRGyeOMQE/Uzr1wzd/g5cf5bwi9A4v6HFdDm7y1MgDtod/fLOSTZY6jDgV0xU9d5bA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.7.tgz", + "integrity": "sha512-Xwg6tZpLxc4iQjorYsyGMyfJE7nP5MV8t/Ka58BgiA7Jw0fRqQNcANlLfdJ/yvBt9z9LD2We+BEkT7vLqZRWng==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7", + "@babel/plugin-transform-optional-chaining": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.7.tgz", + "integrity": "sha512-UVATLMidXrnH+GMUIuxq55nejlj02HP7F5ETyBONzP6G87fPBogG4CH6kxrSrdIuAjdwNO9VzyaYsrZPscWUrw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/traverse": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.25.7.tgz", + "integrity": "sha512-ZvZQRmME0zfJnDQnVBKYzHxXT7lYBB3Revz1GuS7oLXWMgqUPX4G+DDbT30ICClht9WKV34QVrZhSw6WdklwZQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.7.tgz", + "integrity": "sha512-AqVo+dguCgmpi/3mYBdu9lkngOBlQ2w2vnNpa6gfiCxQZLzV4ZbhsXitJ2Yblkoe1VQwtHSaNmIaGll/26YWRw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.7.tgz", + "integrity": "sha512-ruZOnKO+ajVL/MVx+PwNBPOkrnXTXoWMtte1MBpegfCArhqOe3Bj52avVj1huLLxNKYKXYaSxZ2F+woK1ekXfw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.7.tgz", + "integrity": "sha512-EJN2mKxDwfOUCPxMO6MUI58RN3ganiRAG/MS/S3HfB6QFNjroAMelQo/gybyYq97WerCBAZoyrAoW8Tzdq2jWg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.8.tgz", + "integrity": "sha512-9ypqkozyzpG+HxlH4o4gdctalFGIjjdufzo7I2XPda0iBnZ6a+FO0rIEQcdSPXp02CkvGsII1exJhmROPQd5oA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/helper-remap-async-to-generator": "^7.25.7", + "@babel/traverse": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.7.tgz", + "integrity": "sha512-ZUCjAavsh5CESCmi/xCpX1qcCaAglzs/7tmuvoFnJgA1dM7gQplsguljoTg+Ru8WENpX89cQyAtWoaE0I3X3Pg==", + "dependencies": { + "@babel/helper-module-imports": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/helper-remap-async-to-generator": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.7.tgz", + "integrity": "sha512-xHttvIM9fvqW+0a3tZlYcZYSBpSWzGBFIt/sYG3tcdSzBB8ZeVgz2gBP7Df+sM0N1850jrviYSSeUuc+135dmQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.7.tgz", + "integrity": "sha512-ZEPJSkVZaeTFG/m2PARwLZQ+OG0vFIhPlKHK/JdIMy8DbRJ/htz6LRrTFtdzxi9EHmcwbNPAKDnadpNSIW+Aow==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.7.tgz", + "integrity": "sha512-mhyfEW4gufjIqYFo9krXHJ3ElbFLIze5IDp+wQTxoPd+mwFb1NxatNAwmv8Q8Iuxv7Zc+q8EkiMQwc9IhyGf4g==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.25.8.tgz", + "integrity": "sha512-e82gl3TCorath6YLf9xUwFehVvjvfqFhdOo4+0iVIVju+6XOi5XHkqB3P2AXnSwoeTX0HBoXq5gJFtvotJzFnQ==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.7.tgz", + "integrity": "sha512-9j9rnl+YCQY0IGoeipXvnk3niWicIB6kCsWRGLwX241qSXpbA4MKxtp/EdvFxsc4zI5vqfLxzOd0twIJ7I99zg==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.7", + "@babel/helper-compilation-targets": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/helper-replace-supers": "^7.25.7", + "@babel/traverse": "^7.25.7", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.7.tgz", + "integrity": "sha512-QIv+imtM+EtNxg/XBKL3hiWjgdLjMOmZ+XzQwSgmBfKbfxUjBzGgVPklUuE55eq5/uVoh8gg3dqlrwR/jw3ZeA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/template": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.7.tgz", + "integrity": "sha512-xKcfLTlJYUczdaM1+epcdh1UGewJqr9zATgrNHcLBcV2QmfvPPEixo/sK/syql9cEmbr7ulu5HMFG5vbbt/sEA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.7.tgz", + "integrity": "sha512-kXzXMMRzAtJdDEgQBLF4oaiT6ZCU3oWHgpARnTKDAqPkDJ+bs3NrZb310YYevR5QlRo3Kn7dzzIdHbZm1VzJdQ==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.7.tgz", + "integrity": "sha512-by+v2CjoL3aMnWDOyCIg+yxU9KXSRa9tN6MbqggH5xvymmr9p4AMjYkNlQy4brMceBnUyHZ9G8RnpvT8wP7Cfg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.7.tgz", + "integrity": "sha512-HvS6JF66xSS5rNKXLqkk7L9c/jZ/cdIVIcoPVrnl8IsVpLggTjXs8OWekbLHs/VtYDDh5WXnQyeE3PPUGm22MA==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.8.tgz", + "integrity": "sha512-gznWY+mr4ZQL/EWPcbBQUP3BXS5FwZp8RUOw06BaRn8tQLzN4XLIxXejpHN9Qo8x8jjBmAAKp6FoS51AgkSA/A==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.25.7.tgz", + "integrity": "sha512-yjqtpstPfZ0h/y40fAXRv2snciYr0OAoMXY/0ClC7tm4C/nG5NJKmIItlaYlLbIVAWNfrYuy9dq1bE0SbX0PEg==", + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.8.tgz", + "integrity": "sha512-sPtYrduWINTQTW7FtOy99VCTWp4H23UX7vYcut7S4CIMEXU+54zKX9uCoGkLsWXteyaMXzVHgzWbLfQ1w4GZgw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.7.tgz", + "integrity": "sha512-n/TaiBGJxYFWvpJDfsxSj9lEEE44BFM1EPGz4KEiTipTgkoFVVcCmzAL3qA7fdQU96dpo4gGf5HBx/KnDvqiHw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.7.tgz", + "integrity": "sha512-5MCTNcjCMxQ63Tdu9rxyN6cAWurqfrDZ76qvVPrGYdBxIj+EawuuxTu/+dgJlhK5eRz3v1gLwp6XwS8XaX2NiQ==", + "dependencies": { + "@babel/helper-compilation-targets": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/traverse": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.8.tgz", + "integrity": "sha512-4OMNv7eHTmJ2YXs3tvxAfa/I43di+VcF+M4Wt66c88EAED1RoGaf1D64cL5FkRpNL+Vx9Hds84lksWvd/wMIdA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.7.tgz", + "integrity": "sha512-fwzkLrSu2fESR/cm4t6vqd7ebNIopz2QHGtjoU+dswQo/P6lwAG04Q98lliE3jkz/XqnbGFLnUcE0q0CVUf92w==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.8.tgz", + "integrity": "sha512-f5W0AhSbbI+yY6VakT04jmxdxz+WsID0neG7+kQZbCOjuyJNdL5Nn4WIBm4hRpKnUcO9lP0eipUhFN12JpoH8g==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.7.tgz", + "integrity": "sha512-Std3kXwpXfRV0QtQy5JJcRpkqP8/wG4XL7hSKZmGlxPlDqmpXtEPRmhF7ztnlTCtUN3eXRUJp+sBEZjaIBVYaw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.7.tgz", + "integrity": "sha512-CgselSGCGzjQvKzghCvDTxKHP3iooenLpJDO842ehn5D2G5fJB222ptnDwQho0WjEvg7zyoxb9P+wiYxiJX5yA==", + "dependencies": { + "@babel/helper-module-transforms": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.25.7.tgz", + "integrity": "sha512-L9Gcahi0kKFYXvweO6n0wc3ZG1ChpSFdgG+eV1WYZ3/dGbJK7vvk91FgGgak8YwRgrCuihF8tE/Xg07EkL5COg==", + "dependencies": { + "@babel/helper-module-transforms": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/helper-simple-access": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.7.tgz", + "integrity": "sha512-t9jZIvBmOXJsiuyOwhrIGs8dVcD6jDyg2icw1VL4A/g+FnWyJKwUfSSU2nwJuMV2Zqui856El9u+ElB+j9fV1g==", + "dependencies": { + "@babel/helper-module-transforms": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/helper-validator-identifier": "^7.25.7", + "@babel/traverse": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.7.tgz", + "integrity": "sha512-p88Jg6QqsaPh+EB7I9GJrIqi1Zt4ZBHUQtjw3z1bzEXcLh6GfPqzZJ6G+G1HBGKUNukT58MnKG7EN7zXQBCODw==", + "dependencies": { + "@babel/helper-module-transforms": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.7.tgz", + "integrity": "sha512-BtAT9LzCISKG3Dsdw5uso4oV1+v2NlVXIIomKJgQybotJY3OwCwJmkongjHgwGKoZXd0qG5UZ12JUlDQ07W6Ow==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.7.tgz", + "integrity": "sha512-CfCS2jDsbcZaVYxRFo2qtavW8SpdzmBXC2LOI4oO0rP+JSRDxxF3inF4GcPsLgfb5FjkhXG5/yR/lxuRs2pySA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.8.tgz", + "integrity": "sha512-Z7WJJWdQc8yCWgAmjI3hyC+5PXIubH9yRKzkl9ZEG647O9szl9zvmKLzpbItlijBnVhTUf1cpyWBsZ3+2wjWPQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.8.tgz", + "integrity": "sha512-rm9a5iEFPS4iMIy+/A/PiS0QN0UyjPIeVvbU5EMZFKJZHt8vQnasbpo3T3EFcxzCeYO0BHfc4RqooCZc51J86Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.8.tgz", + "integrity": "sha512-LkUu0O2hnUKHKE7/zYOIjByMa4VRaV2CD/cdGz0AxU9we+VA3kDDggKEzI0Oz1IroG+6gUP6UmWEHBMWZU316g==", + "dependencies": { + "@babel/helper-compilation-targets": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/plugin-transform-parameters": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.7.tgz", + "integrity": "sha512-pWT6UXCEW3u1t2tcAGtE15ornCBvopHj9Bps9D2DsH15APgNVOTwwczGckX+WkAvBmuoYKRCFa4DK+jM8vh5AA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/helper-replace-supers": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.8.tgz", + "integrity": "sha512-EbQYweoMAHOn7iJ9GgZo14ghhb9tTjgOc88xFgYngifx7Z9u580cENCV159M4xDh3q/irbhSjZVpuhpC2gKBbg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.8.tgz", + "integrity": "sha512-q05Bk7gXOxpTHoQ8RSzGSh/LHVB9JEIkKnk3myAWwZHnYiTGYtbdrYkIsS8Xyh4ltKf7GNUSgzs/6P2bJtBAQg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.7.tgz", + "integrity": "sha512-FYiTvku63me9+1Nz7TOx4YMtW3tWXzfANZtrzHhUZrz4d47EEtMQhzFoZWESfXuAMMT5mwzD4+y1N8ONAX6lMQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.7.tgz", + "integrity": "sha512-KY0hh2FluNxMLwOCHbxVOKfdB5sjWG4M183885FmaqWWiGMhRZq4DQRKH6mHdEucbJnyDyYiZNwNG424RymJjA==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.8.tgz", + "integrity": "sha512-8Uh966svuB4V8RHHg0QJOB32QK287NBksJOByoKmHMp1TAobNniNalIkI2i5IPj5+S9NYCG4VIjbEuiSN8r+ow==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.7", + "@babel/helper-create-class-features-plugin": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.7.tgz", + "integrity": "sha512-lQEeetGKfFi0wHbt8ClQrUSUMfEeI3MMm74Z73T9/kuz990yYVtfofjf3NuA42Jy3auFOpbjDyCSiIkTs1VIYw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.7.tgz", + "integrity": "sha512-mgDoQCRjrY3XK95UuV60tZlFCQGXEtMg8H+IsW72ldw1ih1jZhzYXbJvghmAEpg5UVhhnCeia1CkGttUvCkiMQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.7", + "regenerator-transform": "^0.15.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.7.tgz", + "integrity": "sha512-3OfyfRRqiGeOvIWSagcwUTVk2hXBsr/ww7bLn6TRTuXnexA+Udov2icFOxFX9abaj4l96ooYkcNN1qi2Zvqwng==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.7.tgz", + "integrity": "sha512-uBbxNwimHi5Bv3hUccmOFlUy3ATO6WagTApenHz9KzoIdn0XeACdB12ZJ4cjhuB2WSi80Ez2FWzJnarccriJeA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.7.tgz", + "integrity": "sha512-Mm6aeymI0PBh44xNIv/qvo8nmbkpZze1KvR8MkEqbIREDxoiWTi18Zr2jryfRMwDfVZF9foKh060fWgni44luw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.7.tgz", + "integrity": "sha512-ZFAeNkpGuLnAQ/NCsXJ6xik7Id+tHuS+NT+ue/2+rn/31zcdnupCdmunOizEaP0JsUmTFSTOPoQY7PkK2pttXw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.7.tgz", + "integrity": "sha512-SI274k0nUsFFmyQupiO7+wKATAmMFf8iFgq2O+vVFXZ0SV9lNfT1NGzBEhjquFmD8I9sqHLguH+gZVN3vww2AA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.7.tgz", + "integrity": "sha512-OmWmQtTHnO8RSUbL0NTdtpbZHeNTnm68Gj5pA4Y2blFNh+V4iZR68V1qL9cI37J21ZN7AaCnkfdHtLExQPf2uA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.7.tgz", + "integrity": "sha512-BN87D7KpbdiABA+t3HbVqHzKWUDN3dymLaTnPFAMyc8lV+KN3+YzNhVRNdinaCPA4AUqx7ubXbQ9shRjYBl3SQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.7.tgz", + "integrity": "sha512-IWfR89zcEPQGB/iB408uGtSPlQd3Jpq11Im86vUgcmSTcoWAiQMCTOa2K2yNNqFJEBVICKhayctee65Ka8OB0w==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.7.tgz", + "integrity": "sha512-8JKfg/hiuA3qXnlLx8qtv5HWRbgyFx2hMMtpDDuU2rTckpKkGu4ycK5yYHwuEa16/quXfoxHBIApEsNyMWnt0g==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.7.tgz", + "integrity": "sha512-YRW8o9vzImwmh4Q3Rffd09bH5/hvY0pxg+1H1i0f7APoUeg12G7+HhLj9ZFNIrYkgBXhIijPJ+IXypN0hLTIbw==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.25.8.tgz", + "integrity": "sha512-58T2yulDHMN8YMUxiLq5YmWUnlDCyY1FsHM+v12VMx+1/FlrUj5tY50iDCpofFQEM8fMYOaY9YRvym2jcjn1Dg==", + "dependencies": { + "@babel/compat-data": "^7.25.8", + "@babel/helper-compilation-targets": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/helper-validator-option": "^7.25.7", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.7", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.7", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.7", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.7", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-import-assertions": "^7.25.7", + "@babel/plugin-syntax-import-attributes": "^7.25.7", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.25.7", + "@babel/plugin-transform-async-generator-functions": "^7.25.8", + "@babel/plugin-transform-async-to-generator": "^7.25.7", + "@babel/plugin-transform-block-scoped-functions": "^7.25.7", + "@babel/plugin-transform-block-scoping": "^7.25.7", + "@babel/plugin-transform-class-properties": "^7.25.7", + "@babel/plugin-transform-class-static-block": "^7.25.8", + "@babel/plugin-transform-classes": "^7.25.7", + "@babel/plugin-transform-computed-properties": "^7.25.7", + "@babel/plugin-transform-destructuring": "^7.25.7", + "@babel/plugin-transform-dotall-regex": "^7.25.7", + "@babel/plugin-transform-duplicate-keys": "^7.25.7", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.7", + "@babel/plugin-transform-dynamic-import": "^7.25.8", + "@babel/plugin-transform-exponentiation-operator": "^7.25.7", + "@babel/plugin-transform-export-namespace-from": "^7.25.8", + "@babel/plugin-transform-for-of": "^7.25.7", + "@babel/plugin-transform-function-name": "^7.25.7", + "@babel/plugin-transform-json-strings": "^7.25.8", + "@babel/plugin-transform-literals": "^7.25.7", + "@babel/plugin-transform-logical-assignment-operators": "^7.25.8", + "@babel/plugin-transform-member-expression-literals": "^7.25.7", + "@babel/plugin-transform-modules-amd": "^7.25.7", + "@babel/plugin-transform-modules-commonjs": "^7.25.7", + "@babel/plugin-transform-modules-systemjs": "^7.25.7", + "@babel/plugin-transform-modules-umd": "^7.25.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.7", + "@babel/plugin-transform-new-target": "^7.25.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.25.8", + "@babel/plugin-transform-numeric-separator": "^7.25.8", + "@babel/plugin-transform-object-rest-spread": "^7.25.8", + "@babel/plugin-transform-object-super": "^7.25.7", + "@babel/plugin-transform-optional-catch-binding": "^7.25.8", + "@babel/plugin-transform-optional-chaining": "^7.25.8", + "@babel/plugin-transform-parameters": "^7.25.7", + "@babel/plugin-transform-private-methods": "^7.25.7", + "@babel/plugin-transform-private-property-in-object": "^7.25.8", + "@babel/plugin-transform-property-literals": "^7.25.7", + "@babel/plugin-transform-regenerator": "^7.25.7", + "@babel/plugin-transform-reserved-words": "^7.25.7", + "@babel/plugin-transform-shorthand-properties": "^7.25.7", + "@babel/plugin-transform-spread": "^7.25.7", + "@babel/plugin-transform-sticky-regex": "^7.25.7", + "@babel/plugin-transform-template-literals": "^7.25.7", + "@babel/plugin-transform-typeof-symbol": "^7.25.7", + "@babel/plugin-transform-unicode-escapes": "^7.25.7", + "@babel/plugin-transform-unicode-property-regex": "^7.25.7", + "@babel/plugin-transform-unicode-regex": "^7.25.7", + "@babel/plugin-transform-unicode-sets-regex": "^7.25.7", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.6", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "core-js-compat": "^3.38.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.7.tgz", + "integrity": "sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.7.tgz", + "integrity": "sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA==", + "dependencies": { + "@babel/code-frame": "^7.25.7", + "@babel/parser": "^7.25.7", + "@babel/types": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.7.tgz", + "integrity": "sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==", + "dependencies": { + "@babel/code-frame": "^7.25.7", + "@babel/generator": "^7.25.7", + "@babel/parser": "^7.25.7", + "@babel/template": "^7.25.7", + "@babel/types": "^7.25.7", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.8.tgz", + "integrity": "sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==", + "dependencies": { + "@babel/helper-string-parser": "^7.25.7", + "@babel/helper-validator-identifier": "^7.25.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@ctrl/tinycolor": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz", + "integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.3.1.tgz", + "integrity": "sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emotion/hash": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", + "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==" + }, + "node_modules/@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "optional": true, + "dependencies": { + "@emotion/memoize": "0.7.4" + } + }, + "node_modules/@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "optional": true + }, + "node_modules/@emotion/stylis": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz", + "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==" + }, + "node_modules/@emotion/unitless": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz", + "integrity": "sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.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": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@fast-csv/format": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@fast-csv/format/-/format-4.3.5.tgz", + "integrity": "sha512-8iRn6QF3I8Ak78lNAa+Gdl5MJJBM5vRHivFtMRUWINdevNo00K7OXxS2PshawLKTejVwieIlPmK5YlLu6w4u8A==", + "dependencies": { + "@types/node": "^14.0.1", + "lodash.escaperegexp": "^4.1.2", + "lodash.isboolean": "^3.0.3", + "lodash.isequal": "^4.5.0", + "lodash.isfunction": "^3.0.9", + "lodash.isnil": "^4.0.0" + } + }, + "node_modules/@fast-csv/parse": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/@fast-csv/parse/-/parse-4.3.6.tgz", + "integrity": "sha512-uRsLYksqpbDmWaSmzvJcuApSEe38+6NQZBUsuAyMZKqHxH0g1wcJgsKUvN3WC8tewaqFjBMMGrkHmC+T7k8LvA==", + "dependencies": { + "@types/node": "^14.0.1", + "lodash.escaperegexp": "^4.1.2", + "lodash.groupby": "^4.6.0", + "lodash.isfunction": "^3.0.9", + "lodash.isnil": "^4.0.0", + "lodash.isundefined": "^3.0.1", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "deprecated": "Use @eslint/config-array instead", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.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, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true + }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz", + "integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.0.4" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz", + "integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.0.4" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz", + "integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz", + "integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz", + "integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz", + "integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz", + "integrity": "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz", + "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz", + "integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz", + "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz", + "integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.0.5" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz", + "integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.0.4" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz", + "integrity": "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.0.4" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz", + "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.0.4" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz", + "integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz", + "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.0.4" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz", + "integrity": "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==", + "cpu": [ + "wasm32" + ], + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.2.0" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz", + "integrity": "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz", + "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "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==", + "dev": true, + "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/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@next/env": { + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.15.tgz", + "integrity": "sha512-S1qaj25Wru2dUpcIZMjxeMVSwkt8BK4dmWHHiBuRstcIyOsMapqT4A4jSB6onvqeygkSSmOkyny9VVx8JIGamQ==" + }, + "node_modules/@next/eslint-plugin-next": { + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.2.5.tgz", + "integrity": "sha512-LY3btOpPh+OTIpviNojDpUdIbHW9j0JBYBjsIp8IxtDFfYFyORvw3yNq6N231FVqQA7n7lwaf7xHbVJlA1ED7g==", + "dev": true, + "dependencies": { + "glob": "10.3.10" + } + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.15.tgz", + "integrity": "sha512-Rvh7KU9hOUBnZ9TJ28n2Oa7dD9cvDBKua9IKx7cfQQ0GoYUwg9ig31O2oMwH3wm+pE3IkAQ67ZobPfEgurPZIA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.15.tgz", + "integrity": "sha512-5TGyjFcf8ampZP3e+FyCax5zFVHi+Oe7sZyaKOngsqyaNEpOgkKB3sqmymkZfowy3ufGA/tUgDPPxpQx931lHg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.15.tgz", + "integrity": "sha512-3Bwv4oc08ONiQ3FiOLKT72Q+ndEMyLNsc/D3qnLMbtUYTQAmkx9E/JRu0DBpHxNddBmNT5hxz1mYBphJ3mfrrw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.15.tgz", + "integrity": "sha512-k5xf/tg1FBv/M4CMd8S+JL3uV9BnnRmoe7F+GWC3DxkTCD9aewFRH1s5rJ1zkzDa+Do4zyN8qD0N8c84Hu96FQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.15.tgz", + "integrity": "sha512-kE6q38hbrRbKEkkVn62reLXhThLRh6/TvgSP56GkFNhU22TbIrQDEMrO7j0IcQHcew2wfykq8lZyHFabz0oBrA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.15.tgz", + "integrity": "sha512-PZ5YE9ouy/IdO7QVJeIcyLn/Rc4ml9M2G4y3kCM9MNf1YKvFY4heg3pVa/jQbMro+tP6yc4G2o9LjAz1zxD7tQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.15.tgz", + "integrity": "sha512-2raR16703kBvYEQD9HNLyb0/394yfqzmIeyp2nDzcPV4yPjqNUG3ohX6jX00WryXz6s1FXpVhsCo3i+g4RUX+g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-ia32-msvc": { + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.15.tgz", + "integrity": "sha512-fyTE8cklgkyR1p03kJa5zXEaZ9El+kDNM5A+66+8evQS5e/6v0Gk28LqA0Jet8gKSOyP+OTm/tJHzMlGdQerdQ==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.15.tgz", + "integrity": "sha512-SzqGbsLsP9OwKNUG9nekShTwhj6JSB9ZLMWQ8g1gG6hdE5gQLncbnbymrwy2yVmH9nikSLYRYxYMFu78Ggp7/g==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "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==", + "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==", + "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==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nolyfill/is-core-module": { + "version": "1.0.39", + "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", + "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", + "dev": true, + "engines": { + "node": ">=12.4.0" + } + }, + "node_modules/@parcel/watcher": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.4.1.tgz", + "integrity": "sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==", + "dependencies": { + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.4.1", + "@parcel/watcher-darwin-arm64": "2.4.1", + "@parcel/watcher-darwin-x64": "2.4.1", + "@parcel/watcher-freebsd-x64": "2.4.1", + "@parcel/watcher-linux-arm-glibc": "2.4.1", + "@parcel/watcher-linux-arm64-glibc": "2.4.1", + "@parcel/watcher-linux-arm64-musl": "2.4.1", + "@parcel/watcher-linux-x64-glibc": "2.4.1", + "@parcel/watcher-linux-x64-musl": "2.4.1", + "@parcel/watcher-win32-arm64": "2.4.1", + "@parcel/watcher-win32-ia32": "2.4.1", + "@parcel/watcher-win32-x64": "2.4.1" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.4.1.tgz", + "integrity": "sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.4.1.tgz", + "integrity": "sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.4.1.tgz", + "integrity": "sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.4.1.tgz", + "integrity": "sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.4.1.tgz", + "integrity": "sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.4.1.tgz", + "integrity": "sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.4.1.tgz", + "integrity": "sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.4.1.tgz", + "integrity": "sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.4.1.tgz", + "integrity": "sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.4.1.tgz", + "integrity": "sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.4.1.tgz", + "integrity": "sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.4.1.tgz", + "integrity": "sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "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==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@rc-component/async-validator": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@rc-component/async-validator/-/async-validator-5.0.4.tgz", + "integrity": "sha512-qgGdcVIF604M9EqjNF0hbUTz42bz/RDtxWdWuU5EQe3hi7M8ob54B6B35rOsvX5eSvIHIzT9iH1R3n+hk3CGfg==", + "dependencies": { + "@babel/runtime": "^7.24.4" + }, + "engines": { + "node": ">=14.x" + } + }, + "node_modules/@rc-component/color-picker": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@rc-component/color-picker/-/color-picker-2.0.1.tgz", + "integrity": "sha512-WcZYwAThV/b2GISQ8F+7650r5ZZJ043E57aVBFkQ+kSY4C6wdofXgB0hBx+GPGpIU0Z81eETNoDUJMr7oy/P8Q==", + "dependencies": { + "@ant-design/fast-color": "^2.0.6", + "@babel/runtime": "^7.23.6", + "classnames": "^2.2.6", + "rc-util": "^5.38.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/context": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@rc-component/context/-/context-1.4.0.tgz", + "integrity": "sha512-kFcNxg9oLRMoL3qki0OMxK+7g5mypjgaaJp/pkOis/6rVxma9nJBF/8kCIuTYHUQNr0ii7MxqE33wirPZLJQ2w==", + "dependencies": { + "@babel/runtime": "^7.10.1", + "rc-util": "^5.27.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/mini-decimal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rc-component/mini-decimal/-/mini-decimal-1.1.0.tgz", + "integrity": "sha512-jS4E7T9Li2GuYwI6PyiVXmxTiM6b07rlD9Ge8uGZSCz3WlzcG5ZK7g5bbuKNeZ9pgUuPK/5guV781ujdVpm4HQ==", + "dependencies": { + "@babel/runtime": "^7.18.0" + }, + "engines": { + "node": ">=8.x" + } + }, + "node_modules/@rc-component/mutate-observer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rc-component/mutate-observer/-/mutate-observer-1.1.0.tgz", + "integrity": "sha512-QjrOsDXQusNwGZPf4/qRQasg7UFEj06XiCJ8iuiq/Io7CrHrgVi6Uuetw60WAMG1799v+aM8kyc+1L/GBbHSlw==", + "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/portal": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@rc-component/portal/-/portal-1.1.2.tgz", + "integrity": "sha512-6f813C0IsasTZms08kfA8kPAGxbbkYToa8ALaiDIGGECU4i9hj8Plgbx0sNJDrey3EtHO30hmdaxtT0138xZcg==", + "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/qrcode": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rc-component/qrcode/-/qrcode-1.0.0.tgz", + "integrity": "sha512-L+rZ4HXP2sJ1gHMGHjsg9jlYBX/SLN2D6OxP9Zn3qgtpMWtO2vUfxVFwiogHpAIqs54FnALxraUy/BCO1yRIgg==", + "dependencies": { + "@babel/runtime": "^7.24.7", + "classnames": "^2.3.2", + "rc-util": "^5.38.0" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/tour": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@rc-component/tour/-/tour-1.15.1.tgz", + "integrity": "sha512-Tr2t7J1DKZUpfJuDZWHxyxWpfmj8EZrqSgyMZ+BCdvKZ6r1UDsfU46M/iWAAFBy961Ssfom2kv5f3UcjIL2CmQ==", + "dependencies": { + "@babel/runtime": "^7.18.0", + "@rc-component/portal": "^1.0.0-9", + "@rc-component/trigger": "^2.0.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.2.3", + "resolved": "https://registry.npmjs.org/@rc-component/trigger/-/trigger-2.2.3.tgz", + "integrity": "sha512-X1oFIpKoXAMXNDYCviOmTfuNuYxE4h5laBsyCqVAVMjNHxoF3/uiyA7XdegK1XbCvBbCZ6P6byWrEoDRpKL8+A==", + "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.38.0" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rollup/plugin-babel": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", + "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==", + "dependencies": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@types/babel__core": "^7.1.9", + "rollup": "^1.20.0||^2.0.0" + }, + "peerDependenciesMeta": { + "@types/babel__core": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", + "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/plugin-replace": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", + "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "magic-string": "^0.25.7" + }, + "peerDependencies": { + "rollup": "^1.20.0 || ^2.0.0" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/pluginutils/node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==" + }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.4.tgz", + "integrity": "sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==", + "dev": true + }, + "node_modules/@surma/rollup-plugin-off-main-thread": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", + "integrity": "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==", + "dependencies": { + "ejs": "^3.1.6", + "json5": "^2.2.0", + "magic-string": "^0.25.0", + "string.prototype.matchall": "^4.0.6" + } + }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==" + }, + "node_modules/@swc/helpers": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.5.tgz", + "integrity": "sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==", + "dependencies": { + "@swc/counter": "^0.1.3", + "tslib": "^2.4.0" + } + }, + "node_modules/@types/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==" + }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "peer": true + }, + "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==", + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "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==" + }, + "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 + }, + "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==" + }, + "node_modules/@types/node": { + "version": "14.18.63", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.63.tgz", + "integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==" + }, + "node_modules/@types/raf": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/@types/raf/-/raf-3.4.3.tgz", + "integrity": "sha512-c4YAvMedbPZ5tEyxzQdMoOhhJ4RD3rngZIdwC2/qDN3d7JpEhB6fiBRKVY1lg5B7Wk+uPBjn5f39j1/2MY1oOw==", + "optional": true + }, + "node_modules/@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==" + }, + "node_modules/@typescript-eslint/parser": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.2.0.tgz", + "integrity": "sha512-5FKsVcHTk6TafQKQbuIVkXq58Fnbkd2wDL4LB7AURN7RUOu1utVP+G8+6u3ZhEroW3DF6hyo3ZEXxgKgp4KeCg==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "7.2.0", + "@typescript-eslint/types": "7.2.0", + "@typescript-eslint/typescript-estree": "7.2.0", + "@typescript-eslint/visitor-keys": "7.2.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.2.0.tgz", + "integrity": "sha512-Qh976RbQM/fYtjx9hs4XkayYujB/aPwglw2choHmf3zBjB4qOywWSdt9+KLRdHubGcoSwBnXUH2sR3hkyaERRg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.2.0", + "@typescript-eslint/visitor-keys": "7.2.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.2.0.tgz", + "integrity": "sha512-XFtUHPI/abFhm4cbCDc5Ykc8npOKBSJePY3a3s+lwumt7XWJuzP5cZcfZ610MIPHjQjNsOLlYK8ASPaNG8UiyA==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.2.0.tgz", + "integrity": "sha512-cyxS5WQQCoBwSakpMrvMXuMDEbhOo9bNHHrNcEWis6XHx6KF518tkF1wBvKIn/tpq5ZpUYK7Bdklu8qY0MsFIA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.2.0", + "@typescript-eslint/visitor-keys": "7.2.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.2.0.tgz", + "integrity": "sha512-c6EIQRHhcpl6+tO8EMR+kjkkV+ugUNXOmeASA1rlzkd8EPIriavpWoiEz1HR/VLhbVIdhqnV6E7JZm00cBDx2A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.2.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", + "peer": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "peer": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "peer": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", + "peer": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "peer": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "peer": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.12.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "peer": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "peer": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "peer": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xmldom/xmldom": { + "version": "0.8.10", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", + "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", + "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==", + "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==", + "peer": true + }, + "node_modules/acorn": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz", + "integrity": "sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", + "peer": true, + "peerDependencies": { + "acorn": "^8" + } + }, + "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, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "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-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "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==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/antd": { + "version": "5.21.4", + "resolved": "https://registry.npmjs.org/antd/-/antd-5.21.4.tgz", + "integrity": "sha512-yMpwam1A4/RIIemJK0V3SpMAfgbBEM47OFzEYcEQPDP+B4ZAeviKOLaFFxUt/sxRCMeoALnJEK6Hb6qOqL0hbA==", + "dependencies": { + "@ant-design/colors": "^7.1.0", + "@ant-design/cssinjs": "^1.21.1", + "@ant-design/cssinjs-utils": "^1.1.1", + "@ant-design/icons": "^5.5.1", + "@ant-design/react-slick": "~1.1.2", + "@babel/runtime": "^7.25.6", + "@ctrl/tinycolor": "^3.6.1", + "@rc-component/color-picker": "~2.0.1", + "@rc-component/mutate-observer": "^1.1.0", + "@rc-component/qrcode": "~1.0.0", + "@rc-component/tour": "~1.15.1", + "@rc-component/trigger": "^2.2.3", + "classnames": "^2.5.1", + "copy-to-clipboard": "^3.3.3", + "dayjs": "^1.11.11", + "rc-cascader": "~3.28.1", + "rc-checkbox": "~3.3.0", + "rc-collapse": "~3.8.0", + "rc-dialog": "~9.6.0", + "rc-drawer": "~7.2.0", + "rc-dropdown": "~4.2.0", + "rc-field-form": "~2.4.0", + "rc-image": "~7.11.0", + "rc-input": "~1.6.3", + "rc-input-number": "~9.2.0", + "rc-mentions": "~2.16.1", + "rc-menu": "~9.15.1", + "rc-motion": "^2.9.3", + "rc-notification": "~5.6.2", + "rc-pagination": "~4.3.0", + "rc-picker": "~4.6.15", + "rc-progress": "~4.0.0", + "rc-rate": "~2.13.0", + "rc-resize-observer": "^1.4.0", + "rc-segmented": "~2.5.0", + "rc-select": "~14.15.2", + "rc-slider": "~11.1.7", + "rc-steps": "~6.0.1", + "rc-switch": "~4.1.0", + "rc-table": "~7.47.5", + "rc-tabs": "~15.3.0", + "rc-textarea": "~1.8.2", + "rc-tooltip": "~6.2.1", + "rc-tree": "~5.9.0", + "rc-tree-select": "~5.23.0", + "rc-upload": "~4.8.1", + "rc-util": "^5.43.0", + "scroll-into-view-if-needed": "^3.1.0", + "throttle-debounce": "^5.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/ant-design" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/archiver": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.2.tgz", + "integrity": "sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw==", + "dependencies": { + "archiver-utils": "^2.1.0", + "async": "^3.2.4", + "buffer-crc32": "^0.2.1", + "readable-stream": "^3.6.0", + "readdir-glob": "^1.1.2", + "tar-stream": "^2.2.0", + "zip-stream": "^4.1.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/archiver-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", + "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", + "dependencies": { + "glob": "^7.1.4", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^2.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/archiver-utils/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", + "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/archiver-utils/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/archiver-utils/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==", + "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/archiver-utils/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==" + }, + "node_modules/archiver-utils/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==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "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 + }, + "node_modules/aria-query": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "dev": true, + "dependencies": { + "deep-equal": "^2.0.5" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-tree-filter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-tree-filter/-/array-tree-filter-2.1.0.tgz", + "integrity": "sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw==" + }, + "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==", + "engines": { + "node": ">=8" + } + }, + "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==", + "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, + "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.findlastindex": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "dev": true, + "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.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "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, + "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.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ast-types-flow": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", + "dev": true + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axe-core": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.1.tgz", + "integrity": "sha512-qPC9o+kD8Tir0lzNGLeghbOrWMr3ZJpaRlCIb6Uobt/7N4FiEDvqUMnxzCHRHmg8vOg14kr5gVNyScRmbMaJ9g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/babel-loader": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.4.1.tgz", + "integrity": "sha512-nXzRChX+Z1GoE6yWavBQg6jDslyFF3SDjl2paADuoQtQW10JqShJt62R6eJQ5m/pjJFDT8xgKIWSP85OY8eXeA==", + "dependencies": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.4", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "engines": { + "node": ">= 8.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", + "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.6.2", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz", + "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.2", + "core-js-compat": "^3.38.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz", + "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-styled-components": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-2.1.4.tgz", + "integrity": "sha512-Xgp9g+A/cG47sUyRwwYxGM4bR/jDRg5N6it/8+HxCnbT5XNKSKDT9xm4oag/osgqjC2It/vH0yXsomOG6k558g==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-module-imports": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.22.5", + "lodash": "^4.17.21", + "picomatch": "^2.3.1" + }, + "peerDependencies": { + "styled-components": ">= 2" + } + }, + "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==" + }, + "node_modules/base64-arraybuffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", + "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==", + "engines": { + "node": ">= 0.6.0" + } + }, + "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==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/big-integer": { + "version": "1.6.52", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", + "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "engines": { + "node": "*" + } + }, + "node_modules/binary": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", + "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", + "dependencies": { + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bluebird": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", + "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "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==", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/broadcast-channel": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/broadcast-channel/-/broadcast-channel-3.7.0.tgz", + "integrity": "sha512-cIAKJXAxGJceNZGTZSBzMxzyOn72cVgPnKx4dc6LRjQgbaJUQqhy5rzL3zbMxkMWsGKkv2hSFkPRMEXfoMZ2Mg==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "detect-node": "^2.1.0", + "js-sha3": "0.8.0", + "microseconds": "0.2.0", + "nano-time": "1.0.0", + "oblivious-set": "1.0.0", + "rimraf": "3.0.2", + "unload": "2.2.0" + } + }, + "node_modules/browserslist": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.0.tgz", + "integrity": "sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==", + "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" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001663", + "electron-to-chromium": "^1.5.28", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/btoa": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz", + "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==", + "bin": { + "btoa": "bin/btoa.js" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "engines": { + "node": "*" + } + }, + "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==" + }, + "node_modules/buffer-indexof-polyfill": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", + "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==", + "engines": { + "node": ">=0.2.0" + } + }, + "node_modules/builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelize": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz", + "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001669", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001669.tgz", + "integrity": "sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w==", + "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" + } + ] + }, + "node_modules/canvg": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/canvg/-/canvg-3.0.10.tgz", + "integrity": "sha512-qwR2FRNO9NlzTeKIPIKpnTY6fqwuYSequ8Ru8c0YkYU7U0oW+hLUvWadLvAu1Rl72OMNiFhoLu4f8eUjQ7l/+Q==", + "optional": true, + "dependencies": { + "@babel/runtime": "^7.12.5", + "@types/raf": "^3.4.0", + "core-js": "^3.8.3", + "raf": "^3.4.1", + "regenerator-runtime": "^0.13.7", + "rgbcolor": "^1.0.1", + "stackblur-canvas": "^2.0.0", + "svg-pathdata": "^6.0.3" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/canvg/node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "optional": true + }, + "node_modules/chainsaw": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", + "dependencies": { + "traverse": ">=0.3.0 <0.4" + }, + "engines": { + "node": "*" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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/chokidar": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.1.tgz", + "integrity": "sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "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==", + "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==" + }, + "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==", + "dependencies": { + "del": "^4.1.1" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "webpack": ">=4.0.0 <6.0.0" + } + }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" + }, + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.0" + } + }, + "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==", + "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==" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "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==" + }, + "node_modules/common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" + }, + "node_modules/compress-commons": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.2.tgz", + "integrity": "sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg==", + "dependencies": { + "buffer-crc32": "^0.2.13", + "crc32-stream": "^4.0.2", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/compute-scroll-into-view": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-3.1.0.tgz", + "integrity": "sha512-rj8l8pD4bJ1nx+dAkMhV1xB5RuZEyVysfxJqB1pRchh1KVvwOv9b7CGB8ZfjTImVv2oF+sYMUkMZq6Na5Ftmbg==" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "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==" + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookies-next": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/cookies-next/-/cookies-next-4.3.0.tgz", + "integrity": "sha512-XxeCwLR30cWwRd94sa9X5lRCDLVujtx73tv+N0doQCFIDl83fuuYdxbu/WQUt9aSV7EJx7bkMvJldjvzuFqr4w==", + "dependencies": { + "@types/cookie": "^0.6.0", + "cookie": "^0.7.0" + } + }, + "node_modules/copy-to-clipboard": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz", + "integrity": "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==", + "dependencies": { + "toggle-selection": "^1.0.6" + } + }, + "node_modules/core-js": { + "version": "3.38.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.38.1.tgz", + "integrity": "sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw==", + "hasInstallScript": true, + "optional": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.38.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.1.tgz", + "integrity": "sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==", + "dependencies": { + "browserslist": "^4.23.3" + }, + "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==" + }, + "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==", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/crc32-stream": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.3.tgz", + "integrity": "sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw==", + "dependencies": { + "crc-32": "^1.2.0", + "readable-stream": "^3.4.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/css-color-keywords": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", + "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/css-line-break": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-2.1.0.tgz", + "integrity": "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==", + "dependencies": { + "utrie": "^1.0.2" + } + }, + "node_modules/css-to-react-native": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz", + "integrity": "sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==", + "dependencies": { + "camelize": "^1.0.0", + "css-color-keywords": "^1.0.0", + "postcss-value-parser": "^4.0.2" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true + }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/dayjs": { + "version": "1.11.13", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", + "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==" + }, + "node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-equal": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", + "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.5", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.2", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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 + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "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==", + "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==", + "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/del/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==", + "dependencies": { + "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/del/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", + "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/del/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==", + "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/del/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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/del/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", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" + }, + "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==", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/docxtemplater": { + "version": "3.51.0", + "resolved": "https://registry.npmjs.org/docxtemplater/-/docxtemplater-3.51.0.tgz", + "integrity": "sha512-tv6Xz2PEda08Jwa74yXDET2thb6MIpDNuDnt5fpCvGo4vwA+380Kt+jNBv7uKtcON0ZF4vQ0r28v09emfasTXA==", + "dependencies": { + "@xmldom/xmldom": "^0.8.10" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/dompurify": { + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.5.7.tgz", + "integrity": "sha512-2q4bEI+coQM8f5ez7kt2xclg1XsecaV9ASJk/54vwlfRRNQfDqJz2pzQ8t0Ix/ToBpXlVjrRIx7pFC/o8itG2Q==", + "optional": true + }, + "node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "dependencies": { + "readable-stream": "^2.0.2" + } + }, + "node_modules/duplexer2/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/duplexer2/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==", + "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/duplexer2/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==" + }, + "node_modules/duplexer2/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==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.40", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.40.tgz", + "integrity": "sha512-LYm78o6if4zTasnYclgQzxEcgMoIcybWOhkATWepN95uwVVWV0/IW10v+2sIeHE+bIYWipLneTftVyQm45UY7g==" + }, + "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==", + "dev": true + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/es-abstract": { + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.1.0.tgz", + "integrity": "sha512-/SurEfycdyssORP/E+bj4sEu1CWw4EmLDsHynHwSXQ7utgbrMRWW195pTrCjFgFCddf/UkYm3oqKPRq5i8bJbw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.4", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "iterator.prototype": "^1.1.3", + "safe-array-concat": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", + "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", + "peer": true + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-next": { + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-14.2.5.tgz", + "integrity": "sha512-zogs9zlOiZ7ka+wgUnmcM0KBEDjo4Jis7kxN1jvC0N4wynQ2MIx/KBkg4mVF63J5EK4W0QMCn7xO3vNisjaAoA==", + "dev": true, + "dependencies": { + "@next/eslint-plugin-next": "14.2.5", + "@rushstack/eslint-patch": "^1.3.3", + "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || 7.0.0 - 7.2.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-import-resolver-typescript": "^3.5.2", + "eslint-plugin-import": "^2.28.1", + "eslint-plugin-jsx-a11y": "^6.7.1", + "eslint-plugin-react": "^7.33.2", + "eslint-plugin-react-hooks": "^4.5.0 || 5.0.0-canary-7118f5dd7-20230705" + }, + "peerDependencies": { + "eslint": "^7.23.0 || ^8.0.0", + "typescript": ">=3.3.1" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-typescript": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.3.tgz", + "integrity": "sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA==", + "dev": true, + "dependencies": { + "@nolyfill/is-core-module": "1.0.39", + "debug": "^4.3.5", + "enhanced-resolve": "^5.15.0", + "eslint-module-utils": "^2.8.1", + "fast-glob": "^3.3.2", + "get-tsconfig": "^4.7.5", + "is-bun-module": "^1.0.2", + "is-glob": "^4.0.3" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*", + "eslint-plugin-import-x": "*" + }, + "peerDependenciesMeta": { + "eslint-plugin-import": { + "optional": true + }, + "eslint-plugin-import-x": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", + "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", + "dev": true, + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", + "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", + "dev": true, + "dependencies": { + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.8", + "array.prototype.findlastindex": "^1.2.5", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.0", + "hasown": "^2.0.2", + "is-core-module": "^2.15.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.0", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.8", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/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, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.0.tgz", + "integrity": "sha512-ySOHvXX8eSN6zz8Bywacm7CvGNhUtdjvqfQDVe6020TUK34Cywkw7m0KsCCk1Qtm9G1FayfTN1/7mMYnYO2Bhg==", + "dev": true, + "dependencies": { + "aria-query": "~5.1.3", + "array-includes": "^3.1.8", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "^4.10.0", + "axobject-query": "^4.1.0", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "es-iterator-helpers": "^1.0.19", + "hasown": "^2.0.2", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "safe-regex-test": "^1.0.3", + "string.prototype.includes": "^2.0.0" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.37.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.1.tgz", + "integrity": "sha512-xwTnwDqzbDRA8uJ7BMxPs/EXRB3i8ZfnOIp8BsxEQkT0nHPp+WWceqGgo6rKb9ctNi8GJLDT4Go5HAWELa/WMg==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.2", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.19", + "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.8", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.0", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.11", + "string.prototype.repeat": "^1.0.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "5.0.0-canary-7118f5dd7-20230705", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.0.0-canary-7118f5dd7-20230705.tgz", + "integrity": "sha512-AZYbMo/NW9chdL7vk6HQzQhT+PvTAEVqWk9ziruUoW2kAOcN5qNyelv70e0F1VNQAbvutOC9oc+xfWycI9FxDw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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, + "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-plugin-react/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, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "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, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.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, + "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==", + "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==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "peer": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/exceljs": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/exceljs/-/exceljs-4.4.0.tgz", + "integrity": "sha512-XctvKaEMaj1Ii9oDOqbW/6e1gXknSY4g/aLCDicOXqBE4M0nRWkUu0PTp++UPNzoFY12BNHMfs/VadKIS6llvg==", + "dependencies": { + "archiver": "^5.0.0", + "dayjs": "^1.8.34", + "fast-csv": "^4.3.1", + "jszip": "^3.10.1", + "readable-stream": "^3.6.0", + "saxes": "^5.0.1", + "tmp": "^0.2.0", + "unzipper": "^0.10.11", + "uuid": "^8.3.0" + }, + "engines": { + "node": ">=8.3.0" + } + }, + "node_modules/exceljs/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/fast-csv": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/fast-csv/-/fast-csv-4.3.6.tgz", + "integrity": "sha512-2RNSpuwwsJGP0frGsOmTb9oUF+VkFSM4SyLTDgwf2ciHWTarN0lQTC+F2f/t5J9QjW+c65VFIAAu85GsvMIusw==", + "dependencies": { + "@fast-csv/format": "4.3.5", + "@fast-csv/parse": "4.3.6" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-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==", + "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==" + }, + "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 + }, + "node_modules/fast-uri": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.3.tgz", + "integrity": "sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==" + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fflate": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", + "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==" + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/file-saver": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz", + "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==" + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "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==", + "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==", + "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-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, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreground-child": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/framer-motion": { + "version": "10.18.0", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-10.18.0.tgz", + "integrity": "sha512-oGlDh1Q1XqYPksuTD/usb0I70hq95OUzmL9+6Zd+Hs4XV0oaISBa/UUMSjYiq6m8EUF32132mOJ8xVZS+I0S6w==", + "dependencies": { + "tslib": "^2.4.0" + }, + "optionalDependencies": { + "@emotion/is-prop-valid": "^0.8.2" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, + "node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "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==" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "deprecated": "This package is no longer supported.", + "dependencies": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + }, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/fstream/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", + "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/fstream/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", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "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==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" + }, + "node_modules/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-tsconfig": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.1.tgz", + "integrity": "sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==", + "dev": true, + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "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, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "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==", + "peer": true + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "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==", + "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": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "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/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "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==", + "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==", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "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==", + "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==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hoist-non-react-statics/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==" + }, + "node_modules/html2canvas": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/html2canvas/-/html2canvas-1.4.1.tgz", + "integrity": "sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==", + "dependencies": { + "css-line-break": "^2.1.0", + "text-segmentation": "^1.0.3" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/idb": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", + "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==" + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" + }, + "node_modules/immutable": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", + "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==" + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "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==" + }, + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bun-module": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-1.2.1.tgz", + "integrity": "sha512-AmidtEM6D6NmUiLOvvU7+IePxjEjOzra2h0pSrsfSAcXwl/83zLLXDByafUJy9k/rKK0pvXMLdwKwGHlX2Ke6Q==", + "dev": true, + "dependencies": { + "semver": "^7.6.3" + } + }, + "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==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.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==", + "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, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==" + }, + "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==", + "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==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "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==", + "dependencies": { + "is-path-inside": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-in-cwd/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==", + "dependencies": { + "path-is-inside": "^1.0.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", + "engines": { + "node": ">=0.10.0" + } + }, + "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, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "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, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" + }, + "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==" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/iterator.prototype": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.3.tgz", + "integrity": "sha512-FW5iMbeQ6rBGm/oKgzq2aW4KvAGpxPzYES8N4g4xNXUKpL1mclMvOe+76AcLDTvD+Ze+sOpVhgdAQEKF4L9iGQ==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jake": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", + "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "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==", + "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==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" + }, + "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==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "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 + }, + "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==", + "peer": true + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + }, + "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==" + }, + "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 + }, + "node_modules/json2mq": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/json2mq/-/json2mq-0.2.0.tgz", + "integrity": "sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA==", + "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==", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonpointer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", + "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jspdf": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jspdf/-/jspdf-2.5.2.tgz", + "integrity": "sha512-myeX9c+p7znDWPk0eTrujCzNjT+CXdXyk7YmJq5nD5V7uLLKmSXnlQ/Jn/kuo3X09Op70Apm0rQSnFWyGK8uEQ==", + "dependencies": { + "@babel/runtime": "^7.23.2", + "atob": "^2.1.2", + "btoa": "^1.2.1", + "fflate": "^0.8.1" + }, + "optionalDependencies": { + "canvg": "^3.0.6", + "core-js": "^3.6.0", + "dompurify": "^2.5.4", + "html2canvas": "^1.0.0-rc.5" + } + }, + "node_modules/jspdf-autotable": { + "version": "3.8.4", + "resolved": "https://registry.npmjs.org/jspdf-autotable/-/jspdf-autotable-3.8.4.tgz", + "integrity": "sha512-rSffGoBsJYX83iTRv8Ft7FhqfgEL2nLpGAIiqruEQQ3e4r0qdLFbPUB7N9HAle0I3XgpisvyW751VHCqKUVOgQ==", + "peerDependencies": { + "jspdf": "^2.5.1" + } + }, + "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, + "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/jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "node_modules/jszip/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/jszip/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==", + "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/jszip/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==" + }, + "node_modules/jszip/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==", + "dependencies": { + "safe-buffer": "~5.1.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, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/language-subtag-registry": { + "version": "0.3.23", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", + "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", + "dev": true + }, + "node_modules/language-tags": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", + "dev": true, + "dependencies": { + "language-subtag-registry": "^0.3.20" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "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==" + }, + "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==", + "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==" + }, + "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==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "engines": { + "node": ">=6" + } + }, + "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, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/listenercount": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", + "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==" + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "peer": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "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, + "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==" + }, + "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==" + }, + "node_modules/lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==" + }, + "node_modules/lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==" + }, + "node_modules/lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==" + }, + "node_modules/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==" + }, + "node_modules/lodash.groupby": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.groupby/-/lodash.groupby-4.6.0.tgz", + "integrity": "sha512-5dcWxm23+VAoz+awKmBaiBvzox8+RqMgFhi7UvX9DHZr2HdxHXM/Wrf8cfKpsW37RNrvtPn6hSwNqurSILbmJw==" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" + }, + "node_modules/lodash.isfunction": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", + "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==" + }, + "node_modules/lodash.isnil": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/lodash.isnil/-/lodash.isnil-4.0.0.tgz", + "integrity": "sha512-up2Mzq3545mwVnMhTDMdfoG1OurpA/s5t88JmQX809eH3C8491iu2sfKhTfhQtKY78oPNhiaHJUpT/dUDAAtng==" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" + }, + "node_modules/lodash.isundefined": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash.isundefined/-/lodash.isundefined-3.0.1.tgz", + "integrity": "sha512-MXB1is3s899/cD8jheYYE2V9qTHwKvt+npCwpD+1Sxm3Q3cECXCiYHjeHWXNwr6Q0SOBPrYUDxendrO6goVTEA==" + }, + "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 + }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==" + }, + "node_modules/lodash.union": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", + "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" + }, + "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==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "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==", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "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==", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/match-sorter": { + "version": "6.3.4", + "resolved": "https://registry.npmjs.org/match-sorter/-/match-sorter-6.3.4.tgz", + "integrity": "sha512-jfZW7cWS5y/1xswZo8VBOdudUiSd9nifYRWphc9M5D/ee4w4AoXLgBEdRbgVaxbMuagBPeUC5y2Hi8DO6o9aDg==", + "dependencies": { + "@babel/runtime": "^7.23.8", + "remove-accents": "0.5.0" + } + }, + "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==" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "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==", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/microseconds": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/microseconds/-/microseconds-0.2.0.tgz", + "integrity": "sha512-n7DHHMjR1avBbSpsTBj6fmMGh2AGrifVV4e+WYc3Q9lO+xnSZ3NyhcBND3vzzatt05LFhoKFRxrIyklmLlUtyA==" + }, + "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==", + "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==", + "peer": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "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==", + "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==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.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==" + }, + "node_modules/nano-time": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/nano-time/-/nano-time-1.0.0.tgz", + "integrity": "sha512-flnngywOoQ0lLQOTRNexn2gGSNuM9bKj9RZAWSzhQ+UJYaAFG9bac4DW9VHjUAzrOaIcajHybCTHe/bkvozQqA==", + "dependencies": { + "big-integer": "^1.6.16" + } + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "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==", + "peer": true + }, + "node_modules/next": { + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/next/-/next-14.2.15.tgz", + "integrity": "sha512-h9ctmOokpoDphRvMGnwOJAedT6zKhwqyZML9mDtspgf4Rh3Pn7UTYKqePNoDvhsWBAO5GoPNYshnAUGIazVGmw==", + "dependencies": { + "@next/env": "14.2.15", + "@swc/helpers": "0.5.5", + "busboy": "1.6.0", + "caniuse-lite": "^1.0.30001579", + "graceful-fs": "^4.2.11", + "postcss": "8.4.31", + "styled-jsx": "5.1.1" + }, + "bin": { + "next": "dist/bin/next" + }, + "engines": { + "node": ">=18.17.0" + }, + "optionalDependencies": { + "@next/swc-darwin-arm64": "14.2.15", + "@next/swc-darwin-x64": "14.2.15", + "@next/swc-linux-arm64-gnu": "14.2.15", + "@next/swc-linux-arm64-musl": "14.2.15", + "@next/swc-linux-x64-gnu": "14.2.15", + "@next/swc-linux-x64-musl": "14.2.15", + "@next/swc-win32-arm64-msvc": "14.2.15", + "@next/swc-win32-ia32-msvc": "14.2.15", + "@next/swc-win32-x64-msvc": "14.2.15" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.1.0", + "@playwright/test": "^1.41.2", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "sass": "^1.3.0" + }, + "peerDependenciesMeta": { + "@opentelemetry/api": { + "optional": true + }, + "@playwright/test": { + "optional": true + }, + "sass": { + "optional": true + } + } + }, + "node_modules/next-image-export-optimizer": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/next-image-export-optimizer/-/next-image-export-optimizer-1.15.1.tgz", + "integrity": "sha512-tx20p74EtW/VeIdoxPt9GtgagGJU3DVDXqBa0VgPYB2wiia6axiljiUeg9KoR1FPOduHxbjPPG3FtkKL0XN7Lg==", + "dependencies": { + "sharp": "^0.33.1", + "typescript": "^5.2.2" + }, + "bin": { + "next-image-export-optimizer": "dist/optimizeImages.js" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "next": ">=13.1.0", + "react": "^18.0.0-0" + } + }, + "node_modules/next-pwa": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/next-pwa/-/next-pwa-5.6.0.tgz", + "integrity": "sha512-XV8g8C6B7UmViXU8askMEYhWwQ4qc/XqJGnexbLV68hzKaGHZDMtHsm2TNxFcbR7+ypVuth/wwpiIlMwpRJJ5A==", + "dependencies": { + "babel-loader": "^8.2.5", + "clean-webpack-plugin": "^4.0.0", + "globby": "^11.0.4", + "terser-webpack-plugin": "^5.3.3", + "workbox-webpack-plugin": "^6.5.4", + "workbox-window": "^6.5.4" + }, + "peerDependencies": { + "next": ">=9.0.0" + } + }, + "node_modules/nextjs-toploader": { + "version": "1.6.12", + "resolved": "https://registry.npmjs.org/nextjs-toploader/-/nextjs-toploader-1.6.12.tgz", + "integrity": "sha512-nbun5lvVjlKnxLQlahzZ55nELVEduqoEXT03KCHnsEYJnFpI/3BaIzpMyq/v8C7UGU2NfxQmjq6ldZ310rsDqA==", + "dependencies": { + "nprogress": "^0.2.0", + "prop-types": "^15.8.1" + }, + "funding": { + "url": "https://github.com/sponsors/TheSGJ" + }, + "peerDependencies": { + "next": ">= 6.0.0", + "react": ">= 16.0.0", + "react-dom": ">= 16.0.0" + } + }, + "node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==" + }, + "node_modules/node-releases": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==" + }, + "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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nprogress": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz", + "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==" + }, + "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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" + }, + "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==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", + "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "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, + "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.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "dev": true, + "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/oblivious-set": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/oblivious-set/-/oblivious-set-1.0.0.tgz", + "integrity": "sha512-z+pI07qxo4c2CulUHCDf9lcqDlMSo72N/4rLUpRXf6fu+q8vjt8y0xS+Tlf8NTJDdTXHbdeO1n3MlbctwEoXZw==" + }, + "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==", + "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, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "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, + "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==", + "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==", + "engines": { + "node": ">=6" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "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==", + "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==" + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "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==" + }, + "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==", + "dev": true, + "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==", + "dev": true + }, + "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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "optional": true + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "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==", + "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==", + "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==", + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "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==", + "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==", + "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==", + "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==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "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" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, + "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, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==" + }, + "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==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/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==" + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "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==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/raf": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", + "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", + "optional": true, + "dependencies": { + "performance-now": "^2.1.0" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/rc-cascader": { + "version": "3.28.2", + "resolved": "https://registry.npmjs.org/rc-cascader/-/rc-cascader-3.28.2.tgz", + "integrity": "sha512-8f+JgM83iLTvjgdkgU7GfI4qY8icXOBP0cGZjOdx2iJAkEe8ucobxDQAVE69UD/c3ehCxZlcgEHeD5hFmypbUw==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "array-tree-filter": "^2.1.0", + "classnames": "^2.3.1", + "rc-select": "~14.15.0", + "rc-tree": "~5.9.0", + "rc-util": "^5.37.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-checkbox": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/rc-checkbox/-/rc-checkbox-3.3.0.tgz", + "integrity": "sha512-Ih3ZaAcoAiFKJjifzwsGiT/f/quIkxJoklW4yKGho14Olulwn8gN7hOBve0/WGDg5o/l/5mL0w7ff7/YGvefVw==", + "dependencies": { + "@babel/runtime": "^7.10.1", + "classnames": "^2.3.2", + "rc-util": "^5.25.2" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-collapse": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/rc-collapse/-/rc-collapse-3.8.0.tgz", + "integrity": "sha512-YVBkssrKPBG09TGfcWWGj8zJBYD9G3XuTy89t5iUmSXrIXEAnO1M+qjUxRW6b4Qi0+wNWG6MHJF/+US+nmIlzA==", + "dependencies": { + "@babel/runtime": "^7.10.1", + "classnames": "2.x", + "rc-motion": "^2.3.4", + "rc-util": "^5.27.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-dialog": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/rc-dialog/-/rc-dialog-9.6.0.tgz", + "integrity": "sha512-ApoVi9Z8PaCQg6FsUzS8yvBEQy0ZL2PkuvAgrmohPkN3okps5WZ5WQWPc1RNuiOKaAYv8B97ACdsFU5LizzCqg==", + "dependencies": { + "@babel/runtime": "^7.10.1", + "@rc-component/portal": "^1.0.0-8", + "classnames": "^2.2.6", + "rc-motion": "^2.3.0", + "rc-util": "^5.21.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-drawer": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/rc-drawer/-/rc-drawer-7.2.0.tgz", + "integrity": "sha512-9lOQ7kBekEJRdEpScHvtmEtXnAsy+NGDXiRWc2ZVC7QXAazNVbeT4EraQKYwCME8BJLa8Bxqxvs5swwyOepRwg==", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@rc-component/portal": "^1.1.1", + "classnames": "^2.2.6", + "rc-motion": "^2.6.1", + "rc-util": "^5.38.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-dropdown": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/rc-dropdown/-/rc-dropdown-4.2.0.tgz", + "integrity": "sha512-odM8Ove+gSh0zU27DUj5cG1gNKg7mLWBYzB5E4nNLrLwBmYEgYP43vHKDGOVZcJSVElQBI0+jTQgjnq0NfLjng==", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@rc-component/trigger": "^2.0.0", + "classnames": "^2.2.6", + "rc-util": "^5.17.0" + }, + "peerDependencies": { + "react": ">=16.11.0", + "react-dom": ">=16.11.0" + } + }, + "node_modules/rc-field-form": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/rc-field-form/-/rc-field-form-2.4.0.tgz", + "integrity": "sha512-XZ/lF9iqf9HXApIHQHqzJK5v2w4mkUMsVqAzOyWVzoiwwXEavY6Tpuw7HavgzIoD+huVff4JghSGcgEfX6eycg==", + "dependencies": { + "@babel/runtime": "^7.18.0", + "@rc-component/async-validator": "^5.0.3", + "rc-util": "^5.32.2" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-image": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/rc-image/-/rc-image-7.11.0.tgz", + "integrity": "sha512-aZkTEZXqeqfPZtnSdNUnKQA0N/3MbgR7nUnZ+/4MfSFWPFHZau4p5r5ShaI0KPEMnNjv4kijSCFq/9wtJpwykw==", + "dependencies": { + "@babel/runtime": "^7.11.2", + "@rc-component/portal": "^1.0.2", + "classnames": "^2.2.6", + "rc-dialog": "~9.6.0", + "rc-motion": "^2.6.2", + "rc-util": "^5.34.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-input": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/rc-input/-/rc-input-1.6.3.tgz", + "integrity": "sha512-wI4NzuqBS8vvKr8cljsvnTUqItMfG1QbJoxovCgL+DX4eVUcHIjVwharwevIxyy7H/jbLryh+K7ysnJr23aWIA==", + "dependencies": { + "@babel/runtime": "^7.11.1", + "classnames": "^2.2.1", + "rc-util": "^5.18.1" + }, + "peerDependencies": { + "react": ">=16.0.0", + "react-dom": ">=16.0.0" + } + }, + "node_modules/rc-input-number": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/rc-input-number/-/rc-input-number-9.2.0.tgz", + "integrity": "sha512-5XZFhBCV5f9UQ62AZ2hFbEY8iZT/dm23Q1kAg0H8EvOgD3UDbYYJAayoVIkM3lQaCqYAW5gV0yV3vjw1XtzWHg==", + "dependencies": { + "@babel/runtime": "^7.10.1", + "@rc-component/mini-decimal": "^1.0.1", + "classnames": "^2.2.5", + "rc-input": "~1.6.0", + "rc-util": "^5.40.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-mentions": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/rc-mentions/-/rc-mentions-2.16.1.tgz", + "integrity": "sha512-GnhSTGP9Mtv6pqFFGQze44LlrtWOjHNrUUAcsdo9DnNAhN4pwVPEWy4z+2jpjkiGlJ3VoXdvMHcNDQdfI9fEaw==", + "dependencies": { + "@babel/runtime": "^7.22.5", + "@rc-component/trigger": "^2.0.0", + "classnames": "^2.2.6", + "rc-input": "~1.6.0", + "rc-menu": "~9.15.1", + "rc-textarea": "~1.8.0", + "rc-util": "^5.34.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-menu": { + "version": "9.15.1", + "resolved": "https://registry.npmjs.org/rc-menu/-/rc-menu-9.15.1.tgz", + "integrity": "sha512-UKporqU6LPfHnpPmtP6hdEK4iO5Q+b7BRv/uRpxdIyDGplZy9jwUjsnpev5bs3PQKB0H0n34WAPDfjAfn3kAPA==", + "dependencies": { + "@babel/runtime": "^7.10.1", + "@rc-component/trigger": "^2.0.0", + "classnames": "2.x", + "rc-motion": "^2.4.3", + "rc-overflow": "^1.3.1", + "rc-util": "^5.27.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-motion": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/rc-motion/-/rc-motion-2.9.3.tgz", + "integrity": "sha512-rkW47ABVkic7WEB0EKJqzySpvDqwl60/tdkY7hWP7dYnh5pm0SzJpo54oW3TDUGXV5wfxXFmMkxrzRRbotQ0+w==", + "dependencies": { + "@babel/runtime": "^7.11.1", + "classnames": "^2.2.1", + "rc-util": "^5.43.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-notification": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/rc-notification/-/rc-notification-5.6.2.tgz", + "integrity": "sha512-Id4IYMoii3zzrG0lB0gD6dPgJx4Iu95Xu0BQrhHIbp7ZnAZbLqdqQ73aIWH0d0UFcElxwaKjnzNovTjo7kXz7g==", + "dependencies": { + "@babel/runtime": "^7.10.1", + "classnames": "2.x", + "rc-motion": "^2.9.0", + "rc-util": "^5.20.1" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-overflow": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/rc-overflow/-/rc-overflow-1.3.2.tgz", + "integrity": "sha512-nsUm78jkYAoPygDAcGZeC2VwIg/IBGSodtOY3pMof4W3M9qRJgqaDYm03ZayHlde3I6ipliAxbN0RUcGf5KOzw==", + "dependencies": { + "@babel/runtime": "^7.11.1", + "classnames": "^2.2.1", + "rc-resize-observer": "^1.0.0", + "rc-util": "^5.37.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-pagination": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/rc-pagination/-/rc-pagination-4.3.0.tgz", + "integrity": "sha512-UubEWA0ShnroQ1tDa291Fzw6kj0iOeF26IsUObxYTpimgj4/qPCWVFl18RLZE+0Up1IZg0IK4pMn6nB3mjvB7g==", + "dependencies": { + "@babel/runtime": "^7.10.1", + "classnames": "^2.3.2", + "rc-util": "^5.38.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-picker": { + "version": "4.6.15", + "resolved": "https://registry.npmjs.org/rc-picker/-/rc-picker-4.6.15.tgz", + "integrity": "sha512-OWZ1yrMie+KN2uEUfYCfS4b2Vu6RC1FWwNI0s+qypsc3wRt7g+peuZKVIzXCTaJwyyZruo80+akPg2+GmyiJjw==", + "dependencies": { + "@babel/runtime": "^7.24.7", + "@rc-component/trigger": "^2.0.0", + "classnames": "^2.2.1", + "rc-overflow": "^1.3.2", + "rc-resize-observer": "^1.4.0", + "rc-util": "^5.43.0" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "date-fns": ">= 2.x", + "dayjs": ">= 1.x", + "luxon": ">= 3.x", + "moment": ">= 2.x", + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + }, + "peerDependenciesMeta": { + "date-fns": { + "optional": true + }, + "dayjs": { + "optional": true + }, + "luxon": { + "optional": true + }, + "moment": { + "optional": true + } + } + }, + "node_modules/rc-progress": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/rc-progress/-/rc-progress-4.0.0.tgz", + "integrity": "sha512-oofVMMafOCokIUIBnZLNcOZFsABaUw8PPrf1/y0ZBvKZNpOiu5h4AO9vv11Sw0p4Hb3D0yGWuEattcQGtNJ/aw==", + "dependencies": { + "@babel/runtime": "^7.10.1", + "classnames": "^2.2.6", + "rc-util": "^5.16.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-rate": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/rc-rate/-/rc-rate-2.13.0.tgz", + "integrity": "sha512-oxvx1Q5k5wD30sjN5tqAyWTvJfLNNJn7Oq3IeS4HxWfAiC4BOXMITNAsw7u/fzdtO4MS8Ki8uRLOzcnEuoQiAw==", + "dependencies": { + "@babel/runtime": "^7.10.1", + "classnames": "^2.2.5", + "rc-util": "^5.0.1" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-resize-observer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/rc-resize-observer/-/rc-resize-observer-1.4.0.tgz", + "integrity": "sha512-PnMVyRid9JLxFavTjeDXEXo65HCRqbmLBw9xX9gfC4BZiSzbLXKzW3jPz+J0P71pLbD5tBMTT+mkstV5gD0c9Q==", + "dependencies": { + "@babel/runtime": "^7.20.7", + "classnames": "^2.2.1", + "rc-util": "^5.38.0", + "resize-observer-polyfill": "^1.5.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-segmented": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/rc-segmented/-/rc-segmented-2.5.0.tgz", + "integrity": "sha512-B28Fe3J9iUFOhFJET3RoXAPFJ2u47QvLSYcZWC4tFYNGPEjug5LAxEasZlA/PpAxhdOPqGWsGbSj7ftneukJnw==", + "dependencies": { + "@babel/runtime": "^7.11.1", + "classnames": "^2.2.1", + "rc-motion": "^2.4.4", + "rc-util": "^5.17.0" + }, + "peerDependencies": { + "react": ">=16.0.0", + "react-dom": ">=16.0.0" + } + }, + "node_modules/rc-select": { + "version": "14.15.2", + "resolved": "https://registry.npmjs.org/rc-select/-/rc-select-14.15.2.tgz", + "integrity": "sha512-oNoXlaFmpqXYcQDzcPVLrEqS2J9c+/+oJuGrlXeVVX/gVgrbHa5YcyiRUXRydFjyuA7GP3elRuLF7Y3Tfwltlw==", + "dependencies": { + "@babel/runtime": "^7.10.1", + "@rc-component/trigger": "^2.1.1", + "classnames": "2.x", + "rc-motion": "^2.0.1", + "rc-overflow": "^1.3.1", + "rc-util": "^5.16.1", + "rc-virtual-list": "^3.5.2" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": "*", + "react-dom": "*" + } + }, + "node_modules/rc-slider": { + "version": "11.1.7", + "resolved": "https://registry.npmjs.org/rc-slider/-/rc-slider-11.1.7.tgz", + "integrity": "sha512-ytYbZei81TX7otdC0QvoYD72XSlxvTihNth5OeZ6PMXyEDq/vHdWFulQmfDGyXK1NwKwSlKgpvINOa88uT5g2A==", + "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-steps": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/rc-steps/-/rc-steps-6.0.1.tgz", + "integrity": "sha512-lKHL+Sny0SeHkQKKDJlAjV5oZ8DwCdS2hFhAkIjuQt1/pB81M0cA0ErVFdHq9+jmPmFw1vJB2F5NBzFXLJxV+g==", + "dependencies": { + "@babel/runtime": "^7.16.7", + "classnames": "^2.2.3", + "rc-util": "^5.16.1" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-switch": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/rc-switch/-/rc-switch-4.1.0.tgz", + "integrity": "sha512-TI8ufP2Az9oEbvyCeVE4+90PDSljGyuwix3fV58p7HV2o4wBnVToEyomJRVyTaZeqNPAp+vqeo4Wnj5u0ZZQBg==", + "dependencies": { + "@babel/runtime": "^7.21.0", + "classnames": "^2.2.1", + "rc-util": "^5.30.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-table": { + "version": "7.47.5", + "resolved": "https://registry.npmjs.org/rc-table/-/rc-table-7.47.5.tgz", + "integrity": "sha512-fzq+V9j/atbPIcvs3emuclaEoXulwQpIiJA6/7ey52j8+9cJ4P8DGmp4YzfUVDrb3qhgedcVeD6eRgUrokwVEQ==", + "dependencies": { + "@babel/runtime": "^7.10.1", + "@rc-component/context": "^1.4.0", + "classnames": "^2.2.5", + "rc-resize-observer": "^1.1.0", + "rc-util": "^5.41.0", + "rc-virtual-list": "^3.14.2" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-tabs": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/rc-tabs/-/rc-tabs-15.3.0.tgz", + "integrity": "sha512-lzE18r+zppT/jZWOAWS6ntdkDUKHOLJzqMi5UAij1LeKwOaQaupupAoI9Srn73GRzVpmGznkECMRrzkRusC40A==", + "dependencies": { + "@babel/runtime": "^7.11.2", + "classnames": "2.x", + "rc-dropdown": "~4.2.0", + "rc-menu": "~9.15.1", + "rc-motion": "^2.6.2", + "rc-resize-observer": "^1.0.0", + "rc-util": "^5.34.1" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-textarea": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/rc-textarea/-/rc-textarea-1.8.2.tgz", + "integrity": "sha512-UFAezAqltyR00a8Lf0IPAyTd29Jj9ee8wt8DqXyDMal7r/Cg/nDt3e1OOv3Th4W6mKaZijjgwuPXhAfVNTN8sw==", + "dependencies": { + "@babel/runtime": "^7.10.1", + "classnames": "^2.2.1", + "rc-input": "~1.6.0", + "rc-resize-observer": "^1.0.0", + "rc-util": "^5.27.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-tooltip": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/rc-tooltip/-/rc-tooltip-6.2.1.tgz", + "integrity": "sha512-rws0duD/3sHHsD905Nex7FvoUGy2UBQRhTkKxeEvr2FB+r21HsOxcDJI0TzyO8NHhnAA8ILr8pfbSBg5Jj5KBg==", + "dependencies": { + "@babel/runtime": "^7.11.2", + "@rc-component/trigger": "^2.0.0", + "classnames": "^2.3.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-tree": { + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/rc-tree/-/rc-tree-5.9.0.tgz", + "integrity": "sha512-CPrgOvm9d/9E+izTONKSngNzQdIEjMox2PBufWjS1wf7vxtvmCWzK1SlpHbRY6IaBfJIeZ+88RkcIevf729cRg==", + "dependencies": { + "@babel/runtime": "^7.10.1", + "classnames": "2.x", + "rc-motion": "^2.0.1", + "rc-util": "^5.16.1", + "rc-virtual-list": "^3.5.1" + }, + "engines": { + "node": ">=10.x" + }, + "peerDependencies": { + "react": "*", + "react-dom": "*" + } + }, + "node_modules/rc-tree-select": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/rc-tree-select/-/rc-tree-select-5.23.0.tgz", + "integrity": "sha512-aQGi2tFSRw1WbXv0UVXPzHm09E0cSvUVZMLxQtMv3rnZZpNmdRXWrnd9QkLNlVH31F+X5rgghmdSFF3yZW0N9A==", + "dependencies": { + "@babel/runtime": "^7.10.1", + "classnames": "2.x", + "rc-select": "~14.15.0", + "rc-tree": "~5.9.0", + "rc-util": "^5.16.1" + }, + "peerDependencies": { + "react": "*", + "react-dom": "*" + } + }, + "node_modules/rc-upload": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/rc-upload/-/rc-upload-4.8.1.tgz", + "integrity": "sha512-toEAhwl4hjLAI1u8/CgKWt30BR06ulPa4iGQSMvSXoHzO88gPCslxqV/mnn4gJU7PDoltGIC9Eh+wkeudqgHyw==", + "dependencies": { + "@babel/runtime": "^7.18.3", + "classnames": "^2.2.5", + "rc-util": "^5.2.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-util": { + "version": "5.43.0", + "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.43.0.tgz", + "integrity": "sha512-AzC7KKOXFqAdIBqdGWepL9Xn7cm3vnAmjlHqUnoQaTMZYhM4VlXGLkkHHxj/BZ7Td0+SOPKB4RGPboBVKT9htw==", + "dependencies": { + "@babel/runtime": "^7.18.3", + "react-is": "^18.2.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-virtual-list": { + "version": "3.14.8", + "resolved": "https://registry.npmjs.org/rc-virtual-list/-/rc-virtual-list-3.14.8.tgz", + "integrity": "sha512-8D0KfzpRYi6YZvlOWIxiOm9BGt4Wf2hQyEaM6RXlDDiY2NhLheuYI+RA+7ZaZj1lq+XQqy3KHlaeeXQfzI5fGg==", + "dependencies": { + "@babel/runtime": "^7.20.0", + "classnames": "^2.2.6", + "rc-resize-observer": "^1.0.0", + "rc-util": "^5.36.0" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-hook-form": { + "version": "7.53.0", + "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.53.0.tgz", + "integrity": "sha512-M1n3HhqCww6S2hxLxciEXy2oISPnAzxY7gvwVPrtlczTM/1dDadXgUxDpHMrMTblDOcm/AXtXxHwZ3jpg1mqKQ==", + "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-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==" + }, + "node_modules/react-query": { + "version": "3.39.3", + "resolved": "https://registry.npmjs.org/react-query/-/react-query-3.39.3.tgz", + "integrity": "sha512-nLfLz7GiohKTJDuT4us4X3h/8unOh+00MLb2yJoGTPjxKs2bc1iDhkNx2bd5MKklXnOD3NrVZ+J2UXujA5In4g==", + "dependencies": { + "@babel/runtime": "^7.5.5", + "broadcast-channel": "^3.4.1", + "match-sorter": "^6.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + }, + "react-native": { + "optional": true + } + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "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==", + "dependencies": { + "minimatch": "^5.1.0" + } + }, + "node_modules/readdir-glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "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==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/readdirp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz", + "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==", + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", + "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.1", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", + "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + }, + "node_modules/regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz", + "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.1.1.tgz", + "integrity": "sha512-k67Nb9jvwJcJmVpw0jPttR1/zVfnKf8Km0IPatrU/zJ5XeG3+Slx0xLXs9HByJSzXzrlz5EDvN6yLNMDc2qdnw==", + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.2.0", + "regjsgen": "^0.8.0", + "regjsparser": "^0.11.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==" + }, + "node_modules/regjsparser": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.11.1.tgz", + "integrity": "sha512-1DHODs4B8p/mQHU9kr+jv8+wIC9mtG4eBHxWxIq5mhjE3D5oORhCc6deRKzTjs9DcfRFmj9BHSDguZklqCGFWQ==", + "dependencies": { + "jsesc": "~3.0.2" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/remove-accents": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.5.0.tgz", + "integrity": "sha512-8g3/Otx1eJaVD12e31UbJj1YzdtVvzH85HV7t+9MJYk/u3XmkOUJ5Ys9wQrf9PCPK8+xn4ymzqYCiZl6QWKn+A==" + }, + "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==", + "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==" + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rgbcolor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgbcolor/-/rgbcolor-1.0.1.tgz", + "integrity": "sha512-9aZLIrhRaD97sgVhtJOW6ckOEh6/GnvQtdVNfdZ6s67+3/XwLS9lBcQYzEEhYVeUowN7pRzMLsyGhK2i/xvWbw==", + "optional": true, + "engines": { + "node": ">= 0.8.15" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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", + "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/rollup": { + "version": "2.79.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.2.tgz", + "integrity": "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==", + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup-plugin-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + }, + "peerDependencies": { + "rollup": "^2.0.0" + } + }, + "node_modules/rollup-plugin-terser/node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/rollup-plugin-terser/node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dependencies": { + "randombytes": "^2.1.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==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sass": { + "version": "1.80.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.80.1.tgz", + "integrity": "sha512-9lBwDZ7j3y/1DKj5Ec249EVGo5CVpwnzIyIj+cqlCjKkApLnzsJ/l9SnV4YnORvW9dQwQN+gQvh/mFZ8CnDs7Q==", + "dependencies": { + "@parcel/watcher": "^2.4.1", + "chokidar": "^4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/scroll-into-view-if-needed": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-3.1.0.tgz", + "integrity": "sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==", + "dependencies": { + "compute-scroll-into-view": "^3.0.2" + } + }, + "node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "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==", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "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==", + "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==", + "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/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, + "node_modules/shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" + }, + "node_modules/sharp": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz", + "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==", + "hasInstallScript": true, + "dependencies": { + "color": "^4.2.3", + "detect-libc": "^2.0.3", + "semver": "^7.6.3" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.33.5", + "@img/sharp-darwin-x64": "0.33.5", + "@img/sharp-libvips-darwin-arm64": "1.0.4", + "@img/sharp-libvips-darwin-x64": "1.0.4", + "@img/sharp-libvips-linux-arm": "1.0.5", + "@img/sharp-libvips-linux-arm64": "1.0.4", + "@img/sharp-libvips-linux-s390x": "1.0.4", + "@img/sharp-libvips-linux-x64": "1.0.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.0.4", + "@img/sharp-libvips-linuxmusl-x64": "1.0.4", + "@img/sharp-linux-arm": "0.33.5", + "@img/sharp-linux-arm64": "0.33.5", + "@img/sharp-linux-s390x": "0.33.5", + "@img/sharp-linux-x64": "0.33.5", + "@img/sharp-linuxmusl-arm64": "0.33.5", + "@img/sharp-linuxmusl-x64": "0.33.5", + "@img/sharp-wasm32": "0.33.5", + "@img/sharp-win32-ia32": "0.33.5", + "@img/sharp-win32-x64": "0.33.5" + } + }, + "node_modules/sharp/node_modules/detect-libc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" + }, + "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==", + "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==", + "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==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "deprecated": "Please use @jridgewell/sourcemap-codec instead" + }, + "node_modules/stackblur-canvas": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/stackblur-canvas/-/stackblur-canvas-2.7.0.tgz", + "integrity": "sha512-yf7OENo23AGJhBriGx0QivY5JP6Y1HbrrDI6WLt6C5auYZXlQrheoY8hD4ibekFKz1HOfE48Ww8kMWMnJD/zcQ==", + "optional": true, + "engines": { + "node": ">=0.1.14" + } + }, + "node_modules/stop-iteration-iterator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", + "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "dev": true, + "dependencies": { + "internal-slot": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.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==", + "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==" + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/string.prototype.includes": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz", + "integrity": "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", + "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", + "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", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "regexp.prototype.flags": "^1.5.2", + "set-function-name": "^2.0.2", + "side-channel": "^1.0.6" + }, + "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, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "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/stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "dependencies": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", + "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==", + "engines": { + "node": ">=10" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/styled-components": { + "version": "5.3.11", + "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.3.11.tgz", + "integrity": "sha512-uuzIIfnVkagcVHv9nE0VPlHPSCmXIUGKfJ42LNjxCCTDTL5sgnJ8Z7GZBq0EnLYGln77tPpEpExt2+qa+cZqSw==", + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/traverse": "^7.4.5", + "@emotion/is-prop-valid": "^1.1.0", + "@emotion/stylis": "^0.8.4", + "@emotion/unitless": "^0.7.4", + "babel-plugin-styled-components": ">= 1.12.0", + "css-to-react-native": "^3.0.0", + "hoist-non-react-statics": "^3.0.0", + "shallowequal": "^1.1.0", + "supports-color": "^5.5.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/styled-components" + }, + "peerDependencies": { + "react": ">= 16.8.0", + "react-dom": ">= 16.8.0", + "react-is": ">= 16.8.0" + } + }, + "node_modules/styled-components/node_modules/@emotion/is-prop-valid": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.3.1.tgz", + "integrity": "sha512-/ACwoqx7XQi9knQs/G0qKvv5teDMhD7bXYns9N/wM8ah8iNb8jZ2uNO0YOgiq2o2poIvVtJS2YALasQuMSQ7Kw==", + "dependencies": { + "@emotion/memoize": "^0.9.0" + } + }, + "node_modules/styled-components/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==" + }, + "node_modules/styled-components/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/styled-components/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/styled-jsx": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", + "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", + "dependencies": { + "client-only": "0.0.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "peerDependencies": { + "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/stylis": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.4.tgz", + "integrity": "sha512-osIBl6BGUmSfDkyH2mB7EFvCJntXDrLhKjHTRj/rK6xLH0yuPrHULDRQzKokSOD4VoorhtKpfcfW1GAntu8now==" + }, + "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==", + "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==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg-pathdata": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/svg-pathdata/-/svg-pathdata-6.0.3.tgz", + "integrity": "sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw==", + "optional": true, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/tempy": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz", + "integrity": "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==", + "dependencies": { + "is-stream": "^2.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^0.16.0", + "unique-string": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tempy/node_modules/type-fest": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", + "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terser": { + "version": "5.36.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.36.0.tgz", + "integrity": "sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "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.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.20", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" + }, + "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-webpack-plugin/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/text-segmentation": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/text-segmentation/-/text-segmentation-1.0.3.tgz", + "integrity": "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==", + "dependencies": { + "utrie": "^1.0.2" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/throttle-debounce": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-5.0.2.tgz", + "integrity": "sha512-B71/4oyj61iNH0KeCamLuE2rmKuTO5byTOSVwECM5FA7TiAiAW+UqTKZ9ERueC4qvgSttUhdmq1mXC3kJqGX7A==", + "engines": { + "node": ">=12.22" + } + }, + "node_modules/tmp": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", + "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", + "engines": { + "node": ">=14.14" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "engines": { + "node": ">=4" + } + }, + "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==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toggle-selection": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", + "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==" + }, + "node_modules/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/traverse": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", + "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==", + "engines": { + "node": "*" + } + }, + "node_modules/ts-api-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "dev": true, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.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, + "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, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tslib": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.0.tgz", + "integrity": "sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==" + }, + "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, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", + "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", + "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "engines": { + "node": ">=4" + } + }, + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unload": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unload/-/unload-2.2.0.tgz", + "integrity": "sha512-B60uB5TNBLtN6/LsgAf3udH9saB5p7gqJwcFfbOEZ8BcBHnGwCf6G/TGiEqkRAxX7zAFIUtzdrXQSdL3Q/wqNA==", + "dependencies": { + "@babel/runtime": "^7.6.2", + "detect-node": "^2.0.4" + } + }, + "node_modules/unzipper": { + "version": "0.10.14", + "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.14.tgz", + "integrity": "sha512-ti4wZj+0bQTiX2KmKWuwj7lhV+2n//uXEotUmGuQqrbVZSEGFMbI68+c6JCQ8aAmUWYvtHEz2A8K6wXvueR/6g==", + "dependencies": { + "big-integer": "^1.6.17", + "binary": "~0.3.0", + "bluebird": "~3.4.1", + "buffer-indexof-polyfill": "~1.0.0", + "duplexer2": "~0.1.4", + "fstream": "^1.0.12", + "graceful-fs": "^4.2.2", + "listenercount": "~1.0.1", + "readable-stream": "~2.3.6", + "setimmediate": "~1.0.4" + } + }, + "node_modules/unzipper/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/unzipper/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==", + "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/unzipper/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==" + }, + "node_modules/unzipper/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==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", + "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", + "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" + } + ], + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.0" + }, + "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==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/use-sync-external-store": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz", + "integrity": "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/utrie": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/utrie/-/utrie-1.0.2.tgz", + "integrity": "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==", + "dependencies": { + "base64-arraybuffer": "^1.0.2" + } + }, + "node_modules/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/watchpack": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", + "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", + "peer": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + }, + "node_modules/webpack": { + "version": "5.95.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.95.0.tgz", + "integrity": "sha512-2t3XstrKULz41MNMBF+cJ97TyHdyQ8HCt//pqErqDvNjU9YQBnZxIHa11VXsi7F3mb5/aO2tuDxdeTPdU7xu9Q==", + "peer": true, + "dependencies": { + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", + "acorn": "^8.7.1", + "acorn-import-attributes": "^1.9.5", + "browserslist": "^4.21.10", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.1", + "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": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.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.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "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==", + "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==", + "peer": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "peer": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.4.tgz", + "integrity": "sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==", + "dev": true, + "dependencies": { + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "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, + "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.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/workbox-background-sync": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.6.0.tgz", + "integrity": "sha512-jkf4ZdgOJxC9u2vztxLuPT/UjlH7m/nWRQ/MgGL0v8BJHoZdVGJd18Kck+a0e55wGXdqyHO+4IQTk0685g4MUw==", + "dependencies": { + "idb": "^7.0.1", + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-broadcast-update": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.6.0.tgz", + "integrity": "sha512-nm+v6QmrIFaB/yokJmQ/93qIJ7n72NICxIwQwe5xsZiV2aI93MGGyEyzOzDPVz5THEr5rC3FJSsO3346cId64Q==", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-build": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-6.6.0.tgz", + "integrity": "sha512-Tjf+gBwOTuGyZwMz2Nk/B13Fuyeo0Q84W++bebbVsfr9iLkDSo6j6PST8tET9HYA58mlRXwlMGpyWO8ETJiXdQ==", + "dependencies": { + "@apideck/better-ajv-errors": "^0.3.1", + "@babel/core": "^7.11.1", + "@babel/preset-env": "^7.11.0", + "@babel/runtime": "^7.11.2", + "@rollup/plugin-babel": "^5.2.0", + "@rollup/plugin-node-resolve": "^11.2.1", + "@rollup/plugin-replace": "^2.4.1", + "@surma/rollup-plugin-off-main-thread": "^2.2.3", + "ajv": "^8.6.0", + "common-tags": "^1.8.0", + "fast-json-stable-stringify": "^2.1.0", + "fs-extra": "^9.0.1", + "glob": "^7.1.6", + "lodash": "^4.17.20", + "pretty-bytes": "^5.3.0", + "rollup": "^2.43.1", + "rollup-plugin-terser": "^7.0.0", + "source-map": "^0.8.0-beta.0", + "stringify-object": "^3.3.0", + "strip-comments": "^2.0.1", + "tempy": "^0.6.0", + "upath": "^1.2.0", + "workbox-background-sync": "6.6.0", + "workbox-broadcast-update": "6.6.0", + "workbox-cacheable-response": "6.6.0", + "workbox-core": "6.6.0", + "workbox-expiration": "6.6.0", + "workbox-google-analytics": "6.6.0", + "workbox-navigation-preload": "6.6.0", + "workbox-precaching": "6.6.0", + "workbox-range-requests": "6.6.0", + "workbox-recipes": "6.6.0", + "workbox-routing": "6.6.0", + "workbox-strategies": "6.6.0", + "workbox-streams": "6.6.0", + "workbox-sw": "6.6.0", + "workbox-window": "6.6.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/workbox-build/node_modules/@apideck/better-ajv-errors": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz", + "integrity": "sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==", + "dependencies": { + "json-schema": "^0.4.0", + "jsonpointer": "^5.0.0", + "leven": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "ajv": ">=8" + } + }, + "node_modules/workbox-build/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==", + "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/workbox-build/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", + "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/workbox-build/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==" + }, + "node_modules/workbox-build/node_modules/source-map": { + "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", + "dependencies": { + "whatwg-url": "^7.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/workbox-cacheable-response": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.6.0.tgz", + "integrity": "sha512-JfhJUSQDwsF1Xv3EV1vWzSsCOZn4mQ38bWEBR3LdvOxSPgB65gAM6cS2CX8rkkKHRgiLrN7Wxoyu+TuH67kHrw==", + "deprecated": "workbox-background-sync@6.6.0", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-core": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-6.6.0.tgz", + "integrity": "sha512-GDtFRF7Yg3DD859PMbPAYPeJyg5gJYXuBQAC+wyrWuuXgpfoOrIQIvFRZnQ7+czTIQjIr1DhLEGFzZanAT/3bQ==" + }, + "node_modules/workbox-expiration": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.6.0.tgz", + "integrity": "sha512-baplYXcDHbe8vAo7GYvyAmlS4f6998Jff513L4XvlzAOxcl8F620O91guoJ5EOf5qeXG4cGdNZHkkVAPouFCpw==", + "dependencies": { + "idb": "^7.0.1", + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-google-analytics": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.6.0.tgz", + "integrity": "sha512-p4DJa6OldXWd6M9zRl0H6vB9lkrmqYFkRQ2xEiNdBFp9U0LhsGO7hsBscVEyH9H2/3eZZt8c97NB2FD9U2NJ+Q==", + "deprecated": "It is not compatible with newer versions of GA starting with v4, as long as you are using GAv3 it should be ok, but the package is not longer being maintained", + "dependencies": { + "workbox-background-sync": "6.6.0", + "workbox-core": "6.6.0", + "workbox-routing": "6.6.0", + "workbox-strategies": "6.6.0" + } + }, + "node_modules/workbox-navigation-preload": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.6.0.tgz", + "integrity": "sha512-utNEWG+uOfXdaZmvhshrh7KzhDu/1iMHyQOV6Aqup8Mm78D286ugu5k9MFD9SzBT5TcwgwSORVvInaXWbvKz9Q==", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-precaching": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.6.0.tgz", + "integrity": "sha512-eYu/7MqtRZN1IDttl/UQcSZFkHP7dnvr/X3Vn6Iw6OsPMruQHiVjjomDFCNtd8k2RdjLs0xiz9nq+t3YVBcWPw==", + "dependencies": { + "workbox-core": "6.6.0", + "workbox-routing": "6.6.0", + "workbox-strategies": "6.6.0" + } + }, + "node_modules/workbox-range-requests": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.6.0.tgz", + "integrity": "sha512-V3aICz5fLGq5DpSYEU8LxeXvsT//mRWzKrfBOIxzIdQnV/Wj7R+LyJVTczi4CQ4NwKhAaBVaSujI1cEjXW+hTw==", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-recipes": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.6.0.tgz", + "integrity": "sha512-TFi3kTgYw73t5tg73yPVqQC8QQjxJSeqjXRO4ouE/CeypmP2O/xqmB/ZFBBQazLTPxILUQ0b8aeh0IuxVn9a6A==", + "dependencies": { + "workbox-cacheable-response": "6.6.0", + "workbox-core": "6.6.0", + "workbox-expiration": "6.6.0", + "workbox-precaching": "6.6.0", + "workbox-routing": "6.6.0", + "workbox-strategies": "6.6.0" + } + }, + "node_modules/workbox-routing": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.6.0.tgz", + "integrity": "sha512-x8gdN7VDBiLC03izAZRfU+WKUXJnbqt6PG9Uh0XuPRzJPpZGLKce/FkOX95dWHRpOHWLEq8RXzjW0O+POSkKvw==", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-strategies": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.6.0.tgz", + "integrity": "sha512-eC07XGuINAKUWDnZeIPdRdVja4JQtTuc35TZ8SwMb1ztjp7Ddq2CJ4yqLvWzFWGlYI7CG/YGqaETntTxBGdKgQ==", + "dependencies": { + "workbox-core": "6.6.0" + } + }, + "node_modules/workbox-streams": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.6.0.tgz", + "integrity": "sha512-rfMJLVvwuED09CnH1RnIep7L9+mj4ufkTyDPVaXPKlhi9+0czCu+SJggWCIFbPpJaAZmp2iyVGLqS3RUmY3fxg==", + "dependencies": { + "workbox-core": "6.6.0", + "workbox-routing": "6.6.0" + } + }, + "node_modules/workbox-sw": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.6.0.tgz", + "integrity": "sha512-R2IkwDokbtHUE4Kus8pKO5+VkPHD2oqTgl+XJwh4zbF1HyjAbgNmK/FneZHVU7p03XUt9ICfuGDYISWG9qV/CQ==" + }, + "node_modules/workbox-webpack-plugin": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-6.6.0.tgz", + "integrity": "sha512-xNZIZHalboZU66Wa7x1YkjIqEy1gTR+zPM+kjrYJzqN7iurYZBctBLISyScjhkJKYuRrZUP0iqViZTh8rS0+3A==", + "dependencies": { + "fast-json-stable-stringify": "^2.1.0", + "pretty-bytes": "^5.4.1", + "upath": "^1.2.0", + "webpack-sources": "^1.4.3", + "workbox-build": "6.6.0" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "webpack": "^4.4.0 || ^5.9.0" + } + }, + "node_modules/workbox-webpack-plugin/node_modules/webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dependencies": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "node_modules/workbox-window": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-6.6.0.tgz", + "integrity": "sha512-L4N9+vka17d16geaJXXRjENLFldvkWy7JyGxElRD0JvBxvFEd8LOhr+uXCcar/NzAmIBRv9EZ+M+Qr4mOoBITw==", + "dependencies": { + "@types/trusted-types": "^2.0.2", + "workbox-core": "6.6.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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true + }, + "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==", + "dev": true, + "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/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "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, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zingchart": { + "version": "2.9.15", + "resolved": "https://registry.npmjs.org/zingchart/-/zingchart-2.9.15.tgz", + "integrity": "sha512-o0doeMS5VxL+TsQXzkZzNuMBHzlw7wCG/1TN/wAXhs2QOnABfGGz6g4TFx+EMzZYaTx0ZRKM8B+fSYTlHRDu0A==" + }, + "node_modules/zingchart-constants": { + "version": "1.0.5", + "resolved": "git+ssh://git@github.com/zingchart/zingchart-constants.git#37aaeb291bbaab2174d317c1182bbca6a8f70da5", + "license": "ISC" + }, + "node_modules/zingchart-react": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/zingchart-react/-/zingchart-react-3.2.0.tgz", + "integrity": "sha512-VTGhSBIUbbf5dLpVHxyoFRYB7rkx4umlhXKa6zJR0YjVu5tUE4pvogHu9lX5LjeTTXbPRW8quMqs+f+5d9juKw==", + "dependencies": { + "zingchart": "latest", + "zingchart-constants": "github:zingchart/zingchart-constants#master" + }, + "engines": { + "node": ">=14", + "npm": ">=5" + }, + "peerDependencies": { + "react": ">=15.0.0", + "react-dom": ">=15.0.0" + } + }, + "node_modules/zip-stream": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.1.tgz", + "integrity": "sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==", + "dependencies": { + "archiver-utils": "^3.0.4", + "compress-commons": "^4.1.2", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/zip-stream/node_modules/archiver-utils": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-3.0.4.tgz", + "integrity": "sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw==", + "dependencies": { + "glob": "^7.2.3", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/zip-stream/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", + "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/zustand": { + "version": "4.5.5", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.5.5.tgz", + "integrity": "sha512-+0PALYNJNgK6hldkgDq2vLrw5f6g/jCInz52n9RTpropGgeAf/ioFUCdtsjCqu4gNhW9D01rUQBROoRjdzyn2Q==", + "dependencies": { + "use-sync-external-store": "1.2.2" + }, + "engines": { + "node": ">=12.7.0" + }, + "peerDependencies": { + "@types/react": ">=16.8", + "immer": ">=9.0.6", + "react": ">=16.8" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "immer": { + "optional": true + }, + "react": { + "optional": true + } + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..db3d763 --- /dev/null +++ b/package.json @@ -0,0 +1,43 @@ +{ + "name": "edc-gis", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build && next-image-export-optimizer", + "start": "next start", + "lint": "next lint", + "export": "next build && next-image-export-optimizer" + }, + "dependencies": { + "react": "^18", + "react-dom": "^18", + "next": "14.2.15", + "@ant-design/icons": "^5.3.0", + "antd": "^5.12.5", + "cookies-next": "^4.1.1", + "dayjs": "^1.11.10", + "docxtemplater": "^3.40.0", + "exceljs": "^4.4.0", + "file-saver": "^2.0.5", + "framer-motion": "^10.16.4", + "html2canvas": "^1.4.1", + "jspdf": "^2.5.1", + "jspdf-autotable": "^3.8.2", + "next-image-export-optimizer": "^1.12.3", + "next-pwa": "^5.6.0", + "nextjs-toploader": "^1.6.6", + "react-hook-form": "^7.45.4", + "react-query": "^3.39.3", + "sass": "^1.69.5", + "styled-components": "^5.3.9", + "uuid": "^10.0.0", + "zustand": "^4.4.7", + "zingchart": "^2.9.14", + "zingchart-react": "^3.2.0" + }, + "devDependencies": { + "eslint": "^8", + "eslint-config-next": "14.2.5" + } +} diff --git a/public/css/button.scss b/public/css/button.scss new file mode 100644 index 0000000..1fe4ec8 --- /dev/null +++ b/public/css/button.scss @@ -0,0 +1,174 @@ + +.btn.btn-primary { + color: var(--primary-inverse); + border-color: var(--primary); + background-color: var(--primary); +} + +.btn.btn-primary:hover, +.ant-btn-default:not(:disabled):not(.ant-btn-disabled).btn-primary:hover { + color: var(--primary-inverse) !important; + border-color: #15444f !important; + background-color: #15444f !important; +} + + +.btn.btn-light-primary { + color: var(--primary); + border-color: var(--primary-light); + background-color: var(--primary-light); +} + +.btn.btn-success { + color: var(--success-inverse); + border-color: var(--success); + background-color: var(--success); +} + +.btn.btn-light-success { + color: var(--success); + border-color: var(--success-light); + background-color: var(--success-light); +} + +.btn.btn-danger { + color: var(--danger-inverse); + border-color: var(--danger); + background-color: var(--danger); +} + +.btn.btn-light-danger { + color: var(--danger); + border-color: var(--danger-light); + background-color: var(--danger-light); +} + +.btn.btn-warning { + color: var(--warning-inverse); + border-color: var(--warning); + background-color: var(--warning); +} + +.btn.btn-light-warning { + color: var(--warning); + border-color: var(--warning-light); + background-color: var(--warning-light); +} + +.btn.btn-info { + color: var(--info-inverse); + border-color: var(--info); + background-color: var(--info); +} + +.btn.btn-light-info { + color: var(--info); + border-color: var(--info-light); + background-color: var(--info-light); +} + +.btn.btn-dark { + color: var(--dark-inverse); + border-color: var(--dark); + background-color: var(--dark); +} + +.btn.btn-light-dark { + color: var(--dark); + border-color: var(--dark-light); + background-color: var(--dark-light); +} + +.btn.btn-white { + color: var(--white-inverse); + border-color: var(--white); + background-color: var(--white); +} + +.btn.btn-light-white { + color: var(--white); + border-color: var(--white-light); + background-color: var(--white-light); +} + +.btn.btn-circle { + border-radius: 50%; +} + +.btn-transparent { + background: #ffffff00; + color: white; + border: 1px solid #ffffff1f; +} +.btn.sm { + height: 30px !important; + padding: 0 16px !important; +} +.btn { + display: inline-flex; + justify-content: center; + align-items: center; + gap: 6px; + height: 35px; + padding: 0 28px; + border-radius: 15px; + font-size: 11px; + border: none; + outline: none; + cursor: pointer; + white-space: nowrap; + transition: all 0.2s ease; +} + +.btn-round-lg { + display: flex; + justify-content: center; + align-items: center; + gap: 10px; + height: 40px; + min-width: 140px; + padding: 0 24px; + border-radius: 20px; + border: none; + outline: none; + color: #fff; + cursor: pointer; + transition: all 0.2s ease; +} + +.btn-circle { + display: flex; + justify-content: center; + align-items: center; + height: 35px !important; + width: 35px !important; + border-radius: 50%; + border: none; + outline: none; + color: #fff; + background: var(--blue); + cursor: pointer; + padding: 10px; + transition: all 0.2s ease; +} + +.btn-circle.btn-sm{ + width:30px; + height:30px; + padding: 3px 7px; +} + +.btn-circle-sm { + display: flex; + justify-content: center; + align-items: center; + height: 30px; + width: 30px; + border-radius: 50%; + border: none; + outline: none; + color: #fff; + background: var(--blue); + cursor: pointer; + transition: all 0.2s ease; +} \ No newline at end of file diff --git a/public/css/dark.scss b/public/css/dark.scss new file mode 100644 index 0000000..847de79 --- /dev/null +++ b/public/css/dark.scss @@ -0,0 +1,1060 @@ + +$dark-bg: #0f0f0f; +$dark-primary: #172236; +$dark-primary-hover: #1f2d47; +$dark-secondary: #1E2D48; +$dark-blue: #3a4b6b; +$dark-blue-hover: #44587c; +$dark-blue-light: #6a7996; +$dark-headtbl: #283957; +$dark-text: #d6dbe4; +$dark-subtext: #959ca8; +$primary: #0049af; +$success: #50cd89; +$info: #7239ea; +$warning: #FEB82F; +$danger: #f1416c; +$secondary: #aaa; + +.ant-switch-checked{ + background: $dark-blue !important; +} +.ant-switch-unchecked{ + background:#007bff !important; +} + +body.darkMode { + overflow-x: hidden; + + &.main { + background: $dark-bg; + } +} + + +.darkMode { + + .ant-table-wrapper .ant-table-thead, + .ant-table-wrapper .ant-table-thead tr { + background: $dark-blue; + } + .ant-table-wrapper .ant-table-thead > tr > th, .ant-table-wrapper .ant-table-thead > tr > td { + background: $dark-blue; + color: $dark-text; + border-bottom: 1px solid $dark-blue-light; + } + + .ant-table-wrapper .ant-table-thead th.ant-table-column-has-sorters:hover { + background: $dark-blue; + color: $dark-text; + } + + .ant-table-wrapper .ant-table-column-sorter-up.active, .ant-table-wrapper .ant-table-column-sorter-down.active { + color: $dark-text; + } + + .ant-table-wrapper .ant-table-thead th.ant-table-column-sort { + background: $dark-blue; + color: $dark-text; + } + + .ant-table-wrapper .ant-table-tbody >tr >th, + .ant-table-wrapper .ant-table-tbody >tr >td { + background: $dark-primary; + color: #fff; + border-bottom:1px solid #00000047; + } + .ant-table-cell-row-hover { + background: $dark-bg !important; + } + + .content{ + background: #0c111c !important; + } + .bg-nav { + filter: brightness(18%); + } + .navbar { + background: transparent; + // backdrop-filter: blur(6px); + // box-shadow: 0px 0px 27px $dark-bg; + + &.navScroll { + background: #00000030; + box-shadow: 0px 0px 27px #74747430; + transition: .3s ease-in-out; + + .nav-logo .titleText, + .nav-logo .version { + color: #fff; + } + .nav-account .container-account .account .text .name, + .nav-account .container-account .account .text .role { + color: $dark-text; + } + .ant-menu-submenu-horizontal { + .ant-menu-submenu-title { + display: flex !important; + justify-content: start !important; + align-items: center !important; + + .ant-menu-title-content a { + font-size: 12px; + color: #fff; + } + .ant-menu-item-icon svg { + width: 16px; + fill: #fff; + } + } + + &.ant-menu-submenu-open, + &.ant-menu-submenu-active { + .ant-menu-title-content a { + font-size: 12px; + color: #E7FF56; + } + .ant-menu-item-icon svg { + width: 16px; + fill: #E7FF56; + } + } + } + } + .btnNotif { + background: $dark-blue; + } + .ant-menu-overflow-item.ant-menu-item { + background : transparent !important; + } + } + .ant-drawer-content { + background: $dark-bg !important; + } + .ant-drawer-header-title { + border-bottom: 1px solid $dark-blue; + + .ant-drawer-close svg { + fill: $dark-text; + } + .ant-drawer-title { + color: $dark-text; + } + } + .ant-drawer-body { + ul.navNotif { + li { + .date { + span { + background: $dark-bg; + } + } + + .notification { + &.notif-unread { + border: #446fc0; + background: #354a72; + + .icon { + background: #446fc0; + } + .title, + .subtitle { + color: $dark-text; + } + } + &.notif-read { + border: 1px solid #949aa3; + background: #49515f; + + .icon { + background: #949aa3; + } + .title, + .subtitle { + color: $dark-text; + } + } + + .containerIcon { + position: relative; + width: 15%; + } + .desc { + position: relative; + width: 85%; + } + + .icon { + display: flex; + justify-content: center; + align-items: center; + position: relative; + width: 40px !important; + height: 40px !important; + border-radius: 12px; + font-size: 22px; + color: #fff; + } + .title { + font-size: 14px; + font-weight: 600; + } + .subtitle { + font-size: 12px; + font-weight: 400; + line-height: 15px; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + overflow: hidden; + } + } + } + } + } + .menuOutline { + color: $dark-text; + } + .titleText { + color: $dark-text; + } + .navbar .nav-logo .version { + color: #fff; + } + .toggle-icon { + background: $dark-blue; + } + // .navbar .nav-logo { + // background: $dark-secondary; + // } + // .navbar .nav-logo img { + // filter: brightness(0) invert(1); + // } + .navbar .nav-title { + background: $dark-blue; + } + .navbar .nav-title .title { + color: $dark-text; + } + .navbar .nav-title .title::after { + background: $dark-text; + } + .navbar .nav-title .sub-title { + color: $dark-subtext; + } + .nav-account, + .nav-account .container-account .account { + background: $dark-secondary; + } + .nav-account .detail-account .header .text .name, + .nav-account .container-account .account .text .name { + color: $dark-text; + } + + .nav-account .detail-account .header .text .role, + .nav-account .container-account .account .text .role { + color: $dark-subtext; + } + + .nav-account .container-account .second-account i, + .nav-account .container-account .account i, + .nav-account .detail-account .header i { + font-size: 28px; + color: var(--dark-grey); + } + .userOutline { + background: $dark-blue !important; + color: $dark-text; + } + + .nav-account .detail-account { + background: $dark-secondary; + box-shadow: 0px 0px 50px 0px rgba(82, 63, 105, 0.15); + } + .nav-account .detail-account .header::after { + background: $dark-blue; + } + .nav-account .detail-account button { + color: $dark-text; + } + .nav-account .detail-account button:hover { + background: $dark-blue; + color: $dark-subtext; + transition: all 0.2s ease; + } + .containerSignOut { + + &::before { + background: $dark-blue; + } + } + + .btnMenuHide { + background: #ffffff30; + color: #fff; + } + .menuInline { + position: absolute; + top: 0; + left: 0; + width: 280px; + height: 100vh; + background: #172236cb; + backdrop-filter: blur(10px) !important; + -webkit-backdrop-filter: blur(10px) !important; + box-shadow: 0px 0px 27px #49494930; + z-index: 999999; + transition: .4s; + + &.out { + transform: translateX(-120%); + transition: .4s; + } + } + + .backdropMenu { + background: #17223680; + backdrop-filter: blur(20px); + -webkit-backdrop-filter: blur(20px); + } + + .sidebar { + background: $dark-primary; + border: 1px solid $dark-secondary; + } + .sidebar .bg-sidebar { + display: none; + } + .sidebar .nav-links .nav-icon svg { + fill: $dark-text !important; + width: 20px; + height: 20px; + margin-bottom: 2px; + } + + .sidebar.close .nav-links .nav-menu.active i { + background: $dark-blue; + color: $dark-subtext; + } + + // .sidebar.close:hover .nav-links .nav-menu.active, + // .sidebar .nav-links .nav-menu.active { + // background: $dark-blue; + // } + + .sidebar .nav-links .nav-menu i.arrow { + color: $dark-blue; + } + .sidebar.close:hover .nav-links li a .link_name, + .sidebar .nav-links li a .link_name, + .sidebar.close:hover .nav-links li .list-link-head .link_name, + .sidebar .nav-links li .list-link-head .link_name { + color: $dark-text !important; + } + .sidebar .nav-links .nav-menu .submenu .submenu-link a { + color: $dark-subtext; + } + + .sidebar .nav-links .nav-menu .submenu .submenu-link.active { + background: $dark-blue; + } + + .sidebar .nav-links .nav-menu .submenu .submenu-link a::before { + background: $dark-blue; + } + .sidebar .nav-links .nav-menu .submenu .submenu-link.active a::before { + background: $dark-text; + } + .submenu-level3 { + ::before { + transition: all 0.2s ease; + } + a { + color: $dark-text; + } + + } + + .floating-label { + background: $dark-primary; + color: $dark-text; + } + + .form-control { + color: $dark-text; + background-color: $dark-primary; + border: 2px solid $dark-blue; + + &::placeholder { + color: $dark-text; + } + } + + .ant-picker-input input { + color: $dark-text; + + &::placeholder { + color: $dark-text; + } + } + + .dashCard { + background: $dark-primary !important; + border: 1px solid $dark-blue !important; + box-shadow: 2px 10px 30px rgba(221, 221, 221, 0) !important; + } + + .roomsCard, + .card-table { + background: $dark-primary !important; + box-shadow: 2px 10px 30px rgba(24, 24, 24, 0.2) !important; + } + + .cards { + background: $dark-primary !important; + border: 1px solid $dark-primary !important; + box-shadow: 2px 10px 30px rgba(24, 24, 24, 0.2) !important; + } + + .card { + background: $dark-primary !important; + border: 1px solid $dark-secondary !important; + box-shadow: 2px 10px 30px rgba(221, 221, 221, 0) !important; + } + + .cardDark { + background: $dark-primary; + border-top-left-radius: 18px !important; + border-top-right-radius: 18px !important; + + .text-primary { + color: $dark-text !important; + } + .text-muted { + color: $dark-subtext !important; + } + .separator { + border-color: $dark-blue-hover; + } + } + .card-footer { + background: $dark-primary !important; + border-top: 1px solid $dark-blue-hover !important; + border-bottom-left-radius: 18px !important; + border-bottom-right-radius: 18px !important; + } + + .wave + .wave:before, + .wave:after { + background-color: $dark-primary; + } + .wave.wave-danger { + background-color: rgba(17, 25, 40, 1) !important; + } + + h1, h2, h3, h4, h5, h6, a { + color: $dark-text; + } + + .text-primary, + .text-dark, + .text-dark-grey, + .text-danger { + color: $dark-text !important; + } + .text-muted { + color: $dark-subtext !important; + } + + .rdt_Table, + .rdt_TableHead { + background: $dark-primary; + border-radius: 24px; + + .sc-hmdomO { + background: $dark-headtbl; + border-radius: 12px !important; + color: $dark-text; + } + } + + // bg head tbl + .rdt_TableHeadRow { + background: $dark-headtbl !important; + + // color head + .sc-cwHptR { + color: $dark-text !important; + } + } + + .rdt_TableRow { + background: $dark-primary; + border-bottom: 1px solid $dark-blue !important; + } + + .rdt_TableRow:hover { + border: none; + outline: none; + background-color: $dark-primary-hover !important; + } + + .rdt_TableCell { + color: $dark-text !important; + } + + .rdt_Pagination { + background: $dark-primary; + border-radius: 20px; + margin-top: .5rem; + color: $dark-text; + + select { + border: 1px solid $dark-blue; + outline: none; + border-radius: 10px; + + option { + background: $dark-blue; + color: $dark-text; + } + } + + .fimDOL button svg { + fill: $dark-text !important; + } + } + + .btn-danger { + background: $dark-blue !important; + border: 1px solid $dark-primary !important; + color: $dark-text !important; + + svg { + fill: $dark-text !important; + } + } + .btn-light-primary, + .btn-light-danger { + background: $dark-blue-light !important; + border: 1px solid $dark-primary !important; + color: $dark-text !important; + + svg { + fill: $dark-text !important; + } + } + + .ant-dropdown-menu, + .ant-dropdown-arrow::before, + .ant-dropdown-arrow::after { + background: $dark-blue; + } + + .ant-dropdown-menu-item { + + &:hover { + background: $dark-blue-hover !important; + } + + .dropdown-item { + color: $dark-text !important; + + svg { + fill: $dark-text !important; + } + } + } + + .searchInput { + background-color: $dark-blue !important; + border: 1px solid $dark-blue; + } + + .searchInput:focus { + background-color: $dark-blue !important; + } + + .icon-search svg { + color: $dark-text !important; + } + + .ant-select-disabled { + background: $dark-primary; + border: 0; + + .ant-select-selector { + background: $dark-primary !important; + color: $dark-text !important; + } + } + + .ant-select-selector, + .ant-select-selection-item, + .ant-select-selection-placeholder { + background: $dark-primary !important; + color: $dark-text !important; + } + + .ant-select-arrow svg, + .ant-select-clear svg { + color: $dark-text !important; + } + + .ant-select-dropdown { + background: $dark-blue; + + .ant-select-item-option-content { + color: $dark-text; + } + + .ant-select-item-option-active { + background: $dark-blue-hover; + } + } + + .ant-menu-item-selected { + background: $dark-blue-hover !important; + } + + .ant-menu-sub { + background: $dark-blue !important; + } + + .ant-menu-submenu-vertical { + .ant-menu-submenu-title { + display: flex !important; + justify-content: start !important; + align-items: center !important; + + .ant-menu-title-content a { + font-size: 12px; + color: $dark-text; + } + .ant-menu-item-icon svg { + width: 16px; + fill: $dark-text; + } + + i { + color: $dark-text !important; + } + } + } + + .ant-menu-inline { + .ant-menu-item { + .ant-menu-title-content a { + font-size: 12px; + color: #fff; + } + .ant-menu-item-icon svg { + width: 16px; + fill: #fff; + } + } + .ant-menu-submenu-inline { + .ant-menu-title-content a { + font-size: 12px; + color: #fff; + } + .ant-menu-item-icon svg { + width: 16px; + fill: #fff; + } + } + .ant-menu-sub { + background: #172236cb !important; + } + } + + + .ant-menu-item { + display: flex !important; + justify-content: start !important; + align-items: center !important; + + .ant-menu-title-content { + font-size: 12px; + color: $dark-text; + } + .ant-menu-item-icon svg { + width: 16px; + fill: $dark-text; + } + } + + section { + background: $dark-primary !important; + box-shadow: 2px 10px 30px rgba(59, 62, 107, 0.473) !important; + } + + .bg-primary { + background: #1788df !important; + } + .bg-success { + background: #10bb82 !important; + } + .bg-warning { + background: #e2a52a !important; + } + .bg-danger { + background: #d83b62 !important; + } + .bg-secondary { + background: #9b9b9b !important; + } + + .btn-light-primary, + .btn-secondary { + background: $dark-blue !important; + color: $dark-text !important; + border: 1px solid $dark-blue !important; + transition: .3s !important; + + &:hover { + background: $dark-blue !important; + color: $dark-text !important; + border: 1px solid $dark-blue-light !important; + transition: .3s !important; + } + } + + .containers, + .dashboard { + + .headContent { + background: #0c111c !important; + + .containerTitle { + background: #0c111c !important; + } + + &::after { + background: $dark-blue; + } + + .headTitle { + .content { + .title { + color: $dark-subtext; + } + .title::after { + background: $dark-subtext; + } + .sub-title { + color: $dark-subtext; + } + } + .title-text { + color: $dark-text; + } + } + } + + .headCard { + border-bottom: 1px solid $dark-blue !important; + } + + .bodyContent { + + .containerTitle { + border-bottom: 1px solid $dark-blue; + + .container { + margin-top: -38px; + border-top: 1px solid $dark-blue-hover; + border-right: 1px solid $dark-blue-hover; + border-left: 1px solid $dark-blue-hover; + background: $dark-primary; + + .title { + background: $dark-primary; + color: $dark-text; + } + } + + .subtitle { + font-size: 12px; + font-weight: 300; + line-height: 18px; + margin-top: 8px; + margin-bottom: 2rem; + text-align: center; + } + + .action { + position: relative; + display: flex; + justify-content: end; + align-items: center; + width: 210px; + } + } + + .header { + + ul { + + li { + background: $dark-blue; + color: $dark-text; + } + } + + } + + .content { + background: $dark-blue; + + .title span { + color: $dark-text; + } + .date { + color: $dark-text; + } + .action { + color: $dark-text; + + svg { + fill: $dark-text + } + } + } + + } + } + + .containerList { + + .contentList { + border: 1px solid $dark-blue-hover !important; + + .name { + + .text { + + a { + color: $dark-text !important; + + &:hover { + color: #eeeeee !important; + } + } + } + } + + .text { + color: $dark-text !important; + } + .subtext { + color: $dark-subtext !important; + } + + .ant-progress-text { + color: $dark-text !important; + } + } + } + + .containerEmployee { + .titleList { + color: $dark-text !important; + background: $dark-blue !important; + } + .employeeList { + .contentList { + border-bottom: 1px solid $dark-blue !important; + color: $dark-text !important; + + .jamMasuk { + svg { + color: $dark-text !important; + } + } + .jamPulang { + + svg { + color: $dark-text !important; + } + } + } + } + } + + .contentDetail { + background: $dark-blue; + + .icon { + background: $dark-primary-hover; + img { + filter: invert(1) + } + } + + .title, + .subtitle { + color: $dark-text; + } + } + + .containerTimeline { + + &::after { + background-color: $dark-secondary; + } + + .cards { + background: $dark-blue !important; + } + + .tlContent { + .containers { + .highlight { + box-shadow: 2px 10px 30px rgba(27, 27, 27, 0.2); + + .count { + color: #f2f2f2; + + &::after { + background: #f2f2f2; + } + } + .time { + span { + color: #f2f2f2; + } + } + + .btnDetail { + color: #f2f2f2; + background: #ffffff35; + backdrop-filter: blur(4px); + + &:hover { + backdrop-filter: blur(12px); + box-shadow: 2px 10px 30px rgba(80, 80, 80, 0.2); + } + } + } + .text { + .title, + .desc { + color: $dark-text; + } + } + } + + .containerImg { + + &::-webkit-scrollbar { + height: 2px; + } + + &::-webkit-scrollbar-thumb { + background: $dark-primary; + border: none; + } + + &::-webkit-scrollbar-track { + background: $dark-primary-hover; + } + } + + &:nth-child(odd), + &:nth-child(even) { + .cards::after { + background: $dark-blue; + } + } + + &:nth-child(even)::before, + &:nth-child(odd)::before { + background: $dark-secondary; + } + &:nth-child(even)::after, + &:nth-child(odd)::after { + background-color: $dark-blue-light; + border: 4px solid $dark-secondary; + } + } + } + + .rooms { + .bodyContentRooms { + .headCardRooms { + .titleRooms { + color: $dark-text; + } + .subtitleRooms { + color: $dark-text; + } + } + + .containerDescRooms { + .containerBrg { + .barang { + background: $dark-blue; + .iconBrg { + background: $dark-primary; + + img { + filter: brightness(0) invert(1); + } + } + .namaBrg { + color: $dark-text; + } + } + } + } + } + } + + .ant-row.paginate { + background: $dark-blue; + padding: 4px 12px; + + li, button, a, span, + .ant-pagination-item-ellipsis { + color: $dark-text; + } + + .ant-pagination-item-active { + background: $dark-blue-light; + border: 1px solid $dark-text; + border-radius: 10px; + } + } + + .containerCard { + background: $dark-blue; + .description { + .code, + .desc, + .name { + color: $dark-text; + } + } + + .result { + .date, + .hasil, + .descHasil { + color: $dark-text; + } + } + } +} + +@media screen and (max-width: 640px) { + .darkMode { + .nav-account, + .nav-account .container-account .account { + background: transparent; + } + } +} + diff --git a/public/css/form.scss b/public/css/form.scss new file mode 100644 index 0000000..8646008 --- /dev/null +++ b/public/css/form.scss @@ -0,0 +1,307 @@ +.form-control { + display: block; + width: 100%; + padding: 10px 17px; + height: 40px; + font-size: 13px; + font-weight: 600; + border-radius: 15px; + color: #181c32; + background-color: #ffffff; + border: 1px solid #e1e3ea; + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} + +.ant-select-selection-item { + font-weight: 600 !important; + font-size: 13px !important; +} + +.form-group { + margin-bottom: 25px; +} + +.ant-select-disabled { + background: #fff; + border: 0; + + .ant-select-selector { + background: #fff !important; + color: #181c32 !important; + } + + .ant-select-arrow { + display: none; + } + +} + +.ant-picker-disabled { + background-color: #fff !important; + border: 0; + + input { + color: #181c32 !important; + font-weight: 600; + } +} + + +@media (prefers-reduced-motion: reduce) { + .form-control { + transition: none; + } +} + +.form-control[type="file"] { + overflow: hidden; +} + +.form-control[type="file"]:not(:disabled):not([readonly]) { + cursor: pointer; +} + +.form-control:focus { + color: #181c32; + background-color: #ffffff; + border-color: var(#b5b5c3); + outline: 0; + /* box-shadow: 0px 2px 10px rgba(0, 0, 0, 0.08); */ +} + +.form-control::-webkit-date-and-time-value { + height: 1.5em; +} + +.form-control::placeholder { + font-size: 14px; + color: #a1a5b7; + font-weight: 400; + opacity: 1; +} + +.form-control:disabled, +.form-control[readonly] { + background-color: #fff; + border: none; + opacity: 1; +} + +/* ======== FLOATING LABEL ======== */ + +.floating-label-content { + position: relative; + width: 100%; + margin-bottom: 20px; +} + +.floating-label-content textarea { + min-height: 120px; + padding: 10px 20px; +} + +.floating-label { + position: absolute; + left: 15px; + top: 8px; + font-size: 14px; + font-weight: 500; + padding: 0 7px; + background: #fff; + color: #757575; + cursor: text; + transition: 0.2s ease all; + border-radius: 20px; +} + +.floating-input:focus, +.floating-select:focus { + outline: none; +} + +.floating-input:focus~.floating-label { + top: -10px; + left: 10px; + font-size: 12px; +} + +.floating-input:not(:-moz-placeholder-shown)~.floating-label { + top: -10px; + left: 10px; + font-size: 12px; +} + +.floating-input:not(:-ms-input-placeholder)~.floating-label { + top: -10px; + left: 10px; + font-size: 12px; +} + +.floating-input:not(:placeholder-shown)~.floating-label { + top: -10px; + left: 10px; + font-size: 12px; +} + +.floating-select:not([value=""]):valid~.floating-label { + top: -10px; + left: 10px; + font-size: 12px; +} + +textarea { + min-height: 120px; + padding: 14px 20px; +} + +/* ======== END FLOATING LABEL ======== */ + +.label-form { + font-size: 14px; + font-weight: 400; + color: #1f2233; + margin-bottom: 4px; +} + +.icon-password { + cursor: pointer; + position: absolute; + right: 15px; + color: #c1c1c1; + top: 0px; + font-size: 25px; + border-radius: 27px; +} + +/* INPUT IMAGE */ +.image-input { + position: relative; +} + +.image-input .content-btn { + display: flex; + position: absolute; + left: -11px; + top: -10px; + gap: 3px; + flex-direction: column; + z-index: 4; +} + +.image-input input { + display: none; +} + +.image-input label { + display: block; + color: #FFF; + background: #000; + padding: 0.3rem 0.6rem; + font-size: 115%; + cursor: pointer; +} + +.image-input label i { + font-size: 125%; + margin-right: 0.3rem; +} + +.image-input label:hover i { + animation: shake 0.35s; +} + +// .ant-upload-wrapper .ant-upload { +// background-size: contain !important; +// width: 100% !important; +// height: 200px !important; +// border-radius: 20px; +// border: 1px dashed #f1f1f1; +// } + +.image-input span { + display: none; + text-align: center; + cursor: pointer; +} + +.image-preview{ + width: 100%; + height: 315px; + background-size: contain; +} + +// .ant-image-mask-info { +// border-radius: 20px; +// } + +@keyframes shake { + 0% { + transform: rotate(0deg); + } + + 25% { + transform: rotate(10deg); + } + + 50% { + transform: rotate(0deg); + } + + 75% { + transform: rotate(-10deg); + } + + 100% { + transform: rotate(0deg); + } +} + +/* INPUT IMAGE */ + + +.searchInput { + border-radius: 15px; + padding-left: 2.6rem; + background-color: #fff !important; + transition: all 0.2s; + width: 300px; + border: 1px solid #0049af24; + height: 40px; +} + +.searchInput:focus { + background-color: #fff !important; + width: 300px !important; + transition: all 0.2s; +} + + +.icon-search { + position: absolute; + top: 11px; + left: 13px; + font-size: 18px; +} + +.error-form { + font-size: 11px; + color: var(--danger); + margin-top: 5px; + margin-left: 22px; +} + +.error .form-control { + border: 1px solid var(--danger); +} + +.error .floating-label { + color: var(--danger); +} + +.ant-select-selector { + padding: 0 !important; +} + +.ant-select-selection-search { + left: 0 !important; +} \ No newline at end of file diff --git a/public/css/modal.scss b/public/css/modal.scss new file mode 100644 index 0000000..ed41381 --- /dev/null +++ b/public/css/modal.scss @@ -0,0 +1,54 @@ + +.zn-close { + position: absolute !important; + top: 15px !important; + right: 15px !important; +} + +.modal { + backdrop-filter: blur(5px); +} + +.zn-bg-modal { + background: var(--primary-light); + border-radius: 0px 0px 20px 20px !important; +} + +.ant-modal-content{ + padding: 0 !important; + margin: 0 !important; + border-radius: 20px !important; +} + +.separator { + border: 1px dashed #efefef; +} + +.card-footer.footerDetail { + position: relative; + background: #272727; + padding: 1.4rem 1.6rem; + border-radius: 0px 0px 18px 18px !important; + + .containerDetail { + display: flex; + justify-content: start; + align-items: center; + margin-bottom: 6px; + + .name { + position: relative; + width: 100px; + font-size: 14px; + font-weight: 500; + line-height: 18px; + color: #fff; + } + .subname { + font-size: 14px; + font-weight: 300; + line-height: 18px; + color: #fff; + } + } +} \ No newline at end of file diff --git a/public/css/navbar.scss b/public/css/navbar.scss new file mode 100644 index 0000000..a2b8dbf --- /dev/null +++ b/public/css/navbar.scss @@ -0,0 +1,927 @@ + +.navbar { + position: fixed; + top: 0; + width: 100%; + left: 0; + right: 0; + display: flex; + align-items: center; + justify-content: space-between; + padding: 5px 0px; + z-index: 1000; + border-radius: 0; + transition: .3s ease-in-out; + + + &.navScroll { + background: #ffffff50; + -webkit-backdrop-filter: blur(10px); + backdrop-filter: blur(10px); + box-shadow: 0px 0px 27px #74747430; + transition: .3s ease-in-out; + + .nav-logo img { + filter: none; + } + .nav-logo .titleText, + .nav-logo .version, + .nav-account .container-account .account .text .name, + .nav-account .container-account .account .text .role { + color: #172236; + } + + .ant-menu-overflow-item.ant-menu-item, + .ant-menu-submenu-horizontal { + .ant-menu-submenu-title { + display: flex !important; + justify-content: start !important; + align-items: center !important; + + .ant-menu-title-content a { + font-size: 12px; + font-weight: 500; + color: #2b2b2b; + } + .ant-menu-item-icon svg { + width: 16px; + fill: #2b2b2b; + } + } + + &.ant-menu-submenu-open, + &.ant-menu-submenu-active { + .ant-menu-title-content a { + font-size: 12px; + color: #E7FF56; + } + .ant-menu-item-icon svg { + width: 16px; + fill: #E7FF56; + } + } + } + } +} + +.ant-menu { + gap: 1rem !important; +} + +.ant-menu-overflow-item.ant-menu-item { + .ant-menu-title-content a { + font-size: 12px; + color: #fff; + } + .ant-menu-item-icon svg { + width: 16px; + fill: #fff; + } + + &.ant-menu-item-selected, + &.ant-menu-item-open, + &.ant-menu-item-active { + .ant-menu-title-content a { + font-size: 12px; + color: #E7FF56; + } + .ant-menu-item-icon svg { + width: 16px; + fill: #E7FF56; + } + } +} + +.ant-menu-submenu-horizontal { + .ant-menu-submenu-title { + display: flex !important; + justify-content: start !important; + align-items: center !important; + + .ant-menu-title-content a { + font-size: 12px; + color: #fff; + } + .ant-menu-item-icon svg { + width: 16px; + fill: #fff; + } + } + + &.ant-menu-submenu-selected, + &.ant-menu-submenu-open, + &.ant-menu-submenu-active { + .ant-menu-title-content a { + font-size: 12px; + color: #E7FF56; + } + .ant-menu-item-icon svg { + width: 16px; + fill: #E7FF56; + } + } +} + +.ant-menu-submenu-vertical { + .ant-menu-submenu-title { + display: flex !important; + justify-content: start !important; + align-items: center !important; + + .ant-menu-title-content a { + font-size: 12px; + color: #3a4b6b; + } + .ant-menu-item-icon svg { + width: 16px; + fill: #3a4b6b; + } + + i { + color: #3a4b6b !important; + } + } +} + +.ant-menu.ant-menu-inline { + position: relative; + padding: 8px 10px; + + .ant-menu-title-content a { + font-size: 12px; + font-weight: 500; + color: #2c3850; + } + .ant-menu-item-icon svg { + width: 16px; + fill: #2c3850; + } + + .ant-menu-item-selected { + border-radius: 12px; + background: #2c3850 !important; + + svg { + fill: #fff !important; + } + a { + color: #fff !important; + } + } + + &.ant-menu-submenu-selected, + &.ant-menu-submenu-open, + &.ant-menu-submenu-active { + .ant-menu-title-content a { + font-size: 12px !important; + font-weight: 500 !important; + color: #E7FF56 !important; + } + .ant-menu-item-icon svg { + width: 16px !important; + fill: #E7FF56 !important; + } + } +} + +.ant-menu-item { + display: flex !important; + justify-content: start !important; + align-items: center !important; + + .ant-menu-title-content { + font-size: 12px; + color: #3a4b6b; + } + .ant-menu-item-icon svg { + width: 16px; + fill: #3a4b6b; + } +} + +.ant-menu-horizontal, .ant-menu-item::after, .ant-menu-submenu::after { + border: none !important; +} + +.ant-menu-submenu-horizontal .ant-menu-submenu-title { + position: relative; +} + +.ant-menu-submenu-inline .ant-menu-submenu-arrow { + color: #2c3850 !important; +} + +.ant-menu-horizontal .ant-menu-item { + padding: 0 !important; + right: -1rem; +} +.ant-menu-submenu-horizontal .ant-menu-submenu-arrow { + position: absolute; + right: -1rem; + display: block !important; + color: #fff !important; + transform: rotate(90deg); +} + +.ant-menu-submenu-horizontal { + &.ant-menu-submenu-selected, + &.ant-menu-submenu-open, + &.ant-menu-submenu-active { + .ant-menu-submenu-arrow { + color: #E7FF56 !important; + } + } +} + +.btnMenuShow { + position: relative; + border: none; + outline: none; + background: transparent; + margin-left: 20px; + font-size: 18px; + color: #fff; + cursor: pointer; +} + +.btnMenuHide { + position: absolute; + top: .6rem; + right: -2.4rem; + border: none; + outline: none; + border-radius: 50%; + width: 30px; + height: 30px; + font-size: 12px; + background: #ffffff60; + color: #fff; + backdrop-filter: blur(10px); + -webkit-backdrop-filter: blur(10px); + cursor: pointer; +} + +.navbar .nav-start { + display: flex; + justify-content: start; + align-items: center; + gap: 1rem; + width: 100%; +} + +.navbar .nav-logo { + display: flex; + justify-content: start; + align-items: flex-start; + gap: 10px; + margin-left: 20px; + padding: 10px 7px; +} + +.navbar .nav-logo img { + width: 130px; + //filter: brightness(0) invert(1); +} + +.navbar .nav-logo .titleText { + font-size: 11px; + font-weight: 600; + color: #fff; + white-space: nowrap; +} + +.navbar .nav-logo .version { + font-size: 11px; + font-weight: 300; + color: #fff; + white-space: nowrap; +} + +.nav-title { + display: flex; + justify-content: start; + align-items: center; + gap: 15px; + //background: #f5f1f1; + position: absolute; + border-radius: 35px; + padding: 10px 0px; + top: -10px; +} + +.title-primary { + font-size: 18px; + text-transform: uppercase; + font-weight: 600; + margin-top: 34px; + color: var(--dark); + position: absolute; + top: -13px; +} + +.nav-title .title { + position: relative; + font-size: 12px; + font-weight: 400; + color: var(--grey); +} + +.nav-title .title::after { + content: ""; + position: absolute; + top: 2px; + right: -8px; + height: 16px; + width: 1px; + background: var(--grey); +} + +.nav-title .sub-title { + font-size: 12px; + font-weight: 400; + color: var(--grey); +} + + +.nav-account { + position: relative; + //background: #efefef; + border-radius: 35px; +} + +.nav-account .container-account .account { + display: flex; + justify-content: end; + align-items: center; + gap: 1rem; + //background: rgba(255, 255, 255, 0); + padding: 8px 10px 8px 45px; + border-radius: 35px; + cursor: pointer; +} + +.nav-account .container-account .account .text { + text-align: end; +} + +.nav-account .detail-account .header .text .name { + font-size: 11px; + font-weight: 500; + line-height: 14px; + text-transform: uppercase; + white-space: nowrap; + color: var(--black); +} +.nav-account .container-account .account .text .name { + font-size: 11px; + font-weight: 500; + line-height: 14px; + text-transform: uppercase; + white-space: nowrap; + color: #fff; +} + +.nav-account .detail-account .header .text .role { + font-size: 10px; + font-weight: 400; + text-transform: uppercase; + white-space: nowrap; + color: var(--grey); +} + +.nav-account .container-account .account .text .role { + font-size: 10px; + font-weight: 500; + text-transform: uppercase; + white-space: nowrap; + color: #fff; +} + +.nav-account .container-account .second-account i, +.nav-account .container-account .account i, +.nav-account .detail-account .header i { + font-size: 28px; + color: var(--dark-grey); +} + +.nav-account .detail-account { + background: #fff; + height: 0; + right: 0; + opacity: 0; + visibility: hidden; + position: absolute; + transition: all 0.3s ease; + top: 100%; + margin-top: 10px; + min-width: 250px; + border-radius: 20px; + box-shadow: 0px 0px 50px 0px rgba(82, 63, 105, 0.15); +} + +.nav-account .container-account:hover .detail-account { + height: auto; + opacity: 1; + visibility: visible; + transition: all 0.5s ease; + transform: translateY(-10px); +} + +.nav-account .detail-account .header { + position: relative; + display: flex; + justify-content: start; + align-items: center; + gap: 1rem; + padding: 18px 24px; +} + +.nav-account .detail-account .header::after { + content: ""; + position: absolute; + bottom: 0; + left: 0; + width: 100%; + height: 1px; + background: #f4f4f4; +} + +.nav-account .detail-account .feature { + position: relative; + display: flex; + justify-content: start; + align-items: flex-start; + flex-direction: column; + padding: 12px 14px; +} + +.nav-account .detail-account button { + display: flex; + justify-content: start; + align-items: center; + text-decoration: none; + width: 100%; + padding: 8px 16px; + font-size: 13px; + font-weight: 500; + color: var(--black); + border-radius: 10px; + transition: all 0.2s ease; + border: none; + background: none; +} + +.nav-account .detail-account button:hover { + background: var(--primary-light); + color: var(--primary); + transition: all 0.2s ease; +} + +.nav-account .detail-account a { + display: flex; + justify-content: start; + align-items: center; + text-decoration: none; + width: 100%; + padding: 8px 16px; + font-size: 13px; + font-weight: 500; + color: var(--black); + border-radius: 10px; + transition: all 0.2s ease; + border: none; + background: none; +} + +.nav-account .detail-account a:hover { + background: #f4f6fa; + color: #3e97ff; + transition: all 0.2s ease; +} + +.toggle-icon { + background: #0049af24; + padding: 5px 10px; + border-radius: 10px; + cursor: pointer; +} + +.foto-member-nav { + width: 30px; + height: 30px; + border-radius: 50%; + object-fit: cover; +} + +.ant-menu-light{ + background: none; +} + +.con-mega-menu { + width: 700px; + height: 300px; +} + +.nav-end { + display: flex; + justify-content: start; + align-items: center; + gap: .4rem; +} + +.switchTheme { + position: relative; + width: 70px; + padding: 8px 16px; + + .ant-switch { + background: #ccc !important; + + &.ant-switch-checked { + background: #3a4b6b !important; + } + } + + .ant-switch-inner { + position: relative; + left: -10px; + width: 80px; + height: 20px; + } + + .anticon-moon { + position: relative; + top: 0; + left: -5px; + font-size: 14px; + } + + .anticon-sun { + position: relative; + top: 0; + right: 5px; + font-size: 14px; + } +} + +.containerSignOut { + position: relative; + width: 100%; + padding: 12px 14px; + + &::before { + content: ""; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 1px; + background: #f4f4f4; + } +} + +.btnNotif { + position: relative; + display: flex; + justify-content: center; + align-items: center; + width: 35px; + height: 35px; + background: #00000030; + border: none; + outline: none; + border-radius: 50%; + margin-right: 33px; + cursor: pointer; + + svg { + font-size: 18px; + color: #fff; + } + .count { + display: flex; + justify-content: center; + align-items: center; + position: absolute; + top: -3px; + right: -3px; + height: 14px; + padding: 2px 4px; + border-radius: 8px; + font-size: 10px; + font-weight: 600; + color: #0D466A; + background: #E7FF56; + } +} + +.ant-drawer-header { + border: none !important; + padding-bottom: 0 !important; +} +.ant-drawer-header-title { + padding-bottom: .6rem; + border-bottom: 1px solid #ddd; + + .ant-drawer-close svg { + font-size: 14px !important; + } + .ant-drawer-title { + font-size: 16px; + font-weight: 600; + color: #3a4b6b; + } +} + +.ant-drawer-body { + ul.navNotif { + position: relative; + padding-left: .8rem; + // border-left: 2px solid #ddd; + + li { + position: relative; + list-style: none; + width: 100%; + + &:last-child .text-secondary::before { + background: transparent !important; + } + + .date { + // position: relative; + font-size: 14px; + font-weight: 600; + margin-bottom: 2px; + + span { + position: relative; + padding: 0 12px; + background: #fff; + z-index: 99; + } + + &.text-primary::before { + content: ''; + position: absolute; + top: 9px; + left: -14px; + height: calc(100% + 16px); + width: 2px; + background: var(--primary); + z-index: 7; + } + &.text-primary::after { + content: ''; + position: absolute; + top: 9px; + left: -14px; + width: calc(100% + 14px); + height: 1px; + background: var(--primary); + z-index: 7; + } + + &.text-secondary::before { + content: ''; + position: absolute; + top: 9px; + left: -14px; + height: calc(100% + 16px); + width: 2px; + background: var(--secondary); + z-index: 7; + } + &.text-secondary::after { + content: ''; + position: absolute; + top: 9px; + left: -14px; + width: calc(100% + 14px); + height: 1px; + background: var(--secondary); + z-index: 7; + } + + .shape { + position: absolute; + } + + &.text-primary .shape::after { + content: ''; + position: absolute; + top: 6px; + left: -17px; + width: 4px; + height: 4px; + border-radius: 50%; + background: var(--primary-light); + border: 2px solid var(--primary); + transform: rotate(45deg); + z-index: 999; + } + &.text-secondary .shape::after { + content: ''; + position: absolute; + top: 6px; + left: -17px; + width: 4px; + height: 4px; + border-radius: 50%; + background: var(--secondary-light); + border: 2px solid var(--secondary); + transform: rotate(45deg); + z-index: 999; + } + } + + .notification { + position: relative; + display: flex; + justify-content: start; + align-items: center; + gap: .8rem; + width: 100%; + height: 70px; + padding: 8px 14px; + margin-bottom: 1rem; + border-radius: 16px; + + &.notif-unread { + border: 1px solid var(--primary); + background: var(--primary-light); + + .icon { + background: var(--primary); + + svg { + animation: shake 2s ease infinite; + animation-iteration-count: infinite; + } + } + .title, + .subtitle { + color: var(--primary); + } + } + &.notif-read { + border: 1px solid var(--secondary); + background: var(--secondary-light); + + .icon { + background: var(--secondary); + } + .title, + .subtitle { + color: #888; + } + } + + .containerIcon { + position: relative; + width: 15%; + } + .desc { + position: relative; + width: 85%; + } + + .icon { + display: flex; + justify-content: center; + align-items: center; + position: relative; + width: 40px !important; + height: 40px !important; + border-radius: 12px; + font-size: 22px; + color: #fff; + } + .title { + font-size: 14px; + font-weight: 600; + } + .subtitle { + font-size: 12px; + font-weight: 400; + line-height: 15px; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + overflow: hidden; + } + } + } + + + @keyframes shake { + 0% { transform:translate(0,0) } + 1.78571% { transform:translate(3px,0) } + 3.57143% { transform:translate(0,0) } + 5.35714% { transform:translate(3px,0) } + 7.14286% { transform:translate(0,0) } + 8.92857% { transform:translate(3px,0) } + 10.71429% { transform:translate(0,0) } + 100% { transform:translate(0,0) } + } + } +} + +.menuHorizontal { + position: relative; + width: 100%; +} + +.menuInline { + position: absolute; + top: 0; + left: 0; + width: 280px; + height: 100vh; + background: #ffffff80; + backdrop-filter: blur(10px); + -webkit-backdrop-filter: blur(10px); + box-shadow: 0px 0px 27px #74747430; + z-index: 999999; + transition: .4s; + + &.out { + transform: translateX(-120%); + transition: .4s; + } + + .ant-menu-inline { + max-height: 100vh; + overflow-y: scroll; + + &::-webkit-scrollbar { + height: 0; + } + &::-webkit-scrollbar-thumb { + background: transparent; + } + &::-webkit-scrollbar-track { + background: transparent; + } + } +} + +.backdropMenu { + content: ''; + position: absolute; + top: 0; + left: 0; + width: 100vw; + height: 100vh; + background: #ffffff20; + backdrop-filter: blur(4px); + -webkit-backdrop-filter: blur(4px); + z-index: 9999; +} + +@media screen and (min-width: 1100px) { + .btnMenuShow, + .menuInline, + .backdropMenu { + display: none; + } +} + +@media screen and (max-width: 1100px) { + .ant-menu.ant-menu-horizontal { + display: none; + } + .navbar .nav-start { + gap: 12px; + } + .navbar .nav-logo { + margin-left: 0; + } +} +@media screen and (max-width: 640px) { + .nav-account .container-account .account .text { + display: none; + } +} + +.btn-menu-toggle{ + width: 35px; + height:35px; + position: absolute; + bottom: 10px; + //background: #00000038; + background: rgba(0, 0, 0, 0.1882352941); + border-radius: 26px; + border: none; + color: #fff; + cursor: pointer; + margin-left: 7px; + margin-top: 5px; + font-size: 16px; + transition: 0.5s ease-in-out; + + &:hover{ + background: #ffffff; + color: var(--primary); + } +} diff --git a/public/css/position.scss b/public/css/position.scss new file mode 100644 index 0000000..c4d152a --- /dev/null +++ b/public/css/position.scss @@ -0,0 +1,677 @@ + +.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.5rem !important; +} + +.m-5 { + margin: 3rem !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.5rem !important; + margin-left: 1.5rem !important; +} + +.mx-5 { + margin-right: 3rem !important; + margin-left: 3rem !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.5rem !important; + margin-bottom: 1.5rem !important; +} + +.my-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !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.5rem !important; +} + +.mt-5 { + margin-top: 3rem !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.5rem !important; +} + +.me-5 { + margin-right: 3rem !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.5rem !important; +} + +.mb-5 { + margin-bottom: 3rem !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.5rem !important; +} + +.ms-5 { + margin-left: 3rem !important; +} + +.ms-auto { + margin-left: auto !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.5rem !important; +} + +.p-5 { + padding: 3rem !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: 0.75rem !important; + padding-left: 0.75rem !important; +} + +.px-4 { + padding-right: 1rem !important; + padding-left: 1rem !important; +} + +.px-5 { + padding-right: 1.25rem !important; + padding-left: 1.25rem !important; +} + +.px-6 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; +} + +.px-7 { + padding-right: 1.75rem !important; + padding-left: 1.75rem !important; +} + +.px-8 { + padding-right: 2rem !important; + padding-left: 2rem !important; +} + +.px-9 { + padding-right: 2.25rem !important; + padding-left: 2.25rem !important; +} + +.px-10 { + padding-right: 2.5rem !important; + padding-left: 2.5rem !important; +} + +.px-11 { + padding-right: 2.75rem !important; + padding-left: 2.75rem !important; +} + +.px-12 { + padding-right: 3rem !important; + padding-left: 3rem !important; +} + +.px-13 { + padding-right: 3.25rem !important; + padding-left: 3.25rem !important; +} + +.px-14 { + padding-right: 3.5rem !important; + padding-left: 3.5rem !important; +} + +.px-15 { + padding-right: 3.75rem !important; + padding-left: 3.75rem !important; +} + +.px-16 { + padding-right: 4rem !important; + padding-left: 4rem !important; +} + +.px-17 { + padding-right: 4.25rem !important; + padding-left: 4.25rem !important; +} + +.px-18 { + padding-right: 4.5rem !important; + padding-left: 4.5rem !important; +} + +.px-19 { + padding-right: 4.75rem !important; + padding-left: 4.75rem !important; +} + +.px-20 { + padding-right: 5rem !important; + padding-left: 5rem !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: 0.75rem !important; + padding-bottom: 0.75rem !important; +} + +.py-4 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; +} + +.py-5 { + padding-top: 1.25rem !important; + padding-bottom: 1.25rem !important; +} + +.py-6 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; +} + +.py-7 { + padding-top: 1.75rem !important; + padding-bottom: 1.75rem !important; +} + +.py-8 { + padding-top: 2rem !important; + padding-bottom: 2rem !important; +} + +.py-9 { + padding-top: 2.25rem !important; + padding-bottom: 2.25rem !important; +} + +.py-10 { + padding-top: 2.5rem !important; + padding-bottom: 2.5rem !important; +} + +.py-11 { + padding-top: 2.75rem !important; + padding-bottom: 2.75rem !important; +} + +.py-12 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; +} + +.py-13 { + padding-top: 3.25rem !important; + padding-bottom: 3.25rem !important; +} + +.py-14 { + padding-top: 3.5rem !important; + padding-bottom: 3.5rem !important; +} + +.py-15 { + padding-top: 3.75rem !important; + padding-bottom: 3.75rem !important; +} + +.py-16 { + padding-top: 4rem !important; + padding-bottom: 4rem !important; +} + +.py-17 { + padding-top: 4.25rem !important; + padding-bottom: 4.25rem !important; +} + +.py-18 { + padding-top: 4.5rem !important; + padding-bottom: 4.5rem !important; +} + +.py-19 { + padding-top: 4.75rem !important; + padding-bottom: 4.75rem !important; +} + +.py-20 { + padding-top: 5rem !important; + padding-bottom: 5rem !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.5rem !important; +} + +.pt-5 { + padding-top: 3rem !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.5rem !important; +} + +.pe-5 { + padding-right: 3rem !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.5rem !important; +} + +.pb-5 { + padding-bottom: 3rem !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.5rem !important; +} + +.ps-5 { + padding-left: 3rem !important; +} + +.fs-1 { + font-size: calc(1.375rem + 1.5vw) !important; +} + +.fs-2 { + font-size: calc(1.325rem + 0.9vw) !important; +} + +.fs-3 { + font-size: calc(1.3rem + 0.6vw) !important; +} + +.fs-4 { + font-size: calc(1.275rem + 0.3vw) !important; +} + +.fs-5 { + font-size: 1.25rem !important; +} + +.fs-6 { + font-size: 1rem !important; +} + +.fs-7 { + font-size: 13px !important; +} + +.fs-8 { + font-size: 0.6rem !important; +} + +.fw-lighter { + font-weight: lighter !important; +} + +.fw-light { + font-weight: 300 !important; +} + +.fw-normal { + font-weight: 400 !important; +} + +.fw-medium { + font-weight: 500 !important; +} + +.fw-semibold { + font-weight: 500 !important; +} + +.fw-bold { + font-weight: 600 !important; +} + +.fw-bolder { + font-weight: 700 !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.5rem !important; +} + +.gap-5 { + gap: 3rem !important; +} + +.flex { + display: flex; +} + +.justify-center { + display: flex !important; + justify-content: center !important; + align-items: center !important; +} + +.justify-start { + display: flex !important; + justify-content: start !important; + align-items: center !important; +} + +.justify-end { + display: flex !important; + justify-content: end !important; + align-items: center !important; +} + +@mixin justify-start { + display: flex; + justify-content: start; + align-items: center; +} +@mixin justify-item-start { + display: flex; + justify-content: center; + align-items: start; +} +@mixin justify-center { + display: flex; + justify-content: center; + align-items: center; +} +@mixin justify-end { + display: flex; + justify-content: end; + align-items: center; +} +@mixin justify-sb { + display: flex; + justify-content: space-between; + align-items: center; +} +@mixin justify-sb-start { + display: flex; + justify-content: space-between; + align-items: start; +} \ No newline at end of file diff --git a/public/css/sidebar.scss b/public/css/sidebar.scss new file mode 100644 index 0000000..b712212 --- /dev/null +++ b/public/css/sidebar.scss @@ -0,0 +1,335 @@ + +.sidebar { + position: fixed; + top: 50px; + left: 0; + height: 100%; + width: 275px; + //background: var(--bg-menu); + z-index: 100; + border-radius: 0 35px; + transition: all 0.3s ease; + margin-top: 6rem; + overflow: hidden; +} + +.sidebar .bg-sidebar { + height: 100vh; + width: unset !important; + position: absolute; + z-index: -1; + opacity: 0.15; +} + +.sidebar.close { + width: 55px; + border-radius: 0 20px; +} + +.sidebar.close:hover { + width: 260px; + border-radius: 0 35px; +} + +.sidebar.close:hover .nav-links, +.sidebar .nav-links { + height: 100%; + padding: 10px 0 150px 4px; + overflow: auto; +} + +.sidebar .nav-links .nav-menu, +.sidebar.close .nav-links .nav-menu { + margin-bottom: 7px; +} + +.sidebar.close:hover .nav-links .nav-menu.active i, +.sidebar.close .nav-links .nav-menu.active { + background: transparent; +} + +.sidebar.close .nav-links { + overflow: visible; +} + +.sidebar .nav-links::-webkit-scrollbar { + display: none; +} + +.sidebar .nav-links li { + position: relative; + list-style: none; + transition: all 0.2s ease; +} + +.hideBar { + position: absolute; + top: 0; + left: 260px; + width: 100%; + height: 100%; + z-index: 9999999; + background: transparent; + border: none; + outline: none; + cursor: pointer; + display: none; +} + +.sidebar .nav-links li .arrow-link { + display: flex; + align-items: center; + justify-content: space-between; +} + +.sidebar.close .nav-links li .arrow-link { + display: block; +} + +.sidebar .nav-links .nav-icon { + height: 40px; + width: 40px; + text-align: center; + line-height: 55px; + color: #fff; + font-size: 18px; + margin-left: 3px; + cursor: pointer; + transition: all 0.2s ease; +} +.sidebar .nav-links .nav-icon svg { + width: 20px; + height: 20px; + margin-bottom: 2px; +} + +.sidebar.close .nav-links .nav-menu.active i { + height: 46px; + width: 46px; + text-align: center; + background: var(--bg-sub-menu); + color: #fff; + font-size: 18px; + cursor: pointer; + margin-left: 7px; + border-radius: 14px; + transition: all 0.2s ease; +} + +.sidebar.close:hover .nav-links .nav-menu.active, +.sidebar .nav-links .nav-menu.active { + width: 95%; + border-radius: 0 30px 30px 0; + background: var(--bg-sub-menu); + transition: all 0.2s ease; +} + +.sidebar .nav-links .nav-menu i.arrow { + color: #fff; + margin-left: 22px; + font-size: 14px; + transition: all 0.3s ease; +} + +.sidebar.close:hover .nav-links .arrow-link.active i.arrow, +.sidebar .nav-links .arrow-link.active i.arrow { + transform: rotate(-180deg); + transition: all 0.2s ease; +} + +.arrow { + margin-left: 30px; + fill: #ffffffa3; + color: #ffffffa3; + transform: rotate(270deg); + transition: all 0.2s ease; +} + +.sidebar.close .nav-links .arrow { + display: none; +} + +.sidebar.close:hover .nav-links .arrow { + + display: block; + opacity: 0; + visibility: hidden; + animation: arrowDelay 0.3s 0.4s forwards; +} + +@keyframes arrowDelay { + to { + opacity: 1; + visibility: visible; + } +} + +.sidebar.close:hover .nav-links li a, +.sidebar .nav-links li a { + display: flex; + align-items: center; + text-decoration: none; +} + +.sidebar.close:hover .nav-links li a .nav-name, +.sidebar .nav-links li a .nav-name { + display: flex; + justify-content: space-between; + align-items: center; +} + +.sidebar.close:hover .nav-links li a .link_name, +.sidebar .nav-links li a .link_name { + width: 160px; + font-size: 13px; + font-weight: 500; + line-height: 30px; + color: #fff; + overflow: hidden; + margin-top: 6px; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + transition: all 0.2s ease; +} + +.sidebar.close .nav-links li a .link_name { + display: none; +} + +.sidebar.close:hover .nav-links li .list-link-head, +.sidebar .nav-links li .list-link-head { + display: flex; + align-items: center; + text-decoration: none; + cursor: pointer; +} + +.sidebar.close:hover .nav-links li .list-link-head .nav-name, +.sidebar .nav-links li .list-link-head .nav-name { + display: flex; + justify-content: space-between; + align-items: center; +} + +.sidebar.close:hover .nav-links li .list-link-head .link_name, +.sidebar .nav-links li .list-link-head .link_name { + width: 160px; + font-size: 13px; + font-weight: 500; + line-height: 30px; + color: #fff; + overflow: hidden; + margin-top: 6px; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + transition: all 0.2s ease; +} + +.sidebar.close .nav-links li .list-link-head .link_name { + display: none; +} + +.sidebar.close:hover .nav-links .nav-menu .submenu, +.sidebar .nav-links .nav-menu .submenu { + display: block; + overflow: hidden; + max-height: 0; + transition: max-height 0.2s ease-out; +} + +.sidebar .nav-links .nav-menu .submenu li { + position: relative; + padding-left: 45px; + transition: all 0.2s ease; + padding-top: 5px; + padding-bottom: 5px; +} + +.sidebar.close .nav-links .nav-menu .submenu { + display: none; +} + +.sidebar .nav-links .nav-menu .submenu .submenu-link a { + position: relative; + color: #fff; + font-size: 12px; + padding: 5px 0; + text-transform: capitalize; + opacity: 1; + transition: all 0.2s ease; + width: 85%; +} + +.arrow-link.active .arrow { + transform: rotate(1deg); + margin-left: 30px; +} + +.sidebar .nav-links .nav-menu .submenu .submenu-link.active { + width: 93%; + border-radius: 0 30px 30px 0; + padding-right: 6px; + background: var(--bg-sub-menu); + transition: all 0.2s ease; +} + +.sidebar .nav-links .nav-menu .submenu .submenu-link.active a { + margin-left: 8px; + transition: all 0.2s ease; +} + +.sidebar .nav-links .nav-menu .submenu .submenu-link a::before { + content: ""; + position: absolute; + top: 12px; + left: -14px; + width: 6px; + height: 6px; + border-radius: 50%; + background: var(--bg-sub-menu); + transition: all 0.2s ease; +} + + +.sidebar .nav-links .nav-menu .submenu .submenu-link.active a::before { + background: var(--white); +} + +.submenu-level3 { + padding-left: 20px !important; + transition: all 0.2s ease; + + ::before { + content: ""; + position: absolute; + top: 6px !important; + left: -14px; + width: 6px; + height: 6px; + border-radius: 50%; + background: var(--bg-sub-menu); + transition: all 0.2s ease; + } + + a { + color: #fff; + font-size: 12px; + opacity: 0.7 !important; + transition: all 0.2s ease; + padding: 0 !important; + } + +} + +.menu-level3 { + display: none; + transition: all 0.2s ease; +} + +.ant-menu-inline.ant-menu-root .ant-menu-item >.ant-menu-title-content, +.ant-menu-inline.ant-menu-root .ant-menu-submenu-title >.ant-menu-title-content { + font-size: 12px; + font-weight: 500; +} \ No newline at end of file diff --git a/public/css/table.scss b/public/css/table.scss new file mode 100644 index 0000000..e053f77 --- /dev/null +++ b/public/css/table.scss @@ -0,0 +1,187 @@ + +.rdt_TableCol { + padding: 8px 11px; + color: var(--primary) !important; + font-size: 12px !important; + font-weight: 600 !important; +} + +.rdt_TableRow { + border-bottom: 1px solid var(--primary-light) !important; + border-radius: 25px; +} + +.rdt_TableRow:hover { + background-color: var(--primary-light) !important; +} + +.rdt_TableHeadRow { + background: var(--primary-light) !important; + border: none !important; + margin-bottom: 10px; +} + +.rdt_TableHeadRow:nth-child(1) { + border-radius: 25px !important; +} + +.rdt_Pagination { + border-top: none !important; + /* border-top: 1px solid #EFF2F5 !important; */ +} + + +//ANTD TABLE +.ant-table-cell{ + font-size: 13px; +} + +.ant-pagination .ant-pagination-item-active a { + color: #fff !important; +} + +.ant-pagination .ant-pagination-item-active { + border-color: var(--primary) !important; + background: var(--primary) !important; +} + +.ant-table-wrapper .ant-table-thead > tr > th, .ant-table-wrapper .ant-table-thead > tr > td { + position: relative; + color: var(--primary); + font-weight: 600; + text-align: start; + background:#d4e8ed; + border-bottom: 1px solid #ffffff; + padding: 11px 16px; +} + + +.ant-table-tbody tr td { + font-weight: 500; + padding: 3px 13px !important; +} + +.ant-table-wrapper .ant-table-thead th.ant-table-column-has-sorters:hover { + background: var(--primary); + color: #fff; +} + +.ant-table-wrapper .ant-table-column-sorter-up.active, .ant-table-wrapper .ant-table-column-sorter-down.active { + color: #fff; +} + +.ant-table-wrapper .ant-table-thead th.ant-table-column-sort { + background: var(--primary); + color: #fff; +} + +.ant-table-wrapper .ant-table-container table > thead > tr:first-child > *:last-child{ + border-radius: 0 10px 0px 0; +} + +.ant-table-wrapper .ant-table-container table > thead > tr:first-child > *:first-child { + border-radius: 10px 0 0 0px; +} + +.ant-table-cell:hover .ant-table-wrapper .ant-table-container table > thead > tr:first-child > *:last-child{ + border-radius: 0 20px 20px 0; +} + +.ant-table-cell-row-hover { + background: var(--primary-light) !important; +} + +.ant-pagination .ant-pagination-total-text { + position: absolute; + left: 22px; + font-size: 13px; + color: var(--text-muted); + font-weight: 400; +} + +//zn table +.znTable { + width: 100%; + border-collapse: collapse; + font-size: 13px; + background: #fff; + + tr td { + padding: 10px 30px; + border-top: 1px solid #ededed; + } +} + +.ant-table-wrapper .ant-table-thead >tr>th:not(:last-child):not(.ant-table-selection-column):not(.ant-table-row-expand-icon-cell):not([colspan])::before, +.ant-table-wrapper .ant-table-thead >tr>td:not(:last-child):not(.ant-table-selection-column):not(.ant-table-row-expand-icon-cell):not([colspan])::before { + background-color: #00353129; +} + + +.ant-table-kol .ant-table-wrapper .ant-table-thead > tr > th, +.ant-table-kol .ant-table-wrapper .ant-table-thead > tr > td{ + background: #f7f7f7; + padding:8px 15px; +} + +.ant-table-early-warning .ant-table-wrapper .ant-table-thead > tr > th, +.ant-table-early-warning .ant-table-wrapper .ant-table-thead > tr > td{ + background: #242424; + padding: 10px 15px; + color: #fff; +} + +.ant-table-kol-npl .ant-table-wrapper .ant-table-thead > tr > th, +.ant-table-kol-npl .ant-table-wrapper .ant-table-thead > tr > td{ + color: rgb(248, 230, 248); + background: rgb(109, 0, 175); + padding:8px 15px; + height: 65px; +} + +.ant-table-kol-dist .ant-table-wrapper .ant-table-thead > tr > th, +.ant-table-kol-dist .ant-table-wrapper .ant-table-thead > tr > td{ + color: rgb(230, 238, 248); + background: rgb(0, 73, 175); + padding:8px 15px; + height: 65px; +} + +.ant-table-kol-kjt .ant-table-wrapper .ant-table-thead > tr > th, +.ant-table-kol-kjt .ant-table-wrapper .ant-table-thead > tr > td{ + color: rgb(255, 245, 248); + background: rgb(241, 65, 108); + padding:8px 15px; + height: 65px; +} + +.ant-table-pergerakan .ant-table-wrapper .ant-table-thead > tr > th, +.ant-table-pergerakan .ant-table-wrapper .ant-table-thead > tr > td{ + background: #f7f7f7; + padding:8px 15px; + height: 65px; +} + +.ant-table-pemburukan .ant-table-wrapper .ant-table-thead > tr > th, +.ant-table-pemburukan .ant-table-wrapper .ant-table-thead > tr > td{ + background: var(--color-kol1); + color: #fff; + padding:8px 15px; + height: 65px; +} + +.ant-table-perbaikan .ant-table-wrapper .ant-table-thead > tr > th, +.ant-table-perbaikan .ant-table-wrapper .ant-table-thead > tr > td{ + background: var(--color-kol2); + color: #fff; + padding:8px 15px; + height: 65px; +} + +.ant-table-tetap .ant-table-wrapper .ant-table-thead > tr > th, +.ant-table-tetap .ant-table-wrapper .ant-table-thead > tr > td{ + background: var(--color-kol3); + color: #fff; + padding:8px 15px; + height: 65px; +} \ No newline at end of file diff --git a/public/css/template.scss b/public/css/template.scss new file mode 100644 index 0000000..65ee5d3 --- /dev/null +++ b/public/css/template.scss @@ -0,0 +1,2401 @@ +:root { + --primary: #0179c2; + --success: #50cd89; + --info: #1a98ff; + --warning: #FEB82F; + --danger: #f1416c; + --secondary: #aaa; + --dark: #181c32; + --dark-grey: #666; + --primary-light: #9fd6ff; + --secondary-light: #f9f9f9; + --success-light: #e8fff3; + --info-light: #dbe8ff; + --warning-light: #fff8dd; + --danger-light: #fff5f8; + --dark-light: #e4e6e7; + --white: #fff; + --text-muted: #9A9A9A; + --success-inverse: #ffffff; + --info-inverse: #ffffff; + --warning-inverse: #ffffff; + --danger-inverse: #ffffff; + --dark-inverse: #ffffff; + --primary-inverse: #ffffff; + --white-inverse: #ffffff; + --white-light: #ffffff; + --grey: #a6a6a6; + --color-kol1: #0F9747; + --color-kol2: #54B947; + --color-kol2A: #54B947; + --color-kol2B: #54B947; + --color-kol2C: #54B947; + --color-kol3: #B0D136; + --color-kol4: #FDAE19; + --color-kol5: #E7322F; + + --color-kol1-light: #deffec; + --color-kol2-light: #D6FFD0; + --color-kol2A-light: #D6FFD0; + --color-kol2B-light: #D6FFD0; + --color-kol2C-light: #D6FFD0; + --color-kol3-light: #F0FFB8; + --color-kol4-light: #FFE7BA; + --color-kol5-light: #FFDFDE; + + --color-tapera:#1f87a0; + + --color-step1:#FEB82F; + --color-step2:#C6C851; + --color-step3:#8ED873; + --color-step4:#50cd89; + --color-step5:#429A7B; + --color-step6:#326F71; + --color-step7:#1e5c6b; + + + //--color-step1:#50cd89; + //--color-step2:#43af7f; + //--color-step3:#369375; + //--color-step4:#29776b; + //--color-step5:#1e5c6b; + //--color-step6:#1c5064; + //--color-step7:#19445e; + + --bg-menu: linear-gradient(90deg, #003775 0%, #0057b9 104.42%); + --bg-sub-menu: #f8f8f840; +} + +@import "form.scss"; +@import "position.scss"; +@import "button.scss"; +@import "text.scss"; +@import "navbar.scss"; +@import "sidebar.scss"; +@import "table.scss"; +@import "modal.scss"; +@import "wave.scss"; +@import "dark.scss"; + + +::-webkit-scrollbar { + width: 5px; + height: 14px; +} + +::-webkit-scrollbar-thumb { + background: #ababab; + border: none; +} + +::-webkit-scrollbar-track { + background: #dedede; +} + +html { + font-family: var(--font-poppins); +} + +button { + font-family: var(--font-poppins); + +} + +* { + padding: 0; + margin: 0; + box-sizing: border-box; + font-family: var(--font-poppins); +} + +body { + overflow-x: hidden; +} + +.bg-nav { + //position: absolute; + //width: 100%; + /* */ + //filter: brightness(42%); + //object-fit: cover; + //top: -494px !important; + //rotate: 180deg; + + position: absolute; + width: 100%; + filter: brightness(53%); + object-fit: cover; + top: 0 !important; + height: 120px !important; + //top: -325px !important; + +} + +.bg-nav-hov{ + background: rgba(0, 0, 0, 0.7); + height: 100px; + width: 100%; + top: 0; + position: fixed; + z-index: 2; +} + +section { + position: fixed; + // top: 10rem; + z-index: 4; + overflow: scroll; + height: 100vh; + width: 100%; + padding: 15px 35px 150px; + padding-left: 300px; + border-radius: 15px 15px 0 0; + transition: all 0.5s ease; + background: #f3f3f3; + //background: url(/img/pat29.png); + box-shadow: 0px 0px 50px 0px rgba(82, 63, 105, 0.15); + &::-webkit-scrollbar { + height: 0; + } + &::-webkit-scrollbar-thumb { + background: transparent; + } + &::-webkit-scrollbar-track { + background: transparent; + } +} + +section.content.hover{ + padding-left: 120px; +} + +.resultCard { + position: relative; + width: 100%; + padding: 1rem 1.4rem; + border-radius: 35px; + border: 1px solid #E7F3FF; + background: #F8FBFF; + z-index: 9; +} + +.dashCard { + position: relative; + width: 100%; + padding: 1rem 1.4rem; + border-radius: 35px; + border: 1px solid #eee; + background: #fff; + z-index: 9; +} + +.cards { + position: relative; + width: 100%; + padding: 1rem 1.4rem; + border-radius: 20px; + border: 1px solid #eee; + background: #fff; + box-shadow: 2px 10px 30px rgba(221, 221, 221, 0.4); + z-index: 9; +} + +.card { + background: #fff; + border: 1px solid #eee; + // box-shadow: 2px 10px 30px rgba(221, 221, 221, 0.1); + box-shadow: rgba(0, 0, 0, 0.16) 0px 1px 4px; + border-radius: 20px; + padding: 15px; +} + +.card-header { + display: flex; + justify-content: start; + align-items: center; + gap: 1rem; +} + +.card-header i { + font-size: 24px; + color: #444; +} + +.card-header .title { + font-size: 18px; + font-weight: 500; + line-height: 20px; + color: #444; + text-transform: uppercase; +} + +.card-header .subtitle { + font-size: 12px; + font-weight: 400; + color: var(--grey); +} + +.selecton-wrap { + display: flex; + width: 100%; + align-items: flex-end; + gap: 10px; + margin-bottom: 10px; +} + + +.dropdown-item { + display: flex; + justify-content: start; + align-items: center; + font-size: 12px; + font-weight: 500; + color: var(--dark-grey); + padding: 8px 12px; + border: 0; + width: 100%; + /* border-top: 1px dashed #e7e7e7; */ + outline: 0; + background: transparent; + cursor: pointer; + transition: 0.5s; +} + +.dropdown-item:hover { + color: var(--bs-primary); + background: var(--bs-primary-light); + transition: 0.5s; +} + +.dropdown-item:hover i { + color: var(--bs-primary); + transition: 0.5s; +} + +.dropdown-item i { + text-align: left; + width: 25px; + font-size: 18px; + color: var(--dark-grey); +} + +.dropdown-action-title { + + font-size: 11px; + font-weight: 600; + color: #bdbdbd; + border-bottom: 1px dashed #e3e3e3; + padding-bottom: 8px; + margin: 3px 15px; + +} + +.label-box { + width: 100%; + font-size: 12px; + border-radius: 20px; + padding: 12px; +} + +.ant-spin-container::after { + border-radius: 20px; + background: var(--primary); +} + +.w-full { + width: 100% !important; +} + +.ant-select-selector { + border: none !important; + box-shadow: none !important; +} + +.ant-upload-select { + background-color: #ffffff !important; + border: 1px solid #e1e3ea !important; + overflow: hidden; +} + +.container-img-uploaded { + border: 1px solid #e1e3ea !important; + position: relative; + border-radius: 20px; + overflow: hidden; + display: flex; + justify-content: center; + width: 120px; + height: 120px; + align-items: center; + color: #a1a5b7, +} + +.ant-input-number-input { + padding: 0 !important; + font-weight: 600 !important; +} + +.ant-input-number-handler-wrap { + display: none !important; +} + +.ant-input-number-readonly { + border: none !important; +} + +.row-log-data { + border-bottom: 0 !important; + border-radius: 20px; +} + +.row-log-data:hover { + background-color: transparent !important; +} + +.row-log-data:first-child>div:last-child { + border-top-right-radius: 20px; +} + +.row-log-data:last-child>div:last-child { + border-bottom-right-radius: 20px; +} + +.bg-primary { + background: var(--primary); +} + +.bg-primary-light { + background: var(--primary-light); +} + +// PRODUCT TABUNGAN +.card-product { + font-size: 12px; + overflow: hidden; +} + +.card-product .ant-card-head { + border-bottom: 0 !important; +} + +.card-product .ant-card-body { + padding: 0; +} + +.card-product .card-product-header { + padding: 15px 15px 0 15px; +} + +.card-product .card-product-body { + padding: 15px; +} + +.card-product .card-product-body .data { + display: flex; + flex-wrap: wrap; + flex-direction: column; + font-size: 13px; +} + +.card-product .card-product-body .table-info { + font-size: 13px; + width: 100%; +} + +.card-product .card-product-body .table-info tr td { + padding: 2px; +} + +.card-product .card-product-body .table-info tr td:first-child { + font-size: 13px; + color: #a8a8a8; +} + +.card-product .card-product-body .table-info tr:not(:last-child) td { + border-bottom: 1px dashed #e8e8e8; +} + +.card-product .icon-product { + top: 5px; + right: 5px; + transform: rotate(-20deg); + opacity: .2; + position: absolute +} + +.card-product .card-product-header h3.card-title { + font-weight: 600; + font-size: 1.35em; +} + +.card-product .card-product-header .card-subtitle { + font-weight: 500; + font-size: 1.10em; +} + +.card-product .card-product-footer { + background: var(--primary-light); +} + + +.card-product .highlight-product { + background: #f3f3f3; + margin-top: 15px; + padding: 10px; +} + +.card-product .highlight-product .item { + display: flex; + flex-direction: column; + justify-content: center; +} + +.card-product .highlight-product .item span { + font-size: .7rem; +} + +/* HTML:
Your text content
*/ + +.card-product .card-product-footer div { + display: flex; + justify-content: space-between; + align-items: center; +} + +.my-ribbon { + font-size: 13px; + background: #fff; + padding: 6px 12px; + border-radius: 11px; + box-shadow: rgb(204, 219, 232) 3px 3px 6px 0px inset, rgba(255, 255, 255, 0.5) -3px -3px 6px 1px inset; +} + +.btn-secondary { + position: relative; + background: #ebebeb; + transition: .3s; + border: 1px solid #ebebeb; + + &:hover { + transition: .3s; + border: 1px solid #dddddd; + } +} + +.btn-light-primary { + position: relative; + transition: .3s; + + &:hover { + transition: .3s; + border: 1px solid var(--primary) !important; + background: var(--primary) !important; + color: #dae7f3 !important; + } +} + +.justifyStart { + display: flex; + justify-content: start; + align-items: center; +} + +.justifyCenter { + display: flex; + justify-content: center; + align-items: center; +} + +.justifyEnd { + display: flex; + justify-content: end; + align-items: center; +} + +.justifySB { + display: flex; + justify-content: space-between; + align-items: center; +} + +.justifySBS { + display: flex; + justify-content: space-between; + align-items: start; +} + + +// DASHBOARD // +.containers, +.dashboard { + position: relative; + + .headContent { + + display: flex; + justify-content: space-between; + margin-bottom: 30px; + + + .headTitle { + + .content { + display: flex; + justify-content: start; + align-items: center; + gap: 15px; + + .title { + position: relative; + font-size: 12px; + font-weight: 400; + color: var(--grey); + } + + .title::after { + content: ""; + position: absolute; + top: 4px; + right: -8px; + height: 10px; + width: 1px; + background: var(--grey); + } + + .sub-title { + font-size: 12px; + font-weight: 400; + color: var(--grey); + } + } + + .title-text { + font-size: 18px; + text-transform: uppercase; + font-weight: 600; + color: var(--dark); + } + } + + .filter { + position: relative; + display: flex; + justify-content: end; + gap: 12px; + width: 50%; + margin-top: 4px; + } + + .legend { + display: flex; + flex-wrap: wrap; + align-content: flex-start; + width: 210px; + gap: 6px; + + .badge { + display: inline-flex; + justify-content: center; + align-items: center; + font-size: 12px; + color: #fff; + padding: 0 12px; + width: 100px; + height: 28px; + border-radius: 20px; + white-space: nowrap; + } + } + + .containerTitle { + position: relative; + display: flex; + justify-content: center; + align-items: start; + flex-direction: column; + margin-right: 10px; + margin-top: 10px; + width: 50%; + + .breadCrumb { + position: relative; + display: flex; + justify-content: start; + align-items: center; + width: 100%; + + .text { + position: relative; + font-size: 12px; + font-weight: 500; + color: #B0B0B0; + margin-right: 1.4rem; + + &:not(:last-child)::after { + content: '>'; + position: absolute; + top: -1px; + right: -16px; + font-size: 14px; + font-weight: 500; + color: #B0B0B0; + } + } + } + + .title { + width: 100%; + font-size: 20px; + font-weight: 600; + white-space: nowrap; + text-align: left; + + //&.left { + // text-align: left !important; + //} + } + + .subtitle { + width: 100%; + font-size: 14px; + font-weight: 300; + text-align: center; + + &.left { + text-align: left !important; + } + } + } + } + + .bodyCustom { + padding-top: 1rem; + } + + .bodyContent { + position: relative; + // margin-bottom: 6rem; + // padding-top: 7.5rem; + + .containerTitle { + position: relative; + display: flex; + justify-content: space-between; + align-items: start; + padding-bottom: 10px; + border-bottom: 1px solid #f1f1f1; + + .legend { + display: flex; + flex-wrap: wrap; + align-content: flex-start; + width: 210px; + gap: 6px; + + .badge { + display: inline-flex; + justify-content: center; + align-items: center; + font-size: 12px; + color: #fff; + padding: 0 12px; + width: 100px; + height: 28px; + border-radius: 20px; + white-space: nowrap; + } + } + + .titleText { + position: relative; + } + + .container { + position: relative; + margin-top: -36px; + border-top-right-radius: 20px; + border-top-left-radius: 20px; + padding: 0 1px; + background: #fff; + + .title { + position: relative; + top: 8px; + background: #fff; + color: var(--dark); + border-radius: 20px; + padding: 0 24px; + font-size: 14px; + font-weight: 500; + white-space: nowrap; + text-align: center; + } + } + + .subtitle { + font-size: 12px; + font-weight: 300; + line-height: 18px; + margin-top: 8px; + margin-bottom: 2rem; + text-align: center; + } + + .titles { + color: var(--dark); + font-size: 16px; + font-weight: 500; + white-space: nowrap; + } + + .subtitles { + font-size: 14px; + font-weight: 300; + line-height: 18px; + } + + .action { + position: relative; + display: flex; + justify-content: end; + align-items: center; + gap: 12px; + width: 210px; + } + + .containerDesc { + position: relative; + display: flex; + justify-content: center; + align-items: center; + width: 100%; + margin-bottom: 1rem; + + .centerDesc { + position: relative; + } + + .desc { + display: flex; + justify-content: start; + align-items: center; + margin-bottom: 6px; + + .name { + position: relative; + width: 90px; + font-size: 12px; + font-weight: 500; + line-height: 18px; + } + + .subname { + font-size: 12px; + font-weight: 300; + line-height: 18px; + } + } + } + + .headCard { + display: flex; + justify-content: space-between; + align-items: center; + width: 100%; + padding-bottom: 1rem; + margin-bottom: 1rem; + border-bottom: 1px solid #eee; + + .title { + font-size: 14px; + font-weight: 500; + text-align: left; + } + + .subtitle { + font-size: 12px; + font-weight: 300; + line-height: 18px; + text-align: left; + margin: 0; + } + } + } + + .dashboardResult { + position: relative; + + .containerResult { + display: flex; + justify-content: space-between; + align-items: start; + width: 100%; + + .text { + position: relative; + + .title { + font-size: 16px; + font-weight: 500; + margin-bottom: 6px; + } + .sm-title { + font-size: 14px; + font-weight: 300; + margin-top: -6px; + margin-bottom: 6px; + } + .subtitle { + font-size: 14px; + font-weight: 300; + } + .jumlah { + font-size: 42px; + font-weight: 700; + color: #999; + margin-bottom: -10px; + } + + .resultInOut { + .containers { + display: flex; + justify-content: start; + align-items: center; + gap: 12px; + margin-bottom: -4px; + + .icon { + display: flex; + justify-content: center; + align-items: center; + border-radius: 8px; + width: 24px; + height: 24px; + } + + &.in { + color: #008FFB !important; + .icon { + border: 2px solid #bde2ff; + background: #eff8ff; + svg { + font-size: 16px; + color: #008FFB; + } + } + } + &.out { + color: #F1416C !important; + .icon { + border: 2px solid #f7ced8; + background: #fcf4f6; + svg { + font-size: 16px; + color: #F1416C; + } + } + } + + span { + font-size: 24px; + font-weight: 600; + } + } + .subtitle { + font-size: 12px; + font-weight: 300; + } + } + } + + .graph { + position: relative; + border-radius: 20px; + border: 1px solid #E7F3FF; + background: #F8FBFF; + width: 120px; + height: 125px; + + &.monitorResult { + height: 128px; + + .apexcharts-canvas { + position: relative; + top: -6px; + } + } + &.reportEmployee { + height: 128px; + + .apexcharts-canvas { + position: relative; + top: 9px; + right: 18%; + } + } + + } + } + } + + .averagePercent { + position: relative; + height: 295px; + + &::after { + content: ''; + position: absolute; + left: 50%; + bottom: 1.4rem; + transform: translate(-50%, -50%); + width: 120px; + height: 20px; + border-radius: 50%; + background: rgba(0, 0, 0, 0.05); + box-shadow: 0px 0px 40px 18px rgba(0, 0, 0, 0.05); + } + + .ant-progress-circle { + position: relative; + top: 46%; + left: 50%; + transform: translate(-50%, -50%); + z-index: 999; + } + + .ant-progress-circle-trail { + stroke:#e4eefa !important + } + } + + .securityDesc { + position: relative; + display: flex; + justify-content: center; + align-items: center; + width: 100%; + margin: 1rem 0; + + .centerDesc { + position: relative; + } + + .desc { + display: flex; + justify-content: start; + align-items: center; + margin-bottom: 6px; + + .name { + position: relative; + width: 100px; + font-size: 14px; + font-weight: 500; + line-height: 18px; + } + + .subname { + font-size: 14px; + font-weight: 300; + line-height: 18px; + } + } + } + + .header { + position: relative; + margin-bottom: .7rem; + + .containers { + margin: 0 auto; + } + + ul { + display: flex; + justify-content: center; + align-items: center; + list-style: none; + + li { + position: relative; + display: flex; + justify-content: center; + align-items: center; + width: 100%; + height: 32px; + font-size: 14px; + font-weight: 500; + background: #ebebeb; + color: #000; + + &:first-child { + border-top-left-radius: 20px; + border-bottom-left-radius: 20px; + } + + &:last-child { + border-top-right-radius: 20px; + border-bottom-right-radius: 20px; + } + } + } + + } + + .content { + width: 100%; + background: #f7f7f7; + border-radius: 20px; + margin-bottom: .7rem; + padding: 0 6px; + + .title { + display: flex; + justify-content: start; + align-items: center; + height: 32px; + padding: 0 10px; + + span { + font-size: 14px; + font-weight: 500; + color: #404040; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + } + + .date { + display: flex; + justify-content: end; + align-items: center; + height: 100%; + text-align: right; + font-size: 14px; + font-weight: 400; + color: #404040; + padding-right: 10px; + + &.left { + padding-right: 1rem; + justify-content: start !important; + text-align: left !important; + } + + &.center { + justify-content: center !important; + } + } + + ul { + display: flex; + justify-content: center; + align-items: center; + list-style: none; + + li { + position: relative; + display: flex; + justify-content: center; + align-items: center; + width: 100%; + + .btnAct { + position: relative; + display: flex; + justify-content: center; + align-items: center; + width: 100%; + height: 32px; + font-size: 14px; + font-weight: 500; + border: none; + outline: none; + color: #fff; + cursor: pointer; + transition: .3s; + z-index: 99; + + &:hover { + opacity: .7; + // box-shadow: inset 0 0 10px #f1f1f1; + transition: .3s; + } + } + + &:first-child button, + &:first-child .btnAct { + border-top-left-radius: 20px; + border-bottom-left-radius: 20px; + } + + &:last-child button, + &:last-child .btnAct { + border-top-right-radius: 20px; + border-bottom-right-radius: 20px; + } + } + } + + .count { + position: relative; + display: flex; + justify-content: center; + align-items: center; + width: 60px; + height: 28px; + border-radius: 20px; + font-size: 12px; + font-weight: 600; + color: #fff; + } + + .action { + position: relative; + display: flex; + justify-content: center; + align-items: center; + gap: 2px; + width: 100%; + height: 28px; + font-size: 12px; + font-weight: 500; + color: #404040; + cursor: pointer; + + svg { + font-size: 8px; + fill: #404040 + } + } + } + + } + + .containerList { + position: relative; + // background: #0057b920; + width: 100%; + max-height: 400px; + overflow-y: scroll; + overflow-x: hidden; + margin-top: 1rem; + padding-right: 10px; + + .contentList { + position: relative; + display: flex; + justify-content: space-around; + align-items: center; + padding: .8rem .5rem .8rem 1rem; + border: 1px solid #ccc; + border-radius: 20px; + margin-bottom: 10px; + + .name { + position: relative; + display: flex; + justify-content: start; + align-items: center; + gap: 8px; + + // &::after { + // content: ''; + // position: absolute; + // top: 3px; + // right: -12px; + // width: 1px; + // height: calc(100% - 6px); + // background: #ccc; + // } + + img { + border-radius: 50%; + height: 32px !important; + width: 32px !important; + object-fit: cover; + } + .ant-image-mask { + border-radius: 50%; + + .ant-image-mask-info { + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + font-size: 1px; + + svg { + display: block; + font-size: 14px; + } + } + } + + .text { + width: 220px; + height: 16px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + + a { + font-size: 15px; + font-weight: 600; + color: var(--dark); + line-height: 14px; + transition: .3s; + + &:hover { + color: #282e6e; + transition: .3s; + } + } + } + } + + .scrollRes { + position: relative; + display: flex; + justify-content: space-around; + align-items: center; + width: 100%; + } + + .text { + font-size: 16px; + font-weight: 600; + color: var(--dark); + line-height: 14px; + } + .subtext { + font-size: 12px; + font-weight: 400; + color: var(--grey); + white-space: nowrap; + } + + .percentDone { + .text { + margin-bottom: -4px; + } + .subtext { + margin-bottom: 2px; + } + } + .averageScore { + position: relative; + + .trophyImg { + position: absolute !important; + top: -6px; + left: 0; + width: 16px; + } + + .text { + display: flex; + justify-content: end; + align-items: center; + margin-top: -6px; + } + .badge { + display: inline-flex; + justify-content: center; + align-items: center; + font-size: 12px; + font-weight: 500; + color: #fff; + padding: 4px 12px; + border-radius: 20px; + white-space: nowrap; + } + } + } + } + + .containerEmployee { + position: relative; + margin-top: 1rem; + + .titleList { + position: relative; + display: flex; + justify-content: start; + align-items: center; + font-size: 14px; + font-weight: 500; + padding: 8px 0; + color: #666; + background: #f1f1f1; + border-radius: 20px; + padding-right: 10px; + margin-bottom: 12px; + } + + .id { + width: 20% !important; + padding-left: 14px; + } + .nama { + width: 30% !important; + } + .role { + width: 15% !important; + } + .jamMasuk { + width: 15% !important; + } + .jamPulang { + width: 20% !important; + } + .alasan { + width: 35% !important; + } + + .employeeList { + position: relative; + width: 100%; + max-height: 395px; + overflow-y: scroll; + overflow-x: hidden; + padding-right: 10px; + + .contentList { + position: relative; + display: flex; + justify-content: start; + align-items: center; + min-height: 30px; + padding-bottom: 4px; + border-bottom: 1px solid #eee; + margin-bottom: 10px; + font-size: 14px; + font-weight: 400; + color: #888; + + .jamMasuk { + display: flex; + justify-content: start; + align-items: center; + gap: 6px; + + svg { + font-size: 13px; + color: #999; + transform: scaleX(-1); + } + } + .jamPulang { + display: flex; + justify-content: start; + align-items: center; + gap: 6px; + + svg { + font-size: 13px; + color: #999; + } + } + } + } + } +} + +.contentDetail { + position: relative; + display: flex; + justify-content: start; + align-items: center; + gap: .7rem; + width: 100%; + border-radius: 50px; + background: #f3f3f3; + + .icon { + position: relative; + left: -1px; + display: flex; + justify-content: center; + align-items: center; + width: 50px; + height: 50px; + border-radius: 50%; + background: #fff; + } + + .title { + font-size: 14px; + font-weight: 400; + color: #000; + line-height: 14px; + } + + .subtitle { + font-size: 14px; + font-weight: 500; + color: #000; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + max-width: 160px; + } +} + +.contentKaryawan{ + position: relative; +} + +.card-table { + background: #fff; + padding: 2px; + border-radius: 15px; + box-shadow: 0px 8px 50px #00000005; +} + +.card-shadow{ + box-shadow: rgba(0, 0, 0, 0.1) 2px 10px 20px; +} +.head-content-laporan { + font-weight: 500; + text-transform: uppercase; + color: #c3c3c3; + margin-top: 15px; + font-size: 10px !important; + margin-bottom: 20px; + text-align: center; +} + +@media screen and (max-width: 1120px) { + .containerList { + .contentList { + justify-content: start; + overflow: hidden; + .name { + .text { + font-size: 14px; + font-weight: 500; + } + } + + .scrollRes { + justify-content: start; + gap: 1rem; + margin-left: 1rem; + overflow-x: auto; + cursor: all-scroll; + + &::-webkit-scrollbar { + height: 0; + } + } + } + } +} + +@media screen and (min-width: 990px) { + .btn-mobile { + display: none; + } +} +@media screen and (max-width: 990px) { + .head-content-laporan { + display: none; + } + + .containers .headContent { + padding: 0 !important; + + input { + width: 100% !important; + } + } + + .containers .headContent .filter { + margin-top: 0 !important; + + .containerSearch { + width: 100%; + } + } + + .btn-mobile { + margin-top: 1rem; + width: 100% !important; + } + + .btn-web { + display: none; + } + + .card-table { + overflow-x: auto; + + &::-webkit-scrollbar { + width: 5px; + height: 5px; + } + + } + + .containers, + .dashboard { + .headContent { + position: relative; + justify-content: center; + flex-direction: column; + top: 0; + padding: 10px 0; + width: 100%; + border-radius: 24px 24px 0 0; + + &::after { + content: ''; + position: absolute; + bottom: 0; + left: 10px; + width: calc(100% - 25px); + } + + .filter { + display: flex; + justify-content: center; + align-items: center; + width: 100% !important; + + .justify-start { + justify-content: start; + flex-direction: column; + width: 100% !important; + margin-top: 1rem; + + .form-control, button { + width: 100%; + } + } + + } + + .containerTitle { + position: fixed; + top: 80px; + left: 0; + order: -1; + padding: 1.4rem 2.2rem; + width: 100%; + z-index: 99; + background: #f3f3f3; + border-radius: 24px 24px 0 0; + + &.onlyTitle { + padding: 10px 0; + } + + .breadCrumb { + + .text { + font-size: 10px; + + &:not(:last-child)::after { + top: -1px; + right: -14px; + font-size: 12px; + } + } + } + + .title { + font-size: 16px; + text-align: left !important; + } + + .subtitle { + width: 100%; + font-size: 12px; + text-align: left !important; + } + } + } + + .bodyCustom { + padding-top: 6rem !important; + } + + .headContent .filter { + margin-top: 2rem; + } + + .bodyContent { + padding-bottom: 6rem; + } + } + + .containers, + .dashboard { + .bodyContent { + .content { + padding: 8px 12px; + .title { + &.ms-2 { + margin-left: -10px !important; + } + } + + .date { + justify-content: start !important; + + &.right { + text-align: left !important; + } + } + + .action { + justify-content: start; + text-decoration: underline; + } + } + + } + } +} + +@media screen and (max-width: 640px) { + .containers, + .dashboard { + .headContent { + .containerTitle { + padding: 1.4rem .8rem; + + .title { + font-size: 14px; + } + .subtitle { + font-size: 10px; + } + } + } + } + + .dashCard { + padding: .6rem .8rem; + } + + section { + padding: 90px 10px; + } + + .form-control { + height: 35px !important; + font-size: 10px !important; + + &::placeholder { + font-size: 10px !important; + } + } + .ant-select-selection-item { + font-size: 10px !important; + } + .floating-label { + position: absolute; + left: 15px; + top: 8px; + font-size: 10px; + padding: 0 7px; + } + + .label-form { + font-size: 10px; + } + + .nasabahImg { + right: 4px; + width: 140px !important; + } + +} + + +.ant-spin-dot-item{ + background-color: var(--primary) !important; +} + +.ant-statistic .ant-statistic-content { + font-size: 16px; +} + +.ant-tree .ant-tree-checkbox-checked .ant-tree-checkbox-inner { + background-color: #008b80; + border-color: #008b80; +} + +hr.border{ + border: 1px dashed #e9e9e9; +} + +.checkauth-content{ + + position: fixed; + z-index: 111111; + width: 100%; + background: #fff; + color: #000; + +} + +.head-laporan{ + display: flex; + //justify-content: space-between; + margin-top: 10px; + margin-bottom: 10px; + + .title{ + background: #fff; + border-radius: 20px; + padding: 8px 150px 8px 20px; + font-size: 13px; + border-left: 5px solid var(--primary); + } + button { + margin-left: -30px; + } +} + +.head-detail-dashboard{ + display: flex; + margin-top: 10px; + margin-bottom: 10px; + + .title{ + background: #f7f7f7; + border-radius: 20px; + padding: 8px 150px 8px 20px; + font-size: 13px; + border-left: 5px solid var(--primary); + } + + button { + margin-left: -30px; + } +} + +.ant-tooltip .ant-tooltip-inner { + font-size: 11px; +} + +.ant-menu-light .ant-menu-item-selected, +.ant-menu-light>.ant-menu .ant-menu-item-selected { + background-color: #d5ebe1; +} + +.check-auth{ + .container { + height: 100vh; + position: relative; + } + + .center { + text-align: center; + margin: 0; + position: absolute; + top: 50%; + left: 50%; + -ms-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + } + .logo{ + width: 100px; + margin-bottom: 10px; + } + .title{ + font-size: 14px; + font-weight: 600; + } + .subtitle{ + font-size: 14px; + font-weight: 300; + } + .check{ + margin-top: 40px; + font-size: 12px; + font-weight: 500; + margin-bottom: 10px; + text-transform: capitalize; + } + .icon-check{ + font-size: 20px; + } +} + +.menu-bar.active .ant-menu-submenu-title{ + border-radius: 10px !important; +} + +.side-menu-container{ + position: fixed; + left: 10px; + z-index: 111; + height: 95vh; + top: 18px; + //background: var(--primary); + border-radius: 30px; + background: linear-gradient(316deg, #17374b, var(--primary)); + + .ant-menu.ant-menu-inline { + padding: 0; + //background: #fff; + width: 245px; + border-radius: 20px; + } + + .ant-menu-submenu-title{ + //background: var(--primary); + //background: var(--color-tapera); + //color: #E7FF56; + color: #fff !important; + font-weight: 600; + border-radius: 50%; + + + &:hover { + background-color: rgba(0, 0, 0, 0.7) !important; + } + } + + .menu-normal{ + .ant-menu-submenu-title{ + background: var(--white) !important; + color: #0f0f0f !important; + } + + .ant-menu-submenu-inline .ant-menu-submenu-arrow { + color: var(--dark) !important; + } + + .ant-menu-submenu-vertical .ant-menu-submenu-title .ant-menu-item-icon svg { + fill: var(--dark); + } + + } + + :where(.css-dev-only-do-not-override-1uq9j6g).ant-menu-light.ant-menu-root.ant-menu-inline, + :where(.css-dev-only-do-not-override-1uq9j6g).ant-menu-light>.ant-menu.ant-menu-root.ant-menu-inline, + :where(.css-dev-only-do-not-override-1uq9j6g).ant-menu-light.ant-menu-root.ant-menu-vertical, + :where(.css-dev-only-do-not-override-1uq9j6g).ant-menu-light>.ant-menu.ant-menu-root.ant-menu-vertical { + border-inline-end: none; + } + + .menu-tapera{ + + + } + + .menu-silos{ + + .ant-menu-submenu-title{ + background: var(--dark) !important; + } + // + //.side-menu-container{ + // background: var(--dark-light) !important; + //} + // + //.ant-menu-light.ant-menu-inline .ant-menu-sub.ant-menu-inline, + //.ant-menu-light>.ant-menu.ant-menu-inline .ant-menu-sub.ant-menu-inline{ + // background: var(--dark-light) !important; + //} + } + + .ant-menu-light.ant-menu-inline .ant-menu-sub.ant-menu-inline, + .ant-menu-light>.ant-menu.ant-menu-inline .ant-menu-sub.ant-menu-inline{ + background: #fff; + margin: 21px 13px; + width: 90%; + } + + //.ant-menu-submenu-title:hover, :where(.css-dev-only-do-not-override-1uq9j6g).ant-menu-light>.ant-menu:not(.ant-menu-horizontal) .ant-menu-submenu-title:hover { + // background-color: rgba(0, 0, 0, 0.06); + //} + + .ant-menu.ant-menu-inline .ant-menu-item-icon svg { + //fill: var(--white); + + background: white; + padding: 6px; + fill: var(--primary); + width: 30px; + height: 30px; + border-radius: 23px; + margin-left: -18px; + } + + .ant-menu-submenu-vertical .ant-menu-submenu-title .ant-menu-item-icon svg { + fill: var(--white); + } + + .ant-menu-submenu-inline .ant-menu-submenu-arrow { + color: var(--white) !important; + } +} + +.text-decoration-none { + text-decoration: none; +} + +.wizard-step-pengajuan { + background: red; +} + +.overflow-auto { + overflow: auto !important; +} + +/* Hide scrollbar for Chrome, Safari and Opera */ +.no-scrollbar::-webkit-scrollbar { + display: none; +} + +/* Hide scrollbar for IE, Edge and Firefox */ +.no-scrollbar { + -ms-overflow-style: none; /* IE and Edge */ + scrollbar-width: none; /* Firefox */ +} + +// .step-proses-pengajuan .ant-steps-item-title { +// font-size: 13px +// } + +.position-relative { + position: relative +} +.ant-menu-inline .ant-menu-sub.ant-menu-inline .ant-menu-item-group-title { + padding-inline-start: 18px; +} + +.step-wizard-pengajuan { + background: #fff; + padding: 40px 20px; + border-radius: 15px; + box-shadow: 0px 8px 50px #00000005; + margin-bottom: 20px; + padding-right: 40px !important; +} + + +.step-proses-pengajuan .ant-steps-item-process.ant-steps-item-custom .ant-steps-item-icon >.ant-steps-icon, +.step-proses-pengajuan .ant-steps-item-finish.ant-steps-item-custom .ant-steps-item-icon >.ant-steps-icon, +.step-proses-pengajuan .ant-steps-item-finish>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-title { + color: #1f88a0 !important +} + +.step-proses-pengajuan .ant-steps-item-finish>.ant-steps-item-container>.ant-steps-item-tail::after { + background-color: #1f88a0 !important +} + +.d-none { + display: none; +} + +.form-group-title { + font-size: 16px; + margin-bottom: 10px; + // border-bottom: 1px solid #f1f1f1; + color: #acacac; + padding-bottom: 4px; + display: inline-block; +} + +.info-nasabah { + width: 50%; + font-size: 15px; +} + +.info-nasabah td { + padding: 5px 0px; +} + +.info-nasabah td:first-child { + color: #919191; + width: 25%; +} + +.info-nasabah td:nth-child(2) { + width: 2%; + color: #919191; +} +.border-radius-15 { + border-radius: 15px; +} +.border-radius-10 { + border-radius: 10px; +} +.text-center{ + text-align: center; +} +.text-left{ + text-align: left; +} +.text-right{ + text-align: right; +} + +.ant-tabs .ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn { + color: var(--primary); + font-weight: 600; + background: #ffffff !important; + font-size: 15px !important; + text-shadow: 0 0 0.25px currentcolor; +} + +.ant-tabs-card >.ant-tabs-nav .ant-tabs-tab-active, +.ant-tabs-card >div>.ant-tabs-nav .ant-tabs-tab-active { + background: #ffffff !important; +} + +.ant-tabs-card >.ant-tabs-nav .ant-tabs-tab, +.ant-tabs-card >div>.ant-tabs-nav .ant-tabs-tab { + margin: 0; + padding: 8px 16px; + background: rgb(237 237 237); + font-size: 13px; + font-weight: 500; + color: var(--text-muted); + border: 1px solid #f0f0f0; + transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); +} + +.container-act-toolbar{ + display: flex; + gap: 10px; + justify-content: end; + width: 100%; + margin-top: 20px; +} + +.badge-status { + border-radius: 1rem; + font-size: 12px; +} + +.badge-status.active { + background: #f1f9fb; + color: #14605c; + border-color: #14605c; +} + +.badge-status.non-active { + color: #ff4d4f; + background: #fff2f0; + border-color: #ffccc7; +} + +.slik-item { + font-size: 14px; + display: flex; + flex-direction: column; + gap: 4px; +} + +.slik-item span:first-child { + color: #8c8c8c; + display: inline-block; +} + +.text-secondary { + color: #8c8c8c; +} + +.table-info { + font-size: 14px; +} + +.table-info td { + padding: 4px; +} + +.info-analisa td { + padding: 10px !important; + vertical-align: top; +} + +.table-info td:first-child, +.table-info td:nth-child(2) { + color: #8c8c8c; +} + + +.upload-doc-agunan .ant-upload-select { + border: none !important +} + +.btn-outline-primary { + background: white; + border: 1px solid #1f5c6b; + color: #1f5c6b; +} + +.btn-outline-primary:hover { + background: #1f5c6b; + border-radius: 1px solid #1f5c6b; + color: #fff; +} + +.fs-12px { + font-size: 12px !important; +} +.ant-checkbox-checked .ant-checkbox-inner { + background-color: var(--primary); + border-color: var(--primary); +} + +.ant-modal-root .ant-modal-wrap { + backdrop-filter: blur(9px); + //background: #00000047; +} + +.table-description th.ant-descriptions-item { + padding-bottom: 2px !important; +} + +.table-description td.ant-descriptions-item { + padding-bottom: 20px !important; +} + +.ant-upload-select { + border: none !important; +} + +.label-form { + color: #757575; + font-size: 12px; +} + +.badge-approved { + color: #fff; + background: #1f88a0; + border-color: #1f88a0; +} + +.badge-new { + color: #fff; + background: #171c33; + border-color: #171c33; +} + +.badge-waiting-approval { + color: #fff; + background: #faad14; + border-color: #faad14; +} + +.badge-rejected { + color: #fff; + background: #ff4d4f; + border-color: #ff4d4f; +} + + +.antUploadContainer { + position: relative; + width: 100%; + margin-top: 8px; + + .ant-upload-list.ant-upload-list-picture-card { + gap: 1rem !important; + } + + .antUploadButton { + position: relative; + border: none; + background: transparent; + cursor: pointer; + + svg { + font-size: 52px; + color: #ccc; + } + + .text { + font-size: 16px; + font-weight: 500; + color: #ccc; + } + + .ext { + font-size: 12px; + font-weight: 400; + color: #ccc; + } + } + + div[class="ant-upload-list-item-thumbnail"] { + visibility: hidden !important; + } + + div[class="ant-upload-list-item-thumbnail"]:after { + content: "Loading..."; + visibility: visible; + display: block; + position: absolute; + top: 45%; + left: 50%; + transform: translate(-50%, -50%); + } + + .ant-upload-list-item-progress { + width: 120px !important; + bottom: 30% !important; + left: 50% !important; + transform: translate(-50%, -50%) !important; + } + + .ant-upload-list-item-container, + .ant-upload-select { + width: 160px !important; + height: 160px !important; + background-color: #ffffff !important; + border: 1px solid #e1e3ea !important; + border-radius: 30px !important; + overflow: hidden; + } + + .ant-upload-list-item-actions { + border-radius: 30px !important; + } + + .ant-upload-list-item { + border: none !important; + // padding: 0 !important; + + &::before { + width: 160px !important; + height: 160px !important; + left: 0 !important; + } + + .ant-upload-list-item-image { + border-radius: 22px !important; + object-fit: cover !important; + } + } + + .container-img-uploaded { + position: relative; + border-radius: 30px; + overflow: hidden; + display: flex; + justify-content: center; + width: 160px; + height: 160px; + align-items: center; + color: #a1a5b7; + } + +} + + +.ant-menu-inline .ant-menu-item, +.ant-menu-vertical .ant-menu-item, +.ant-menu-inline .ant-menu-submenu-title, +.ant-menu-vertical .ant-menu-submenu-title { + height: 40px; + line-height: 40px; + overflow: hidden; + text-overflow: ellipsis; + margin-inline: 4px; + margin-block: 4px; + width: calc(100% - 38px); +} + +.ant-menu-inline-collapsed > .ant-menu-item, +.ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-item, +.ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-submenu > .ant-menu-submenu-title, +.ant-menu-inline-collapsed > .ant-menu-submenu > .ant-menu-submenu-title { + inset-inline-start: 0; + padding-inline: calc(50% - 8px - 18px); + text-overflow: clip; +} + + +.menu-bar{ + transition: all 0.5s ease; + width: 50px; + max-height: 80vh; + overflow-y: auto; + margin-top: 30px; + overflow-x: hidden; +} + +.menu-bar.active{ + width: 250px; + + + .ant-menu-inline .ant-menu-item, + .ant-menu-vertical .ant-menu-item, + .ant-menu-inline .ant-menu-submenu-title, + .ant-menu-vertical .ant-menu-submenu-title { + width: calc(100% - 6px); + padding-left: 30px !important; + } +} + +.ant-menu-light.ant-menu-root.ant-menu-inline, +.ant-menu-light > .ant-menu.ant-menu-root.ant-menu-inline, +.ant-menu-light.ant-menu-root.ant-menu-vertical, +.ant-menu-light > .ant-menu.ant-menu-root.ant-menu-vertical { + border-inline-end: none; +} + +.logo-menu { + background: #00000094; + border-radius: 30px 30px 30px 0px; + padding-top: 9px; + transition: 0.5s ease-in-out; + + &.active{ + padding-left: 15px; + + .title { + + position: absolute; + left: 70px; + visibility: visible; + opacity: 1; + + } + + } +} + +.content-logo{ + + display: flex; + gap: 5px; + margin-top: 3px; + padding-bottom: 5px; + + .img-logo{ + width: 50px; + margin-top: -4px; + } + + .title{ + + width: 100%; + transition: 0.5s ease-in, 0s ease-out; + position: absolute; + left: 0px; + opacity: 0; + visibility: hidden; + font-size: 12px; + font-weight: 500; + color: #fff; + margin-top: 4px; + + } + + .version{ + font-size: 11px; + font-weight: 300; + } +} \ No newline at end of file diff --git a/public/css/text.scss b/public/css/text.scss new file mode 100644 index 0000000..ef3bdce --- /dev/null +++ b/public/css/text.scss @@ -0,0 +1,174 @@ + +.text-primary { + color: var(--primary) !important; +} + +.text-dark-primary { + color: var(--dark-primary) !important; +} + +.text-success { + color: var(--success) !important; +} + +.text-info { + color: var(--info) !important; +} + +.text-warning { + color: var(--warning) !important; +} + +.text-danger { + color: var(--danger) !important; +} + +.text-dark { + color: var(--dark) !important; +} + +.text-dark-grey { + color: var(--dark-grey) !important; +} + +.text-black { + color: var(--dark) !important; +} + +.text-secondary { + color: var(--secondary) !important; +} + +.text-white{ + color :#fff; +} +.text-kol1{ + color: var(--color-kol1); +} +.text-kol2{ + color: var(--color-kol2); +} +.text-kol2A{ + color: var(--color-kol2); +} +.text-kol2B{ + color: var(--color-kol2); +} +.text-kol2C{ + color: var(--color-kol2); +} +.text-kol3{ + color: var(--color-kol3); +} +.text-kol4{ + color: var(--color-kol4); +} +.text-kol5{ + color: var(--color-kol5); +} + +.bg-kol1{ + background: var(--color-kol1-light); +} +.bg-kol2{ + background: var(--color-kol2-light); +} +.bg-kol2A{ + background: var(--color-kol2-light); +} +.bg-kol2B{ + background: var(--color-kol2-light); +} +.bg-kol2C{ + background: var(--color-kol2-light); +} +.bg-kol3{ + background: var(--color-kol3-light); +} +.bg-kol4{ + background: var(--color-kol4-light); +} +.bg-kol5{ + background: var(--color-kol5-light); + } + + +.bg-primary { + background: var(--primary) !important; +} + +.bg-dark-primary { + background: var(--dark-primary) !important; +} + +.bg-success { + background: var(--success) !important; +} + +.bg-info { + background: var(--info) !important; +} + +.bg-warning { + background: var(--warning) !important; +} + +.bg-danger { + background: var(--danger) !important; +} + +.bg-secondary { + background: var(--secondary) !important; +} + +.bg-dark { + background: var(--dark) !important; +} + +.bg-black { + background: var(--dark) !important; +} + +.bg-info-light { + background: var(--info-light) !important; +} +.bg-success-light { + background: var(--success-light) !important; +} + +.bg-warning-light { + background: var(--warning-light) !important; +} + +.bg-danger-light { + background: var(--danger-light) !important; +} + +.bg-dark-light { + background: var(--dark-light) !important; +} + +.bg-black-light { + background: var(--dark-light) !important; +} + +.text-muted { + color: var(--text-muted) !important; +} + +.text-lowercase { + text-transform: lowercase !important; +} + +.text-uppercase { + text-transform: uppercase !important; +} + +.text-capitalize { + text-transform: capitalize !important; +} + + +.text-light{ + color: #ffffff78; +} \ No newline at end of file diff --git a/public/css/wave.scss b/public/css/wave.scss new file mode 100644 index 0000000..89e9e06 --- /dev/null +++ b/public/css/wave.scss @@ -0,0 +1,168 @@ + +.wave { + background-color: #f3f6f9; + overflow: hidden; + position: relative; +} + +.wave > div { + z-index: 1; +} + +.wave:before { + content: " "; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: #fff; + z-index: -1; +} + +.wave:after { + content: " "; + width: 1000px; + height: 1025px; + position: absolute; + bottom: 65%; + left: -250px; + border-radius: 35%; + background: #fff; + z-index: 0; +} + +.wave:after { + -webkit-transform: rotate(45deg); + transform: rotate(45deg); +} + +.wave-animate:after { + -webkit-animation: animate-wave 15s infinite linear; + animation: animate-wave 15s infinite linear; +} + +.wave-animate-slower:after { + -webkit-animation: animate-wave 30s infinite linear; + animation: animate-wave 30s infinite linear; +} + +.wave-animate-slow:after { + -webkit-animation: animate-wave 25s infinite linear; + animation: animate-wave 25s infinite linear; +} + +.wave-animate-fast:after { + -webkit-animation: animate-wave 10s infinite linear; + animation: animate-wave 10s infinite linear; +} + +.wave-animate-faster:after { + -webkit-animation: animate-wave 5s infinite linear; + animation: animate-wave 5s infinite linear; +} + +.wave.wave-primary { + background-color: var(--primary-light) !important; +} + +.wave.wave-primary .svg-icon svg g [fill] { + fill: var(--primary-light); +} + +.wave.wave-secondary { + background-color: rgba(228, 230, 239, 0.1) !important; +} + +.wave.wave-secondary .svg-icon svg g [fill] { + fill: #e4e6ef; +} + +.wave.wave-success { + background-color: rgba(27, 197, 189, 0.1) !important; +} + +.wave.wave-success .svg-icon svg g [fill] { + fill: #43a047; +} + +.wave.wave-info { + background-color: rgba(137, 80, 252, 0.1) !important; +} + +.wave.wave-info .svg-icon svg g [fill] { + fill: #8950fc; +} + +.wave.wave-warning { + background-color: rgba(255, 168, 0, 0.1) !important; +} + +.wave.wave-warning .svg-icon svg g [fill] { + fill: #ffa800; +} + +.wave.wave-danger { + background-color: rgba(246, 78, 96, 0.1) !important; +} + +.wave.wave-danger .svg-icon svg g [fill] { + fill: #039be5; +} + +.wave.wave-light { + background-color: rgba(243, 246, 249, 0.1) !important; +} + +.wave.wave-light .svg-icon svg g [fill] { + fill: #f3f6f9; +} + +.wave.wave-dark { + background-color: rgba(24, 28, 50, 0.1) !important; +} + +.wave.wave-dark .svg-icon svg g [fill] { + fill: #181c32; +} + +.wave.wave-white { + background-color: rgba(255, 255, 255, 0.1) !important; +} + +.wave.wave-white .svg-icon svg g [fill] { + fill: #fff; +} + +@-webkit-keyframes animate-wave { + from { + -webkit-transform: rotate(0); + transform: rotate(0); + } + + to { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +@keyframes animate-wave { + from { + -webkit-transform: rotate(0); + transform: rotate(0); + } + + to { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + + +.content-notif { + position: relative; + z-index: 2; + top: 0; + width: 100%; + height: 100%; +} \ No newline at end of file diff --git a/public/export/word/ref_template.docx b/public/export/word/ref_template.docx new file mode 100644 index 0000000..b671422 Binary files /dev/null and b/public/export/word/ref_template.docx differ diff --git a/public/font/Poppins-300.ttf b/public/font/Poppins-300.ttf new file mode 100644 index 0000000..e76ec69 Binary files /dev/null and b/public/font/Poppins-300.ttf differ diff --git a/public/font/Poppins-400.ttf b/public/font/Poppins-400.ttf new file mode 100644 index 0000000..9f0c71b Binary files /dev/null and b/public/font/Poppins-400.ttf differ diff --git a/public/font/Poppins-500.ttf b/public/font/Poppins-500.ttf new file mode 100644 index 0000000..6bcdcc2 Binary files /dev/null and b/public/font/Poppins-500.ttf differ diff --git a/public/font/Poppins-600.ttf b/public/font/Poppins-600.ttf new file mode 100644 index 0000000..74c726e Binary files /dev/null and b/public/font/Poppins-600.ttf differ diff --git a/public/font/Poppins-700.ttf b/public/font/Poppins-700.ttf new file mode 100644 index 0000000..00559ee Binary files /dev/null and b/public/font/Poppins-700.ttf differ diff --git a/public/font/poppins.css b/public/font/poppins.css new file mode 100644 index 0000000..1cc0030 --- /dev/null +++ b/public/font/poppins.css @@ -0,0 +1,169 @@ +/* devanagari */ +@font-face { + font-family: "Poppins"; + font-style: normal; + font-weight: 300; + font-display: swap; + src: url('../font/Poppins-300.ttf'); + unicode-range: U+0900-097F, U+1CD0-1CF6, U+1CF8-1CF9, U+200C-200D, U+20A8, + U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FB; +} + +/* latin-ext */ +@font-face { + font-family: "Poppins"; + font-style: normal; + font-weight: 300; + font-display: swap; + src: url('../font/Poppins-300.ttf'); + unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, + U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} + +/* latin */ +@font-face { + font-family: "Poppins"; + font-style: normal; + font-weight: 300; + font-display: swap; + src: url('../font/Poppins-300.ttf'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, + U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, + U+2215, U+FEFF, U+FFFD; +} + +/* devanagari */ +@font-face { + font-family: "Poppins"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url('../font/Poppins-400.ttf'); + unicode-range: U+0900-097F, U+1CD0-1CF6, U+1CF8-1CF9, U+200C-200D, U+20A8, + U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FB; +} + +/* latin-ext */ +@font-face { + font-family: "Poppins"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url('../font/Poppins-400.ttf'); + unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, + U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} + +/* latin */ +@font-face { + font-family: "Poppins"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url('../font/Poppins-400.ttf'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, + U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, + U+2215, U+FEFF, U+FFFD; +} + +/* devanagari */ +@font-face { + font-family: "Poppins"; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url('../font/Poppins-500.ttf'); + unicode-range: U+0900-097F, U+1CD0-1CF6, U+1CF8-1CF9, U+200C-200D, U+20A8, + U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FB; +} + +/* latin-ext */ +@font-face { + font-family: "Poppins"; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url('../font/Poppins-500.ttf'); + unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, + U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} + +/* latin */ +@font-face { + font-family: "Poppins"; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url('../font/Poppins-500.ttf'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, + U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, + U+2215, U+FEFF, U+FFFD; +} + +/* devanagari */ +@font-face { + font-family: "Poppins"; + font-style: normal; + font-weight: 600; + font-display: swap; + src: url('../font/Poppins-600.ttf'); + unicode-range: U+0900-097F, U+1CD0-1CF6, U+1CF8-1CF9, U+200C-200D, U+20A8, + U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FB; +} + +/* latin-ext */ +@font-face { + font-family: "Poppins"; + font-style: normal; + font-weight: 600; + font-display: swap; + src: url('../font/Poppins-600.ttf'); + unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, + U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} + +/* latin */ +@font-face { + font-family: "Poppins"; + font-style: normal; + font-weight: 600; + font-display: swap; + src: url('../font/Poppins-600.ttf'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, + U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, + U+2215, U+FEFF, U+FFFD; +} + +/* devanagari */ +@font-face { + font-family: "Poppins"; + font-style: normal; + font-weight: 700; + font-display: swap; + src: url('../font/Poppins-700.ttf'); + unicode-range: U+0900-097F, U+1CD0-1CF6, U+1CF8-1CF9, U+200C-200D, U+20A8, + U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FB; +} + +/* latin-ext */ +@font-face { + font-family: "Poppins"; + font-style: normal; + font-weight: 700; + font-display: swap; + src: url('../font/Poppins-700.ttf'); + unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, + U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} + +/* latin */ +@font-face { + font-family: "Poppins"; + font-style: normal; + font-weight: 700; + font-display: swap; + src: url('../font/Poppins-700.ttf'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, + U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, + U+2215, U+FEFF, U+FFFD; +} \ No newline at end of file diff --git a/public/img/2456051.png b/public/img/2456051.png new file mode 100644 index 0000000..2f89c41 Binary files /dev/null and b/public/img/2456051.png differ diff --git a/public/img/3793096.jpg b/public/img/3793096.jpg new file mode 100644 index 0000000..76cc48b Binary files /dev/null and b/public/img/3793096.jpg differ diff --git a/public/img/404.jpg b/public/img/404.jpg new file mode 100644 index 0000000..d0fab0b Binary files /dev/null and b/public/img/404.jpg differ diff --git a/public/img/500.jpg b/public/img/500.jpg new file mode 100644 index 0000000..812a4b2 Binary files /dev/null and b/public/img/500.jpg differ diff --git a/public/img/basys-name.svg b/public/img/basys-name.svg new file mode 100644 index 0000000..66663f4 --- /dev/null +++ b/public/img/basys-name.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/public/img/bg-login_2.svg b/public/img/bg-login_2.svg new file mode 100644 index 0000000..390555b --- /dev/null +++ b/public/img/bg-login_2.svg @@ -0,0 +1,172 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/img/bg-login_3.svg b/public/img/bg-login_3.svg new file mode 100644 index 0000000..01eae68 --- /dev/null +++ b/public/img/bg-login_3.svg @@ -0,0 +1,172 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/img/bg-nav.jpg b/public/img/bg-nav.jpg new file mode 100644 index 0000000..fabfe73 Binary files /dev/null and b/public/img/bg-nav.jpg differ diff --git a/public/img/bg-nav2.jpg b/public/img/bg-nav2.jpg new file mode 100644 index 0000000..62631ff Binary files /dev/null and b/public/img/bg-nav2.jpg differ diff --git a/public/img/bg-sidebar.jpg b/public/img/bg-sidebar.jpg new file mode 100644 index 0000000..d074bb0 Binary files /dev/null and b/public/img/bg-sidebar.jpg differ diff --git a/public/img/bg1.jpg b/public/img/bg1.jpg new file mode 100644 index 0000000..b120f98 Binary files /dev/null and b/public/img/bg1.jpg differ diff --git a/public/img/bg10.png b/public/img/bg10.png new file mode 100644 index 0000000..9e499c3 Binary files /dev/null and b/public/img/bg10.png differ diff --git a/public/img/bg11.jpg b/public/img/bg11.jpg new file mode 100644 index 0000000..45ffaec Binary files /dev/null and b/public/img/bg11.jpg differ diff --git a/public/img/bg12.jpg b/public/img/bg12.jpg new file mode 100644 index 0000000..7bd06a7 Binary files /dev/null and b/public/img/bg12.jpg differ diff --git a/public/img/bg13.jpg b/public/img/bg13.jpg new file mode 100644 index 0000000..65a996c Binary files /dev/null and b/public/img/bg13.jpg differ diff --git a/public/img/bg14.jpg b/public/img/bg14.jpg new file mode 100644 index 0000000..a453559 Binary files /dev/null and b/public/img/bg14.jpg differ diff --git a/public/img/bg15.jpg b/public/img/bg15.jpg new file mode 100644 index 0000000..706afb7 Binary files /dev/null and b/public/img/bg15.jpg differ diff --git a/public/img/bg151.png b/public/img/bg151.png new file mode 100644 index 0000000..e5cfebd Binary files /dev/null and b/public/img/bg151.png differ diff --git a/public/img/bg152.jpg b/public/img/bg152.jpg new file mode 100644 index 0000000..1f96952 Binary files /dev/null and b/public/img/bg152.jpg differ diff --git a/public/img/bg16.jpg b/public/img/bg16.jpg new file mode 100644 index 0000000..888b123 Binary files /dev/null and b/public/img/bg16.jpg differ diff --git a/public/img/bg17.jpg b/public/img/bg17.jpg new file mode 100644 index 0000000..2f9f16d Binary files /dev/null and b/public/img/bg17.jpg differ diff --git a/public/img/bg2.jpg b/public/img/bg2.jpg new file mode 100644 index 0000000..09716f7 Binary files /dev/null and b/public/img/bg2.jpg differ diff --git a/public/img/bg3.jpg b/public/img/bg3.jpg new file mode 100644 index 0000000..f13bddd Binary files /dev/null and b/public/img/bg3.jpg differ diff --git a/public/img/bg4.jpg b/public/img/bg4.jpg new file mode 100644 index 0000000..07711bf Binary files /dev/null and b/public/img/bg4.jpg differ diff --git a/public/img/bg5.jpg b/public/img/bg5.jpg new file mode 100644 index 0000000..3ad42b6 Binary files /dev/null and b/public/img/bg5.jpg differ diff --git a/public/img/bg6.jpg b/public/img/bg6.jpg new file mode 100644 index 0000000..654b35f Binary files /dev/null and b/public/img/bg6.jpg differ diff --git a/public/img/bg7.jpg b/public/img/bg7.jpg new file mode 100644 index 0000000..1d78df6 Binary files /dev/null and b/public/img/bg7.jpg differ diff --git a/public/img/bg8.jpg b/public/img/bg8.jpg new file mode 100644 index 0000000..4aab894 Binary files /dev/null and b/public/img/bg8.jpg differ diff --git a/public/img/bg9.jpg b/public/img/bg9.jpg new file mode 100644 index 0000000..2ea80fc Binary files /dev/null and b/public/img/bg9.jpg differ diff --git a/public/img/bgnew-min.jpg b/public/img/bgnew-min.jpg new file mode 100644 index 0000000..7376c01 Binary files /dev/null and b/public/img/bgnew-min.jpg differ diff --git a/public/img/bgnew.png b/public/img/bgnew.png new file mode 100644 index 0000000..d33b825 Binary files /dev/null and b/public/img/bgnew.png differ diff --git a/public/img/circle-effect.svg b/public/img/circle-effect.svg new file mode 100644 index 0000000..2eccb63 --- /dev/null +++ b/public/img/circle-effect.svg @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/img/credit.svg b/public/img/credit.svg new file mode 100644 index 0000000..457ddf0 --- /dev/null +++ b/public/img/credit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/defaultproject.jpg b/public/img/defaultproject.jpg new file mode 100644 index 0000000..62838c5 Binary files /dev/null and b/public/img/defaultproject.jpg differ diff --git a/public/img/export-shape.svg b/public/img/export-shape.svg new file mode 100644 index 0000000..e459c25 --- /dev/null +++ b/public/img/export-shape.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/public/img/facebook.png b/public/img/facebook.png new file mode 100644 index 0000000..a665801 Binary files /dev/null and b/public/img/facebook.png differ diff --git a/public/img/github.png b/public/img/github.png new file mode 100644 index 0000000..12ef01d Binary files /dev/null and b/public/img/github.png differ diff --git a/public/img/google.png b/public/img/google.png new file mode 100644 index 0000000..a080b14 Binary files /dev/null and b/public/img/google.png differ diff --git a/public/img/icon-building.png b/public/img/icon-building.png new file mode 100644 index 0000000..2ff6a35 Binary files /dev/null and b/public/img/icon-building.png differ diff --git a/public/img/icon-location.png b/public/img/icon-location.png new file mode 100644 index 0000000..7543569 Binary files /dev/null and b/public/img/icon-location.png differ diff --git a/public/img/icon-map.png b/public/img/icon-map.png new file mode 100644 index 0000000..27f15bb Binary files /dev/null and b/public/img/icon-map.png differ diff --git a/public/img/logo.png b/public/img/logo.png new file mode 100644 index 0000000..faceff7 Binary files /dev/null and b/public/img/logo.png differ diff --git a/public/img/logo_full.jpeg b/public/img/logo_full.jpeg new file mode 100644 index 0000000..835e671 Binary files /dev/null and b/public/img/logo_full.jpeg differ diff --git a/public/img/logo_full.png b/public/img/logo_full.png new file mode 100644 index 0000000..28dcf1f Binary files /dev/null and b/public/img/logo_full.png differ diff --git a/public/img/mainlabel.svg b/public/img/mainlabel.svg new file mode 100644 index 0000000..68ecf99 --- /dev/null +++ b/public/img/mainlabel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/mainlabel2.svg b/public/img/mainlabel2.svg new file mode 100644 index 0000000..8c4f803 --- /dev/null +++ b/public/img/mainlabel2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/mainlabel3.svg b/public/img/mainlabel3.svg new file mode 100644 index 0000000..935d45c --- /dev/null +++ b/public/img/mainlabel3.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/no-image.jpg b/public/img/no-image.jpg new file mode 100644 index 0000000..f72d035 Binary files /dev/null and b/public/img/no-image.jpg differ diff --git a/public/img/no_img.png b/public/img/no_img.png new file mode 100644 index 0000000..191cc37 Binary files /dev/null and b/public/img/no_img.png differ diff --git a/public/img/noimg.jpg b/public/img/noimg.jpg new file mode 100644 index 0000000..9b1d3b2 Binary files /dev/null and b/public/img/noimg.jpg differ diff --git a/public/img/notif.svg b/public/img/notif.svg new file mode 100644 index 0000000..e25c6a5 --- /dev/null +++ b/public/img/notif.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/img/pat1.png b/public/img/pat1.png new file mode 100644 index 0000000..fe1a40d Binary files /dev/null and b/public/img/pat1.png differ diff --git a/public/img/pat10.png b/public/img/pat10.png new file mode 100644 index 0000000..7713a8d Binary files /dev/null and b/public/img/pat10.png differ diff --git a/public/img/pat11.png b/public/img/pat11.png new file mode 100644 index 0000000..fbd0f91 Binary files /dev/null and b/public/img/pat11.png differ diff --git a/public/img/pat12.png b/public/img/pat12.png new file mode 100644 index 0000000..77e81bb Binary files /dev/null and b/public/img/pat12.png differ diff --git a/public/img/pat13.png b/public/img/pat13.png new file mode 100644 index 0000000..f42839a Binary files /dev/null and b/public/img/pat13.png differ diff --git a/public/img/pat14.png b/public/img/pat14.png new file mode 100644 index 0000000..73d61f4 Binary files /dev/null and b/public/img/pat14.png differ diff --git a/public/img/pat15.png b/public/img/pat15.png new file mode 100644 index 0000000..52e17f3 Binary files /dev/null and b/public/img/pat15.png differ diff --git a/public/img/pat16.png b/public/img/pat16.png new file mode 100644 index 0000000..b5855b9 Binary files /dev/null and b/public/img/pat16.png differ diff --git a/public/img/pat17.png b/public/img/pat17.png new file mode 100644 index 0000000..37fcd07 Binary files /dev/null and b/public/img/pat17.png differ diff --git a/public/img/pat18.png b/public/img/pat18.png new file mode 100644 index 0000000..22f2450 Binary files /dev/null and b/public/img/pat18.png differ diff --git a/public/img/pat19.png b/public/img/pat19.png new file mode 100644 index 0000000..42cac2e Binary files /dev/null and b/public/img/pat19.png differ diff --git a/public/img/pat2.png b/public/img/pat2.png new file mode 100644 index 0000000..6a19bac Binary files /dev/null and b/public/img/pat2.png differ diff --git a/public/img/pat20.png b/public/img/pat20.png new file mode 100644 index 0000000..8c00b9d Binary files /dev/null and b/public/img/pat20.png differ diff --git a/public/img/pat21.png b/public/img/pat21.png new file mode 100644 index 0000000..fcc321d Binary files /dev/null and b/public/img/pat21.png differ diff --git a/public/img/pat22.png b/public/img/pat22.png new file mode 100644 index 0000000..05b7d4f Binary files /dev/null and b/public/img/pat22.png differ diff --git a/public/img/pat23.png b/public/img/pat23.png new file mode 100644 index 0000000..6233cb7 Binary files /dev/null and b/public/img/pat23.png differ diff --git a/public/img/pat24.png b/public/img/pat24.png new file mode 100644 index 0000000..a9df81f Binary files /dev/null and b/public/img/pat24.png differ diff --git a/public/img/pat25.png b/public/img/pat25.png new file mode 100644 index 0000000..cd5383e Binary files /dev/null and b/public/img/pat25.png differ diff --git a/public/img/pat26.png b/public/img/pat26.png new file mode 100644 index 0000000..592634d Binary files /dev/null and b/public/img/pat26.png differ diff --git a/public/img/pat27.png b/public/img/pat27.png new file mode 100644 index 0000000..3ad3035 Binary files /dev/null and b/public/img/pat27.png differ diff --git a/public/img/pat28.png b/public/img/pat28.png new file mode 100644 index 0000000..a11dec4 Binary files /dev/null and b/public/img/pat28.png differ diff --git a/public/img/pat29.png b/public/img/pat29.png new file mode 100644 index 0000000..3e6d695 Binary files /dev/null and b/public/img/pat29.png differ diff --git a/public/img/pat3.png b/public/img/pat3.png new file mode 100644 index 0000000..cc65dba Binary files /dev/null and b/public/img/pat3.png differ diff --git a/public/img/pat30.png b/public/img/pat30.png new file mode 100644 index 0000000..720549e Binary files /dev/null and b/public/img/pat30.png differ diff --git a/public/img/pat31.png b/public/img/pat31.png new file mode 100644 index 0000000..103fa9c Binary files /dev/null and b/public/img/pat31.png differ diff --git a/public/img/pat32.png b/public/img/pat32.png new file mode 100644 index 0000000..855a89e Binary files /dev/null and b/public/img/pat32.png differ diff --git a/public/img/pat4.png b/public/img/pat4.png new file mode 100644 index 0000000..d4f513c Binary files /dev/null and b/public/img/pat4.png differ diff --git a/public/img/pat5.png b/public/img/pat5.png new file mode 100644 index 0000000..4daf42b Binary files /dev/null and b/public/img/pat5.png differ diff --git a/public/img/pat6.png b/public/img/pat6.png new file mode 100644 index 0000000..b25acab Binary files /dev/null and b/public/img/pat6.png differ diff --git a/public/img/pat7.png b/public/img/pat7.png new file mode 100644 index 0000000..2f9f1ad Binary files /dev/null and b/public/img/pat7.png differ diff --git a/public/img/pat8.png b/public/img/pat8.png new file mode 100644 index 0000000..53b363b Binary files /dev/null and b/public/img/pat8.png differ diff --git a/public/img/pat9.png b/public/img/pat9.png new file mode 100644 index 0000000..5602673 Binary files /dev/null and b/public/img/pat9.png differ diff --git a/public/img/patd1.png b/public/img/patd1.png new file mode 100644 index 0000000..05a16a2 Binary files /dev/null and b/public/img/patd1.png differ diff --git a/public/img/patd2.png b/public/img/patd2.png new file mode 100644 index 0000000..408f62b Binary files /dev/null and b/public/img/patd2.png differ diff --git a/public/img/patd3.png b/public/img/patd3.png new file mode 100644 index 0000000..9f83087 Binary files /dev/null and b/public/img/patd3.png differ diff --git a/public/img/patd5.png b/public/img/patd5.png new file mode 100644 index 0000000..93231d6 Binary files /dev/null and b/public/img/patd5.png differ diff --git a/public/img/patd6.png b/public/img/patd6.png new file mode 100644 index 0000000..d9ad986 Binary files /dev/null and b/public/img/patd6.png differ diff --git a/public/img/patd7.png b/public/img/patd7.png new file mode 100644 index 0000000..dcb8ef6 Binary files /dev/null and b/public/img/patd7.png differ diff --git a/public/img/patd8.png b/public/img/patd8.png new file mode 100644 index 0000000..8fa0706 Binary files /dev/null and b/public/img/patd8.png differ diff --git a/public/img/shoping.svg b/public/img/shoping.svg new file mode 100644 index 0000000..db3777f --- /dev/null +++ b/public/img/shoping.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/img/twitter.png b/public/img/twitter.png new file mode 100644 index 0000000..8900d48 Binary files /dev/null and b/public/img/twitter.png differ diff --git a/src/app/error.jsx b/src/app/error.jsx new file mode 100644 index 0000000..94067c2 --- /dev/null +++ b/src/app/error.jsx @@ -0,0 +1,27 @@ +'use client' // Error components must be Client Components + +import {useEffect} from 'react' +import ExportedImage from "next-image-export-optimizer"; + +export default function Error({error, reset}) { + useEffect(() => { + // Log the error to an error reporting service + console.error(error) + }, [error]) + + return ( +
+ + +
+ ) +} \ No newline at end of file diff --git a/src/app/layout.jsx b/src/app/layout.jsx new file mode 100644 index 0000000..e5ce81f --- /dev/null +++ b/src/app/layout.jsx @@ -0,0 +1,60 @@ +import localFont from 'next/font/local' +import '/public/css/template.scss' + +const poppins = localFont({ + variable: '--font-poppins', + src: [ + { + path: '../../public/font/Poppins-300.ttf', + weight: '300', + style: 'normal', + }, + { + path: '../../public/font/Poppins-400.ttf', + weight: '400', + style: 'normal', + }, + { + path: '../../public/font/Poppins-500.ttf', + weight: '500', + style: 'normal', + }, + { + path: '../../public/font/Poppins-600.ttf', + weight: '600', + style: 'normal', + }, + { + path: '../../public/font/Poppins-700.ttf', + weight: '700', + style: 'normal', + }, + ], +}) + +export const metadata = { + title: 'GIS - Digital Transaction', + description: 'GIS - Digital Transaction', + // manifest:'/manifest.json', + icons: { + icon: '/img/logo.png', + shortcut: '/img/logo.png', + apple: '/img/logo.png', + }, +} + +export const viewport = { + width: 'device-width', + initialScale: 1, + maximumScale: 1, +} + +export default function RootLayout({children}) { + return ( + + + {children} + + + ) +} diff --git a/src/app/login/layout.js b/src/app/login/layout.js new file mode 100644 index 0000000..063ffd8 --- /dev/null +++ b/src/app/login/layout.js @@ -0,0 +1,16 @@ +import "./login.scss"; +import ExportedImage from "next-image-export-optimizer"; + +export default function LoginLayout({ children }) { + return ( + <> + + {children} + + ); +} diff --git a/src/app/login/login.scss b/src/app/login/login.scss new file mode 100644 index 0000000..9314264 --- /dev/null +++ b/src/app/login/login.scss @@ -0,0 +1,329 @@ +/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[13].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[13].use[3]!./node_modules/next/dist/build/webpack/loaders/resolve-url-loader/index.js??ruleSet[1].rules[14].oneOf[13].use[4]!./node_modules/next/dist/compiled/sass-loader/cjs.js??ruleSet[1].rules[14].oneOf[13].use[5]!./src/app/login/login.scss ***! + \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[13].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[13].use[3]!./node_modules/next/dist/build/webpack/loaders/resolve-url-loader/index.js??ruleSet[1].rules[14].oneOf[13].use[4]!./node_modules/next/dist/compiled/sass-loader/cjs.js??ruleSet[1].rules[14].oneOf[13].use[5]!./src/app/login/login.scss ***! + \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[13].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[13].use[3]!./node_modules/next/dist/build/webpack/loaders/resolve-url-loader/index.js??ruleSet[1].rules[14].oneOf[13].use[4]!./node_modules/next/dist/compiled/sass-loader/cjs.js??ruleSet[1].rules[14].oneOf[13].use[5]!./src/app/login/login.scss ***! + \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +* { + margin: 0; + padding: 0; +} + +html { + width: 100vw; + height: 100vh; +} + +.bg-login { + width: 100%; + height: 100vh; + object-fit: cover; +} + +.containerLogin { + position: relative; + display: flex; + justify-content: center; + align-items: center; + width: 100%; + height: 100vh; + overflow: hidden; +} + +.containerLogin .leftSide { + position: relative; + width: 100%; + height: 100vh; + text-align: right; +} + +.containerLogin .leftSide .containerText { + width: 600px; + height: 100%; + padding: 4rem; + position: absolute; + right: 15%; + top: 150px; +} + +.containerLogin .leftSide .containerText .logo { + width: 335px; + margin-bottom: 3rem; +} + +.containerLogin .leftSide .containerText .title { + text-align: right; + font-size: 18px; + font-weight: 800; + color: #fff; + text-transform: uppercase; +} + +.containerLogin .leftSide .containerText .subtitle { + font-size: 14px; + font-weight: 300; + color: #fff; +} + +.containerLogin .leftSide .containerText .brand { + line-height: 22px; + font-size: 12px; + font-weight: 300; + color: #d9e0e9; + margin-top: 1rem; +} + +.containerLogin .leftSide .circle-white { + position: absolute; + top: -1.6rem; + left: 1.4rem; + opacity: 0.8; +} + +.containerLogin .leftSide .group-dot-top { + position: absolute; + top: 2.4rem; + left: 1.4rem; + opacity: 0.7; +} + +.containerLogin .leftSide .rectangle1 { + position: absolute; + top: 0; + left: 5.5rem; + height: 60px; +} + +.containerLogin .leftSide .rectangle2 { + position: absolute; + top: 0; + left: 7.8rem; + height: 100px; +} + +.containerLogin .leftSide .rectangle3 { + position: absolute; + top: -2rem; + left: 7rem; + opacity: 0.7; +} + +.containerLogin .leftSide .crop-circle { + position: absolute; + top: 1rem; + left: 11rem; + width: 40px; + opacity: 0.8; +} + +.containerLogin .leftSide .circle-sm-top { + position: absolute; + top: 1rem; + left: 14rem; +} + +.containerLogin .leftSide .circle-sm-bot { + position: absolute; + bottom: 4rem; + left: 2rem; +} + +.containerLogin .leftSide .group-dot-bot { + position: absolute; + bottom: 1.4rem; + left: 2rem; +} + +.containerLogin .leftSide .x { + position: absolute; + bottom: 1.4rem; + left: 12rem; + width: 14px; + opacity: 0.8; +} + +.containerLogin .leftSide .planet { + position: absolute; + bottom: -6rem; + left: 16rem; +} + +.containerLogin .rightSide { + position: relative; + display: flex; + justify-content: center; + align-items: center; + width: 100%; + height: 100vh; +} + +.containerLogin .rightSide .containerForm { + position: relative; + width: 100%; + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + padding: 8rem 4.5rem; +} + +.containerLogin .rightSide .containerForm .form-control { + width: 350px; +} + +.containerLogin .rightSide .containerForm .loginText { + width: 100%; + font-size: 28px; + font-weight: 500; + color: #2b2b2b; + text-align: left !important; +} + +.containerLogin .rightSide .containerForm .loginDesc { + width: 100%; + font-size: 14px; + font-weight: 300; + color: #2b2b2b; + text-align: center; + margin-top: 30px; + margin-bottom: 1.6rem; +} + +.containerLogin .rightSide .containerForm .forgotPass { + position: relative; + text-decoration: none; + font-size: 12px; + color: #5D7DF3; + transition: 0.3s; + margin-top: 1rem; +} + +.containerLogin .rightSide .containerForm .forgotPass:hover { + color: #293a7a; + transition: 0.3s; +} + +.containerLogin .rightSide .containerForm .forgotPass .underline { + position: absolute; + bottom: -1px; + left: 0; + width: 100%; + height: 1px; + background-color: #5D7DF3; + transform: scaleX(0); + transition: transform 0.3s ease-in-out; +} + +.containerLogin .rightSide .containerForm .forgotPass:hover .underline { + background-color: #516092; + transform: scaleX(1); +} + +.containerLogin .rightSide .containerForm .copyright { + position: relative; + font-size: 12px; + color: #999; + white-space: nowrap; + margin-top: 3rem; +} + +.containerLogin .outerCircle { + position: absolute; + top: -3rem; + right: -2rem; + opacity: 0.2; +} + +.containerLogin .outerCircleBorder { + position: absolute; + bottom: -10rem; + right: -8rem; + opacity: 0.4; +} + +.containerLogin .outerGroupDot { + position: absolute; + bottom: 1.2rem; + right: 1.2rem; +} + +.containerLogin .card { + position: relative; + display: flex; + justify-content: center; + align-items: center; + border-radius: 80px 10px; + padding: 0; + border: none; + background: rgba(255, 255, 255, 0.8392156863) !important; + box-shadow: rgba(0, 0, 0, 0.1) 2px 10px 20px; + z-index: 99; + backdrop-filter: blur(12px); + -webkit-backdrop-filter: blur(12px); + overflow: hidden; +} + +.containerLogin .floating-input:not(:placeholder-shown) ~ .floating-label { + top: -6px; + left: 10px; + font-size: 12px; + color: var(--primary); +} + +.containerLogin .btn-login { + width: 100%; + height: 40px; + font-weight: bold; + text-transform: uppercase; + border-radius: 15px; + background: linear-gradient(to right, #1b1c1c, #0179c2); +} + +.containerLogin .floating-input:focus ~ .floating-label { + top: -9px; + left: 10px; + font-size: 11px; + color: #ffffff; + background: #0f0f0f; + padding: 2px 10px; +} + +.containerLogin .floating-input:not(:placeholder-shown) ~ .floating-label { + top: -9px; + left: 10px; + font-size: 11px; + font-weight: 500; + color: #fff; + background: #1b5e85; + padding: 2px 10px; +} + +@media screen and (max-width: 900px) { + .containerLogin .leftSide { + display: none; + } + .containerLogin .rightSide .containerForm .forgotPass { + color: #344ca3; + } + .containerLogin .rightSide .containerForm .forgotPass:hover { + color: #182555; + } + .containerLogin .rightSide .containerForm .forgotPass .underline { + background-color: #344ca3; + } + .containerLogin .rightSide .containerForm .forgotPass:hover .underline { + background-color: #182555; + } + .containerLogin .rightSide .containerForm .copyright { + color: #2b2b2b; + } + .containerLogin .card { + background: rgba(255, 255, 255, 0.9411764706) !important; + box-shadow: rgba(0, 0, 0, 0.1) 2px 10px 20px; + backdrop-filter: blur(20px); + -webkit-backdrop-filter: blur(20px); + } +} diff --git a/src/app/login/page.jsx b/src/app/login/page.jsx new file mode 100644 index 0000000..f635b4d --- /dev/null +++ b/src/app/login/page.jsx @@ -0,0 +1,131 @@ +"use client"; +import Button from "@/components/util/Button"; +import Input from "@/components/util/Input"; +import {useEffect, useState} from "react"; +import {useForm} from "react-hook-form"; +import {API} from "@/lib/API"; +import {useRouter} from "next/navigation"; +import useAuth from "@/hooks/useAuth"; +import {getCookie} from "cookies-next"; +import {LoadingOutlined} from "@ant-design/icons"; +import usePreventBackNavigation from "@/hooks/usePreventBackNavigation"; +import CheckAuth from "@/components/util/CheckAuth"; + +export default function Login() { + + usePreventBackNavigation(); + + const router = useRouter(); + const {setAuth} = useAuth(); + const [ErrorLogin, setErrorLogin] = useState(""); + const [LoadingLogin, setLoadingLogin] = useState(false); + const [checkAuth, setCheckAuth] = useState(true) + const { + register, + handleSubmit, + formState: {errors}, + } = useForm(); + + const onSubmit = async (formData) => { + setLoadingLogin(true); + setErrorLogin(""); + const {result, status} = await API.POST_PUBLIC("/auth/login", formData); + console.log({result, status}); + + if (status !== 200) { + setLoadingLogin(false); + return setErrorLogin(result.message); + } + + await setAuth(result.token, result.users.id); + + let userData = await API.GET('/ref/user/' + result?.users?.id) + localStorage.setItem('user_roleId', userData?.result?.users?.idBranch); + + router.push("/main/dashboard"); + }; + + const checkToken = async () => { + let token = await getCookie('token'); + if (token) { + let res = await API.GETAuth('user', '/ref/user/' + localStorage.getItem('userId')) + if (res.status === 403) { + setCheckAuth(false) + } else { + router.push("/main/dashboard"); + } + } else { + setCheckAuth(false) + } + } + useEffect(() => { + checkToken() + }, []); + + return ( + <> + {(checkAuth) ? + + + : +
+
+
+
+ +
Masukkan username dan password anda.
+
+ + + {ErrorLogin ? ( +
+ {ErrorLogin} +
+ ) : ( + "" + )} +
+
+
+
+
+ {"logo"} +
GIS - Digital Transaction
+
+ Digital transaction adalah proses pertukaran nilai yang dilakukan secara elektronik tanpa menggunakan uang tunai atau dokumen fisik. Dalam transaksi digital, pembayaran, transfer, atau pertukaran data keuangan terjadi melalui platform digital, seperti aplikasi perbankan, e-wallet, atau kartu kredit dan debit. Transaksi ini memanfaatkan teknologi internet dan jaringan komputer untuk memfasilitasi pembayaran yang lebih cepat, aman, dan efisien. +
+
+
+ +
Copyright © 2024 PT. Global Infotech Solution. All Right Reserved
+ +
+ + + } + + + + ); +} diff --git a/src/app/main/ChangePassword.jsx b/src/app/main/ChangePassword.jsx new file mode 100644 index 0000000..314784d --- /dev/null +++ b/src/app/main/ChangePassword.jsx @@ -0,0 +1,122 @@ +import {Col, Modal, Row, Spin} from "antd"; +import Input from "@/components/util/Input"; +import React, {useEffect, useState} from "react"; +import {API} from "@/lib/API"; +import {useForm} from "react-hook-form"; +import modalStore from "@/store/modal"; +import notifStore from "@/store/notifStore"; +import {CloseOutlined} from "@ant-design/icons"; +import useAuth from "@/hooks/useAuth"; +import {useRouter} from "next/navigation"; + +export default function ChangePassword() { + const [rulePassword, setRulePassword] = useState() + const {setModalPassword, modalLoadingPassword, modalPassword, setModalLoadingPassword,modalPasswordType} = modalStore() + const {notifOpen} = notifStore() + const {removeAuth} = useAuth() + const router = useRouter(); + const { + register, + handleSubmit, + formState: {errors}, + } = useForm(); + + const colorModal = () => { + if(modalPasswordType === 'expired') return 'danger' + if(modalPasswordType === 'first') return 'success' + if(modalPasswordType === 'normal') return 'primary' + } + + const getPasswordRule = async () => { + let response = await API.GET('/config/password/1'); + let {result} = response + + + + let resultText = `Password harus memiliki + ${result?.minLength} sampai ${result?.maxLength} Karakter, Mengandung + ${result?.minUppercase} Huruf Besar, ${result?.minLowercase} Huruf Kecil, + ${result?.minDigit} Angka, dan ${result?.minSymbol} Simbol` + setRulePassword(resultText) + } + + const logout = async () => { + let response = await API.GET('/auth/logout'); + console.log(response) + if (response.status === 200) { + await removeAuth() + router.push("/login"); + } else { + notifOpen('Gagal', response.result.message, 'danger'); + } + } + + const onSubmit = async (formData) => { + setModalLoadingPassword(true); + let response = await API.POST(`/ref/user/changePassword`, formData); + if (response.status === 200) { + setModalPassword(false) + notifOpen('Berhasil', 'Berhasil Ubah Password'); + await logout() + } else { + notifOpen('Gagal', response.result.message, 'danger'); + } + setModalLoadingPassword(false); + } + + useEffect(() => { + getPasswordRule() + }, [modalPassword]); + + useEffect(() => { + console.log('load modal password') + }, []); + + return ( + + + {(modalPasswordType === 'normal') ? +
setModalPassword(false)}> + +
+ :'' + } + +
+
Ubah Password
+
Ubah Password Pengguna
+
+ {(modalPasswordType === 'first') ? +
+ Selamat Datang Pengguna Baru. untuk keamanan akun, silahkan ubah password akun anda. +
:''} + + {(modalPasswordType === 'expired') ?
Password kadaluarsa karna telah melebihi batas waktu maksimal pergantian password, pengguna wajib menggati password demi keamanan.
:''} +
+
+ + + + + +
+ {rulePassword} +
+ +
+ +
+
+
+ +
+ +
+ + + + ) +} \ No newline at end of file diff --git a/src/app/main/ChangeProfile.jsx b/src/app/main/ChangeProfile.jsx new file mode 100644 index 0000000..23edfe0 --- /dev/null +++ b/src/app/main/ChangeProfile.jsx @@ -0,0 +1,98 @@ +import {Col, Modal, Row, Spin} from "antd"; +import Input from "@/components/util/Input"; +import React, {useEffect} from "react"; +import {API} from "@/lib/API"; +import {useForm} from "react-hook-form"; +import modalStore from "@/store/modal"; +import notifStore from "@/store/notifStore"; +import {CloseOutlined} from "@ant-design/icons"; + +export default function ChangeProfile() { + const { + setModalProfile, + modalLoadingProfile, + modalProfile, + setModalLoadingProfile, + } = modalStore(); + const { notifOpen } = notifStore(); + const { + register, + handleSubmit, + setValue, + getValues, + formState: { errors }, + } = useForm(); + + const onSubmit = async (formData) => { + setModalLoadingProfile(true); + formData["userId"] = localStorage.getItem("userId"); + let response = await API.POST(`/ref/user`, formData); + if (response.status === 200) { + setModalProfile(false); + notifOpen("Berhasil", "Berhasil Ubah Profile"); + } else { + notifOpen("Gagal", response?.result?.message, "danger"); + } + setModalLoadingProfile(false); + }; + + const getProfile = async () => { + let userId = localStorage.getItem("userId"); + let response = await API.GET(`/ref/user/${userId}`); + setValue("fullName", response?.result?.fullName); + setValue("email", response?.result?.email); + setValue("phoneNo", response?.result?.phoneNo); + + }; + + useEffect(() => { + getProfile(); + }, [modalProfile]); + + return ( + + +
setModalProfile(false)} + > + +
+
+
+ Ubah Profil +
+
+ Ubah Profil Pengguna +
+
+
+
+ + + + + + + + + + + + +
+
+
+ +
+ +
+ + + ); +} diff --git a/src/app/main/dashboard/page.jsx b/src/app/main/dashboard/page.jsx new file mode 100644 index 0000000..d0d0049 --- /dev/null +++ b/src/app/main/dashboard/page.jsx @@ -0,0 +1,5 @@ +export default function Dashboard() { + return( + <>dashboard + ) +} \ No newline at end of file diff --git a/src/app/main/layout.jsx b/src/app/main/layout.jsx new file mode 100644 index 0000000..5f47a96 --- /dev/null +++ b/src/app/main/layout.jsx @@ -0,0 +1,96 @@ +"use client" + +import React, {useEffect, useState} from "react"; + +import {QueryClient, QueryClientProvider} from "react-query"; + +import dynamic from "next/dynamic"; +import ModalConfirm from '@/components/util/ModalConfirm'; +import ModalNotif from "@/components/util/ModalNotif"; +import ChangePassword from "@/app/main/ChangePassword"; +import ChangeProfile from "@/app/main/ChangeProfile"; +import LoadingPage from "@/components/util/LoadingPage"; +import {getCookie} from "cookies-next"; +import {API} from "@/lib/API"; +import {notFound, usePathname, useRouter} from "next/navigation"; +import {LoadingOutlined} from "@ant-design/icons"; +import ModalSessionTimeout from "@/components/util/ModalSessionTimeout"; +import useIdleDetection from "@/hooks/useIdleDetection"; +import MenuList from "@/components/master/Menu"; +import menuStore from "@/store/menuStore"; +import CheckAuth from "@/components/util/CheckAuth"; + +const Navbar = dynamic(() => import("@/components/master/Navbar"), {ssr: false,}); +const queryClient = new QueryClient(); + +export default function MainLayout({children}) { + + const pathname = usePathname() + const router = useRouter(); + const [checkAuth, setCheckAuth] = useState(true) + const {isIdle, setIsIdle} = useIdleDetection(); + const {toggleStatus} = menuStore() + + + const checkToken = async () => { + console.log(pathname) + let token = await getCookie('token'); + if (token) { + let res = await API.GETAuth('/ref/user/' + localStorage.getItem('userId')) + let listMenu = await API.GET('/ref/menu/url/' + localStorage.getItem('user_roleId')) + + // if (res.status === 403 || res.status === 401) { + // router.push("/login"); + // } else { + // let {urls} = listMenu?.result + // + // let checkUrl = urls.includes(pathname) + // if (checkUrl === false){ + // router.push("/not-found"); + // }else{ + // setCheckAuth(false) + // + // } + // } + + setCheckAuth(false) + + } else { + setCheckAuth(false) + } + } + useEffect(() => { + checkToken() + }, []); + + + return ( + + <> + {(checkAuth) ? + + : <> + + {isIdle && } + + + {/**/} + +
+
+
{children}
+ + + + + + + } + + + +
+ ); + +} diff --git a/src/app/main/user/audits/page.jsx b/src/app/main/user/audits/page.jsx new file mode 100644 index 0000000..13b1e68 --- /dev/null +++ b/src/app/main/user/audits/page.jsx @@ -0,0 +1,114 @@ +"use client" +import {useEffect, useState} from "react"; +import RefTemplate from "@/components/refTemplate/Main"; +import {Helper} from "@/lib/Helper"; + +export default function Audits() { + const [listForm, setListForm] = useState() + + const initListForm = async () => { + + // TYPE form + setListForm([ + { + type: 'text', + name: 'auditsId', + alias: 'ID', + maxLength: '150', + required: true, + col: 24 + }, + { + type: 'text', + name: 'serviceId', + alias: 'Service ID', + col: 12 + }, + { + type: 'text', + name: 'serviceNm', + alias: 'Service', + col: 12 + }, + { + type: 'text', + name: 'event', + alias: 'Event', + col: 24 + }, + { + type: 'textarea', + name: 'responseApi', + alias: 'Response API', + col: 24 + }, + { + type: 'textarea', + name: 'oldValue', + alias: 'Data Lama', + col: 24 + }, + { + type: 'textarea', + name: 'newValue', + alias: 'Data Baru', + col: 24 + }]) + } + + useEffect(() => { + initListForm() + }, []); + return ( + <> + { + return( + <> + {Helper.formatDate(row.crtdt,'d-M-Y H:i:s') } + + ) + }, + }, + ]} + listForm={listForm} + /> + + ) +} \ No newline at end of file diff --git a/src/app/main/user/menu/Form.jsx b/src/app/main/user/menu/Form.jsx new file mode 100644 index 0000000..875a287 --- /dev/null +++ b/src/app/main/user/menu/Form.jsx @@ -0,0 +1,147 @@ +/* eslint-disable react/display-name */ +import {useForm} from "react-hook-form"; +import React, {forwardRef, useImperativeHandle, useState} from "react"; +import ModalForm from "@/components/util/ModalForm"; +import modalStore from "@/store/modal"; +import {Tree} from "antd"; + +const Form = forwardRef( + ({storeData, approveRejectData, setTitle, listForm, sizeModal}, ref) => { + const {FormId, modalDetail, actionType} = modalStore(); + const [expandedKeys, setExpandedKeys] = useState([]); + const [checkedKeys, setCheckedKeys] = useState([]); + const [selectedKeys, setSelectedKeys] = useState([]); + const [autoExpandParent, setAutoExpandParent] = useState(true); + const [parentHalf, setParentHalf] = useState([]); + const [dataListMenu, setDataListMenu] = useState([]); + useImperativeHandle(ref, () => ({ + resetForm, + setFormValue, + setDataById, + })); + + const { + register, + handleSubmit, + reset, + setValue, + formState: {errors}, + } = useForm(); + + const resetForm = () => { + reset(); + }; + + const setDataById = (data) => { + + console.log(data) + + let tmpKey = [] + data?.menus?.forEach((v) => { + + if (v.childs) { + v?.childs?.forEach((vChildChecked, kChildChecked) => { + if (vChildChecked.checked === true) { + tmpKey.push(vChildChecked.menuId) + } + + }) + } else { + if (v.checked === true) { + tmpKey.push(v.menuId) + } + } + }) + + + let resultListMenu = data?.menus?.map((v, k) => { + let parent = [] + let resultListChild = [] + + if (v.childs) { + + resultListChild = v?.childs?.map((vChild, kChild) => { + + let resultListChildThird = [] + if (vChild.childs){ + resultListChildThird = vChild?.childs?.map((vChildThird, kChildThird) => { + return { + title: vChildThird.menuNm, + key: vChildThird.menuId, + } + }) + } + + return { + title: vChild.menuNm, + key: vChild.menuId, + children:resultListChildThird + } + }) + + } + return { + title: v.menuNm, + key: v.menuId, + children: resultListChild + } + }) + + console.log(resultListMenu) + + setDataListMenu(resultListMenu) + setCheckedKeys(tmpKey) + } + + const setFormValue = (name, value, type) => { + setValue(name, value); + }; + + const onSubmit = () => { + + let resultData = { + "menuIds": [...checkedKeys, ...parentHalf] + } + + console.log(resultData) + storeData(resultData); + }; + + const onExpand = (expandedKeysValue) => { + setExpandedKeys(expandedKeysValue); + setAutoExpandParent(false); + }; + const onCheck = (checkedKeysValue, info) => { + setParentHalf(info.halfCheckedKeys) + setCheckedKeys(checkedKeysValue); + }; + const onSelect = (selectedKeysValue, info) => { + console.log(selectedKeysValue) + setSelectedKeys(selectedKeysValue); + }; + + return ( + + + + }> +
+ + + + +
+ ); + } +); + +export default Form; diff --git a/src/app/main/user/menu/ToolBar.jsx b/src/app/main/user/menu/ToolBar.jsx new file mode 100644 index 0000000..fd1acc8 --- /dev/null +++ b/src/app/main/user/menu/ToolBar.jsx @@ -0,0 +1,15 @@ +import {ReloadOutlined} from '@ant-design/icons'; + +import React from "react"; + +export default function ToolBar({getData}) { + let items = []; + + return ( + <> + + + ) +}; \ No newline at end of file diff --git a/src/app/main/user/menu/page.jsx b/src/app/main/user/menu/page.jsx new file mode 100644 index 0000000..1eaf9a3 --- /dev/null +++ b/src/app/main/user/menu/page.jsx @@ -0,0 +1,148 @@ +"use client"; +import React, {useEffect, useRef, useState} from "react"; +import breadcrumbStore from "@/store/breadcrumbStore"; +import modalStore from "@/store/modal"; +import confirmStore from "@/store/confirmStore"; +import {API} from "@/lib/API"; +import notifStore from "@/store/notifStore"; +import WrapperContent from "@/components/util/WrapperContent"; +import SearchInput from "@/components/util/SearchInput"; +import ToolBar from "./ToolBar"; +import Form from "./Form"; +import tableColumn from "@/app/main/user/menu/tableColumn"; +import DTAnt from "@/components/util/DTAnt"; + + +const MenuPrivilage = () => { + + const refTitle = 'Manajemen Pengguna'; + const refSubTitle = 'Hak Akses Menu'; + const refEndPointAll = '/ref/menu-privilege'; + const primaryKey = 'roleId'; + + const formRef = useRef(); + const {modalOpen, modalClose, FormId, modalStat, setModalLoading, setModalDetail, actionType} = modalStore(); + const {setSubTitle, setTitle} = breadcrumbStore(); + const {confirmOpen, confirmClose, setConfirmLoading} = confirmStore(); + const {notifOpen} = notifStore() + + const [Data, setData] = useState([]); + const [searchText, setSearchText] = useState(""); + const [breadShow, setBreadShow] = useState(null); + const [loadingTable, setLoadingTable] = useState(true) + + // CRUD + const getData = async () => { + setLoadingTable(true) + let response = await API.GET(`${refEndPointAll}`); + setData(response.result); + setLoadingTable(false) + }; + const getDataById = async () => { + let response = await API.GET(`${refEndPointAll}/${FormId}`); + if (response.status == 500) return notifOpen("Gagal", "Terjadi kesalahan", "danger"); + let data = response.result; + console.log(data) + formRef.current.setDataById(data) + setModalLoading(false); + }; + + const storeData = async (formData) => { + if (FormId !== "new") formData[primaryKey] = FormId; + + setModalLoading(true); + let response = await API.POST(`${refEndPointAll}`, formData); + if (response.status === 200) { + modalClose(); + notifOpen("Berhasil", "berhasil Simpan data"); + await getData(); + } else { + notifOpen("Gagal", response.result.message, "danger"); + } + setModalLoading(false); + }; + + // CRUD + const handleSearch = (event) => { + setSearchText(event.target.value); + }; + + const filteredData = Data?.filter((item) => + Object.values(item).some((value) => + value?.toString().toLowerCase().includes(searchText.toLowerCase()) + ) + ); + + useEffect(() => { + setTitle(refTitle); + setSubTitle(refSubTitle); + getData(); + + + }, []); + + useEffect(() => { + if (breadShow) { + console.log(breadShow); + } else { + console.log(breadShow); + setBreadShow(document.getElementById("nav-title")); + console.log(document.getElementById("nav-title")) + } + }, [breadShow]); + + + useEffect(() => { + formRef.current.resetForm(); + if (FormId === "new") setModalLoading(false); + if (FormId !== "new" && FormId != null) { + getDataById(); + } + }, [modalStat]); + + useEffect(() => { + + }, [tableColumn]); + + return ( + <> + +
+ + +
+ +
+
+
+
+
Pengguna
+
Hak Akses Menu
+
+
Hak Akses Menu
+
+
+ + +
+
+ + {tableColumn ? ( + + ) : ( + "loading" + )} +
+
+
+
+
+ + ); +}; + +export default React.memo(MenuPrivilage); diff --git a/src/app/main/user/menu/tableColumn.jsx b/src/app/main/user/menu/tableColumn.jsx new file mode 100644 index 0000000..576c97e --- /dev/null +++ b/src/app/main/user/menu/tableColumn.jsx @@ -0,0 +1,63 @@ +import {Dropdown} from 'antd'; +import {EditOutlined, SettingOutlined} from '@ant-design/icons'; + +export default function tableColumn(modalOpen, deleteData) { + + let data = [ + { + title: "Wewenang", + dataIndex: 'roleNm', + width: '30%' + }, + { + title: "Hak Akses", + render: (_, row) => { + + let dataMenu = row?.menus?.map((v, k) => { + return ( + {v.menuNm} + ) + }) + + + return ( + <> +
{dataMenu}
+ + + ); + }, + }, + { + render: (_, row) => { + const items = [ + { + key: '1', + label: ( + modalOpen(row.roleId)} className="dropdown-item"> + Ubah Hak Akses + + ), + } + ]; + + return ( + <> + + + + + + ); + }, + dataIndex: 'act', + key: 'act', + width: "40px" + }, + ] + + return data +}; + diff --git a/src/app/main/user/password/page.jsx b/src/app/main/user/password/page.jsx new file mode 100644 index 0000000..616070f --- /dev/null +++ b/src/app/main/user/password/page.jsx @@ -0,0 +1,136 @@ +"use client" +import {useEffect, useState} from "react"; +import RefTemplate from "@/components/refTemplate/Main"; + +export default function ResponseCode() { + const [listForm, setListForm] = useState() + + const initListForm = async () => { + + // TYPE form + setListForm([ + { + type: 'number', + name: 'minLength', + alias: 'Min Panjang Karakter', + maxLength: '2', + minNominal:'1', + required: true, + col: 12 + }, + { + type: 'number', + name: 'maxLength', + alias: 'Max Panjang Karakter', + maxLength: '2', + required: true, + col: 12 + }, + { + type: 'number', + name: 'minUppercase', + alias: "Min Huruf Besar", + maxLength: '2', + required: true, + col: 12 + }, + { + type: 'number', + name: 'minLowercase', + alias: "Min Huruf Kecil", + maxLength: '2', + required: true, + col: 12 + }, + { + type: 'number', + name: 'minDigit', + alias: "Min Angka", + maxLength: '2', + required: true, + col: 24 + },{ + type: 'number', + name: 'minSymbol', + alias: "Min Simbol", + maxLength: '2', + required: true, + col: 24 + }, + { + type: 'number', + name: 'maxLoginAttempts', + alias:"Max Salah Password", + maxLength: '2', + required: true, + col: 24 + }, + { + type: 'number', + name: 'expiredDay', + alias:"Expired Password (Hari)", + maxLength: '2', + required: true, + col: 24 + }, + ]) + } + + useEffect(() => { + initListForm() + }, []); + return ( + <> + { + return( + <> + {row.minLength} Sampai {row.maxLength} + + ) + } + }, + { + title: "Min Huruf Besar", + dataIndex: 'minUppercase', + key: 'minUppercase' + }, + { + title: "Min Huruf Kecil", + dataIndex: 'minLowercase', + key: 'minLowercase' + }, + { + title: "Min Angka", + dataIndex: 'minDigit', + key: 'minDigit' + }, + { + title: "Min Simbol", + dataIndex: 'minSymbol', + key: 'minSymbol' + }, + { + title: "Min Salah Password", + dataIndex: 'maxLoginAttempts', + key: 'maxLoginAttempts' + }, + { + title: "Expired Password (Hari)", + dataIndex: 'expiredDay', + key: 'expiredDay' + }, + ]} + listForm={listForm} + /> + + ) +} \ No newline at end of file diff --git a/src/app/main/user/responseCode/page.jsx b/src/app/main/user/responseCode/page.jsx new file mode 100644 index 0000000..6b9950d --- /dev/null +++ b/src/app/main/user/responseCode/page.jsx @@ -0,0 +1,59 @@ +"use client" +import {useEffect, useState} from "react"; +import RefTemplate from "@/components/refTemplate/Main"; + +export default function ResponseCode() { + const [listForm, setListForm] = useState() + + const initListForm = async () => { + + // TYPE form + setListForm([ + { + type: 'text', + name: 'rcId', + alias: 'Code', + maxLength: '20', + required: true, + onEdit:'readonly', + col: 24 + }, + { + type: 'text', + name: 'rcNm', + alias: 'Response Code', + maxLength: '150', + required: true, + col: 24 + }]) + } + + useEffect(() => { + initListForm() + }, []); + return ( + <> + row.rcId, + sortable: true, + width: '10%' + }, + { + name: "Wewenang", + selector: (row) => row.rcNm, + sortable: true, + }, + ]} + listForm={listForm} + /> + + ) +} \ No newline at end of file diff --git a/src/app/main/user/role/page.jsx b/src/app/main/user/role/page.jsx new file mode 100644 index 0000000..fd39889 --- /dev/null +++ b/src/app/main/user/role/page.jsx @@ -0,0 +1,53 @@ +"use client" +import {useEffect, useState} from "react"; +import RefTemplate from "@/components/refTemplate/Main"; + +export default function Role() { + const [listForm, setListForm] = useState() + + const initListForm = async () => { + + // TYPE form + setListForm([ + { + type: 'text', + name: 'roleNm', + alias: 'Wewenang', + maxLength: '150', + required: true, + col: 24 + }]) + } + + useEffect(() => { + initListForm() + }, []); + return ( + <> + a.roleId - b.roleId + }, + { + title: "Wewenang", + dataIndex: 'roleNm', + key: 'roleNm', + sorter: (a, b) => b.roleNm.localeCompare(a.roleNm) + } + + ]} + listForm={listForm} + /> + + ) +} \ No newline at end of file diff --git a/src/app/main/user/userlist/page.jsx b/src/app/main/user/userlist/page.jsx new file mode 100644 index 0000000..cbfe753 --- /dev/null +++ b/src/app/main/user/userlist/page.jsx @@ -0,0 +1,161 @@ +"use client" +import {useEffect, useState} from "react"; +import {DropdownAPI} from "@/lib/DropdownAPI"; + +import RefTemplate from "@/components/refTemplate/Main"; +import BadgeStatus from "@/components/util/BadgeStatus"; +import BadgeStatusApproval from "@/components/util/BadgeStatusApproval"; + +export default function UserList() { + const [listForm, setListForm] = useState() + + + const initListForm = async () => { + let listRole = await DropdownAPI.role(); + let listCabang = await DropdownAPI.branch(); + + // TYPE INJECT DIRECT INSERT + setListForm([ + { + type: 'text', + name: 'firstName', + alias: 'Nama Depan', + maxLength: '30', + required: true, + col: 12 + }, + { + type: 'text', + name: 'lastName', + alias: 'Nama Belakang', + maxLength: '30', + required: false, + col: 12 + }, + { + type: 'username', + name: 'username', + alias: 'Username', + minLength:"6", + maxLength: '20', + required: true, + onEdit: 'readonly', + col: 12 + }, + { + type: 'number', + name: 'nip', + alias: 'NIP', + maxLength: '20', + required: true, + col: 12 + }, + { + type: 'select', + name: 'roleId', + alias: 'Wewenang', + required: true, + col: 24, + listData: listRole + }, + { + type: 'select', + name: 'idBranch', + alias: 'Cabang', + required: true, + col: 24, + listData: listCabang + }, + { + type: 'text', + name: 'phoneNo', + alias: 'No Telepon', + maxLength: '15', + required: true, + col: 12 + }, + { + type: 'text', + name: 'email', + alias: 'E-Mail', + maxLength: '50', + required: true, + col: 12 + }, + { + type: 'text', + name: 'olibs', + alias: 'User Olibs', + maxLength: '10', + required: false, + col: 12 + }, + ]) + } + + useEffect(() => { + initListForm() + }, []); + + return ( + <> + a.id - b.id + }, + { + title: "Nama Legkap", + dataIndex: 'firstName', + key: 'firstName', + render: (_, row) => row.firstName + ' ' + row.lastName, + sorter: (a, b) => b.firstName.localeCompare(a.firstName) + }, + { + title: "Wewenang", + dataIndex: 'roleNm', + key: 'roleNm', + sorter: (a, b) => b.roleNm.localeCompare(a.roleNm) + }, + { + title: "Cabang", + dataIndex: 'nmBranch', + key: 'nmBranch', + sorter: (a, b) => b.nmBranch.localeCompare(a.nmBranch) + }, + { + title: "Username", + dataIndex: 'username', + key: 'username', + sorter: (a, b) => b.username.localeCompare(a.username) + }, + { + title: "Status", + dataIndex: 'active', + render: (active) => , + sorter: (a, b) => a.active - b.active, + align: 'center' + }, + { + title: "Status Persetujuan", + dataIndex: 'statusApprovalId', + render: (statusApprovalId) => , + sorter: (a, b) => a.statusApprovalId - b.statusApprovalId, + align: 'center' + }, + ]} + listForm={listForm} + /> + + ) +} \ No newline at end of file diff --git a/src/app/not-found.jsx b/src/app/not-found.jsx new file mode 100644 index 0000000..ba24ee7 --- /dev/null +++ b/src/app/not-found.jsx @@ -0,0 +1,19 @@ +import ExportedImage from "next-image-export-optimizer"; + +export default function NotFound() { + return ( +
+ + +
+ ) +} \ No newline at end of file diff --git a/src/app/page.jsx b/src/app/page.jsx new file mode 100644 index 0000000..e22dd9f --- /dev/null +++ b/src/app/page.jsx @@ -0,0 +1,54 @@ +"use client" +import {useEffect} from "react"; +import ExportedImage from "next-image-export-optimizer"; +import "./page.scss"; + +import {LoadingOutlined} from "@ant-design/icons"; +import {getCookie} from "cookies-next"; +import {useRouter} from "next/navigation"; +import {API} from "@/lib/API"; + +export default function Home(){ + const router = useRouter(); + + const checkToken = async () => { + let token = await getCookie('token'); + if (token){ + let res = await API.GETAuth('user', '/ref/user/' + localStorage.getItem('userId')) + if (res.status === 403){ + router.push("/login"); + }else{ + router.push("/main/dashboard"); + } + }else{ + router.push("/login"); + } + } + useEffect(() => { + checkToken() + }, []); + + return ( + <> +
+
+
+ +
SILOS KPR - Tapera Connect
+
Bank Kalteng
+
check authorization
+ +
+
+
+ + + + ) +} \ No newline at end of file diff --git a/src/app/page.scss b/src/app/page.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/components/master/Menu.jsx b/src/components/master/Menu.jsx new file mode 100644 index 0000000..6581bb8 --- /dev/null +++ b/src/components/master/Menu.jsx @@ -0,0 +1,161 @@ +"use client"; +import Link from "next/link"; +import React, {useEffect, useState} from "react"; +import {BranchesOutlined, CloseOutlined, MenuOutlined, MenuUnfoldOutlined} from "@ant-design/icons"; +import {Menu} from "antd"; +import {API} from "@/lib/API"; +import menuStore from "@/store/menuStore"; +import notifStore from "@/store/notifStore"; +import packageJson from '@@/package.json'; + +const MenuList = () => { + + const [MenuList, setMenuList] = useState([]) + const [menuTapera, setMenuTapera] = useState([]) + const [menuSilos, setMenuSilos] = useState([]) + const [menuUsers, setMenuUsers] = useState([]) + const [menuManajemenData, setMenuManajemenData] = useState([]) + const [current, setCurrent] = useState(null); + const [collapsed, setCollapsed] = useState(false); + const {toggleStatus, setToggle} = menuStore() + const {notifOpen} = notifStore() + + const toggleCollapsed = () => { + setCollapsed(!collapsed); + }; + + const getMenu = async () => { + let menu = await API.GET('/ref/menu'); + if (menu.status !== 200) { + notifOpen("Gagal", menu?.result?.message, "danger"); + } else { + let tmpMenu = [] + menu?.result?.forEach((v, k) => { + + let tmpChild = [] + + if (v.childs) { + v?.childs?.forEach((vChild, kChild) => { + + let resultListChildThird = null + if (vChild.childs) { + resultListChildThird = vChild?.childs?.map((vChildThird, kChildThird) => { + if(vChildThird.url){ + return { + label: ({vChildThird.menuNm}), key: vChildThird.menuId, icon: (
), + } + }else{ + return { + label: vChildThird.menuNm, key: vChildThird.menuId, icon: (
), + } + } + + }) + } + + if(vChild.url){ + tmpChild.push({ + label: ({vChild.menuNm}), key: vChild.menuId, icon: (
), children: resultListChildThird + }) + }else{ + + tmpChild.push({ + label: vChild.menuNm, key: vChild.menuId, icon: (
), children: resultListChildThird + }) + } + }) + + } else { + tmpChild = null + } + + if(v.url){ + tmpMenu.push({ + label: ({v.menuNm}), key: v.menuId, icon: (
), children: tmpChild + }) + }else{ + tmpMenu.push({ + label: v.menuNm, key: v.menuId, icon: (
), children:[{ + key: 'g1', label: 'Menu '+v.menuNm, type: 'group', children: tmpChild + }] + }) + + } + + }) + + console.log(tmpMenu) + + setMenuTapera(tmpMenu) + // setMenuTapera(tmpMenu.filter((v)=>v.key === 1)) + // setMenuSilos(tmpMenu.filter((v)=>v.key === 2)) + // setMenuManajemenData(tmpMenu.filter((v)=>v.key === 3)) + // setMenuUsers(tmpMenu.filter((v)=>v.key === 8)) + + + } + } + + const getMenuDummy = () => { + const items = [{ + key: 'sub1', label:
Tapera Connect
, icon: , children: [{ + key: 'g1', label: 'Menu Tappera Connect', type: 'group', children: [{ + key: '1', label: 'Inbox', + }, { + key: '2', label: 'Follow Up', + },], + }, + + ], + }, + + ]; + setMenuList(items) + } + + useEffect(() => { + getMenu() + // getMenuDummy() + }, []); + + useEffect(() => { + console.log(toggleStatus) + }, [toggleStatus]); + + return (<> + +
+ +
+
+ logo +
+
GIS - Digital Transaction
+
version {packageJson.version}
+
+
+
+ +
+
+ +
+ +
+ + + + +
+ ); +}; + +export default React.memo(MenuList); diff --git a/src/components/master/Navbar.jsx b/src/components/master/Navbar.jsx new file mode 100644 index 0000000..d473ca1 --- /dev/null +++ b/src/components/master/Navbar.jsx @@ -0,0 +1,351 @@ +"use client"; +import React, {useEffect, useState} from "react"; +import {BellOutlined, CloseOutlined, MenuFoldOutlined, MenuOutlined, MenuUnfoldOutlined, MoonOutlined, SunOutlined, UserOutlined} from '@ant-design/icons'; +import useAuth from "@/hooks/useAuth"; +import {useRouter} from "next/navigation"; +import {useAPI} from "@/hooks/useAPI"; +import modalStore from "@/store/modal"; +import {API} from "@/lib/API"; +import {Button, Drawer, Menu, Switch} from "antd"; +import Link from "next/link"; +import notifStore from "@/store/notifStore"; +import ExportedImage from "next-image-export-optimizer" +import menuStore from "@/store/menuStore"; + +function Navbar() { + const router = useRouter(); + const {notifOpen} = notifStore() + const {setToggle} = menuStore() + const {data: dataUser, isSuccess} = useAPI.GET('user', '/ref/user/' + localStorage.getItem('userId')) + const {removeAuth} = useAuth() + const [MenuList, setMenuList] = useState([]) + const {setModalPassword, setModalProfile} = modalStore() + const [current, setCurrent] = useState(null); + const [collapsed, setCollapsed] = useState(false); + + + const ViewImage = ({fotoMember}) => { + if (fotoMember == null) return ; + + let getImage = '/'; + return ; + }; + + + const logout = async () => { + let response = await API.GET('/auth/logout'); + console.log(response) + if (response.status === 200) { + await removeAuth() + router.push("/login"); + } + } + + let valTheme = localStorage.getItem('valTheme') + let state = null + if (valTheme == 'true') { + state = true + document.body.classList.add('darkMode') + } else { + state = false + } + + const [isTheme, setTheme] = useState(state); + + const buttonHandler = (val) => { + setTheme((status) => !status); + let theme = null + if (val != true) { + theme = 'lightMode' + document.body.classList.add(theme); + document.body.classList.remove('darkMode'); + } else { + theme = 'darkMode' + document.body.classList.add(theme); + document.body.classList.remove('lightMode'); + } + localStorage.setItem('setTheme', theme) + localStorage.setItem('valTheme', val) + }; + + const modalChangeProfile = () => { + setModalProfile(true) + } + const modalChangePassword = (type) => { + console.log(type) + setModalPassword(true, type) + } + + const getMenu = async () => { + let menu = await API.GET('/ref/menu'); + if (menu.status !== 200) { + notifOpen("Gagal", menu?.result?.message, "danger"); + } else { + let tmpMenu = [] + menu?.result?.forEach((v, k) => { + + let tmpChild = [] + + if (v.childs) { + v?.childs?.forEach((vChild, kChild) => { + + let resultListChildThird = null + if (vChild.childs) { + resultListChildThird = vChild?.childs?.map((vChildThird, kChildThird) => { + return { + label: ({vChildThird.menuNm}), + key: vChildThird.menuId, + icon: (
), + } + }) + } + + tmpChild.push( + { + label: ({vChild.menuNm}), + key: vChild.menuId, + icon: (
), + children: resultListChildThird + } + ) + }) + + } else { + tmpChild = null + } + + tmpMenu.push( + { + label: ({v.menuNm}), + key: v.menuId, + icon: (
), + children: tmpChild + }, + ) + }) + + setMenuList(tmpMenu) + } + } + + + const checkFirstLogin = () => { + if (dataUser?.result?.userStatusId === 3) { + modalChangePassword('first') + } + } + + const checkPasswordExpired = () => { + if (dataUser?.result?.passwordExpired) { + modalChangePassword('expired') + } + } + + useEffect(() => { + if (isSuccess) { + checkFirstLogin() + checkPasswordExpired() + } + + }, [isSuccess]); + + + useEffect(() => { + getMenu() + + }, []); + + const onClickMenu = (e) => { + // console.log('click ', e); + setCollapsed(!collapsed); + // document.querySelector(".backdrop").classList.remove("backdropMenu"); + // document.querySelector(".menuInline").classList.remove("in"); + // document.querySelector(".menuInline").classList.add("out"); + setCurrent(e.key); + }; + + const [scroll, setScroll] = useState(false); + useEffect(() => { + window.addEventListener("scroll", () => { + setScroll(window.scrollY > 15); + }); + }, []); + + const [openDraw, setOpenDraw] = useState(false); + const showDrawer = () => { + setOpenDraw(true); + }; + const closeDraw = () => { + setOpenDraw(false); + }; + + const toggleCollapsed = () => { + setCollapsed(!collapsed); + }; + + return ( + <> + {/*
*/} + + + + + +
    +
  • +
    + + 20 Januari 2024 +
    +
    +
    +
    + +
    +
    +
    +
    Aktifitas
    +
    update hasil aktifitas
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    Aktifitas
    +
    update hasil aktifitas
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    Aktifitas
    +
    update hasil aktifitas
    +
    +
    +
  • +
  • +
    + + 19 Januari 2024 +
    +
    +
    +
    + +
    +
    +
    +
    Aktifitas
    +
    update hasil aktifitas
    +
    +
    +
  • + +
+
+ +
+ + + + ); +} + +export default React.memo(Navbar); \ No newline at end of file diff --git a/src/components/refTemplate/Form.jsx b/src/components/refTemplate/Form.jsx new file mode 100644 index 0000000..71fa480 --- /dev/null +++ b/src/components/refTemplate/Form.jsx @@ -0,0 +1,378 @@ +/* eslint-disable react/display-name */ +import {useForm} from "react-hook-form"; +import React, {forwardRef, useImperativeHandle} from "react"; +import ModalForm from "@/components/util/ModalForm"; +import modalStore from "@/store/modal"; +import {Col, Row} from "antd"; +import Input from "@/components/util/Input"; +import {Helper} from "@/lib/Helper"; +import dayjs from "dayjs"; +import {DropdownAPI} from "@/lib/DropdownAPI"; + + +const Form = forwardRef( + ({ storeData, approveRejectData, setTitle, listForm, sizeModal, dataApproval }, ref) => { + const { FormId, modalDetail, actionType } = modalStore(); + useImperativeHandle(ref, () => ({ + resetForm, + setFormValue, + })); + + const { + register, + handleSubmit, + reset, + setValue, + getValues, + control, + formState: { errors }, + } = useForm(); + + const resetForm = () => { + reset(); + }; + + const filterTypeMoney = () => { + return listForm.map((val) => { + if (val.type === "money") { + return val.name; + } + }); + }; + + const filterTypeDate = () => { + return listForm.map((val) => { + if (val.type === "date") { + return val.name; + } + }); + }; + + const filterTypeTime = () => { + return listForm.map((val) => { + if (val.type === "time") { + return val.name; + } + }); + }; + + const filterTypePercentage = () => { + return listForm.map((val) => { + if (val.type === "percentage") { + return val.name; + } + }); + }; + + const filterTypeText = () => { + return listForm.map((val) => { + if (val.type === "text") { + return val.name; + } + }); + }; + + const filterInputDisabled = () => { + return listForm.map((val) => { + if (val.onEdit === "disabled") { + return val.name; + } + }); + }; + + const filterTypeSelectChild = () => { + return listForm.map((val) => { + if (val.selectType === "child") { + return val.name; + } + }); + }; + + const setValueSelect = async (name, value) => { + if (name === "kdSubProduk") + await DropdownAPI.getListSubProduct(value); + }; + + const setFormValue = (name, value, type) => { + let listMoney = filterTypeMoney(); + // let listSelectChild = filterTypeSelectChild(); + if (listMoney.includes(name)) + return setValue(name, Helper.numFormat(value)); + // if (listSelectChild.includes(name)) return setValueSelect(name, value); + + setValue(name, value); + }; + + const onSubmit = (data, action) => { + // if (actionType == 'approval' ) return approveRejectData(data, action); + + let listMoney = filterTypeMoney(); + let listDate = filterTypeDate(); + let listTime = filterTypeTime(); + let listPercentage = filterTypePercentage(); + let listText = filterTypeText(); + let listDisabled = filterInputDisabled(); + + for (const name in data) { + if (listMoney.includes(name)) + data[name] = parseInt(Helper.numFormatClear(data[name])); + if (listDate.includes(name)) + data[name] = dayjs(data[name]).format("YYYY-MM-DD"); + if (listPercentage.includes(name)) + // data[name] = parseFloat(data[name].replace("%", "")); + data[name] = parseFloat(data[name]); + + if (listText.includes(name)) data[name] = String(data[name]); + if (listDisabled.includes(name)) delete data[name]; + } + + storeData(data); + }; + + return ( + + {modalDetail || actionType == 'history_approval' ? ( + "" + ) : + + } + + } + > + + { + + {listForm && + listForm.map((v, k) => { + let setReadonly = + FormId !== "new" + ? v.onEdit + ? v.onEdit == "readonly" + ? true + : false + : false + : false; + let setDisabled = + FormId !== "new" + ? v.onEdit + ? v.onEdit == "disabled" + ? true + : false + : false + : false; + + if (modalDetail || actionType == 'approval' ) { + setReadonly = true; + } + + let setRequired = v.required; + + if (v.type === "text") + return ( + + + + ); + + if (v.type === "number") + return ( + + + + ); + + if (v.type === "username") + return ( + + + + ); + if (v.type === "select") + return ( + + + + ); + + if (v.type === "money") + return ( + + + + ); + + if (v.type === "percentage") + return ( + + + + ); + + if (v.type === "textarea") + return ( + + + + ); + + if (v.type === "custom") + return ( + + + + ); + + if (v.type === "switch") + return ( + + + + ); + + if (v.type === "date") + return ( + + + + ); + + if (v.type === "time") + return ( + + + + ); + })} + + } + + + ); + } +); + +export default Form; diff --git a/src/components/refTemplate/LogData.jsx b/src/components/refTemplate/LogData.jsx new file mode 100644 index 0000000..ad4fe68 --- /dev/null +++ b/src/components/refTemplate/LogData.jsx @@ -0,0 +1,36 @@ +const columns = [ + { + name: "Label", + selector: row => row.label, + sortable: true, + }, + { + name: "Data Lama", + selector: row => row.old_value, + style: { + backgroundColor: '#FBE5E5', + }, + sortable: true, + }, + { + name: "Data Baru", + selector: row => row.new_value, + style: { + backgroundColor: '#E6F9ED', + }, + sortable: true, + } +] + +const conditionalRowStyles = [ + { + when: row => true, + classNames: ['row-log-data'] + }, +]; + +const LogData = () => { + +} + +export default LogData \ No newline at end of file diff --git a/src/components/refTemplate/Main.jsx b/src/components/refTemplate/Main.jsx new file mode 100644 index 0000000..5e67c18 --- /dev/null +++ b/src/components/refTemplate/Main.jsx @@ -0,0 +1,548 @@ +"use client"; +import React, {useEffect, useRef, useState} from "react"; +import breadcrumbStore from "@/store/breadcrumbStore"; +import modalStore from "@/store/modal"; +import confirmStore from "@/store/confirmStore"; +import {API} from "@/lib/API"; +import notifStore from "@/store/notifStore"; +import WrapperContent from "@/components/util/WrapperContent"; +import SearchInput from "@/components/util/SearchInput"; +import ToolBar from "@/components/refTemplate/ToolBar"; +import Form from "@/components/refTemplate/Form"; +import {Dropdown} from "antd"; +import {CheckCircleOutlined, CheckOutlined, CloseCircleOutlined, CloseOutlined, ContainerOutlined, DeleteOutlined, EditOutlined, FieldTimeOutlined, FileProtectOutlined, SendOutlined, SettingOutlined} from "@ant-design/icons"; +// import {exportExcel} from "@/lib/exportExcel"; +// import {exportDocx} from "@/lib/exportDocx"; +import DTAnt from "@/components/util/DTAnt"; +import DTAntServerSide from "@/components/util/DTAntServerSide"; + +const RefTemplate = ({ + refTitle, + refSubTitle, + refEndPointAll, + columnTableRef, + primaryKey, + listForm, + listAction, + setDependSelect, + sizeModal, + ToolFilter, + customExport, + serverSide, + typeRef + }) => { + const formRef = useRef(); + const {modalOpen, modalClose, FormId, modalStat, setModalLoading, setModalDetail, actionType} = modalStore(); + const {setSubTitle, setTitle, setShow} = breadcrumbStore(); + const {confirmOpen, confirmClose, setConfirmLoading} = confirmStore(); + const {notifOpen} = notifStore() + + const [Data, setData] = useState([]); + const [searchText, setSearchText] = useState(null); + const [tableColumn, setTableColumn] = useState(null); + const [loadingTable, setLoadingTable] = useState(true) + const [trigerGetData, setTrigerGetData] = useState(0) + const [dataApproval, setDataApproval] = useState() + + // CRUD + const deleteData = async (id) => { + confirmOpen("Hapus Data", "Yakin Hapus Data Ini", async () => { + setConfirmLoading(true); + let response = await API.DELETE(`${refEndPointAll}/${id}`); + if (response.status === 200) { + notifOpen("Berhasil", "berhasil hapus data"); + await getData(); + setConfirmLoading(false); + confirmClose(); + } else { + console.log(response); + setConfirmLoading(false); + notifOpen("Gagal", response.result.message, "danger"); + confirmClose(); + } + }); + }; + + const sendApproval = async (id) => { + confirmOpen("Kirim Pengajuan", "Kirim Pengajuan Data Ini?", async () => { + setConfirmLoading(true); + let response = await API.GET(`${refEndPointAll}/${id}/waiting-approve`); + if (response.status === 200) { + notifOpen("Berhasil", "Pengajuan berhasil dikirim"); + await getData(); + setConfirmLoading(false); + confirmClose(); + } else { + setConfirmLoading(false); + notifOpen("Gagal", response.result.message, "danger"); + confirmClose(); + } + }); + }; + + + const activeData = async (id,active) => { + + let titleActive = (active) ? 'Aktifkan' : 'Nonaktifkan'; + + confirmOpen(`${titleActive} Data`, `Yakin ${titleActive} Data Ini`, async () => { + setConfirmLoading(true); + + let response = await API.POST(`${refEndPointAll}`,{ + id : id, + isActive : !active + }) + + if (response.status === 200) { + notifOpen("Berhasil", `berhasil ${titleActive} data`); + await getData(); + setConfirmLoading(false); + confirmClose(); + } else { + setConfirmLoading(false); + notifOpen("Gagal", response.result.message, "danger"); + confirmClose(); + } + }); + }; + + const getData = async () => { + if (serverSide){ + setTrigerGetData(prev => prev+1); + }else{ + setData([]) + setLoadingTable(true) + let response = await API.GET(`${refEndPointAll}`); + console.log(response) + if (response.status !== 200){ + notifOpen("Gagal", response?.result?.message, "danger"); + } + setData(response.result); + + setLoadingTable(false) + } + }; + + const getDataById = async () => { + let url = `${refEndPointAll}/${FormId}`; + if ( actionType === 'history_approval' ) url += '/historyApproval' + let response = await API.GET(url); + + if (response.status === 500) { + modalClose(); + return notifOpen("Gagal", "Terjadi kesalahan", "danger"); + } + + let data = response.result; + + if ( actionType == 'history_approval' && data.length == 0 ) { + modalClose(); + return notifOpen("Warning", "Riwayat pengajuan belum tersedia", "warning"); + } + + if ( actionType == 'history_approval' || actionType == 'approval' ) { + setDataApproval(data) + } + + listForm.forEach((v, k) => { + let value = data[v.name] + formRef.current.setFormValue(v.name, value); + }); + + setModalLoading(false); + }; + + + + const storeData = async (formData) => { + if (FormId !== "new") formData[primaryKey] = FormId; + + setModalLoading(true); + + let response; + if (typeRef === 'KARYAWAN') { response = await API.POST_KARYAWAN(`${refEndPointAll}`, formData);} + else if (typeRef === 'SSO'){ response = await API.POST_SSO(`${refEndPointAll}`, formData);} + else{ response = await API.POST(`${refEndPointAll}`, formData);} + + if (response.status === 200) { + modalClose(); + notifOpen("Berhasil", "berhasil Simpan data"); + await getData(); + } else { + notifOpen("Gagal", response.result.message, "danger"); + } + setModalLoading(false); + }; + + const approveRejectData = async (id, action) => { + setModalLoading(true); + let title = action == 'approve' ? 'Setujui' : 'Tolak' + let userLoginId = localStorage.getItem('userId'); + + let formData = { + 'userId' : id, + 'approveId' : userLoginId, + 'status': action == 'approve' ? 1 : 2 + }; + + confirmOpen(`${title} Data`, `${title} Data Ini?`, async () => { + let response = await API.POST(`${refEndPointAll}/approve`, formData); + if (response.status === 200) { + let msg = action == 'approve' ? 'disetujui' : 'ditolak' + confirmClose(); + notifOpen("Berhasil", `Data berhasil ${msg}`); + await getData(); + } else { + let msg = response?.result?.message || 'Terjadi kesalahan' + notifOpen("Gagal", msg, "danger"); + } + setModalLoading(false); + }); + }; + + const detailData = (id) => { + modalOpen(id) + setModalDetail(true) + } + // CRUD + const handleSearch = (event) => { + + const handler = setTimeout(() => { + setSearchText(event.target.value); + }, 1000); + + // Cleanup function to clear the timeout if value or delay changes + return () => { + clearTimeout(handler); + }; + + + }; + + const filteredData = Data?.data?.filter((item) => + Object.values(item).some((value) => { + + if (searchText){ + return value?.toString().toLowerCase().includes(searchText.toLowerCase()) + }else{ + return value + } + + } + ) + ); + + + const initColumn = () => { + let column = columnTableRef; + + let action = { + render: (_, row) => { + let isWaitingApproval = row.statusApproval ? row.statusApproval == 'WAITING' : false + let items = []; + + + if (listAction.includes('detail')) { + items.push({ + key: '7', + label: ( + + ), + }) + } + + if (listAction.includes('update') && !isWaitingApproval) { + items.push({ + key: '1', + label: ( + + ), + }) + } + + if (listAction.includes('delete')) { + items.push({ + key: '2', + label: ( + + ), + }) + } + + if (listAction.includes('approval')) { + items.push({ + key: '3', + label: ( + + ), + }) + + items.push({ + key: '8', + label: ( + + ), + }) + } + + if (listAction.includes('active') && !isWaitingApproval) { + if (row.active) { + items.push({ + key: "5", + label: ( + + ), + }); + } else { + items.push({ + key: "4", + label: ( + + ), + }); + } + } + + if (listAction.includes('history_approval')) { + items.push({ + key: '6', + label: ( + + ), + }) + } + + if (listAction.includes('send_approval')) { + items.push({ + key: '7', + label: ( + + ), + }) + } + + return ( + <> + + + + + ); + }, + dataIndex: 'act', + key: 'act', + width: "40px", + }; + + column.push(action); + setTableColumn(column); + }; + const actExportExcel = () => { + if (filteredData[0]) { + let columnsExport = [] + + if (customExport) { + columnsExport = customExport + } else { + let getHead = filteredData[0]; + for (var keyHead in getHead) { + columnsExport.push( + {header: keyHead, key: keyHead} + ) + } + } + + const payload = [ + {columns: columnsExport, data: filteredData, sheetName: refSubTitle}, + ]; + exportExcel(payload, refSubTitle); + } else { + notifOpen("Data tidak tersedia", "Data di table minimal 1 baris", "warning"); + } + + } + const actExportWord = () => { + let filename = refSubTitle + let path = '/export/word/ref_template.docx'; + + let docData = { + aaa: 'tests', + bbb: 'test bb', + table: [ + { + kolom1: 'kolom A', + kolom2: 'kolom B' + }, + { + kolom1: 'kolom A', + kolom2: 'kolom B' + } + ] + } + + exportDocx({docData, path, filename}); + } + const actExportPDF = () => { + + let dataExport = [{cif: 'wawaw'}] + + const columns = [ + {header: "CIF", key: "cif"}, + {header: "CIF", key: "cif"}, + + ] + const payload = [ + {columns: columns, data: dataExport, sheetName: "Sheet 1"}, + ]; + exportExcel(payload, `Data Excel`); + } + const setActiveData = async (id, setActive) => { + let title = 'Non Aktif Data' + let message = 'Non aktifkan data ini' + let msgSuccess = 'Data berhasil dinonaktifkan' + if ( setActive ) { + title = 'Aktif Data' + message = 'Aktifkan data ini' + msgSuccess = 'Data berhasil diaktifkan' + } + + let reqBody = { + [primaryKey]: id, + "active": setActive ? true : false + } + + confirmOpen(title, message, async () => { + setConfirmLoading(true); + let response = await API.POST(`${refEndPointAll}`, reqBody); + if (response.status === 200) { + notifOpen("Berhasil", msgSuccess); + await getData(); + } else { + setConfirmLoading(false); + notifOpen("Gagal", response.result.message, "danger"); + } + setConfirmLoading(false); + confirmClose(); + }); + }; + + useEffect(() => { + setTitle(refTitle); + setSubTitle(refSubTitle); + initColumn(); + if (!serverSide){ + getData(); + } + + }, []); + + useEffect(() => { + formRef.current.resetForm(); + if (FormId === "new") setModalLoading(false); + if (FormId !== "new" && FormId != null) { + getDataById(); + } + }, [modalStat]); + + useEffect(() => { + // setShow() + // document.getElementById("nav-title").style.left = "270px"; + }, [tableColumn]); + + + return ( + <> + +
+
+ + +
+
+
{refTitle}
+
{refSubTitle}
+
+
{refSubTitle}
+
+ +
+ +
+ +
+
+ +
+ +
+
+ + {tableColumn ? + (serverSide) ? + (): + + () + + : ( + "loading" + )} +
+
+
+
+
+ + ); +}; + +export default React.memo(RefTemplate); + + diff --git a/src/components/refTemplate/ToolBar.jsx b/src/components/refTemplate/ToolBar.jsx new file mode 100644 index 0000000..5b411bf --- /dev/null +++ b/src/components/refTemplate/ToolBar.jsx @@ -0,0 +1,66 @@ +import {FileExcelOutlined, FileOutlined, FilePdfFilled, FileWordOutlined, PlusCircleOutlined, ReloadOutlined} from '@ant-design/icons'; +import modalStore from '@/store/modal'; +import {Dropdown} from "antd"; +import React from "react"; + +export default function ToolBar({getData, listAction, actExportExcel, actExportWord, actExportPDF}) { + const {modalOpen} = modalStore(); + let items = []; + + if (listAction.includes('exportExcel')) { + items.push({ + key: '1', + label: ( + + ), + }) + } + + if (listAction.includes('exportWord')) { + items.push({ + key: '2', + label: ( + + ), + }) + } + + if (listAction.includes('exportPDF')) { + items.push({ + key: '3', + label: ( + + ), + }) + } + + return ( + <> + {/*
*/} + + + {listAction && (listAction.includes('create')) ? + : ''} + + {listAction && (listAction.includes('exportExcel') || listAction.includes('exportWord') || listAction.includes('exportPDF')) ? + + + : ''} + + + {/*
*/} + + ) +}; \ No newline at end of file diff --git a/src/components/util/Button.jsx b/src/components/util/Button.jsx new file mode 100644 index 0000000..332615a --- /dev/null +++ b/src/components/util/Button.jsx @@ -0,0 +1,15 @@ +import {Spin} from 'antd'; + +export default function Button({title,loading}) { + return( + <> +
+ + + + +
+ + ) +} \ No newline at end of file diff --git a/src/components/util/CheckAuth.jsx b/src/components/util/CheckAuth.jsx new file mode 100644 index 0000000..1c1e9c2 --- /dev/null +++ b/src/components/util/CheckAuth.jsx @@ -0,0 +1,18 @@ +import {LoadingOutlined} from "@ant-design/icons"; + +export default function CheckAuth() { + return ( +
+
+
+ {"logo"} +
EDC - Digital Transaction
+
global infotech solution
+ +
check authorization
+ +
+
+
+ ) +} \ No newline at end of file diff --git a/src/components/util/DTAnt.jsx b/src/components/util/DTAnt.jsx new file mode 100644 index 0000000..2700fe6 --- /dev/null +++ b/src/components/util/DTAnt.jsx @@ -0,0 +1,37 @@ +import React, {useEffect, useState} from "react"; +import {Table} from "antd"; + +import LoadingTable from "@/components/util/LoadingTable"; + +function DTAnt({ columnTable, data, loadingTable, size, pageSize, rowKey, totalRow }) { + const [columns, setColumns] = useState([]); + + useEffect(() => { + setColumns(columnTable); + }, []); + + return ( + <> + , + }} + locale={{ emptyText: (loadingTable) ? '-' : null }} + columns={columns} + dataSource={data} + rowKey={rowKey} + size={(size) ? size : 'medium'} + pagination={{ + defaultPageSize: (pageSize) ? pageSize : 10, + pageSizeOptions: ['5', '10', '20', '30', '40'], + showSizeChanger: true, + showTotal: (total, range) => `${range[0]}-${range[1]} dari ${total} Data` + }} /> + + ) + +} + + +export default React.memo(DTAnt); \ No newline at end of file diff --git a/src/components/util/DTAntServerSide.jsx b/src/components/util/DTAntServerSide.jsx new file mode 100644 index 0000000..0c3518c --- /dev/null +++ b/src/components/util/DTAntServerSide.jsx @@ -0,0 +1,195 @@ +import React, {useEffect, useState} from "react"; +import {Table} from "antd"; +import {API} from "@/lib/API"; +import {v4 as uuidv4} from 'uuid'; +import selectedTableStore from "@/store/selectedTableStore"; + + +// README +// untuk menggunakan isSelected, harus ditambahkan juga keyTable + +function DTAntServerSide({columnTable, size,keyTable,endPoint,searchText,triger,filter,noLoadingTable,isSelected}) { + + + const {setDataSelect} = selectedTableStore() + + const [columns, setColumns] = useState([]); + const [Data, setData] = useState([]) + const [loading, setLoading] = useState(false) + const [pageSize, setPageSize] = useState(10) + const [currentPage, setCurrentPage] = useState(1) + const [selectedRowKeys, setSelectedRowKeys] = useState([]); + const [tableParams, setTableParams] = useState({ + pagination: { + current: 1, + pageSize: (pageSize) ? pageSize : 10, + pageSizeOptions: ['5', '10', '20', '30', '50'], + showSizeChanger: true, + total: 0 + }, + }); + + const getData = async (page,search,size) => { + if (!noLoadingTable){ + setLoading(true) + } + + let setSize = (size) ? size : pageSize + let setSearch = (search) ? `&search=${search}` :'' + let setFilter = (filter) ? '&'+ new URLSearchParams(filter).toString() : ''; + + let response = await API.GET(endPoint+`?page=${page-1}&size=${setSize}${setSearch}${setFilter}`); + + setData(response.result); + setLoading(false) + + setTableParams({ + ...tableParams, + pagination: { + ...tableParams.pagination, + current: page, + total: response.result.totalElements, + }, + }); + } + + const handleTableChange = (pagination, filters, sorter) => { + console.log({pagination, filters, sorter}) + setTableParams({ + pagination, + filters, + ...sorter, + }); + + setPageSize(pagination.pageSize) + setCurrentPage(pagination.current) + getData(pagination.current,'',pagination.pageSize) + }; + + // useEffect(() => { + // console.log(pageSize) + // getData(1) + // }, [pageSize]); + + useEffect(() => { + setColumns(columnTable); + // getData(1) + }, []); + + useEffect(() => { + setColumns(columnTable); + }, [columnTable]); + + useEffect(() => { + if (searchText !== null){ + setTableParams(prev => ({...prev,pagination:{ + current: 1 + } })) + getData(1,searchText) + } + }, [searchText]); + + // useEffect(() => { + // setTableParams({ + // ...tableParams, + // pagination: { + // ...tableParams.pagination, + // total: Data.totalElements, + // }, + // }); + // }, [Data]); + + useEffect(() => { + setTableParams(prev => ({...prev,pagination:{ + current: 1 + } })) + getData(1) + }, [triger]); + + useEffect(() => { + getData(1) + }, [filter]) + + + const onSelectChange = (selectedRow) => { + setSelectedRowKeys(selectedRow); + setDataSelect(selectedRow) + }; + + + const dataDummy = [ + { + key: '1', + status:1, + roleNm: 'John Brown', + age: 32, + nmBranch: 'New York No. 1 Lake Park', + }, + { + key: '2', + status:2, + roleNm: 'Jim Green', + age: 42, + nmBranch: 'London No. 1 Lake Park', + }, + { + key: '3', + status:3, + roleNm: 'Joe Black', + age: 32, + nmBranch: 'Sydney No. 1 Lake Park', + }, + { + key: '4', + status:4, + roleNm: 'Disabled User', + age: 99, + nmBranch: 'Sydney No. 1 Lake Park', + }, + { + key: '5', + status:5, + roleNm: 'Disabled User', + age: 99, + nmBranch: 'Sydney No. 1 Lake Park', + }, + { + key: '6', + status:6, + roleNm: 'Disabled User', + age: 99, + nmBranch: 'Sydney No. 1 Lake Park', + }, + ]; + + return ( + <> +
(keyTable) ? record[keyTable]:uuidv4()} + size={(size) ? size : 'medium'} + scroll={{ x: 'max-content' }} + // locale={{emptyText: (loading) ? '-' : null}} + dataSource={Data?.data} + // dataSource={dataDummy} + pagination={{...tableParams.pagination, showTotal: (total, range) => `${range[0]}-${range[1]} dari ${total} Data`}} + loading={{ + spinning: loading, + // indicator: , + }} + onChange={handleTableChange} + /> + + + + + ) + +} + + +export default React.memo(DTAntServerSide); \ No newline at end of file diff --git a/src/components/util/DTCheckboxStyle.jsx b/src/components/util/DTCheckboxStyle.jsx new file mode 100644 index 0000000..b2aecc9 --- /dev/null +++ b/src/components/util/DTCheckboxStyle.jsx @@ -0,0 +1,17 @@ +/* eslint-disable react/display-name */ +import React, {forwardRef} from 'react'; + + +const DTCheckboxStyle = forwardRef(({onClick, ...rest}, ref) => { + return( +
+ + +
+ ) +}); + + +export default DTCheckboxStyle; \ No newline at end of file diff --git a/src/components/util/Input/InputAntFile.jsx b/src/components/util/Input/InputAntFile.jsx new file mode 100644 index 0000000..e382ebf --- /dev/null +++ b/src/components/util/Input/InputAntFile.jsx @@ -0,0 +1,169 @@ +import { useEffect, useState } from "react"; +import {CloseOutlined, EditOutlined, LoadingOutlined, CloudUploadOutlined} from "@ant-design/icons"; +import {Button, Image, Upload} from "antd"; +import { Controller } from "react-hook-form"; +import { Helper } from "@/lib/Helper"; + + +const previewBase64 = (file) => + new Promise((resolve, reject) => { + const reader = new FileReader(); + reader.readAsDataURL(file); + reader.onload = () => resolve(reader.result); + reader.onerror = (error) => reject(error); + }); + +const InputAntFile = ({ + title, + name, + register, + error, + control, + required, + maxSize = 2, + setError, + setValue, + extensions = ["png", "jpg", "jpeg", "pdf"], + setReadonly + }) => { + + + const [previewOpen, setPreviewOpen] = useState(false); + const [previewImage, setPreviewImage] = useState(''); + const [fileList, setFileList] = useState(() => []) + const [notifExt, setNotifExt] = useState(false); + + + let setRequired = required ? {required: `Upload file ${title}`} : {}; + let validateList = {...setRequired}; + + required = required && !setReadonly + + + const acceptFile = extensions.map(item => '.' + item).join(',') + + const handlePreview = async (file) => { + if (!file.url && !file.preview) { + file.preview = await previewBase64(file.originFileObj); + } + + setPreviewImage(file.url || file.preview); + setPreviewOpen(true); + }; + + const handleChange = ({ file, fileList: newFileList }, onChange) => { + let getExtension; + + newFileList.map((v, k) => { + let nameFile = v.name; + getExtension = nameFile.match(/\.([^\.]+)$/)[1]; + let fileSize = v.size ? v.size : null; + + if (extensions.includes(getExtension)) { + setNotifExt(false); + } else { + setNotifExt(true); + } + }) + + // Update state fileList + setFileList(newFileList); + setValue(name, newFileList, { shouldValidate: true }); + onChange(newFileList) + }; + + const beforeUpload = (file) => { + const extFile = Helper.getExtentionFileFromMimeType(file.type) + const isAllowedType = extensions.includes(extFile); + if (!isAllowedType) { + file.status = 'error'; + } + + const isLt2M = file.size / 1024 / 1024 < maxSize; + if (!isLt2M) { + file.status = 'error'; + } + + return false + }; + + // Handle file removal + const handleRemove = (file) => { + const newFileList = fileList.filter((item) => item.uid !== file.uid); + setFileList(newFileList); + setValue(name, newFileList); + return true + }; + + + const uploadButton = ( + + ); + + return ( +
+
+ +
+ value && !setReadonly ? value.every((file) => file.size / 1024 / 1024 < maxSize) || `Ukuran file terlalu besar, maksimal ${maxSize}MB` : true, + checkFileType: (value) => value && !setReadonly ? value.every(file => extensions.includes(Helper.getExtentionFileFromMimeType(file.type))) || `Hanya file ${extensions.join(', ')} yang diperbolehkan` : true + } + }} + render={({ field: { onChange, value } }) => { + return ( + handleChange(file, onChange)} + > + {value && value.length > 0 ? null : uploadButton} + + ) + + }} + /> + + {previewImage && ( + setPreviewOpen(visible), + afterOpenChange: (visible) => !visible && setPreviewImage(''), + }} + src={previewImage} + style={{objectFit: 'cover'}} + /> + )} +
+ {!setReadonly && Maksimal ukuran file {maxSize}MB } + {error[name] && (
{error[name]?.message}
)} +
+
+ ); +}; + +export default InputAntFile; diff --git a/src/components/util/Input/InputAutoComplete.jsx b/src/components/util/Input/InputAutoComplete.jsx new file mode 100644 index 0000000..fc92e75 --- /dev/null +++ b/src/components/util/Input/InputAutoComplete.jsx @@ -0,0 +1,62 @@ +import {AutoComplete} from 'antd'; + +const InputAutoComplete = ({ + title, + name, + register, + error, + placeholder, + required, + options, + setValue, + setReadonly, + setDisabled, + val, + onSearch, + getDataOnChange, + notFoundContent = false +}) => { + + let setRequired = (required) ? { required: `Data ${title} Harus di Isi` } : {} + let validateList = { ...setRequired }; + + const onChange = (value) => { + let arrFilter = options.find(item => item.value === value); + setValue(name, arrFilter, { shouldValidate: true }) + } + + const filterOption = (input, option) => + (option?.label ?? '').toLowerCase().includes(input.toLowerCase()); + + return ( + <> +
+
+ + + {error[name] &&
{error[name]?.message}
} +
+
+ + ); +}; + +export default InputAutoComplete; diff --git a/src/components/util/Input/InputCustom.jsx b/src/components/util/Input/InputCustom.jsx new file mode 100644 index 0000000..b9d6794 --- /dev/null +++ b/src/components/util/Input/InputCustom.jsx @@ -0,0 +1,58 @@ +const InputCustom = ({ + title, + name, + register, + error, + placeholder, + maxlength, + required, + setReadonly, + ...props +}) => { + let setRequired = required + ? { required: `Data ${title} Harus di Isi` } + : {}; + let setMaxLength = maxlength + ? { + maxLength: { + value: maxlength, + message: `Maksimal ${maxlength} Karakter`, + }, + } + : {}; + + let validateList = { ...setRequired, ...setMaxLength }; + + + + return ( + <> +
+
+ + + {error[name] && ( +
{error[name]?.message}
+ )} +
+
+ + ); +}; + +export default InputCustom; diff --git a/src/components/util/Input/InputDate.jsx b/src/components/util/Input/InputDate.jsx new file mode 100644 index 0000000..4c80fe1 --- /dev/null +++ b/src/components/util/Input/InputDate.jsx @@ -0,0 +1,72 @@ +import {Helper} from "@/lib/Helper"; +import {DatePicker} from "antd"; +import dayjs from "dayjs"; + +const InputDate = ({ + title, + name, + register, + error, + placeholder, + maxlength, + required, + setValue, + value, + minDate, + setReadonly, + maxDate, + picker = "default", + format = 'DD MMM YYYY', +}) => { + let setRequired = required + ? { required: `Data ${title} Harus di Isi` } + : {}; + let setMaxLength = maxlength + ? { + maxLength: { + value: maxlength, + message: `Maksimal ${maxlength} Karakter`, + }, + } + : {}; + + let validateList = { ...setRequired, ...setMaxLength }; + + const onChange = (_, dateString) => { + setValue(name, dayjs(dateString, 'DD MMM YYYY'), { shouldValidate: true }); + }; + + const newFormat = Helper.setFormatInputDate(picker, format); + + return ( +
+
+ + + {error[name] && ( +
{error[name]?.message}
+ )} +
+
+ ); +}; + +export default InputDate; diff --git a/src/components/util/Input/InputDateHeader.jsx b/src/components/util/Input/InputDateHeader.jsx new file mode 100644 index 0000000..184c02f --- /dev/null +++ b/src/components/util/Input/InputDateHeader.jsx @@ -0,0 +1,95 @@ +import {Helper} from "@/lib/Helper"; +import {DatePicker} from "antd"; +import dayjs from "dayjs"; + +const InputDateHeader = ({ + title, + name, + register, + error, + placeholder, + maxlength, + required, + setReadonly, + setDisabled, + picker = "default", + setValue, + value, + noValidate, + format = 'DD MMM YYYY', +}) => { + let setRequired = required + ? { required: `Data ${title} Harus di Isi` } + : {}; + let setMaxLength = maxlength + ? { + maxLength: { + value: maxlength, + message: `Maksimal ${maxlength} Karakter`, + }, + } + : {}; + + let validateList = { ...setRequired, ...setMaxLength }; + + const onChange = (_, dateString) => { + setValue(name, dayjs(dateString, 'DD MMM YYYY'), { shouldValidate: true }); + }; + + const newFormat = Helper.setFormatInputDate(picker, format); + + + return ( + + (noValidate) ? +
+
+ + +
+
+ : + +
+
+ + + {error[name] && ( +
{error[name]?.message}
+ )} +
+
+ ); +}; + +export default InputDateHeader; diff --git a/src/components/util/Input/InputDateRange.jsx b/src/components/util/Input/InputDateRange.jsx new file mode 100644 index 0000000..344b9ee --- /dev/null +++ b/src/components/util/Input/InputDateRange.jsx @@ -0,0 +1,66 @@ +import {Helper} from "@/lib/Helper"; +import {DatePicker, Space} from 'antd'; +import dayjs from 'dayjs'; + +const { RangePicker } = DatePicker; + +const rangePresets = [ + { label: 'Seminggu terakhir', value: [dayjs().add(-7, 'd'), dayjs()] }, + { label: 'Bulan ini', value: [dayjs().startOf("month") , dayjs().endOf("month")] }, + { label: 'Bulan lalu', value: [dayjs().startOf("month").month(dayjs().month() - 1), dayjs().endOf("month").month(dayjs().month() - 1)] }, + {label: 'Tahun ini', value: [dayjs().startOf("year"), dayjs().endOf("year")]}, + {label: 'Tahun lalu', value: [dayjs().startOf('year').year(dayjs().year() - 1), dayjs().endOf('year').year(dayjs().year() - 1)]}, +]; + +const InputDateRange = ({ + title, + name, + register, + error, + placeholder, + maxlength, + required, + setValue, + format = 'DD MMM YYYY', + picker = 'default', + }) => { + let setRequired = (required) ? { required: `Data ${title} Harus di Isi` } : {} + let setMaxLength = (maxlength) ? { maxLength: { value: maxlength, message: `Maksimal ${maxlength} Karakter` } } : {} + + let validateList = {...setRequired,...setMaxLength} + + const onChange = (_, dateString) => { + setValue(name, { + startDate: dateString[0], + endDate: dateString[1] + }, { shouldValidate: true }) + }; + + const newFormat = Helper.setFormatInputDate(picker, format) + + return ( +
+
+ + + + + {error[name] &&
{error[name]?.message}
} +
+
+ ); + }; + + export default InputDateRange; + \ No newline at end of file diff --git a/src/components/util/Input/InputEmail.jsx b/src/components/util/Input/InputEmail.jsx new file mode 100644 index 0000000..bc0ca14 --- /dev/null +++ b/src/components/util/Input/InputEmail.jsx @@ -0,0 +1,50 @@ +const InputEmail = ({ + title, + name, + register, + error, + placeholder, + maxlength, + required, + }) => { + let setRequired = (required) ? {required: "Data must be filled in"} : {} + let setMaxLength = (maxlength) ? {maxLength: {value: maxlength, message: `Maksimal ${maxlength} Karakter`}} : {} + let setEmail = { + pattern: { + value: /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i, + message: 'Format E-Mail Salah', + } + } + + let validateList = {...setRequired, ...setMaxLength, ...setEmail} + + const handleInput = (e) => { + e.target.value = e.target.value.replace(/[^a-zA-Z0-9_!@#$-%+.=&]/g, ""); + }; + return ( + <> +
+
+ + + {error[name] &&
{error[name]?.message}
} +
+ +
+ + ); +}; + +export default InputEmail; + \ No newline at end of file diff --git a/src/components/util/Input/InputHidden.jsx b/src/components/util/Input/InputHidden.jsx new file mode 100644 index 0000000..454ca77 --- /dev/null +++ b/src/components/util/Input/InputHidden.jsx @@ -0,0 +1,37 @@ +const InputHidden = ({ + title, + name, + register, + error, + placeholder, + maxlength, + required, + setReadonly +}) => { + let setRequired = (required) ? { required: `Data ${title} Harus di Isi` } : {} + let setMaxLength = (maxlength) ? { maxLength: { value: maxlength, message: `Maksimal ${maxlength} Karakter` } } : {} + + let validateList = { ...setRequired, ...setMaxLength } + + return ( + <> +
+
+ + {error[name] &&
{error[name]?.message}
} +
+ +
+ + ); +}; + +export default InputHidden; diff --git a/src/components/util/Input/InputImage.jsx b/src/components/util/Input/InputImage.jsx new file mode 100644 index 0000000..eadca09 --- /dev/null +++ b/src/components/util/Input/InputImage.jsx @@ -0,0 +1,63 @@ +"use client" +import {useEffect} from "react"; + +const InputImage = ({ + title, + name, + register, + error, + placeholder, + maxlength, + required, +}) => { + let setRequired = (required) ? { required: "Data must be filled in" } : {} + let setMaxLength = (maxlength) ? { maxLength: { value: maxlength, message: `Maksimal ${maxlength} Karakter` } } : {} + + let validateList = {...setRequired,...setMaxLength} + + useEffect(() => { + // $('#changeImage_'+name).hide(); + // $('#imageInput_'+name).on('change', function() { + // let inputImg = $(this); + // if(inputImg.val().length > 0) { + // let fileReader = new FileReader(); + // fileReader.onload = function (data) { + // $("#imagePreview_"+name).attr('src', data.target.result); + // } + // fileReader.readAsDataURL(inputImg.prop('files')[0]); + // $("#imagePreview_"+name).css('display', 'block'); + // $('#changeImage_'+name).css('display', 'block'); + + // } + // }); + + // $('#changeImage_'+name).on('click', function() { + // let $control = $(this); + // $control.css('display', 'none'); + // $('#imageInput_'+name).val(''); + // let $preview = $("#imagePreview_"+name); + // $preview.attr('src', '/img/no-image.jpg'); + // }); + }, []) + + + return ( + <> +
{title}
+
Image Format PNG,JPG,JPEG Max 500 Kb. Recommendation resolution is 800 x 800
+
+ + +
+ + +
+ + +
+ + + ); +}; + +export default InputImage; diff --git a/src/components/util/Input/InputLatLng.jsx b/src/components/util/Input/InputLatLng.jsx new file mode 100644 index 0000000..a6fdb3e --- /dev/null +++ b/src/components/util/Input/InputLatLng.jsx @@ -0,0 +1,56 @@ +import {useEffect, useState} from 'react'; +import {MapContainer, Marker, Popup, TileLayer, useMapEvents} from 'react-leaflet'; + +const InputLatLng = ({ setValue, latlon }) => { + + function LocationMarker() { + const [position, setPosition] = useState(null) + const [lon, setLon] = useState(); + const [lat, setLat] = useState(); + + const map = useMapEvents({ + click(e) { + map.locate(); + setPosition(e.latlng); + map.flyTo(e.latlng, map.getZoom()); + + setLon(e.latlng.lng); + setLat(e.latlng.lat); + setValue('lat', e.latlng.lat); + setValue('lon', e.latlng.lng); + }, + }) + + useEffect(() => { + setPosition(latlon); + }, []); + + return position === null ? null : ( + + + Latitude : {lat} +

Longitude : {lon} +
+
+ ) + } + + return ( +
+ + + + +
+ ); +}; + +export default InputLatLng; diff --git a/src/components/util/Input/InputMoney.jsx b/src/components/util/Input/InputMoney.jsx new file mode 100644 index 0000000..16f70bd --- /dev/null +++ b/src/components/util/Input/InputMoney.jsx @@ -0,0 +1,99 @@ +const InputMoney = ({ + title, + name, + register, + error, + placeholder, + maxlength, + required, + setReadonly, + satuanInput, + allowDecimal + }) => { + + let setRequired = (required) ? {required: `Data ${title} Harus di Isi`} : {} + let setMaxLength = (maxlength) ? {maxLength: {value: maxlength, message: `Maksimal ${maxlength} Karakter`}} : {} + + let validateList = {...setRequired, ...setMaxLength} + + const handleInput = (e) => { + // e.target.value = e.target.value.replace(/[^0-9]/g, ''); + var separator = "."; + var a = e.target.value; + var b = a.replace(/[^\d]/g, ""); + var c = ""; + var panjang = b.length; + var j = 0; + for (var i = panjang; i > 0; i--) { + j = j + 1; + if (((j % 3) == 1) && (j != 1)) { + c = b.substr(i - 1, 1) + separator + c; + } else { + c = b.substr(i - 1, 1) + c; + } + } + e.target.value = c + }; + + const handleInputDecimal = (event) => { + const inputField = event.target; + let value = inputField.value; + + // Remove any characters that are not digits or the comma + value = value.replace(/[^\d,]/g, ''); + + // Ensure there is only one comma + const commaIndex = value.indexOf(','); + if (commaIndex !== -1) { + const beforeComma = value.slice(0, commaIndex); + const afterComma = value.slice(commaIndex + 1).replace(/,/g, ''); // Remove any additional commas + value = beforeComma + ',' + afterComma; + } + + // Format the integer part with thousand separators + const parts = value.split(','); + parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, '.'); + + // Limit to two decimal places + if (parts.length > 1) { + parts[1] = parts[1].slice(0, 2); + } + + // Join the parts back together + value = parts.join(','); + + + event.target.value = value + } + + let setStyle = (satuanInput) ? {textAlign:'right',paddingRight:'40px'} :{} + return ( + <> +
+
+ {(satuanInput) ?
{satuanInput}
:''} + + + {error[name] &&
{error[name]?.message}
} +
+ +
+ + ); +}; + +export default InputMoney; + \ No newline at end of file diff --git a/src/components/util/Input/InputNumber.jsx b/src/components/util/Input/InputNumber.jsx new file mode 100644 index 0000000..3612df5 --- /dev/null +++ b/src/components/util/Input/InputNumber.jsx @@ -0,0 +1,57 @@ +const InputNumber = ({ + title, + name, + register, + error, + placeholder, + maxlength, + minlength, + required, + setReadonly, + satuanInput, + maxNominal, + minNominal + }) => { + + let setRequired = (required) ? {required: `Data ${title} Harus di Isi`} : {} + let setMaxLength = (maxlength) ? {maxLength: {value: maxlength, message: `Maksimal ${maxlength} Karakter`}} : {} + let setMinLength = (minlength) ? {minLength: {value: minlength, message: `Minimal ${minlength} Karakter`}} : {} + let setMaxNominal = (maxNominal) ? {max: {value: maxNominal, message: `Maksimal ${maxNominal} ${satuanInput ?? ''}`}} : {} + let setMinNominal = (minNominal) ? {min: {value: minNominal, message: `Minimal ${minNominal} ${satuanInput ?? ''}`}} : {} + + let validateList = {...setRequired, ...setMaxLength, ...setMaxNominal,...setMinNominal, ...setMinLength} + + + const handleInput = (e) => { + e.target.value = e.target.value.replace(/[^0-9]/g, ''); + }; + return ( + <> +
+
+ {(satuanInput) ?
{satuanInput}
:''} + + + {error[name] &&
{error[name]?.message}
} +
+ +
+ + ); +}; + +export default InputNumber; + \ No newline at end of file diff --git a/src/components/util/Input/InputPassword.jsx b/src/components/util/Input/InputPassword.jsx new file mode 100644 index 0000000..7efa987 --- /dev/null +++ b/src/components/util/Input/InputPassword.jsx @@ -0,0 +1,61 @@ +"use client" +import {useRef, useState} from "react"; +import {EyeFilled, EyeInvisibleFilled} from '@ant-design/icons'; + +const InputPassword = ({ + title, + name, + register, + error, + placeholder, + maxlength, + required, + }) => { + + + const [showPassword, setShowPassword] = useState(false); + const inputRef = useRef(null); + + let setRequired = (required) ? {required: `${title} Harus di Isi`} : {} + let setMaxLength = (maxlength) ? {maxLength: {value: maxlength, message: `Maksimal ${maxlength} Karakter`}} : {} + let validateList = {...setRequired, ...setMaxLength} + + const handleInput = (e) => { + e.target.value = e.target.value.replace(/[^a-zA-Z0-9_!@#$-%+=&]/g, ""); + }; + const togglePassword = () => { + setShowPassword(prevState => !prevState); + }; + + + return ( + <> +
+
+ +
+ {showPassword ? : } +
+ + {error[name] &&
{error[name]?.message}
} +
+ +
+ + ); +}; + +export default InputPassword; + \ No newline at end of file diff --git a/src/components/util/Input/InputPercentage.jsx b/src/components/util/Input/InputPercentage.jsx new file mode 100644 index 0000000..a771243 --- /dev/null +++ b/src/components/util/Input/InputPercentage.jsx @@ -0,0 +1,81 @@ +import {InputNumber} from 'antd' +import { useEffect, useState } from 'react'; +import { Controller } from 'react-hook-form'; + +const InputPercentage = ({ + title, + name, + register, + error, + placeholder, + maxlength, + required, + setReadonly, + setValue, + val, + control +}) => { + let setRequired = required + ? { required: `Data ${title} Harus di Isi` } + : {}; + let setMaxLength = maxlength + ? { + maxLength: { + value: maxlength, + message: `Maksimal ${maxlength} Karakter`, + }, + } + : {}; + + let validateList = { ...setRequired, ...setMaxLength }; + + + + + + + return ( + <> +
+
+ ( + value ? `${value}` : ''} + parser={(value) => value.replace('%', '')} + readOnly={setReadonly} + className="form-control borderInput floating-input" + name={name} + maxLength={maxlength ? maxlength : 250} + placeholder={placeholder ? placeholder : `.`} + onChange={(value) => field.onChange(value)} + {...register(name, validateList)} + {...field} + // onChange={onChange} + // defaultValue={valueInput} + /> + )} + /> + + + {error[name] && ( +
{error[name]?.message}
+ )} +
+
+ + ); +}; + +export default InputPercentage; diff --git a/src/components/util/Input/InputSelect.jsx b/src/components/util/Input/InputSelect.jsx new file mode 100644 index 0000000..636cff7 --- /dev/null +++ b/src/components/util/Input/InputSelect.jsx @@ -0,0 +1,66 @@ +import {Select} from 'antd'; + +const InputSelect = ({ + title, + name, + register, + error, + placeholder, + required, + options, + setValue, + setReadonly, + setDisabled, + val, + loading, + withSearch = true, + getDataOnChange + }) => { + let setRequired = (required) ? {required: `Data ${title} Harus di Isi`} : {} + let validateList = {...setRequired}; + + const handleChange = (value) => { + setValue(name, value, {shouldValidate: true}) + if (getDataOnChange) getDataOnChange(value, setValue) + }; + // const onSearch = (value) => { + // console.log('search:', value); + // }; + + const filterOption = (input, option) => + (option?.label ?? '').toLowerCase().includes(input.toLowerCase()); + + + return ( + <> +
+
+ + + {error[name] &&
{error[name]?.message}
} +
+
+ + ); +}; + +export default InputSelectHeader; diff --git a/src/components/util/Input/InputSwitch.jsx b/src/components/util/Input/InputSwitch.jsx new file mode 100644 index 0000000..d7e3767 --- /dev/null +++ b/src/components/util/Input/InputSwitch.jsx @@ -0,0 +1,74 @@ +import {Switch} from 'antd' +import { useEffect, useState } from 'react'; + +const InputSwitch = ({ + title, + name, + register, + setValue, + setReadonly, + value +}) => { + + const onChange = (checked) => { + setValue(name, checked ? true : false) + setChecked(checked) + }; + + const [checked, setChecked] = useState(value) + + useEffect(() => { + setChecked(value) + }, [value]) + + + + return ( + <> + { + setReadonly ? + ( +
+
+ + +
+
+ ) + : + ( +
+
+

{title}

+ + +
+
+ ) + } + + + ); +}; + +export default InputSwitch; diff --git a/src/components/util/Input/InputText.jsx b/src/components/util/Input/InputText.jsx new file mode 100644 index 0000000..ca09827 --- /dev/null +++ b/src/components/util/Input/InputText.jsx @@ -0,0 +1,41 @@ +const InputText = ({ + title, + name, + register, + error, + placeholder, + maxlength, + required, + setReadonly + }) => { + let setRequired = (required) ? {required: `Data ${title} Harus di Isi`} : {} + let setMaxLength = (maxlength) ? {maxLength: {value: maxlength, message: `Maksimal ${maxlength} Karakter`}} : {} + + let validateList = {...setRequired, ...setMaxLength} + + return ( + <> +
+
+ + + {error[name] &&
{error[name]?.message}
} +
+ +
+ + ); +}; + +export default InputText; diff --git a/src/components/util/Input/InputTextTask.jsx b/src/components/util/Input/InputTextTask.jsx new file mode 100644 index 0000000..3476ae1 --- /dev/null +++ b/src/components/util/Input/InputTextTask.jsx @@ -0,0 +1,70 @@ +"use client"; + +const InputTextTask = ({ + title, + name, + register, + error, + placeholder, + maxlength, + required, + submitOnEnter +}) => { + let setRequired = required ? { required: "Data must be filled in" } : {}; + let setMaxLength = maxlength + ? { + maxLength: { + value: maxlength, + message: `Maksimal ${maxlength} Karakter`, + }, + } + : {}; + + let validateList = { ...setRequired, ...setMaxLength }; + + function autoResize() { + const textarea = document.getElementById(name); + textarea.style.height = 'auto'; // Reset the height to auto to recalculate the actual height + textarea.style.height = (textarea.scrollHeight) + 'px'; // Set the height to the scrollHeight + } + + + const handleKeyDown = (event) => { + if (event.key === 'Enter') { + // 👇 Get input value + event.preventDefault(); + submitOnEnter() + } + }; + + + return ( + <> +
+
+ + + + + {error[name] && ( +
{error[name]?.message}
+ )} +
+
+ + ); +}; + +export default InputTextTask; diff --git a/src/components/util/Input/InputTextarea.jsx b/src/components/util/Input/InputTextarea.jsx new file mode 100644 index 0000000..fab150f --- /dev/null +++ b/src/components/util/Input/InputTextarea.jsx @@ -0,0 +1,38 @@ +const InputTextarea = ({ + title, + name, + register, + error, + maxlength, + required, + setReadonly, + className, + ...props + }) => { + let setRequired = (required) ? {required: ` ${title} Harus di Isi`} : {} + let setMaxLength = (maxlength) ? {maxLength: {value: maxlength, message: `Maksimal ${maxlength} Karakter`}} : {} + + let validateList = {...setRequired, ...setMaxLength} + + return ( + <> +
+
+ + + + {error[name] &&
{error[name]?.message}
} +
+ +
+ + ); +}; + +export default InputTextarea; diff --git a/src/components/util/Input/InputTime.jsx b/src/components/util/Input/InputTime.jsx new file mode 100644 index 0000000..e7c9ab1 --- /dev/null +++ b/src/components/util/Input/InputTime.jsx @@ -0,0 +1,46 @@ +import {TimePicker} from "antd"; + +const InputTime = ({ + title, + name, + register, + error, + placeholder, + maxlength, + required, + setReadonly, + setValue +}) => { + let setRequired = (required) ? { required: `Data ${title} Harus di Isi` } : {} + let setMaxLength = (maxlength) ? { maxLength: { value: maxlength, message: `Maksimal ${maxlength} Karakter` } } : {} + + let validateList = { ...setRequired, ...setMaxLength } + const format = 'HH:mm'; + + const onChange = (_, dateString) => { + setValue(name, dateString, { shouldValidate: true }); + }; + + return ( +
+
+ + + {error[name] &&
{error[name]?.message}
} +
+
+ ); +}; + +export default InputTime; diff --git a/src/components/util/Input/InputUploadImage.jsx b/src/components/util/Input/InputUploadImage.jsx new file mode 100644 index 0000000..a3921a4 --- /dev/null +++ b/src/components/util/Input/InputUploadImage.jsx @@ -0,0 +1,146 @@ +import React, {useState} from "react"; +import {CloseOutlined, EditOutlined, LoadingOutlined,} from "@ant-design/icons"; +import {Button, Upload} from "antd"; +import ExportedImage from "next-image-export-optimizer"; + +const getBase64 = (img, callback) => { + const reader = new FileReader(); + reader.addEventListener("load", () => callback(reader.result)); + reader.readAsDataURL(img); +}; + +const InputUploadImage = ({ + title, + name, + register, + error, + required, + maxSize = 2, + setError, + setValue, + extensions = ["png", "jpg", "jpeg"], + }) => { + const [loading, setLoading] = useState(false); + const [imageUrl, setImageUrl] = useState(); + + let setRequired = required ? {required: `Upload file ${title}`} : {}; + let validateList = {...setRequired}; + + const handleChange = (info) => { + if (info.file.status === "uploading") { + setLoading(true); + return; + } + if (info.file.status === "done") { + getBase64(info.file.originFileObj, (url) => { + setLoading(false); + setImageUrl(url); + setValue(name, info.file, {shouldValidate: true}); + }); + } + }; + + const beforeUpload = (file) => { + const extFileUploaded = file.type.split("/")[1].toLowerCase(); + const isExtValid = extensions.includes(extFileUploaded); + if (!extensions.includes(extFileUploaded)) + setError(name, { + type: "custom", + message: "File yang diupload harus " + extensions.join(", "), + }); + + const isSizeFileValid = file.size / 1024 / 1024 < maxSize; + if (!isSizeFileValid) + setError(name, { + type: "custom", + message: `Maksimal gambar yang diupload ${maxSize} MB`, + }); + return isExtValid && isSizeFileValid; + }; + + const clearImage = () => { + setImageUrl(null); + setValue(name, null, {shouldValidate: true}); + }; + + return ( +
+
+ +
+ +
+ {error[name] && ( +
{error[name]?.message}
+ )} +
+
+ ); +}; + +export default InputUploadImage; diff --git a/src/components/util/Input/InputUsername.jsx b/src/components/util/Input/InputUsername.jsx new file mode 100644 index 0000000..b4d3086 --- /dev/null +++ b/src/components/util/Input/InputUsername.jsx @@ -0,0 +1,49 @@ +const InputUsername = ({ + title, + name, + register, + error, + placeholder, + maxlength, + minlength, + required, + setReadonly + }) => { + let setRequired = (required) ? {required: `${title} Harus di Isi`} : {} + let setMaxLength = (maxlength) ? {maxLength: {value: maxlength, message: `Maksimal ${maxlength} Karakter`}} : {} + let setMinLength = (minlength) ? {minLength: {value: minlength, message: `Minimal ${minlength} Karakter`}} : {} + + let validateList = {...setRequired, ...setMaxLength, ...setMinLength} + + const handleInput = (e) => { + e.target.value = e.target.value.replace(/[^a-zA-Z0-9_!@#$-%+=&]/g, ""); + }; + return ( + <> +
+
+ + + {error[name] &&
{error[name]?.message}
} +
+ +
+ + ); +}; + +export default InputUsername; + \ No newline at end of file diff --git a/src/components/util/Input/index.jsx b/src/components/util/Input/index.jsx new file mode 100644 index 0000000..0973f1a --- /dev/null +++ b/src/components/util/Input/index.jsx @@ -0,0 +1,58 @@ +import InputEmail from "./InputEmail"; +import InputImage from './InputImage'; +import InputNumber from './InputNumber'; +import InputPassword from "./InputPassword"; +import InputSelect from './InputSelect'; +import InputText from "./InputText"; +import InputTextTask from './InputTextTask'; +import InputTextarea from "./InputTextarea"; +import InputUsername from "./InputUsername"; +import InputDate from './InputDate'; +import InputDateRange from './InputDateRange'; +import InputUploadImage from "./InputUploadImage"; +import InputMoney from "@/components/util/Input/InputMoney"; +import InputCustom from "./InputCustom"; +import InputPercentage from "./InputPercentage"; +import InputSwitch from "./InputSwitch"; +import InputAntFile from "./InputAntFile"; + +const Input = { + Text: InputText, + Number: InputNumber, + Money: InputMoney, + Select: InputSelect, + Username: InputUsername, + Email: InputEmail, + Password: InputPassword, + Textarea: InputTextarea, + Image: InputImage, + DateRange: InputDateRange, + TextTask: InputTextTask, + Date: InputDate, + UploadImage: InputUploadImage, + Custom: InputCustom, + Percentage: InputPercentage, + Switch: InputSwitch, + AntFile: InputAntFile +} + +export const REF_INPUT_NAME = { + TEXT: 'Text', + NUMBER: 'Number', + MONEY: 'Money', + SELECT: 'Select', + USERNAME: 'Username', + EMAIL: 'Email', + PASSWORD: 'Password', + TEXTAREA: 'Textarea', + IMAGE: 'Image', + DATERANGE: 'DateRange', + TEXT_TASK: 'TextTask', + DATE: 'Date', + UPLOAD_IMAGE: 'UploadImage', + CUSTOM: 'Custom', + PERCENTAGE: 'Percentage', + SWITCH: 'Switch', +} + +export default Input diff --git a/src/components/util/LoadingPage.jsx b/src/components/util/LoadingPage.jsx new file mode 100644 index 0000000..08c763f --- /dev/null +++ b/src/components/util/LoadingPage.jsx @@ -0,0 +1,19 @@ +import React from 'react' +import NextTopLoader from 'nextjs-toploader'; + +const LoadingPage = () => { + return ( + + ) +} + +export default LoadingPage \ No newline at end of file diff --git a/src/components/util/LoadingTable.jsx b/src/components/util/LoadingTable.jsx new file mode 100644 index 0000000..006bfb3 --- /dev/null +++ b/src/components/util/LoadingTable.jsx @@ -0,0 +1,36 @@ +import {Skeleton} from "antd"; + +export default function LoadingTable() { + return ( + <> +
+
+ +
+
+ +
+
+ +
+ +
+ + + ); +} diff --git a/src/components/util/ModalConfirm.jsx b/src/components/util/ModalConfirm.jsx new file mode 100644 index 0000000..ac3c3f7 --- /dev/null +++ b/src/components/util/ModalConfirm.jsx @@ -0,0 +1,35 @@ +import confirmStore from "@/store/confirmStore"; +import {Modal, Spin} from "antd"; + +export default function ModalConfirm() { + const { confirmStat, confirmClose,confirmAct,title,subTitle,confirmLoading } = confirmStore(); + return ( + <> + + +
+ +
+
+
+
+ +
{title}
+
{subTitle}
+ + +
+ + +
+
+
+
+
+
+ +
+
+ + ); +} diff --git a/src/components/util/ModalCustom.jsx b/src/components/util/ModalCustom.jsx new file mode 100644 index 0000000..52f61f5 --- /dev/null +++ b/src/components/util/ModalCustom.jsx @@ -0,0 +1,4 @@ + +export default function ModalCustom({setOpen,width,children,title,subTitle}){ + +} \ No newline at end of file diff --git a/src/components/util/ModalForm.jsx b/src/components/util/ModalForm.jsx new file mode 100644 index 0000000..1cc64ec --- /dev/null +++ b/src/components/util/ModalForm.jsx @@ -0,0 +1,43 @@ +import {Modal, Spin} from "antd"; +import modalStore from "@/store/modal"; + +import {CloseOutlined} from '@ant-design/icons'; + +export default function ModalForm({ + size, + title, + subTitle, + children, + action, + loading, + }) { + + const {modalStat, modalClose, modalLoading} = modalStore(); + + return ( + <> + + +
+ +
+
+
{title}
+
{subTitle}
+
+
+ {children} +
+
+ +
+ {action} +
+ + + + ); +} diff --git a/src/components/util/ModalNotif.jsx b/src/components/util/ModalNotif.jsx new file mode 100644 index 0000000..c624ec4 --- /dev/null +++ b/src/components/util/ModalNotif.jsx @@ -0,0 +1,52 @@ +import notifStore from "@/store/notifStore"; +import {Modal} from "antd"; +import {CheckCircleOutlined, CloseCircleOutlined, InfoCircleOutlined, WarningOutlined} from "@ant-design/icons"; +import {useEffect} from "react"; + +export default function ModalNotif() { + const {notifStat, notifType, title, subTitle, notifClose} = notifStore(); + + let type = (notifType) ? notifType : 'success' + + const IconList = () => { + let type = (notifType) ? notifType : 'success' + if (type === 'info') return () + if (type === 'warning') return () + if (type === 'danger') return () + if (type === 'success') return () + } + + useEffect(() => { + if (notifStat === true) setTimeout(notifClose, 2000); + }, [notifStat]); + + return ( + <> + +
+ +
+
+
+
+
+
+ +
+
+
{title}
+
{subTitle}
+
+
+ + +
+
+
+
+
+ +
+ + ); +} diff --git a/src/components/util/ModalSessionTimeout.jsx b/src/components/util/ModalSessionTimeout.jsx new file mode 100644 index 0000000..c4c5c43 --- /dev/null +++ b/src/components/util/ModalSessionTimeout.jsx @@ -0,0 +1,91 @@ +import useAuth from "@/hooks/useAuth"; +import {updateExpireTime} from "@/hooks/useIdleDetection"; +import {Modal} from "antd"; +import {useRouter} from "next/navigation"; +import {useEffect, useState} from "react"; +import {API} from "@/lib/API"; + +export default function ModalSessionTimeout({setIsIdle}) { + const {removeAuth} = useAuth(); + const router = useRouter(); + + const [countdown, setCountdown] = useState(30); + const [open, setOpen] = useState(true); + + const logout = async () => { + let response = await API.GET('/auth/logout'); + console.log(response) + if (response.status === 200) { + await removeAuth() + router.push("/login"); + } + } + + const stillConnected = () => { + updateExpireTime(); + setOpen(false); + setIsIdle(false); + }; + + useEffect(() => { + setTimeout(() => { + setCountdown(countdown - 1); + }, 1000); + + if (countdown <= 0) { + logout() + } + }, [countdown]); + + return ( + <> + +
+
+
+
+
+
+ Session Timeout +
+
+ Sesi login anda akan segera berakhir + dalam {countdown} detik.{" "} +
+ +
+ + + +
+
+
+
+
+
+
+ + ); +} diff --git a/src/components/util/SearchInput.jsx b/src/components/util/SearchInput.jsx new file mode 100644 index 0000000..55dd1f6 --- /dev/null +++ b/src/components/util/SearchInput.jsx @@ -0,0 +1,12 @@ +import {SearchOutlined,} from '@ant-design/icons'; + +export default function SearchInput({handleSearch, style}) { + return ( +
+ + +
+ ) + + +}; diff --git a/src/components/util/WrapperContent.jsx b/src/components/util/WrapperContent.jsx new file mode 100644 index 0000000..0f77479 --- /dev/null +++ b/src/components/util/WrapperContent.jsx @@ -0,0 +1,16 @@ +import {motion} from "framer-motion" + +export default function WrapperContent({children,type}) { + return( + <> + + {children} +
+
+ + ) +} \ No newline at end of file diff --git a/src/hooks/useAPI.jsx b/src/hooks/useAPI.jsx new file mode 100644 index 0000000..081d0e3 --- /dev/null +++ b/src/hooks/useAPI.jsx @@ -0,0 +1,63 @@ +import {useQuery} from "react-query"; +import {API} from '@/lib/API'; + +export const useAPI = { + GET, + POST, + PUT, + DELETE, + GET_SSO +}; + + +function GET(key, url, config) { + let configDefault = { + retry: false, + refetchOnWindowFocus: false, + } + + let resultConfig = {...configDefault, ...config} + + const result = useQuery({ + queryKey: key, + queryFn: async () => { + let result = await API.GET(url) + return result + }, + ...resultConfig + + }) + return result +} + +function GET_SSO(key, url, config) { + let configDefault = { + retry: false, + refetchOnWindowFocus: false, + } + + let resultConfig = {...configDefault, ...config} + + const result = useQuery({ + queryKey: key, + queryFn: async () => { + let result = await API.GET_SSO(url) + return result + }, + ...resultConfig + + }) + return result +} + +function POST(params) { + +} + +function PUT(params) { + +} + +function DELETE(params) { + +} \ No newline at end of file diff --git a/src/hooks/useAuth.jsx b/src/hooks/useAuth.jsx new file mode 100644 index 0000000..c25be44 --- /dev/null +++ b/src/hooks/useAuth.jsx @@ -0,0 +1,24 @@ +"use client" +import {API} from "@/lib/API"; + +const useAuth = () => { + const setAuth = async (token, user) => { + let res = await API.SET_COOKIE(token) + localStorage.setItem('userId', user); + + return res + } + + const removeAuth = async () => { + let res = await API.DELETE_COOKIE() + // localStorage.removeItem('userId') + // location.reload(); + } + + return { + setAuth, + removeAuth + } +} + +export default useAuth \ No newline at end of file diff --git a/src/hooks/useCheckStepPengajuan.jsx b/src/hooks/useCheckStepPengajuan.jsx new file mode 100644 index 0000000..0157993 --- /dev/null +++ b/src/hooks/useCheckStepPengajuan.jsx @@ -0,0 +1,16 @@ +import { STEP_PENGAJUAN } from '@/app/main/flpp/proses_pengajuan/page'; +import { notFound, useSearchParams } from 'next/navigation'; +import React from 'react' + +const useCheckStepPengajuan = () => { + const searchParams = useSearchParams(); + const stepName = searchParams.get("step"); + const id = searchParams.get("id"); + + if (!stepName || !id) return notFound(); + if (!STEP_PENGAJUAN[stepName]) return notFound(); + + return {stepName, id} +} + +export default useCheckStepPengajuan \ No newline at end of file diff --git a/src/hooks/useDebounce.jsx b/src/hooks/useDebounce.jsx new file mode 100644 index 0000000..3b6bfa0 --- /dev/null +++ b/src/hooks/useDebounce.jsx @@ -0,0 +1,17 @@ +import { useState, useEffect } from 'react'; + +export function useDebounce(value, delay = 500) { + const [debouncedValue, setDebouncedValue] = useState(value); + + useEffect(() => { + const handler = setTimeout(() => { + setDebouncedValue(value); + }, delay); + + return () => { + clearTimeout(handler); + }; + }, [value, delay]); + + return debouncedValue; +} \ No newline at end of file diff --git a/src/hooks/useFilterInboxTapera.jsx b/src/hooks/useFilterInboxTapera.jsx new file mode 100644 index 0000000..3c84bcd --- /dev/null +++ b/src/hooks/useFilterInboxTapera.jsx @@ -0,0 +1,46 @@ +import { DropdownAPI } from '@/lib/DropdownAPI' +import React, {useEffect, useState, useCallback} from 'react' +import { useDebounce } from './useDebounce'; + +const useFilterInboxTapera = () => { + + const [dropdownData, setDropdownData] = useState({}); + const [dropdownLoading, setDropdownLoading] = useState({ + products: true, + status: true + }); + + const [filter, setFilter] = useState({ + productId: '', statusPembiayaanId: '' + }) + + const [searchText, setSearchText] = useState(null) + const debounceSearchText = useDebounce(searchText) + + useEffect(() => { + const getRefDropdown = async () => { + const productList = await DropdownAPI.productTapera() + const stsPembiayaanList = await DropdownAPI.statusPembiayaan() + setDropdownData({ products: productList, status: stsPembiayaanList}) + setDropdownLoading({ products: false, status: false }) + } + + getRefDropdown() + }, []) + + const handleChangeFilter = useCallback((value, name) => { + setFilter(prev => ({...prev, [name]: value === undefined ? '' : value})) + }, []) + + return { + dropdownData, + dropdownLoading, + filter, + searchText, + setSearchText, + debounceSearchText, + handleChangeFilter + } +} + +export default useFilterInboxTapera \ No newline at end of file diff --git a/src/hooks/useIdleDetection.jsx b/src/hooks/useIdleDetection.jsx new file mode 100644 index 0000000..01dc70a --- /dev/null +++ b/src/hooks/useIdleDetection.jsx @@ -0,0 +1,52 @@ +"use client"; + +import {useEffect, useState} from "react"; + +const ONE_HOUR = 30 * 60 * 1000; // 30 menit +const TEN_SECONDS = 2 * 1000; // 10 + +export const updateExpireTime = () => { + const expireTime = Date.now() + ONE_HOUR; + localStorage.setItem("expireTime", expireTime); +}; + +const useIdleDetection = () => { + const [isIdle, setIsIdle] = useState(false); + + const checkInactivity = () => { + const expireTime = localStorage.getItem("expireTime"); + if (expireTime < Date.now()) { + setIsIdle(true); + } + }; + + useEffect(() => { + // Check for ever 1 seconds + const interval = setInterval(() => { + checkInactivity(); + }, 1000); + + return () => clearInterval(interval); + }, []); + + useEffect(() => { + updateExpireTime(); + + window.addEventListener("click", updateExpireTime); + window.addEventListener("keypress", updateExpireTime); + window.addEventListener("scroll", updateExpireTime); + window.addEventListener("mousemove", updateExpireTime); + + // Cleanup + return () => { + window.removeEventListener("click", updateExpireTime); + window.removeEventListener("keypress", updateExpireTime); + window.removeEventListener("scroll", updateExpireTime); + window.removeEventListener("mousemove", updateExpireTime); + }; + }, []); + + return { isIdle, setIsIdle }; +}; + +export default useIdleDetection; diff --git a/src/hooks/usePreventBackNavigation.jsx b/src/hooks/usePreventBackNavigation.jsx new file mode 100644 index 0000000..aa594be --- /dev/null +++ b/src/hooks/usePreventBackNavigation.jsx @@ -0,0 +1,38 @@ +import {useEffect} from 'react'; +import {usePathname, useRouter} from "next/navigation"; +import historyRouteStore from "@/store/historyRouteStore"; + +const usePreventBackNavigation = () => { + const router = useRouter(); + const pathname = usePathname() + const {setHistory,historyRoute} = historyRouteStore() + + useEffect(() => { + + setHistory(pathname) + + + }, [router]); + + useEffect(() => { + if (historyRoute === '/main/dashboard' || historyRoute === '/login'){ + + const handlePopState = (e) => { + e.preventDefault(); + window.history.pushState(null, '', window.location.href); + }; + + // Push the initial state + window.history.pushState(null, '', window.location.href); + window.addEventListener('popstate', handlePopState); + + return () => { + window.removeEventListener('popstate', handlePopState); + }; + + } + + }, [historyRoute]); +}; + +export default usePreventBackNavigation; diff --git a/src/hooks/useRouteHistory.jsx b/src/hooks/useRouteHistory.jsx new file mode 100644 index 0000000..a133997 --- /dev/null +++ b/src/hooks/useRouteHistory.jsx @@ -0,0 +1,30 @@ +import {useEffect, useState} from 'react'; + +import {useRouter} from "next/navigation"; + +const useRouteHistory = () => { + const router = useRouter(); + const [previousRoute, setPreviousRoute] = useState(''); + + useEffect(() => { + + if (!router || !router.events) { + console.error("Router or router events are not available."); + return; + } + + const handleRouteChange = (url) => { + setPreviousRoute(router.asPath); + }; + + router.events.on('routeChangeStart', handleRouteChange); + + return () => { + router.events.off('routeChangeStart', handleRouteChange); + }; + }, [router]); + + return previousRoute; +}; + +export default useRouteHistory; diff --git a/src/lib/API.jsx b/src/lib/API.jsx new file mode 100644 index 0000000..bfc1265 --- /dev/null +++ b/src/lib/API.jsx @@ -0,0 +1,283 @@ +const baseUrl = process.env.NEXT_PUBLIC_API_URL; +const baseUrlSSO = process.env.NEXT_PUBLIC_API_URL_SSO; +const baseUrlKaryawan = process.env.NEXT_PUBLIC_API_URL_ABSENSI; +import {deleteCookie, getCookie, setCookie} from 'cookies-next'; + +var tokenAPI = null; +export const API = { + GET, + POST, + POST_PUBLIC, + GETAuth, + POST_IMAGE, + PUT, + DELETE, + DELETE_COOKIE, + SET_COOKIE, + getToken +}; + +async function getToken() { + if (tokenAPI) return tokenAPI; + // const res = await fetch('/api/cookie', { + // method: 'GET', + // headers: { + // 'Content-Type': 'application/json' + // } + // }) + // const result = await res.json() + // tokenAPI = result.data.value + // return result.data.value + + tokenAPI = await getCookie('token'); + return tokenAPI + +} + +async function DELETE_COOKIE() { + // const res = await fetch('/api/cookie', { + // method: 'DELETE', + // headers: { + // 'Content-Type': 'application/json' + // } + // }) + // const result = await res.json() + // return result + await deleteCookie('token') + return '' +} + +async function SET_COOKIE(token) { + // let data = {token: token} + // const res = await fetch('/api/cookie', { + // method: 'POST', + // headers: { + // 'Content-Type': 'application/json' + // }, + // body: JSON.stringify(data) + // }) + // const result = await res.json() + // return result + + await setCookie('token', token, {sameSite:'lax',secure:true}); + return token +} + +async function GET(url) { + try { + let token = await getToken() + const res = await fetch(baseUrl + url, { + next: {revalidate: 3600}, + method: 'GET', + headers: { + 'Content-Type': 'application/json', + 'Authorization': "Bearer " + token + } + }) + + if (res.status === 401 || res.status === 403){ + await DELETE_COOKIE() + return window.location.replace("/login"); + } + + + + const result = await res.json() + + return { + status: res.status, + statusText: res.statusText, + result: result + } + } catch (res) { + + return { + status: 500, + statusText: "Error API Connection ", + result: { + message :"Error API Connection" + } + } + } +} + +async function GETAuth(url) { + try { + let token = await getToken() + const res = await fetch(baseUrl + url, { + next: {revalidate: 3600}, + method: 'GET', + headers: { + 'Content-Type': 'application/json', + 'Authorization': "Bearer " + token + } + }) + const result = await res.json() + return { + status: res.status, + statusText: res.statusText, + result: result + } + } catch (res) { + return { + status: 500, + statusText: res, + result: null + } + } +} + +async function POST(url, data) { + let token = await getToken() + try { + const res = await fetch(baseUrl + url, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'Authorization': "Bearer " + token + }, + body: JSON.stringify(data) + }) + + if (res.status === 401 || res.status === 403){ + await DELETE_COOKIE() + return window.location.replace("/login"); + } + + const result = await res.json() + return { + status: res.status, + statusText: res.statusText, + result: result + } + } catch (res) { + return { + status: 500, + statusText: res, + result: null + } + } +} + +async function POST_PUBLIC(url, data) { + try { + const res = await fetch(baseUrl + url, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(data) + }) + const result = await res.json() + return { + status: res.status, + statusText: res.statusText, + result: result + } + } catch (res) { + return { + status: 500, + statusText: res, + result: null + } + } + + +} + +async function POST_IMAGE(url, data) { + let token = await getToken() + + try { + const res = await fetch(baseUrl + url, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'Authorization': "Bearer " + token + }, + body: JSON.stringify(data) + }) + + if (res.status === 401 || res.status === 403){ + await DELETE_COOKIE() + return window.location.replace("/login"); + } + + const result = await res.json() + + return { + status: res.status, + statusText: res.statusText, + result: result + } + } catch (res) { + return { + status: 500, + statusText: res, + result: null + } + } +} + +async function PUT(url, data) { + let token = await getToken() + try { + const res = await fetch(baseUrl + url, { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + 'Authorization': "Bearer " + token + }, + body: JSON.stringify(data) + }) + + if (res.status === 401 || res.status === 403){ + await DELETE_COOKIE() + return window.location.replace("/login"); + } + + const result = await res.json() + return { + status: res.status, + statusText: res.statusText, + result: result + } + } catch (res) { + return { + status: 500, + statusText: res, + result: null + } + } +} + +async function DELETE(url) { + let token = await getToken() + try { + const res = await fetch(baseUrl + url, { + method: 'DELETE', + headers: { + 'Content-Type': 'application/json', + 'Authorization': "Bearer " + token + } + }) + + if (res.status === 401 || res.status === 403){ + await DELETE_COOKIE() + return window.location.replace("/login"); + } + + const result = await res.json() + return { + status: res.status, + statusText: res.statusText, + result: result + } + } catch (res) { + return { + status: 500, + statusText: res, + result: null + } + } +} diff --git a/src/lib/DropdownAPI.jsx b/src/lib/DropdownAPI.jsx new file mode 100644 index 0000000..cb242db --- /dev/null +++ b/src/lib/DropdownAPI.jsx @@ -0,0 +1,459 @@ +import {API} from "@/lib/API"; + +const role = async () => { + let response = await API.GET(`/ref/role`); + return response?.result?.data?.map((v) => { + return { + value: v.roleId, + label: v.roleNm, + }; + }); +} + const cabang = async () => { + let response = await API.GET(`/ref/branch`); + return response?.result?.data?.map((v) => { + return { + value: v.kdCab, + label: v.namaCabang, + }; + }); +} +const productType = async () => { + let response = await API.GET(`/ref/productType`); + return response?.result?.data?.map((v) => { + return { + value: v.productTypeId, + label: v.definition, + }; + }); +} + +const product = async () => { + let response = await API.GET(`/ref/product`); + return response?.result?.data?.map((v) => { + return { + value: v.id, + label: v.prodName, + }; + }); +} + +const branchType = async () => { + let response = await API.GET(`/ref/branch-type`); + return response?.result?.data?.map((v) => { + return { + value: v.id, + label: v.definition, + }; + }); +} + +const branch = async () => { + let response = await API.GET(`/ref/branch`); + return response?.result?.data?.map((v) => { + return { + value: v.id, + label: v.branchName, + }; + }); +} + +const wilayah = async () => { + let response = await API.GET(`/ref/wilayah`); + return response?.result?.data?.map((v) => { + return { + value: v.wilayahId, + label: v.wil, + }; + }); +} + +const bank = async () => { + let response = await API.GET(`/ref/bank`); + return response?.result?.data?.map((v) => { + return { + value: v.bankCode, + label: v.bankDescription, + }; + }); +} + +const productGroup = async () => { + let response = await API.GET(`/ref/group-product`); + return response?.result?.data?.map((v) => { + return { + value: v.id, + label: v.productGrpName, + }; + }); +} + +const developer = async () => { + let response = await API.GET(`/ref/developer`); + return response?.result?.data?.map((v) => { + return { + value: v.id, + label: v.developerName, + }; + }); +} + +const productCode = async () => { + let response = await API.GET(`/cbs/loan-product`); + return response?.result?.data?.map((v) => { + return { + value: v.prodid, + label: v.prodnm, + }; + }); +} + +const aplId = async () => { + let response = await API.GET(`/cbs-config/applid`); + return response?.result?.data?.map((v) => { + return { + value: v.parmid, + label: v.parmnm, + }; + }); +} + +const govPRG = async () => { + let response = await API.GET(`/cbs-config/govprg`); + return response?.result?.data?.map((v) => { + return { + value: v.parmid, + label: v.parmnm, + }; + }); +} + +const proposalType = async () => { + let response = await API.GET(`/ref/proposal-type`); + return response?.result?.data?.map((v) => { + return { + value: v.id, + label: v.definition, + }; + }); +} + +const workflowStatus = async () => { + let response = await API.GET(`/ref/workflow-status`); + return response?.result?.data?.map((v) => { + return { + value: v.id, + label: v.statusDefinition, + }; + }); +} + +const groupUser = async () => { + let response = await API.GET(`/ref/user-group`); + return response?.result?.data?.map((v) => { + return { + value: v.id, + label: v.groupDefinition, + }; + }); +} + +const workflowType = async () => { + let response = await API.GET(`/ref/workflow-type`); + return response?.result?.data?.map((v) => { + return { + value: v.id, + label: v.definition, + }; + }); +} + +const pekerjaanPPDPP = async () => { + let response = await API.GET(`/ref/pekerjaan-ppdpp`); + return response?.result?.data?.map((v) => { + return { + value: v.pekerjaan, + label: v.nmPekerjaan, + }; + }); +} + +const statusPembiayaan = async () => { + let response = await API.GET(`/ref/status-pembiayaan`); + return response?.result?.data?.map((v) => { + return { + value: v.statusPembiayaan, + label: v.namaStatusPembiayaan, + }; + }); +} + +const pekerjaan = async () => { + let response = await API.GET(`/ref/pekerjaan`); + return response?.result?.data?.map((v) => { + return { + value: v.idPekerjaan, + label: v.nmPekerjaan, + }; + }); +} + +const accountTypeFLPP = async () => { + let response = await API.GET(`/ref/jenis_accflpp`); + return response?.result?.data?.map((v) => { + return { + value: v.id, + label: v.definition, + }; + }); +} + +const masterGroupScoring = async () => { + let response = await API.GET(`/ref/master-group-scoring`); + return response?.result?.data?.map((v) => { + return { + value: v.id, + label: v.paramName, + }; + }); +} + +const developerScoring = async () => { + let response = await API.GET(`/ref/developer-param-scoring`); + return response?.result?.data?.map((v) => { + return { + value: v.id, + label: v.definition, + }; + }); +} + +const productTapera = async (filter = '') => { + if ( filter ) { + filter = '?' + new URLSearchParams(filter).toString() + } + + let response = await API.GET(`/ref-tapera/product${filter}`); + return response?.result?.data?.map((v) => { + return { + value: v.id, + label: v.namaProduk, + }; + }); +} + +const jenisPerumahanTapera = async () => { + let response = await API.GET(`/ref-tapera/jenis-perumahan`); + return response?.result?.data?.map((v) => { + return { + value: v.id, + label: v.definition, + }; + }); +} + +const perumahanTapera = async () => { + let response = await API.GET(`/ref-tapera/rumah`); + return response?.result?.data?.map((v) => { + return { + value: v.idRumah, + label: v.namaPerumahan, + ...v + }; + }); +} + +const wilayahTapera = async () => { + let response = await API.GET(`/ref-tapera/wilayah/dropdown`); + return response?.result?.map((v) => { + return { + value: v.wilayahId, + label: v.wil, + }; + }); +} + +const jenisImbPbg = async () => { + let response = await API.GET(`/ref-tapera/jenis-imb/dropdown`); + return response?.result?.map((v) => { + return { + value: v.id, + label: v.definition, + }; + }); +} + +const segemenPekerjaan = async () => { + let response = await API.GET(`/ref-tapera/segmen-pekerjaan/dropdown`); + return response?.result?.map((v) => { + return { + value: v.segmenCode, + label: v.definition, + }; + }); +} + +const jenisAkadTapera = async () => { + let response = await API.GET(`/ref-tapera/jenis-akad/dropdown`); + return response?.result?.map((v) => { + return { + value: v.id, + label: v.definition, + }; + }); +} + +const jenisBungaTapera = async () => { + let response = await API.GET(`/ref-tapera/jenis-bunga/dropdown`); + return response?.result?.map((v) => { + return { + value: v.id, + label: v.definition, + }; + }); +} + +const jenisPembayaranAngsuran = async () => { + let response = await API.GET(`/ref-tapera/jenis-bayar-angsuran/dropdown`); + return response?.result?.map((v) => { + return { + value: v.id, + label: v.definition, + }; + }); +} + +const jenisKelamin = async () => { + let response = await API.GET(`/ref/jenis-kelamin`); + return response?.result?.data?.map((v) => { + return { + value: v.id, + label: v.description, + }; + }); +} + +const statusKawin = async () => { + let response = await API.GET(`/ref/status-kawin`); + return response?.result?.data?.map((v) => { + return { + value: v.idStatusKawin, + label: v.nmStatusKawin, + }; + }); +} + +const jenisPembiayaan = async () => { + let response = await API.GET(`/ref-tapera/jenis-pembiayaan`); + return response?.result?.data?.map((v) => { + return { + value: v.id, + label: v.definition, + }; + }); +} + +const prinsipPembiayaan = async () => { + let response = await API.GET(`/ref-tapera/prinsip-pembiayaan`); + return response?.result?.data?.map((v) => { + return { + value: v.id, + label: v.definition, + }; + }); +} + +const tipeProgram = async () => { + let response = await API.GET(`/ref-tapera/tipe-program`); + return response?.result?.data?.map((v) => { + return { + value: v.id, + label: v.definition, + }; + }); +} + +const lokasiPerumahanTapera = async () => { + let response = await API.GET(`/ref-tapera/perumahaan/dropdown`); + return response?.result?.map((v) => { + return { + value: v.idLokasi, + label: v.namaPerumahan, + }; + }); +} + +const kolektibilitas = async () => { + let response = await API.GET(`/ref-tapera/kolektibilitas`); + return response?.result?.data?.map((v) => { + return { + value: v.id, + label: v.definition, + }; + }); +} + +const developerTapera = async () => { + let response = await API.GET(`/ref-tapera/developer`); + return response?.result?.data?.map((v) => { + return { + value: v.id, + label: v.developerName, + }; + }); +} + +const jenisSertifikat = async () => { + let response = await API.GET(`/ref/jenis-sertifikat`); + return response?.result?.data?.map((v) => { + return { + value: v.id, + label: v.defJenis, + }; + }); +} + + +export const DropdownAPI = { + role, + cabang, + productType, + branchType, + branch, + bank, + wilayah, + productGroup, + productCode, + aplId, + govPRG, + developer, + product, + proposalType, + workflowStatus, + groupUser, + workflowType, + pekerjaanPPDPP, + statusPembiayaan, + pekerjaan, + accountTypeFLPP, + masterGroupScoring, + developerScoring, + productTapera, + jenisPerumahanTapera, + perumahanTapera, + wilayahTapera, + jenisImbPbg, + segemenPekerjaan, + jenisAkadTapera, + jenisBungaTapera, + jenisPembayaranAngsuran, + jenisKelamin, + statusKawin, + jenisPembiayaan, + prinsipPembiayaan, + tipeProgram, + lokasiPerumahanTapera, + kolektibilitas, + developerTapera, + jenisSertifikat +}; diff --git a/src/lib/Helper.jsx b/src/lib/Helper.jsx new file mode 100644 index 0000000..b6bf841 --- /dev/null +++ b/src/lib/Helper.jsx @@ -0,0 +1,330 @@ +const dateFormat = 'DD/MM/YYYY' +const monthFormat = 'MM/YYYY' + +export const Helper = { + limitString, + today, + formatDate, + numFormatClear, + numFormat, + numFormatDec, + tableCSV, + tableExcel, + filterObjectByKeys, + differenceDate, + hashPassword, + randomId, + dateFormat, + monthFormat, + setFormatInputDate, + ComponentToString, + UcFirstWord, + maskingName, + getExtentionFileFromMimeType, + extensionToMimeType, + getBase64, + getFileExtensionFromUrl + +}; + +function limitString(text, limit) { + return text.length > limit ? text.substring(0, limit) + "..." : text; +} + + +function hashPassword(newPassword) { + let result = bcrypt.hashSync(newPassword, 10); + return result; +} + +function setFormatInputDate (picker, format) { + if ( picker == 'month' ) return !format ? monthFormat : format + if ( picker == 'year' ) return 'YYYY' + return format ? format : dateFormat +} + +function maskingName(name) { + if (name){ + let str = name.toString(); + if (str.length <= 5) { + let maskedLow = str.slice(0, 2) + '*'.repeat(str.length - 2); + return maskedLow; // Jika panjang string <= 5, + } + + let masked = str.slice(0, 5) + '*'.repeat(str.length - 5); + return masked; + } +} + +function today() { + var date = new Date(); + var year = date.getFullYear(); + return year + "-" + ("0" + (date.getMonth() + 1)).slice(-2) + "-" + ("0" + date.getDate()).slice(-2); +} + +function differenceDate(start, end) { + var tanggalAwal = new Date(start); + var tanggalAkhir = new Date(end); + var selisihWaktu = tanggalAkhir - tanggalAwal; + var sisaHari = selisihWaktu / (1000 * 60 * 60 * 24); + return sisaHari +} + +function formatDate(dates, type) { + var date = new Date(dates); + var monthNames = [ + "Januari", + "Februari", + "Maret", + "April", + "Mei", + "Juni", + "Juli", + "Agustus", + "September", + "Oktober", + "November", + "Desember", + ]; + + var monthNamesSmall = [ + "Jan", + "Feb", + "Mar", + "Apr", + "Mei", + "Jun", + "Jul", + "Ags", + "Sep", + "Okt", + "Nov", + "Des", + ]; + + var day = date.getDate(); + var monthIndex = date.getMonth(); + var year = date.getFullYear(); + var hour = date.getHours(); + var minute = date.getMinutes(); + var sec = date.getSeconds(); + + switch (type) { + case "d": + return day; + case "m": + return monthIndex + 1; + case "mm": + return monthNamesSmall[monthIndex]; + case "M": + return monthNames[monthIndex]; + case "Y": + return year; + case 'd-mm-Y': + return day + ' ' + monthNamesSmall[(monthIndex)] + ' ' + year; + case "d-m-Y": + return day + "-" + (monthIndex + 1) + "-" + year; + case "Y-m-d": + return year + "-" + (monthIndex + 1) + "-" + day; + case "d-M-Y": + return day + " " + monthNames[monthIndex] + " " + year; + case "d-m-Y H:i:s": + return ( + day + + "-" + + (monthIndex + 1) + + "-" + + year + + ", " + + hour + + ":" + + minute + + ":" + + sec + ); + case "d-M-Y H:i:s": + return ( + day + + " " + + monthNames[monthIndex] + + " " + + year + + ", " + + hour + + ":" + + minute + + ":" + + sec + ); + + case "dMYHis": + return ( + day + monthIndex + year + hour + minute + sec + ); + } +} + +function numFormatClear(data) { + return data.replace(/\./g, ""); +} + +function numFormatDec(amount, decimalCount = 2, decimal = ",", thousands = ".") { + try { + decimalCount = Math.abs(decimalCount); + decimalCount = isNaN(decimalCount) ? 2 : decimalCount; + + const negativeSign = amount < 0 ? "-" : ""; + + let i = parseInt(amount = Math.abs(Number(amount) || 0).toFixed(decimalCount)).toString(); + let j = (i.length > 3) ? i.length % 3 : 0; + + return negativeSign + (j ? i.substr(0, j) + thousands : '') + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + thousands) + (decimalCount ? decimal + Math.abs(amount - i).toFixed(decimalCount).slice(2) : ""); + } catch (e) { + console.log(e) + } +} + +function numFormat(amount, decimalCount = 0, decimal = ",", thousands = ".") { + // try { + // console.log(value) + // let val = (value / 1).toFixed(0).replace(".", ","); + // return val.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "."); + // }catch (e) { + // console.log(e) + // } + + try { + decimalCount = Math.abs(decimalCount); + decimalCount = isNaN(decimalCount) ? 2 : decimalCount; + + const negativeSign = amount < 0 ? "-" : ""; + + let i = parseInt(amount = Math.abs(Number(amount) || 0).toFixed(decimalCount)).toString(); + let j = (i.length > 3) ? i.length % 3 : 0; + + return negativeSign + (j ? i.substr(0, j) + thousands : '') + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + thousands) + (decimalCount ? decimal + Math.abs(amount - i).toFixed(decimalCount).slice(2) : ""); + } catch (e) { + console.log(e) + } +} + +function randomId(length) { + const charset = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; + let result = ''; + for (let i = 0; i < length; i++) { + const randomIndex = Math.floor(Math.random() * charset.length); + result += charset.charAt(randomIndex); + } + return result; +} + +function filterObjectByKeys(obj, keysToKeep) { + const filteredObject = {}; + for (const key in obj) { + if (!keysToKeep.includes(key)) { + filteredObject[key] = obj[key]; + } + } + return filteredObject; +} + +function tableCSV(name, idTable) { + var workbook = XLSX.utils.book_new(); + var worksheet_data = document.getElementById(idTable); + var worksheet = XLSX.utils.table_to_sheet(worksheet_data); + workbook.SheetNames.push(name); + workbook.Sheets[name] = worksheet; + + return XLSX.writeFile(workbook, name + ' ' + this.G_formatDate(Date(), 'd-M-Y') + '.xlsx'); +} + +function tableExcel(name, idTable) { + + var a = document.createElement('a'); + var data_type = 'data:application/vnd.ms-excel'; + var table_div = document.getElementById(idTable); + var table_html = table_div.outerHTML.replace(/ /g, '%20'); + a.href = data_type + ', ' + table_html; + a.download = name + ' ' + this.G_formatDate(Date(), 'd-M-Y') + '.xls'; + a.click(); + e.preventDefault(); +} + +function ComponentToString() { + console.log(result); +} + +function UcFirstWord(str) +{ + var pieces = str.split(" "); + for ( var i = 0; i < pieces.length; i++ ) + { + var j = pieces[i].charAt(0).toUpperCase(); + pieces[i] = j + pieces[i].substr(1); + } + return pieces.join(" "); +} + + +function getExtentionFileFromMimeType (mimeType) { + const mimeTypeMap = { + 'image/jpeg': 'jpg', + 'image/png': 'png', + 'image/gif': 'gif', + 'application/pdf': 'pdf', + 'text/plain': 'txt', + 'application/msword': 'doc', + 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': 'docx', + 'application/vnd.ms-excel': 'xls', + 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': 'xlsx', + // Add more MIME types and their extensions as needed + }; + return mimeTypeMap[mimeType] || 'unknown'; +}; + +function extensionToMimeType (extension) { + const mimeTypes = { + 'jpg': 'image/jpeg', + 'jpeg': 'image/jpeg', + 'png': 'image/png', + 'gif': 'image/gif', + 'bmp': 'image/bmp', + 'svg': 'image/svg+xml', + 'webp': 'image/webp', + 'pdf': 'application/pdf', + 'doc': 'application/msword', + 'docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', + 'xls': 'application/vnd.ms-excel', + 'xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', + 'ppt': 'application/vnd.ms-powerpoint', + 'pptx': 'application/vnd.openxmlformats-officedocument.presentationml.presentation', + 'txt': 'text/plain', + 'zip': 'application/zip', + 'tar': 'application/x-tar', + 'gz': 'application/gzip', + // Add more mappings as needed + }; + + return mimeTypes[extension.toLowerCase()] || 'application/octet-stream'; // Fallback for unknown types + }; + +function getBase64(file) { + return new Promise((resolve, reject) => { + const reader = new FileReader(); + reader.readAsDataURL(file); + reader.onload = () => resolve(reader.result); + reader.onerror = reject; + }); +}; + +function getFileExtensionFromUrl (url) { + // Use URL API to parse the URL + const urlObj = new URL(url); + // Get the pathname from the URL + const path = urlObj.pathname; + // Get the extension from the last part of the path + const extension = path.split('.').pop().toLowerCase(); + + // Check if the extension is valid (not the same as the filename) + return extension !== path ? extension : ''; // Return empty string if no extension found + }; \ No newline at end of file diff --git a/src/lib/RefStatus.js b/src/lib/RefStatus.js new file mode 100644 index 0000000..3655919 --- /dev/null +++ b/src/lib/RefStatus.js @@ -0,0 +1,33 @@ +export const REF_STS_PEMBIAYAAN = { + BARU: 1, + TINDAKLANJUT_CABANG: 2, + PENERIMAAN_TINDAKLANJUT: 3, + PERSETUJUAN_SP3K: 4, + VERIFIKASI_KELAYAKAN_OK: 5, + AKAD: 6, + JADWAL_ANGSUR: 7, + PENOLAKAN_TINDAKLANJUT: 91, + PENOLAKAN_SP3K: 92 +} + +export const REF_KELENGKAPAN_DATA = { + BELUM_LENGKAP_FOLLOW_UP: 1, + LENGKAP_FOLLOW_UP: 2, + BELUM_LENGKAP_SP3K: 3, + LENGKAP_SP3K: 4, + BELUM_LENGKAP_AKAD: 5, + LENGKAP_AKAD: 6, + BELUM_LENGKAP_BATCH: 7, + LENGKAP_BATCH: 91 +} + +export const REF_DROPDOWN_CONFIRM = [ + { + value: 1, + label: "Ya" + }, + { + value: 0, + label: "Tidak" + } +] diff --git a/src/lib/constans.js b/src/lib/constans.js new file mode 100644 index 0000000..6f2fcfc --- /dev/null +++ b/src/lib/constans.js @@ -0,0 +1,9 @@ +import L from "leaflet"; + +export default L.icon({ + iconSize: [25, 41], + iconAnchor: [10, 41], + popupAnchor: [2, -40], + iconUrl: "https://unpkg.com/leaflet@1.6/dist/images/marker-icon.png", + shadowUrl: "https://unpkg.com/leaflet@1.6/dist/images/marker-shadow.png" +}); diff --git a/src/lib/dummyData/dataMenu.jsx b/src/lib/dummyData/dataMenu.jsx new file mode 100644 index 0000000..12a6a0e --- /dev/null +++ b/src/lib/dummyData/dataMenu.jsx @@ -0,0 +1,140 @@ +export const dataMenu = [ + { + menuId: 1, + menuNm: "Dashboard", + icon: '', + url: "/main/dashboard", + }, + { + menuId: 2, + menuNm: "Kredit", + icon: '', + child: [ + { + menuId: 201, + menuNm: "Pembukaan Rekening", + url: "/main/nasabah", + }, + { + menuId: 202, + menuNm: "Pemeliharaan Rekening", + url: "/main/nasabah", + }, + { + menuId: 203, + menuNm: "Pencairan Rekening", + url: "/main/nasabah", + }, + ], + }, + { + menuId: 3, + menuNm: "Nasabah", + icon: '', + child: [ + { + menuId: 301, + menuNm: "Pembukaan Nasabah", + url: "/main/nasabah", + }, + { + menuId: 302, + menuNm: "Pemeliharaan Nasabah", + url: "/main/nasabah", + }, + { + menuId: 303, + menuNm: "Persetujuan Nasabah", + url: "/main/nasabah", + }, + ], + }, + { + menuId: 4, + menuNm: "Laporan", + icon: '', + child: [ + { + menuId: 401, + menuNm: "Laporan Nominatif Kredit", + url: "/main/nasabah", + }, + { + menuId: 402, + menuNm: "Laporan Pencairan Rekening", + url: "/main/nasabah", + }, + { + menuId: 403, + menuNm: "Laporan Pergerakan", + url: "/main/nasabah", + }, + ], + }, + { + menuId: 5, + menuNm: "Referensi", + icon: '', + child: [ + { + menuId: 401, + menuNm: "Manajemen User", + url: "/main/ref/cabang", + }, + { + menuId: 402, + menuNm: "Manajemen Cabang", + url: "/main/ref/cabang", + }, + { + menuId: 403, + menuNm: "Manajemen Produk", + url: "/main/ref/cabang", + }, + ], + }, + { + menuId: 6, + menuNm: "Config", + icon: '', + child: [ + { + menuId: 601, + menuNm: "Konfigurasi Fee", + url: "/main/nasabah", + }, + { + menuId: 602, + menuNm: "Konfigurasi Kolektibilitas", + url: "/main/nasabah", + }, + { + menuId: 603, + menuNm: "Konfigurasi Limit Bank", + url: "/main/nasabah", + }, + ], + }, + { + menuId: 7, + menuNm: "Batch Process", + icon: '', + child: [ + { + menuId: 701, + menuNm: "End Of Day", + url: "/main/nasabah", + }, + { + menuId: 702, + menuNm: "Start of Day", + url: "/main/nasabah", + }, + { + menuId: 603, + menuNm: "End Of Year", + url: "/main/nasabah", + }, + ], + }, +]; diff --git a/src/lib/exportDocx.js b/src/lib/exportDocx.js new file mode 100644 index 0000000..36c38c5 --- /dev/null +++ b/src/lib/exportDocx.js @@ -0,0 +1,65 @@ +import Docxtemplater from "docxtemplater"; +import PizZip from "pizzip"; +import {saveAs} from "file-saver"; + +let PizZipUtils = null; +if (typeof window !== "undefined") { + import("pizzip/utils/index.js").then(function (r) { + PizZipUtils = r; + }); +} + +function loadFile(url, callback) { + PizZipUtils.getBinaryContent(url, callback); +} + +export const exportDocx = ({docData, path, filename}) => { + loadFile(window.location.origin + path, function (error, content) { + if (error) { + throw error; + } + + let zip = new PizZip(content); + let doc = new Docxtemplater().loadZip(zip).setOptions({ + linebreaks: true + }); + + try { + doc.render(docData); + } catch (error) { + // The error thrown here contains additional information when logged with JSON.stringify (it contains a properties object containing all suberrors). + function replaceErrors(key, value) { + if (value instanceof Error) { + return Object.getOwnPropertyNames(value).reduce(function ( + error, + key + ) { + error[key] = value[key]; + return error; + }, + {}); + } + return value; + } + + if (error.properties && error.properties.errors instanceof Array) { + const errorMessages = error.properties.errors + .map(function (error) { + return error.properties.explanation; + }) + .join("\n"); + // errorMessages is a humanly readable message looking like this : + // 'The tag beginning with "foobar" is unopened' + } + throw error; + } + + var out = doc.getZip().generate({ + type: "blob", + mimeType: + "application/vnd.openxmlformats-officedocument.wordprocessingml.document" + }); + // Output the document using Data-URI + saveAs(out, filename); + }); +}; \ No newline at end of file diff --git a/src/lib/exportExcel.js b/src/lib/exportExcel.js new file mode 100644 index 0000000..31628a6 --- /dev/null +++ b/src/lib/exportExcel.js @@ -0,0 +1,140 @@ +const ExcelJS = require("exceljs"); + +// READ ME +// customHeadStyle digunakan apabila ingin menambahkan kolom header parent di row paling atas +// * cara penggunaan : sheet.spliceRows(1, 0, ['','','','','','Bulan Lalu','', 'Bulan Ini']); sheet.mergeCells('F1:G1');sheet.mergeCells('H1:I1'); + +// totalCell digunakan untuk mendapatkan sum per kolom +// * cara penggunaan : { +// colspanTotal : 3, +// column : ['D','E','F','G','H','I'] +// } + +export const exportExcel = (payload, fileName,customHeadStyle,totalCell) => +{ + const workbook = new ExcelJS.Workbook(); + payload.forEach((item, i) => { + let sheetName = item.sheetName || `Sheet${i+1}` + let sheet = workbook.addWorksheet(sheetName); + sheet.columns = item.columns + sheet.getRow(1).height = 30; + + eval(customHeadStyle) + + // Autosize column width + sheet.columns.forEach(function (column, i) { + + const columnLetter = String.fromCharCode(64 + (i+1)); + const headerCell = sheet.getCell(`${columnLetter}1`); + + + headerCell.fill = { + type: 'pattern', + pattern: 'solid', + fgColor: { argb: '003531' } + }; + headerCell.font = { + bold: true, + color: { argb: 'FFFFFF' }, + }; + + headerCell.alignment = { + vertical: 'middle', + horizontal: 'center' + }; + + if (customHeadStyle){ + const headerCell2 = sheet.getCell(`${columnLetter}2`); + headerCell2.fill = { + type: 'pattern', + pattern: 'solid', + fgColor: { argb: '003531' } + }; + headerCell2.font = { + bold: true, + color: { argb: 'FFFFFF' }, + }; + + headerCell2.alignment = { + vertical: 'middle', + horizontal: 'center' + }; + } + + + + + let maxLength = 0; + column.eachCell({ includeEmpty: true }, (cell) => { + const cellValue = cell.value ? cell.value.toString() : ''; + maxLength = Math.max(maxLength, cellValue.length); + }); + column.width = maxLength + 10; // Adding some padding + }); + sheet.addRows(item.data) + + + // TOTAL FOOTER + if (totalCell){ + const lastRowNumber = sheet.rowCount + 1; + const columnLetterTotal = String.fromCharCode(64 + (totalCell.colspanTotal)) + sheet.getCell(`A${lastRowNumber}`).value = 'Total'; + sheet.mergeCells(`A${lastRowNumber}:${columnLetterTotal}${lastRowNumber}`); + + let setTotal = []; + totalCell.column.forEach((v,k) => { + setTotal[v] = 0 + sheet.getColumn(v).eachCell({ includeEmpty: false }, (cell) => { + setTotal[v] += parseFloat(cell.value) || 0; + }); + sheet.getCell(`${v}${lastRowNumber}`).value = setTotal[v]; + }) + + sheet.columns.forEach(function (column, i) { + const columnLetter = String.fromCharCode(64 + (i+1)); + const footCell = sheet.getCell(`${columnLetter}${lastRowNumber}`); + + footCell.fill = { + type: 'pattern', + pattern: 'solid', + fgColor: { argb: 'd5ebe1' } + }; + footCell.font = { + bold: true, + }; + }) + } + // TOTAL FOOTER + + + + sheet.eachRow(row => { + row.eachCell(cell => { + cell.border = { + top: { style: 'thin' }, + left: { style: 'thin' }, + bottom: { style: 'thin' }, + right: { style: 'thin' }, + }; + + }); + }); + + + }) + + + + workbook.xlsx.writeBuffer().then(function (data) { + const blob = new Blob([data], { + type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + }); + const url = window.URL.createObjectURL(blob); + const anchor = document.createElement("a"); + anchor.href = url; + anchor.download = `${fileName || 'download'}.xlsx`; + anchor.click(); + window.URL.revokeObjectURL(url); + }); + +} \ No newline at end of file diff --git a/src/lib/exportPDFTable.js b/src/lib/exportPDFTable.js new file mode 100644 index 0000000..052b2b2 --- /dev/null +++ b/src/lib/exportPDFTable.js @@ -0,0 +1,59 @@ +import jsPDF from "jspdf"; +import {Helper} from "@/lib/Helper"; +import 'jspdf-autotable'; + +export const exportPDFTable = (filename,subTitle,orientation,column,data,columnStyles) => { + const doc = new jsPDF({ + orientation: orientation, // Set orientation to landscape + unit: 'mm', // Set units to millimeters + format: 'a4' // Set page format to A4 + }); + doc.setFontSize(12) + doc.text(filename, 10, 10); + doc.setFontSize(9) + doc.text(subTitle, 10, 15); + doc.setFontSize(9) + doc.text(`Tanggal Cetak ${Helper.formatDate(new Date(), 'd-M-Y H:i:s')}`, 10, 20); + + doc.autoTable({ + margin: [10, 10, 10, 10], + startY: 27, + startX: 0, + body: data, + columnStyles: columnStyles, + // columnStyles: { + // 2: { halign: 'right' } // The third column (index 2) will be aligned to the right + // }, + headStyles: {fillColor: "#003531"}, + columns: column, + }) + + + // doc.save('table.pdf'); + doc.output('dataurlnewwindow'); +} + + +// const actExportPDFCustom = async() => { +// +// +// function addText(text) { +// let lineHeight = doc.getLineHeight(); // Get current line height +// let y = doc.autoTable.previous.finalY + lineHeight-10; // Calculate new y position +// doc.text(text, 14, y); // Add text at calculated y position +// } +// +// const doc = new jsPDF({ +// orientation: 'landscape', // Set orientation to landscape +// unit: 'mm', // Set units to millimeters +// format: 'a4' // Set page format to A4 +// }); +// +// doc.autoTable({ +// // html: '#tableGeneratePDF', +// html: '.ant-table-content table', +// startY: 20, +// useCss:true +// }) +// +// } \ No newline at end of file diff --git a/src/lib/icon.jsx b/src/lib/icon.jsx new file mode 100644 index 0000000..e69de29 diff --git a/src/lib/web-vital.jsx b/src/lib/web-vital.jsx new file mode 100644 index 0000000..3857596 --- /dev/null +++ b/src/lib/web-vital.jsx @@ -0,0 +1,9 @@ +'use client' + +import {useReportWebVitals} from 'next/web-vitals' + +export function WebVitals() { + useReportWebVitals((metric) => { + console.log(metric) + }) +} \ No newline at end of file diff --git a/src/store/breadcrumbStore.js b/src/store/breadcrumbStore.js new file mode 100644 index 0000000..458d688 --- /dev/null +++ b/src/store/breadcrumbStore.js @@ -0,0 +1,15 @@ +import {create} from 'zustand'; + +const breadcrumbStore = create((set) => ({ + title: '', + subTitle: '', + widthTitle: '0px', + setTitle: (data) => set(() => ({title: data})), + setSubTitle: (data) => set(() => ({subTitle: data})), + setHide: () => set(() => ({widthTitle: '0px'})), + setShow: () => set(() => ({widthTitle: '270px'})), + + +})); + +export default breadcrumbStore; \ No newline at end of file diff --git a/src/store/confirmStore.js b/src/store/confirmStore.js new file mode 100644 index 0000000..10b07fd --- /dev/null +++ b/src/store/confirmStore.js @@ -0,0 +1,27 @@ +import {create} from "zustand"; + +const confirmStore = create((set) => ({ + confirmStat: false, + confirmLoading: false, + confirmAct: null, + FormId: null, + title: null, + subTitle: null, + confirmOpen: (title, subTitle, act) => + set(() => ({ + confirmStat: true, + title: title, + subTitle: subTitle, + confirmAct: act + })), + confirmClose: () => + set(() => ({ + confirmStat: false, + })), + setConfirmLoading: (status) => + set(() => ({ + confirmLoading: status, + })), +})); + +export default confirmStore; diff --git a/src/store/historyRouteStore.js b/src/store/historyRouteStore.js new file mode 100644 index 0000000..ae381ca --- /dev/null +++ b/src/store/historyRouteStore.js @@ -0,0 +1,12 @@ +import {create} from "zustand"; + +const historyRouteStore = create((set) => ({ + historyRoute: null, + setHistory: (route) => + set(() => ({ + historyRoute: route, + })), + +})); + +export default historyRouteStore; diff --git a/src/store/menuStore.js b/src/store/menuStore.js new file mode 100644 index 0000000..5356db0 --- /dev/null +++ b/src/store/menuStore.js @@ -0,0 +1,8 @@ +import {create} from 'zustand'; + +const menuStore = create((set) => ({ + toggleStatus: true, + setToggle: () => set((prev) => ({toggleStatus: !prev.toggleStatus})), +})); + +export default menuStore; \ No newline at end of file diff --git a/src/store/modal.js b/src/store/modal.js new file mode 100644 index 0000000..077daa2 --- /dev/null +++ b/src/store/modal.js @@ -0,0 +1,55 @@ +import {create} from "zustand"; + +const modalStore = create((set) => ({ + modalStat: false, + modalLoading: false, + FormId: null, + actionType: null, + modalDetail: null, + modalPassword: false, + modalProfile: false, + modalLoadingPassword: false, + modalLoadingProfile: false, + modalPasswordType:'normal', + modalOpen: (id, action) => + set(() => ({ + modalStat: true, + modalLoading: true, + FormId: id, + actionType: action + })), + modalClose: () => + set(() => ({ + modalStat: false, + modalDetail: false, + FormId: null, + })), + setModalLoading: (status,type) => + set(() => ({ + modalLoading: status, + + })), + setModalLoadingPassword: (status) => + set(() => ({ + modalLoadingPassword: status, + })), + setModalLoadingProfile: (status) => + set(() => ({ + modalLoadingProfile: status, + })), + setModalPassword: (status,type) => + set(() => ({ + modalPassword: status, + modalPasswordType:type + })), + setModalProfile: (status) => + set(() => ({ + modalProfile: status, + })), + setModalDetail: (status) => + set(() => ({ + modalDetail: status, + })), +})); + +export default modalStore; diff --git a/src/store/modalDashboard.js b/src/store/modalDashboard.js new file mode 100644 index 0000000..c0fb52b --- /dev/null +++ b/src/store/modalDashboard.js @@ -0,0 +1,96 @@ +import {create} from "zustand"; + +const modalDashboardStore = create((set) => ({ + modalStat: false, + modalLoading: false, + FormId: null, + actionType: null, + typeData: null, + typeKolek: null, + datatableDetail: false, + datatableDetailCabang: false, + datatableDetailKolektability: false, + datatableDetailNasabah: false, + dataNasabah: false, + kdCabangKonsol: null, + kdCabang: null, + nmCabangKonsol: null, + nmCabang: null, + customerId: null, + title: null, + subTitle: null, + modalOpen: (id, action) => + set(() => ({ + modalStat: true, + modalLoading: true, + FormId: id, + actionType: action + })), + modalClose: () => + set(() => ({ + modalStat: false, + FormId: null, + })), + setModalLoading: (status, type) => + set(() => ({ + modalLoading: status, + })), + setTypeData: (text) => + set(() => ({ + typeData: text + })), + setTypeKolek: (text) => + set(() => ({ + typeKolek: text + })), + setDatatableDetail: (status) => + set(() => ({ + datatableDetail: status + })), + setDatatableDetailCabang: (status) => + set(() => ({ + datatableDetailCabang: status + })), + setDatatableDetailKolektability: (status) => + set(() => ({ + datatableDetailKolektability: status + })), + setDatatableDetailNasabah: (status) => + set(() => ({ + datatableDetailNasabah: status + })), + setDataNasabah: (status) => + set(() => ({ + dataNasabah: status + })), + setKdCabangKonsol: (status) => + set(() => ({ + kdCabangKonsol: status + })), + setKdCabang: (status) => + set(() => ({ + kdCabang: status + })), + setNmCabangKonsol: (status) => + set(() => ({ + nmCabangKonsol: status + })), + setNmCabang: (status) => + set(() => ({ + nmCabang: status + })), + setCustomerId: (status) => + set(() => ({ + customerId: status + })), + setTitle: (status) => + set(() => ({ + title: status + })), + setSubTitle: (status) => + set(() => ({ + subTitle: status + })) +})); + +export default modalDashboardStore; diff --git a/src/store/notifStore.js b/src/store/notifStore.js new file mode 100644 index 0000000..520f7a1 --- /dev/null +++ b/src/store/notifStore.js @@ -0,0 +1,27 @@ +import {create} from "zustand"; + +const notifStore = create((set) => ({ + notifStat: false, + notifLoading: false, + FormId: null, + title: null, + subTitle: null, + notifType: null, + notifOpen: (title, subTitle, type) => + set(() => ({ + notifStat: true, + title: title, + subTitle: subTitle, + notifType: type + })), + notifClose: () => + set(() => ({ + notifStat: false, + })), + setNotifLoading: (status) => + set(() => ({ + notifLoading: status, + })), +})); + +export default notifStore; diff --git a/src/store/refStore.js b/src/store/refStore.js new file mode 100644 index 0000000..2f90e99 --- /dev/null +++ b/src/store/refStore.js @@ -0,0 +1,30 @@ +import {create} from 'zustand'; + +const refStore = create((set) => ({ + title: null, + subTitle: null, + endPoint: null, + columnTable: null, + listForm: null, + listAction: null, + primaryKey: null, + setTitle: (data) => set(() => ({title: data})), + setSubTitle: (data) => set(() => ({subTitle: data})), + setEndPointAll: (data) => set(() => ({endPoint: data})), + setColumnTable: (data) => set(() => ({columnTable: data})), + setListForm: (data) => set(() => ({listForm: data})), + setListAction: (data) => set(() => ({listAction: data})), + setPrimaryKey: (data) => set(() => ({primaryKey: data})), + resetRef: () => set(() => ({ + title: null, + subTitle: null, + endPoint: null, + columnTable: null, + listForm: null, + listAction: null, + primaryKey: null, + })), + +})); + +export default refStore; \ No newline at end of file diff --git a/src/store/selectedTableStore.js b/src/store/selectedTableStore.js new file mode 100644 index 0000000..df9ac7f --- /dev/null +++ b/src/store/selectedTableStore.js @@ -0,0 +1,16 @@ +import {create} from "zustand"; + +const selectedTableStore = create((set) => ({ + dataSelectedStore: [], + setDataSelect: (data) => + set(() => ({ + dataSelectedStore: data + })), + resetDataSelect: () => + set(() => ({ + dataSelectedStore: [] + })), + +})); + +export default selectedTableStore; diff --git a/src/store/store.js b/src/store/store.js new file mode 100644 index 0000000..926ff9a --- /dev/null +++ b/src/store/store.js @@ -0,0 +1,9 @@ +import {create} from 'zustand'; + +const useStore = create((set) => ({ + count: 0, + increment: () => set((state) => ({ count: state.count + 1 })), + decrement: () => set((state) => ({ count: state.count - 1 })), +})); + +export default useStore; \ No newline at end of file diff --git a/src/store/userStore.js b/src/store/userStore.js new file mode 100644 index 0000000..558c9c7 --- /dev/null +++ b/src/store/userStore.js @@ -0,0 +1,12 @@ +import {create} from 'zustand'; + +const userStore = create((set) => ({ + dataUserAuth: [], + updateStatusAuth: 0, + token: null, + setDataUserAuth: (data) => set(() => ({dataUserAuth: data})), + updateDataUserAuth: () => set((state) => ({updateStatusAuth: state.updateStatusAuth + 1})), + setToken: (data) => set(() => ({token: data})), +})); + +export default userStore; \ No newline at end of file