diff --git a/examples/ecommerce-jewellery-store/.gitignore b/examples/ecommerce-jewellery-store/.gitignore
new file mode 100644
index 00000000..a547bf36
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/.gitignore
@@ -0,0 +1,24 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+dist
+dist-ssr
+*.local
+
+# Editor directories and files
+.vscode/*
+!.vscode/extensions.json
+.idea
+.DS_Store
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
diff --git a/examples/ecommerce-jewellery-store/README.md b/examples/ecommerce-jewellery-store/README.md
new file mode 100644
index 00000000..276d9f9d
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/README.md
@@ -0,0 +1,40 @@
+## The following KendoReact components are used in the sample application:
+
+- [Data Grid](https://www.telerik.com/kendo-react-ui/components/grid/)
+
+- [Chart](https://www.telerik.com/kendo-react-ui/components/chart/)
+
+- [ChartWizard](https://www.telerik.com/kendo-react-ui/components/chart-wizard)
+
+- [DropdownList](https://www.telerik.com/kendo-react-ui/components/dropdowns/dropdownlist)
+
+- [Input](https://www.telerik.com/kendo-react-ui/components/inputs/input)
+
+- [MaskedTextBox](https://www.telerik.com/kendo-react-ui/components/inputs/maskedtextbox)
+
+- [Appbar](https://www.telerik.com/kendo-react-ui/components/layout/appbar)
+
+- [Button](https://www.telerik.com/kendo-react-ui/components/buttons/button)
+
+- [Form](https://www.telerik.com/kendo-react-ui/components/form)
+
+## Prerequisites
+
+- Node.js [18.17](https://nodejs.org/en) or later.
+- macOS, Windows (including WSL), and Linux are supported.
+
+## Installation
+
+Run `npm install`
+
+## Available Scripts
+In the project directory, you can run:
+
+### `npm run build`
+Build the application for production usage.
+
+### `npm run dev`
+Start a Vite production server.
+
+### `npm run lint`
+Check for linting errors.
diff --git a/examples/ecommerce-jewellery-store/eslint.config.js b/examples/ecommerce-jewellery-store/eslint.config.js
new file mode 100644
index 00000000..092408a9
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/eslint.config.js
@@ -0,0 +1,28 @@
+import js from '@eslint/js'
+import globals from 'globals'
+import reactHooks from 'eslint-plugin-react-hooks'
+import reactRefresh from 'eslint-plugin-react-refresh'
+import tseslint from 'typescript-eslint'
+
+export default tseslint.config(
+ { ignores: ['dist'] },
+ {
+ extends: [js.configs.recommended, ...tseslint.configs.recommended],
+ files: ['**/*.{ts,tsx}'],
+ languageOptions: {
+ ecmaVersion: 2020,
+ globals: globals.browser,
+ },
+ plugins: {
+ 'react-hooks': reactHooks,
+ 'react-refresh': reactRefresh,
+ },
+ rules: {
+ ...reactHooks.configs.recommended.rules,
+ 'react-refresh/only-export-components': [
+ 'warn',
+ { allowConstantExport: true },
+ ],
+ },
+ },
+)
diff --git a/examples/ecommerce-jewellery-store/index.html b/examples/ecommerce-jewellery-store/index.html
new file mode 100644
index 00000000..af77d546
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/index.html
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+ Ecommerce Jewellery Store
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/examples/ecommerce-jewellery-store/package-lock.json b/examples/ecommerce-jewellery-store/package-lock.json
new file mode 100644
index 00000000..d2c9c3c4
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/package-lock.json
@@ -0,0 +1,5548 @@
+{
+ "name": "ecommerce-jewellery-store",
+ "version": "0.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "ecommerce-jewellery-store",
+ "version": "0.0.0",
+ "dependencies": {
+ "@progress/kendo-data-query": "^1.7.0",
+ "@progress/kendo-drawing": "^1.21.1",
+ "@progress/kendo-licensing": "^1.3.5",
+ "@progress/kendo-react-animation": "^8.5.0",
+ "@progress/kendo-react-buttons": "^8.5.0",
+ "@progress/kendo-react-chart-wizard": "^8.5.0",
+ "@progress/kendo-react-common": "^8.5.0",
+ "@progress/kendo-react-data-tools": "^8.5.0",
+ "@progress/kendo-react-dateinputs": "^8.5.0",
+ "@progress/kendo-react-dropdowns": "^8.5.0",
+ "@progress/kendo-react-form": "^8.5.0",
+ "@progress/kendo-react-grid": "^8.5.0",
+ "@progress/kendo-react-indicators": "^8.5.0",
+ "@progress/kendo-react-inputs": "^8.5.0",
+ "@progress/kendo-react-intl": "^8.5.0",
+ "@progress/kendo-react-layout": "^8.5.0",
+ "@progress/kendo-react-notification": "^8.5.0",
+ "@progress/kendo-react-popup": "^8.5.0",
+ "@progress/kendo-react-progressbars": "^8.5.0",
+ "@progress/kendo-react-treeview": "^8.5.0",
+ "@progress/kendo-svg-icons": "^3.3.0",
+ "@progress/kendo-theme-default": "^9.1.0",
+ "@progress/kendo-theme-utils": "^9.1.0",
+ "react": "^18.3.1",
+ "react-dom": "^18.3.1",
+ "react-router-dom": "^6.27.0"
+ },
+ "devDependencies": {
+ "@babel/core": "^7.26.0",
+ "@babel/preset-react": "^7.25.9",
+ "@eslint/js": "^9.11.1",
+ "@types/node": "^22.9.0",
+ "@types/react": "^18.3.12",
+ "@types/react-dom": "^18.3.1",
+ "@vitejs/plugin-react": "^4.3.2",
+ "babel-loader": "^9.2.1",
+ "eslint": "^9.11.1",
+ "eslint-plugin-react-hooks": "^5.1.0-rc.0",
+ "eslint-plugin-react-refresh": "^0.4.12",
+ "globals": "^15.9.0",
+ "sass-embedded": "^1.80.5",
+ "typescript": "^5.6.3",
+ "typescript-eslint": "^8.7.0",
+ "vite": "^5.4.8"
+ }
+ },
+ "node_modules/@ampproject/remapping": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
+ "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.26.2",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz",
+ "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.25.9",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/compat-data": {
+ "version": "7.26.2",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.2.tgz",
+ "integrity": "sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/core": {
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz",
+ "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@ampproject/remapping": "^2.2.0",
+ "@babel/code-frame": "^7.26.0",
+ "@babel/generator": "^7.26.0",
+ "@babel/helper-compilation-targets": "^7.25.9",
+ "@babel/helper-module-transforms": "^7.26.0",
+ "@babel/helpers": "^7.26.0",
+ "@babel/parser": "^7.26.0",
+ "@babel/template": "^7.25.9",
+ "@babel/traverse": "^7.25.9",
+ "@babel/types": "^7.26.0",
+ "convert-source-map": "^2.0.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.3",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
+ }
+ },
+ "node_modules/@babel/generator": {
+ "version": "7.26.2",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.2.tgz",
+ "integrity": "sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.26.2",
+ "@babel/types": "^7.26.0",
+ "@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.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz",
+ "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz",
+ "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/compat-data": "^7.25.9",
+ "@babel/helper-validator-option": "^7.25.9",
+ "browserslist": "^4.24.0",
+ "lru-cache": "^5.1.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-imports": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz",
+ "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/traverse": "^7.25.9",
+ "@babel/types": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-transforms": {
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz",
+ "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.25.9",
+ "@babel/helper-validator-identifier": "^7.25.9",
+ "@babel/traverse": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-plugin-utils": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz",
+ "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz",
+ "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
+ "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-option": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz",
+ "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helpers": {
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz",
+ "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/template": "^7.25.9",
+ "@babel/types": "^7.26.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/parser": {
+ "version": "7.26.2",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.2.tgz",
+ "integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.26.0"
+ },
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-jsx": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz",
+ "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-react-display-name": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.25.9.tgz",
+ "integrity": "sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-react-jsx": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.9.tgz",
+ "integrity": "sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.25.9",
+ "@babel/helper-module-imports": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/plugin-syntax-jsx": "^7.25.9",
+ "@babel/types": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-react-jsx-development": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.25.9.tgz",
+ "integrity": "sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/plugin-transform-react-jsx": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-react-jsx-self": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz",
+ "integrity": "sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-react-jsx-source": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.9.tgz",
+ "integrity": "sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-react-pure-annotations": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.25.9.tgz",
+ "integrity": "sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/preset-react": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.25.9.tgz",
+ "integrity": "sha512-D3to0uSPiWE7rBrdIICCd0tJSIGpLaaGptna2+w7Pft5xMqLpA1sz99DK5TZ1TjGbdQ/VI1eCSZ06dv3lT4JOw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-validator-option": "^7.25.9",
+ "@babel/plugin-transform-react-display-name": "^7.25.9",
+ "@babel/plugin-transform-react-jsx": "^7.25.9",
+ "@babel/plugin-transform-react-jsx-development": "^7.25.9",
+ "@babel/plugin-transform-react-pure-annotations": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/runtime": {
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz",
+ "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "regenerator-runtime": "^0.14.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/template": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz",
+ "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.25.9",
+ "@babel/parser": "^7.25.9",
+ "@babel/types": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz",
+ "integrity": "sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.25.9",
+ "@babel/generator": "^7.25.9",
+ "@babel/parser": "^7.25.9",
+ "@babel/template": "^7.25.9",
+ "@babel/types": "^7.25.9",
+ "debug": "^4.3.1",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse/node_modules/globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/types": {
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz",
+ "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.25.9",
+ "@babel/helper-validator-identifier": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@bufbuild/protobuf": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.2.2.tgz",
+ "integrity": "sha512-UNtPCbrwrenpmrXuRwn9jYpPoweNXj8X5sMvYgsqYyaH8jQ6LfUJSk3dJLnBK+6sfYPrF4iAIo5sd5HQ+tg75A==",
+ "dev": true,
+ "license": "(Apache-2.0 AND BSD-3-Clause)"
+ },
+ "node_modules/@esbuild/aix-ppc64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz",
+ "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/android-arm": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz",
+ "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/android-arm64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz",
+ "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/android-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz",
+ "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/darwin-arm64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz",
+ "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/darwin-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz",
+ "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz",
+ "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/freebsd-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz",
+ "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-arm": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz",
+ "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-arm64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz",
+ "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-ia32": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz",
+ "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-loong64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz",
+ "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-mips64el": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz",
+ "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==",
+ "cpu": [
+ "mips64el"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-ppc64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz",
+ "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-riscv64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz",
+ "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-s390x": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz",
+ "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz",
+ "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/netbsd-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz",
+ "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/openbsd-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz",
+ "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/sunos-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz",
+ "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/win32-arm64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz",
+ "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/win32-ia32": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz",
+ "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/win32-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz",
+ "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@eslint-community/eslint-utils": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz",
+ "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "eslint-visitor-keys": "^3.4.3"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
+ }
+ },
+ "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@eslint-community/regexpp": {
+ "version": "4.12.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz",
+ "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@eslint/config-array": {
+ "version": "0.18.0",
+ "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz",
+ "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@eslint/object-schema": "^2.1.4",
+ "debug": "^4.3.1",
+ "minimatch": "^3.1.2"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/core": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.7.0.tgz",
+ "integrity": "sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/eslintrc": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz",
+ "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ajv": "^6.12.4",
+ "debug": "^4.3.2",
+ "espree": "^10.0.1",
+ "globals": "^14.0.0",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.0",
+ "minimatch": "^3.1.2",
+ "strip-json-comments": "^3.1.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/globals": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz",
+ "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@eslint/js": {
+ "version": "9.14.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.14.0.tgz",
+ "integrity": "sha512-pFoEtFWCPyDOl+C6Ift+wC7Ro89otjigCf5vcuWqWgqNSQbRrpjSvdeE6ofLz4dHmyxD5f7gIdGT4+p36L6Twg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/object-schema": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz",
+ "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/plugin-kit": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.2.tgz",
+ "integrity": "sha512-CXtq5nR4Su+2I47WPOlWud98Y5Lv8Kyxp2ukhgFx/eW6Blm18VXJO5WuQylPugRo8nbluoi6GvvxBLqHcvqUUw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "levn": "^0.4.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@humanfs/core": {
+ "version": "0.19.1",
+ "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz",
+ "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=18.18.0"
+ }
+ },
+ "node_modules/@humanfs/node": {
+ "version": "0.16.6",
+ "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz",
+ "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@humanfs/core": "^0.19.1",
+ "@humanwhocodes/retry": "^0.3.0"
+ },
+ "engines": {
+ "node": ">=18.18.0"
+ }
+ },
+ "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz",
+ "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=18.18"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
+ "node_modules/@humanwhocodes/module-importer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=12.22"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
+ "node_modules/@humanwhocodes/retry": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz",
+ "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=18.18"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
+ "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/set-array": "^1.2.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/set-array": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
+ "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/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==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
+ "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.25",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
+ "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@progress/kendo-charts": {
+ "version": "2.5.3",
+ "resolved": "https://registry.npmjs.org/@progress/kendo-charts/-/kendo-charts-2.5.3.tgz",
+ "integrity": "sha512-HL6iqE98fMHOBAuBgDBJE7HizCZhg0DWlbIO97aya4kmy++NCLOmNRjj+BjUjwO08xe51AMCQUXO4J3I5ZZbKg==",
+ "license": "SEE LICENSE IN license.txt",
+ "peerDependencies": {
+ "@progress/kendo-drawing": "^1.20.4"
+ }
+ },
+ "node_modules/@progress/kendo-common": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@progress/kendo-common/-/kendo-common-1.0.2.tgz",
+ "integrity": "sha512-PHxnquetSmtmXiF4dmlQiypzXaFLUEPK3VAOHxmnRDrLxaPrcZfaW9FOOiyur8hv4QmXlohISMwMElZS8Xi1Ag==",
+ "license": "SEE LICENSE IN LICENSE.md",
+ "dependencies": {
+ "tslib": "^1.7.0"
+ }
+ },
+ "node_modules/@progress/kendo-data-query": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/@progress/kendo-data-query/-/kendo-data-query-1.7.0.tgz",
+ "integrity": "sha512-mB+2WZFAZghxRwBhgWiJIysx7qcFkilnbcZWq0AfQ3KXfC3N5IY/EuKJNijhYrTdauYA1eL1GMe2FHsOWAlRHA==",
+ "license": "SEE LICENSE IN LICENSE.md",
+ "dependencies": {
+ "tslib": "^1.7.0"
+ }
+ },
+ "node_modules/@progress/kendo-date-math": {
+ "version": "1.5.14",
+ "resolved": "https://registry.npmjs.org/@progress/kendo-date-math/-/kendo-date-math-1.5.14.tgz",
+ "integrity": "sha512-uJDYQWIm5/kEc0SD6wG+yt2ttHE4/CfPlVhRPSYdrbNetZ1IAls/f37jCgXv7IYm6KZ5ImXlRWlwa/V1q9XXDg==",
+ "license": "SEE LICENSE IN LICENSE.md",
+ "peer": true,
+ "dependencies": {
+ "tslib": "^1.7.0"
+ }
+ },
+ "node_modules/@progress/kendo-draggable-common": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/@progress/kendo-draggable-common/-/kendo-draggable-common-0.2.3.tgz",
+ "integrity": "sha512-e1FraFsT7zwevswzZlQYL//K+fzmRUvkr/4emp51dzkARLDtGd95BtPNSoXYRG5xYHeueKBS75hzVwQI6Dm3Dg==",
+ "license": "SEE LICENSE IN LICENSE.md",
+ "dependencies": {
+ "tslib": "^1.7.0"
+ }
+ },
+ "node_modules/@progress/kendo-drawing": {
+ "version": "1.21.1",
+ "resolved": "https://registry.npmjs.org/@progress/kendo-drawing/-/kendo-drawing-1.21.1.tgz",
+ "integrity": "sha512-Zxl00nsRUv0yoYd3bVYk4p0atylp1YQn6r7cgN66DjhMCY2noXCl5u9FjGKuwZAAJduNOeS+tCbQNyPoKyonHQ==",
+ "license": "See license in LICENSE.md",
+ "dependencies": {
+ "@progress/kendo-common": "^1.0.1",
+ "@progress/pako-esm": "^1.0.1"
+ }
+ },
+ "node_modules/@progress/kendo-file-saver": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@progress/kendo-file-saver/-/kendo-file-saver-1.1.2.tgz",
+ "integrity": "sha512-hWpJ67L8b2+GIhsIWR09NgGaEh87jvcHv7kScC671cbVWJycXTGqdy3ZoI0pzIaH8K0IgP2TNkF1ay4HGxe+pg==",
+ "license": "Apache-2.0",
+ "peer": true
+ },
+ "node_modules/@progress/kendo-inputs-common": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@progress/kendo-inputs-common/-/kendo-inputs-common-3.1.1.tgz",
+ "integrity": "sha512-OqID8+2DuAnUET0W1j357qqTPvws6hnByt2h5+uVS7uK9Wmt/NHA0gVhdYmh+Jyv6Pw+S2epSk47mDsfyreKYA==",
+ "license": "SEE LICENSE IN LICENSE.md",
+ "peer": true,
+ "dependencies": {
+ "tslib": "^2.3.1"
+ },
+ "peerDependencies": {
+ "@progress/kendo-drawing": "^1.17.0"
+ }
+ },
+ "node_modules/@progress/kendo-inputs-common/node_modules/tslib": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+ "license": "0BSD",
+ "peer": true
+ },
+ "node_modules/@progress/kendo-intl": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@progress/kendo-intl/-/kendo-intl-3.1.2.tgz",
+ "integrity": "sha512-rOtMppQSrScwryMfeQSOdsnRi9Oj1l08HFoEC2ticZ0T2N0/JN9CHt+fuToRx5onXK7QkcbbuNM0D09o8TeeMw==",
+ "license": "Apache-2.0",
+ "peer": true
+ },
+ "node_modules/@progress/kendo-licensing": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/@progress/kendo-licensing/-/kendo-licensing-1.3.5.tgz",
+ "integrity": "sha512-HWxM6Ov1g0LvOQN9sp+3N1h+YpF0OKq7rWW2bqoJnkyHy8woC8Ve6ew6KmHdbeaKMgikVOYgyo5NTjef2j+gVQ==",
+ "hasInstallScript": true,
+ "license": "SEE LICENSE IN LICENSE.md",
+ "dependencies": {
+ "jsonwebtoken": "^9.0.2"
+ },
+ "bin": {
+ "kendo-ui-license": "bin/kendo-ui-license.js"
+ }
+ },
+ "node_modules/@progress/kendo-popup-common": {
+ "version": "1.9.2",
+ "resolved": "https://registry.npmjs.org/@progress/kendo-popup-common/-/kendo-popup-common-1.9.2.tgz",
+ "integrity": "sha512-Gs50UafJcERiGuSP/47Yg7ftPX3HQXiK5M9zHB8sHSoc1/AEYd0/Sj5wh8UrVVBAM9b0pUTwmEuzQ/D5yDDd2Q==",
+ "license": "Apache-2.0",
+ "peer": true
+ },
+ "node_modules/@progress/kendo-react-animation": {
+ "version": "8.5.0",
+ "resolved": "https://registry.npmjs.org/@progress/kendo-react-animation/-/kendo-react-animation-8.5.0.tgz",
+ "integrity": "sha512-ZH2Ynzx1eD7rzQA2rx1BQdufH2I9Iqb6HdOFYoEJto7FjmVDsF9J5Rv8gFB2R15ZlCbtlgYY1BKV9YEhoObpQw==",
+ "license": "SEE LICENSE IN LICENSE.md",
+ "dependencies": {
+ "prop-types": "^15.6.0"
+ },
+ "peerDependencies": {
+ "@progress/kendo-licensing": "^1.3.4",
+ "@progress/kendo-react-common": "8.5.0",
+ "@progress/kendo-svg-icons": "^3.0.0",
+ "react": "^16.8.2 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.2 || ^17.0.0 || ^18.0.0",
+ "react-transition-group": "^4.4.2"
+ }
+ },
+ "node_modules/@progress/kendo-react-buttons": {
+ "version": "8.5.0",
+ "resolved": "https://registry.npmjs.org/@progress/kendo-react-buttons/-/kendo-react-buttons-8.5.0.tgz",
+ "integrity": "sha512-dcfjRQ0zx+Z8K+eHvMYAgSvylN/CwfauohLAqmpxQqwUQIWQLkqyY+aqz/d2Skmpt6ZxDcvBYVImxVC+6iu8Xg==",
+ "license": "SEE LICENSE IN LICENSE.md",
+ "dependencies": {
+ "prop-types": "^15.6.0"
+ },
+ "peerDependencies": {
+ "@progress/kendo-licensing": "^1.3.4",
+ "@progress/kendo-react-common": "8.5.0",
+ "@progress/kendo-react-popup": "8.5.0",
+ "@progress/kendo-svg-icons": "^3.0.0",
+ "react": "^16.8.2 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.2 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@progress/kendo-react-chart-wizard": {
+ "version": "8.5.0",
+ "resolved": "https://registry.npmjs.org/@progress/kendo-react-chart-wizard/-/kendo-react-chart-wizard-8.5.0.tgz",
+ "integrity": "sha512-a1szPVULOs+weKTeHd1wAfIy4lu4UBknN3OkacZ52K9JhmT+dZXlS8soR5aMNFEW+b0fNpQYlLucBhzoI7vsCQ==",
+ "license": "SEE LICENSE IN LICENSE.md",
+ "dependencies": {
+ "@progress/kendo-charts": "2.5.3",
+ "prop-types": "^15.6.0"
+ },
+ "peerDependencies": {
+ "@progress/kendo-drawing": "^1.20.4",
+ "@progress/kendo-file-saver": "^1.0.1",
+ "@progress/kendo-licensing": "^1.3.4",
+ "@progress/kendo-react-animation": "8.5.0",
+ "@progress/kendo-react-buttons": "8.5.0",
+ "@progress/kendo-react-charts": "8.5.0",
+ "@progress/kendo-react-common": "8.5.0",
+ "@progress/kendo-react-dialogs": "8.5.0",
+ "@progress/kendo-react-dropdowns": "8.5.0",
+ "@progress/kendo-react-form": "8.5.0",
+ "@progress/kendo-react-grid": "8.5.0",
+ "@progress/kendo-react-inputs": "8.5.0",
+ "@progress/kendo-react-intl": "8.5.0",
+ "@progress/kendo-react-labels": "8.5.0",
+ "@progress/kendo-react-layout": "8.5.0",
+ "@progress/kendo-react-popup": "8.5.0",
+ "@progress/kendo-svg-icons": "^3.0.0",
+ "react": "^16.8.2 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.2 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@progress/kendo-react-charts": {
+ "version": "8.5.0",
+ "resolved": "https://registry.npmjs.org/@progress/kendo-react-charts/-/kendo-react-charts-8.5.0.tgz",
+ "integrity": "sha512-21apoLlLicNNSzkEIeMIo/GmPXzul3nrZNNjfarnmrP5QZnk54PMpenE0im1nTjVjtRZvOhFHR/x2KRkCg1v+w==",
+ "license": "SEE LICENSE IN LICENSE.md",
+ "peer": true,
+ "dependencies": {
+ "@progress/kendo-charts": "2.5.3",
+ "prop-types": "^15.6.0"
+ },
+ "peerDependencies": {
+ "@progress/kendo-drawing": "^1.20.4",
+ "@progress/kendo-licensing": "^1.3.4",
+ "@progress/kendo-react-common": "8.5.0",
+ "@progress/kendo-react-intl": "8.5.0",
+ "@progress/kendo-react-layout": "8.5.0",
+ "@progress/kendo-react-popup": "8.5.0",
+ "@progress/kendo-svg-icons": "^3.0.0",
+ "react": "^16.8.2 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.2 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@progress/kendo-react-common": {
+ "version": "8.5.0",
+ "resolved": "https://registry.npmjs.org/@progress/kendo-react-common/-/kendo-react-common-8.5.0.tgz",
+ "integrity": "sha512-uEDI/E7+lbolzDT8ErV75drAd34gFr7m6MODld0AW4wPz0SqBzaTBC4ysXOfCQMaLA8v93QUZgfMblYTYhEGCQ==",
+ "license": "SEE LICENSE IN LICENSE.md",
+ "dependencies": {
+ "@progress/kendo-draggable-common": "^0.2.3",
+ "prop-types": "^15.6.0"
+ },
+ "peerDependencies": {
+ "@progress/kendo-licensing": "^1.3.4",
+ "@progress/kendo-svg-icons": "^3.0.0",
+ "react": "^16.8.2 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.2 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@progress/kendo-react-data-tools": {
+ "version": "8.5.0",
+ "resolved": "https://registry.npmjs.org/@progress/kendo-react-data-tools/-/kendo-react-data-tools-8.5.0.tgz",
+ "integrity": "sha512-3llzM+zkIWnRhv2hguIybTGv+Exz6dDFGhTnrtwamOJBibsXOwGgbqZTeAB4QSMtpHqeycApD8CmnpzakJLAwg==",
+ "license": "SEE LICENSE IN LICENSE.md",
+ "dependencies": {
+ "prop-types": "^15.6.0"
+ },
+ "peerDependencies": {
+ "@progress/kendo-data-query": "^1.0.0",
+ "@progress/kendo-drawing": "^1.20.4",
+ "@progress/kendo-licensing": "^1.3.4",
+ "@progress/kendo-react-animation": "8.5.0",
+ "@progress/kendo-react-buttons": "8.5.0",
+ "@progress/kendo-react-common": "8.5.0",
+ "@progress/kendo-react-dateinputs": "8.5.0",
+ "@progress/kendo-react-dropdowns": "8.5.0",
+ "@progress/kendo-react-inputs": "8.5.0",
+ "@progress/kendo-react-intl": "8.5.0",
+ "@progress/kendo-react-popup": "8.5.0",
+ "@progress/kendo-svg-icons": "^3.0.0",
+ "react": "^16.8.2 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.2 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@progress/kendo-react-dateinputs": {
+ "version": "8.5.0",
+ "resolved": "https://registry.npmjs.org/@progress/kendo-react-dateinputs/-/kendo-react-dateinputs-8.5.0.tgz",
+ "integrity": "sha512-yD/UhnUkWLFarmcHjSoPjRFqHm9GOjCjZW1AF7+WcwdGgp/8kD6EVZAr8PyZj3QM1AJvkUSsVSqn0JV0YmjhOA==",
+ "license": "SEE LICENSE IN LICENSE.md",
+ "dependencies": {
+ "prop-types": "^15.6.0"
+ },
+ "peerDependencies": {
+ "@progress/kendo-date-math": "^1.4.0",
+ "@progress/kendo-licensing": "^1.3.4",
+ "@progress/kendo-react-buttons": "8.5.0",
+ "@progress/kendo-react-common": "8.5.0",
+ "@progress/kendo-react-intl": "8.5.0",
+ "@progress/kendo-react-labels": "8.5.0",
+ "@progress/kendo-react-layout": "8.5.0",
+ "@progress/kendo-react-popup": "8.5.0",
+ "@progress/kendo-svg-icons": "^3.0.0",
+ "react": "^16.8.2 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.2 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@progress/kendo-react-dialogs": {
+ "version": "8.5.0",
+ "resolved": "https://registry.npmjs.org/@progress/kendo-react-dialogs/-/kendo-react-dialogs-8.5.0.tgz",
+ "integrity": "sha512-UWTu8TULO8obaEKvSu4QmcBSurCFtSbTabCXsNmnpwKdac1TL/9twL0ffnryuZTzMS4AwBIuwin8bpl4AtqUtA==",
+ "license": "SEE LICENSE IN LICENSE.md",
+ "peer": true,
+ "dependencies": {
+ "prop-types": "^15.6.0"
+ },
+ "peerDependencies": {
+ "@progress/kendo-licensing": "^1.3.4",
+ "@progress/kendo-react-buttons": "8.5.0",
+ "@progress/kendo-react-common": "8.5.0",
+ "@progress/kendo-svg-icons": "^3.0.0",
+ "react": "^16.8.2 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.2 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@progress/kendo-react-dropdowns": {
+ "version": "8.5.0",
+ "resolved": "https://registry.npmjs.org/@progress/kendo-react-dropdowns/-/kendo-react-dropdowns-8.5.0.tgz",
+ "integrity": "sha512-AsfkNYWDHTnikDkb16PeANSMQEM1O8iD4nWyDBPRkNMZ4sDxpbGXNdXXP6LthcbQvOrcKBJiGoFuogi5Ma8B/Q==",
+ "license": "SEE LICENSE IN LICENSE.md",
+ "dependencies": {
+ "prop-types": "^15.6.0"
+ },
+ "peerDependencies": {
+ "@progress/kendo-licensing": "^1.3.4",
+ "@progress/kendo-react-buttons": "8.5.0",
+ "@progress/kendo-react-common": "8.5.0",
+ "@progress/kendo-react-inputs": "8.5.0",
+ "@progress/kendo-react-intl": "8.5.0",
+ "@progress/kendo-react-labels": "8.5.0",
+ "@progress/kendo-react-layout": "8.5.0",
+ "@progress/kendo-react-popup": "8.5.0",
+ "@progress/kendo-react-treeview": "8.5.0",
+ "@progress/kendo-svg-icons": "^3.0.0",
+ "react": "^16.8.2 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.2 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@progress/kendo-react-form": {
+ "version": "8.5.0",
+ "resolved": "https://registry.npmjs.org/@progress/kendo-react-form/-/kendo-react-form-8.5.0.tgz",
+ "integrity": "sha512-GYmcdBKS1EaMahzLJVSrF4nRMt244krzLAWAI7qjlPqSQT3zJjuwrDltfnjvYAsuSJJwNWUx1FMQUICqdkCFXg==",
+ "license": "SEE LICENSE IN LICENSE.md",
+ "dependencies": {
+ "prop-types": "^15.6.0"
+ },
+ "peerDependencies": {
+ "@progress/kendo-licensing": "^1.3.4",
+ "@progress/kendo-react-common": "8.5.0",
+ "react": "^16.8.2 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.2 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@progress/kendo-react-grid": {
+ "version": "8.5.0",
+ "resolved": "https://registry.npmjs.org/@progress/kendo-react-grid/-/kendo-react-grid-8.5.0.tgz",
+ "integrity": "sha512-C/SQ8lV9R8/bMUw6MliHeuPhK1dOFsk1KSw91ojs7NvBcTibcZDBvoWnojgcffYVbgYdkbCqYvV2QHCqhCixag==",
+ "license": "SEE LICENSE IN LICENSE.md",
+ "dependencies": {
+ "prop-types": "^15.6.0"
+ },
+ "peerDependencies": {
+ "@progress/kendo-data-query": "^1.0.0",
+ "@progress/kendo-drawing": "^1.20.4",
+ "@progress/kendo-licensing": "^1.3.4",
+ "@progress/kendo-react-animation": "8.5.0",
+ "@progress/kendo-react-buttons": "8.5.0",
+ "@progress/kendo-react-common": "8.5.0",
+ "@progress/kendo-react-data-tools": "8.5.0",
+ "@progress/kendo-react-dateinputs": "8.5.0",
+ "@progress/kendo-react-dropdowns": "8.5.0",
+ "@progress/kendo-react-inputs": "8.5.0",
+ "@progress/kendo-react-intl": "8.5.0",
+ "@progress/kendo-react-popup": "8.5.0",
+ "@progress/kendo-svg-icons": "^3.0.0",
+ "react": "^16.8.2 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.2 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@progress/kendo-react-indicators": {
+ "version": "8.5.0",
+ "resolved": "https://registry.npmjs.org/@progress/kendo-react-indicators/-/kendo-react-indicators-8.5.0.tgz",
+ "integrity": "sha512-Gt4L5rO0jNyK4vKdVl6uwTXOyBhkgM2NSduio9YKEaz4WTXh6ksXpRlBt61jUYOdJoqngN0+xtWJyuCG0ii1RA==",
+ "license": "SEE LICENSE IN LICENSE.md",
+ "dependencies": {
+ "prop-types": "^15.6.0"
+ },
+ "peerDependencies": {
+ "@progress/kendo-licensing": "^1.3.4",
+ "@progress/kendo-react-common": "8.5.0",
+ "react": "^16.8.2 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.2 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@progress/kendo-react-inputs": {
+ "version": "8.5.0",
+ "resolved": "https://registry.npmjs.org/@progress/kendo-react-inputs/-/kendo-react-inputs-8.5.0.tgz",
+ "integrity": "sha512-BMVh2JpnPSuMuyaM6Td7A4+97H8sleC2LNyS5UM2iJz9sMLvA24LiWX1Gxkvn19GKWVCXmefV8t9klXJKc/xaQ==",
+ "license": "SEE LICENSE IN LICENSE.md",
+ "dependencies": {
+ "prop-types": "^15.6.0"
+ },
+ "peerDependencies": {
+ "@progress/kendo-drawing": "^1.20.4",
+ "@progress/kendo-inputs-common": "^3.1.0",
+ "@progress/kendo-licensing": "^1.3.4",
+ "@progress/kendo-react-animation": "8.5.0",
+ "@progress/kendo-react-buttons": "8.5.0",
+ "@progress/kendo-react-common": "8.5.0",
+ "@progress/kendo-react-dialogs": "8.5.0",
+ "@progress/kendo-react-intl": "8.5.0",
+ "@progress/kendo-react-labels": "8.5.0",
+ "@progress/kendo-react-popup": "8.5.0",
+ "@progress/kendo-svg-icons": "^3.0.0",
+ "react": "^16.8.2 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.2 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@progress/kendo-react-intl": {
+ "version": "8.5.0",
+ "resolved": "https://registry.npmjs.org/@progress/kendo-react-intl/-/kendo-react-intl-8.5.0.tgz",
+ "integrity": "sha512-HWHz/TryqulJQKQH6J3gywgNXfboTTgfAO9CZdL4lERWR0QykfJpWSHipbmj2FVuuwybhTFRqRtadjgWeQldDQ==",
+ "license": "SEE LICENSE IN LICENSE.md",
+ "dependencies": {
+ "prop-types": "^15.6.0"
+ },
+ "peerDependencies": {
+ "@progress/kendo-intl": "^3.1.1",
+ "@progress/kendo-licensing": "^1.3.4",
+ "@progress/kendo-react-common": "8.5.0",
+ "react": "^16.8.2 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.2 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@progress/kendo-react-labels": {
+ "version": "8.5.0",
+ "resolved": "https://registry.npmjs.org/@progress/kendo-react-labels/-/kendo-react-labels-8.5.0.tgz",
+ "integrity": "sha512-sAD68IHyDGL1tG5jaPuAw9YZsf/a4GyADp/7ZbtpzVEdOMYq2GUOtI90mmKb/e525oZHOBfg+HOLDuVTNh1AFQ==",
+ "license": "SEE LICENSE IN LICENSE.md",
+ "peer": true,
+ "dependencies": {
+ "prop-types": "^15.6.0"
+ },
+ "peerDependencies": {
+ "@progress/kendo-licensing": "^1.3.4",
+ "@progress/kendo-react-common": "8.5.0",
+ "@progress/kendo-react-intl": "8.5.0",
+ "react": "^16.8.2 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.2 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@progress/kendo-react-layout": {
+ "version": "8.5.0",
+ "resolved": "https://registry.npmjs.org/@progress/kendo-react-layout/-/kendo-react-layout-8.5.0.tgz",
+ "integrity": "sha512-ZVJZCzotl13wdxsH6HI7r8agnOdV8JGy9jnjBNfJVadbSYhVxIts4qeKosMnZZUEi0oYsZVSD3pGZv4ovMbfQw==",
+ "license": "SEE LICENSE IN LICENSE.md",
+ "dependencies": {
+ "prop-types": "^15.6.0"
+ },
+ "peerDependencies": {
+ "@progress/kendo-licensing": "^1.3.4",
+ "@progress/kendo-react-animation": "8.5.0",
+ "@progress/kendo-react-common": "8.5.0",
+ "@progress/kendo-react-intl": "8.5.0",
+ "@progress/kendo-react-popup": "8.5.0",
+ "@progress/kendo-react-progressbars": "8.5.0",
+ "@progress/kendo-svg-icons": "^3.0.0",
+ "react": "^16.8.2 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.2 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@progress/kendo-react-notification": {
+ "version": "8.5.0",
+ "resolved": "https://registry.npmjs.org/@progress/kendo-react-notification/-/kendo-react-notification-8.5.0.tgz",
+ "integrity": "sha512-G7RMVmm9EQs6jHWdnYGqVMuwujuGoL3o/gifym+0JwSBq7NX/BD6zmnAyxJI1P+iDR535M6K0AQ+lydO4is6qA==",
+ "license": "SEE LICENSE IN LICENSE.md",
+ "dependencies": {
+ "prop-types": "^15.6.0"
+ },
+ "peerDependencies": {
+ "@progress/kendo-licensing": "^1.3.4",
+ "@progress/kendo-react-common": "8.5.0",
+ "@progress/kendo-svg-icons": "^3.0.0",
+ "react": "^16.8.2 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.2 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@progress/kendo-react-popup": {
+ "version": "8.5.0",
+ "resolved": "https://registry.npmjs.org/@progress/kendo-react-popup/-/kendo-react-popup-8.5.0.tgz",
+ "integrity": "sha512-SaAbXGCo2vSBFRuIF/NzZLcGvXgkBkeub4T0EWzI3Qa6Yf6eCch4O5aKwo1izi0AW07dSKQcco3uYjULvA6emw==",
+ "license": "SEE LICENSE IN LICENSE.md",
+ "dependencies": {
+ "prop-types": "^15.6.0"
+ },
+ "peerDependencies": {
+ "@progress/kendo-licensing": "^1.3.4",
+ "@progress/kendo-popup-common": "^1.9.0",
+ "@progress/kendo-react-common": "8.5.0",
+ "react": "^16.8.2 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.2 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@progress/kendo-react-progressbars": {
+ "version": "8.5.0",
+ "resolved": "https://registry.npmjs.org/@progress/kendo-react-progressbars/-/kendo-react-progressbars-8.5.0.tgz",
+ "integrity": "sha512-PLGDElqK9Gos5akJprtxjNI1boDOhi0Q3QJbLJKXrSRF/OHuM37uWVomutVvCpWytr+KXf1hBlFA0QiAl/zXJQ==",
+ "license": "SEE LICENSE IN LICENSE.md",
+ "dependencies": {
+ "prop-types": "^15.6.0"
+ },
+ "peerDependencies": {
+ "@progress/kendo-licensing": "^1.3.4",
+ "@progress/kendo-react-animation": "8.5.0",
+ "@progress/kendo-react-common": "8.5.0",
+ "react": "^16.8.2 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.2 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@progress/kendo-react-treeview": {
+ "version": "8.5.0",
+ "resolved": "https://registry.npmjs.org/@progress/kendo-react-treeview/-/kendo-react-treeview-8.5.0.tgz",
+ "integrity": "sha512-4bZORSdEs+2fwft5fH8HcWexoZtDXIY6LtmrhIj3OUBH52g/TiQb/QyvsJ3k5KOcrzAhkdjYgqucvBMvaurD8w==",
+ "license": "SEE LICENSE IN LICENSE.md",
+ "dependencies": {
+ "prop-types": "^15.6.0"
+ },
+ "peerDependencies": {
+ "@progress/kendo-licensing": "^1.3.4",
+ "@progress/kendo-react-animation": "8.5.0",
+ "@progress/kendo-react-common": "8.5.0",
+ "@progress/kendo-svg-icons": "^3.0.0",
+ "react": "^16.8.2 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.2 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@progress/kendo-svg-icons": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/@progress/kendo-svg-icons/-/kendo-svg-icons-3.3.0.tgz",
+ "integrity": "sha512-YGXNhsvQeHSzUSv9tm++MJIkyhEYLaJSKHXCbOUbyRLgP7AiROfqn19bswngyPMP2zYE/Uvy2CcRHtBmLhgrFA==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/@progress/kendo-theme-core": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/@progress/kendo-theme-core/-/kendo-theme-core-9.1.0.tgz",
+ "integrity": "sha512-HNbWus53RQ0kFLxnAbslShLGAjVVLhyZrYT3KSDrLP8kVAb5QJMkiwjDsMXWAryaRjV81RPhzl3BfpJDieCRkg==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/@progress/kendo-theme-default": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/@progress/kendo-theme-default/-/kendo-theme-default-9.1.0.tgz",
+ "integrity": "sha512-nlUAKHYoTohUBbWofSqkaZO88cogcPTGu3L0D06W+cfQ8NSwXo4kFRkuP6UOTr9cB959CkaH4DtKPKrrvrO38w==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@progress/kendo-svg-icons": "^3.1.0",
+ "@progress/kendo-theme-core": "9.1.0",
+ "@progress/kendo-theme-utils": "9.1.0"
+ }
+ },
+ "node_modules/@progress/kendo-theme-utils": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/@progress/kendo-theme-utils/-/kendo-theme-utils-9.1.0.tgz",
+ "integrity": "sha512-JTGFzksfJM8v06UB7CPa20msfNHr97D8pt6Z+Z/Du4VeyhltyEUKW6thdYg3U4C4lb4vdd/6tz6ni9SohgRaJQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@progress/kendo-theme-core": "9.1.0"
+ }
+ },
+ "node_modules/@progress/pako-esm": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@progress/pako-esm/-/pako-esm-1.0.1.tgz",
+ "integrity": "sha512-O4A3b1EuE9Xe1pC3Xz9Tcn1M/CYrL71f4y/5TXeytOVTkmkzBgYW97fYP2f+54H0e0erWRaqV/kUUB/a8Uxfbw==",
+ "license": "SEE LICENSE IN LICENSE.md"
+ },
+ "node_modules/@remix-run/router": {
+ "version": "1.21.0",
+ "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.21.0.tgz",
+ "integrity": "sha512-xfSkCAchbdG5PnbrKqFWwia4Bi61nH+wm8wLEqfHDyp7Y3dZzgqS2itV8i4gAq9pC2HsTpwyBC6Ds8VHZ96JlA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@rollup/rollup-android-arm-eabi": {
+ "version": "4.26.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.26.0.tgz",
+ "integrity": "sha512-gJNwtPDGEaOEgejbaseY6xMFu+CPltsc8/T+diUTTbOQLqD+bnrJq9ulH6WD69TqwqWmrfRAtUv30cCFZlbGTQ==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-android-arm64": {
+ "version": "4.26.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.26.0.tgz",
+ "integrity": "sha512-YJa5Gy8mEZgz5JquFruhJODMq3lTHWLm1fOy+HIANquLzfIOzE9RA5ie3JjCdVb9r46qfAQY/l947V0zfGJ0OQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-arm64": {
+ "version": "4.26.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.26.0.tgz",
+ "integrity": "sha512-ErTASs8YKbqTBoPLp/kA1B1Um5YSom8QAc4rKhg7b9tyyVqDBlQxy7Bf2wW7yIlPGPg2UODDQcbkTlruPzDosw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-x64": {
+ "version": "4.26.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.26.0.tgz",
+ "integrity": "sha512-wbgkYDHcdWW+NqP2mnf2NOuEbOLzDblalrOWcPyY6+BRbVhliavon15UploG7PpBRQ2bZJnbmh8o3yLoBvDIHA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-freebsd-arm64": {
+ "version": "4.26.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.26.0.tgz",
+ "integrity": "sha512-Y9vpjfp9CDkAG4q/uwuhZk96LP11fBz/bYdyg9oaHYhtGZp7NrbkQrj/66DYMMP2Yo/QPAsVHkV891KyO52fhg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-freebsd-x64": {
+ "version": "4.26.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.26.0.tgz",
+ "integrity": "sha512-A/jvfCZ55EYPsqeaAt/yDAG4q5tt1ZboWMHEvKAH9Zl92DWvMIbnZe/f/eOXze65aJaaKbL+YeM0Hz4kLQvdwg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
+ "version": "4.26.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.26.0.tgz",
+ "integrity": "sha512-paHF1bMXKDuizaMODm2bBTjRiHxESWiIyIdMugKeLnjuS1TCS54MF5+Y5Dx8Ui/1RBPVRE09i5OUlaLnv8OGnA==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-musleabihf": {
+ "version": "4.26.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.26.0.tgz",
+ "integrity": "sha512-cwxiHZU1GAs+TMxvgPfUDtVZjdBdTsQwVnNlzRXC5QzIJ6nhfB4I1ahKoe9yPmoaA/Vhf7m9dB1chGPpDRdGXg==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-gnu": {
+ "version": "4.26.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.26.0.tgz",
+ "integrity": "sha512-4daeEUQutGRCW/9zEo8JtdAgtJ1q2g5oHaoQaZbMSKaIWKDQwQ3Yx0/3jJNmpzrsScIPtx/V+1AfibLisb3AMQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-musl": {
+ "version": "4.26.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.26.0.tgz",
+ "integrity": "sha512-eGkX7zzkNxvvS05ROzJ/cO/AKqNvR/7t1jA3VZDi2vRniLKwAWxUr85fH3NsvtxU5vnUUKFHKh8flIBdlo2b3Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
+ "version": "4.26.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.26.0.tgz",
+ "integrity": "sha512-Odp/lgHbW/mAqw/pU21goo5ruWsytP7/HCC/liOt0zcGG0llYWKrd10k9Fj0pdj3prQ63N5yQLCLiE7HTX+MYw==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-riscv64-gnu": {
+ "version": "4.26.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.26.0.tgz",
+ "integrity": "sha512-MBR2ZhCTzUgVD0OJdTzNeF4+zsVogIR1U/FsyuFerwcqjZGvg2nYe24SAHp8O5sN8ZkRVbHwlYeHqcSQ8tcYew==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-s390x-gnu": {
+ "version": "4.26.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.26.0.tgz",
+ "integrity": "sha512-YYcg8MkbN17fMbRMZuxwmxWqsmQufh3ZJFxFGoHjrE7bv0X+T6l3glcdzd7IKLiwhT+PZOJCblpnNlz1/C3kGQ==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-x64-gnu": {
+ "version": "4.26.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.26.0.tgz",
+ "integrity": "sha512-ZuwpfjCwjPkAOxpjAEjabg6LRSfL7cAJb6gSQGZYjGhadlzKKywDkCUnJ+KEfrNY1jH5EEoSIKLCb572jSiglA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-x64-musl": {
+ "version": "4.26.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.26.0.tgz",
+ "integrity": "sha512-+HJD2lFS86qkeF8kNu0kALtifMpPCZU80HvwztIKnYwym3KnA1os6nsX4BGSTLtS2QVAGG1P3guRgsYyMA0Yhg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-arm64-msvc": {
+ "version": "4.26.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.26.0.tgz",
+ "integrity": "sha512-WUQzVFWPSw2uJzX4j6YEbMAiLbs0BUysgysh8s817doAYhR5ybqTI1wtKARQKo6cGop3pHnrUJPFCsXdoFaimQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-ia32-msvc": {
+ "version": "4.26.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.26.0.tgz",
+ "integrity": "sha512-D4CxkazFKBfN1akAIY6ieyOqzoOoBV1OICxgUblWxff/pSjCA2khXlASUx7mK6W1oP4McqhgcCsu6QaLj3WMWg==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-x64-msvc": {
+ "version": "4.26.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.26.0.tgz",
+ "integrity": "sha512-2x8MO1rm4PGEP0xWbubJW5RtbNLk3puzAMaLQd3B3JHVw4KcHlmXcO+Wewx9zCoo7EUFiMlu/aZbCJ7VjMzAag==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@types/babel__core": {
+ "version": "7.20.5",
+ "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
+ "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.20.7",
+ "@babel/types": "^7.20.7",
+ "@types/babel__generator": "*",
+ "@types/babel__template": "*",
+ "@types/babel__traverse": "*"
+ }
+ },
+ "node_modules/@types/babel__generator": {
+ "version": "7.6.8",
+ "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz",
+ "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "node_modules/@types/babel__template": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz",
+ "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.1.0",
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "node_modules/@types/babel__traverse": {
+ "version": "7.20.6",
+ "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz",
+ "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.20.7"
+ }
+ },
+ "node_modules/@types/eslint": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz",
+ "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@types/estree": "*",
+ "@types/json-schema": "*"
+ }
+ },
+ "node_modules/@types/eslint-scope": {
+ "version": "3.7.7",
+ "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz",
+ "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@types/eslint": "*",
+ "@types/estree": "*"
+ }
+ },
+ "node_modules/@types/estree": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
+ "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/json-schema": {
+ "version": "7.0.15",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
+ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/node": {
+ "version": "22.9.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.9.0.tgz",
+ "integrity": "sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "undici-types": "~6.19.8"
+ }
+ },
+ "node_modules/@types/prop-types": {
+ "version": "15.7.13",
+ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz",
+ "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/react": {
+ "version": "18.3.12",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.12.tgz",
+ "integrity": "sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/prop-types": "*",
+ "csstype": "^3.0.2"
+ }
+ },
+ "node_modules/@types/react-dom": {
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.1.tgz",
+ "integrity": "sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/react": "*"
+ }
+ },
+ "node_modules/@typescript-eslint/eslint-plugin": {
+ "version": "8.14.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.14.0.tgz",
+ "integrity": "sha512-tqp8H7UWFaZj0yNO6bycd5YjMwxa6wIHOLZvWPkidwbgLCsBMetQoGj7DPuAlWa2yGO3H48xmPwjhsSPPCGU5w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@eslint-community/regexpp": "^4.10.0",
+ "@typescript-eslint/scope-manager": "8.14.0",
+ "@typescript-eslint/type-utils": "8.14.0",
+ "@typescript-eslint/utils": "8.14.0",
+ "@typescript-eslint/visitor-keys": "8.14.0",
+ "graphemer": "^1.4.0",
+ "ignore": "^5.3.1",
+ "natural-compare": "^1.4.0",
+ "ts-api-utils": "^1.3.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0",
+ "eslint": "^8.57.0 || ^9.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/parser": {
+ "version": "8.14.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.14.0.tgz",
+ "integrity": "sha512-2p82Yn9juUJq0XynBXtFCyrBDb6/dJombnz6vbo6mgQEtWHfvHbQuEa9kAOVIt1c9YFwi7H6WxtPj1kg+80+RA==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "@typescript-eslint/scope-manager": "8.14.0",
+ "@typescript-eslint/types": "8.14.0",
+ "@typescript-eslint/typescript-estree": "8.14.0",
+ "@typescript-eslint/visitor-keys": "8.14.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/scope-manager": {
+ "version": "8.14.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.14.0.tgz",
+ "integrity": "sha512-aBbBrnW9ARIDn92Zbo7rguLnqQ/pOrUguVpbUwzOhkFg2npFDwTgPGqFqE0H5feXcOoJOfX3SxlJaKEVtq54dw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/types": "8.14.0",
+ "@typescript-eslint/visitor-keys": "8.14.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/type-utils": {
+ "version": "8.14.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.14.0.tgz",
+ "integrity": "sha512-Xcz9qOtZuGusVOH5Uk07NGs39wrKkf3AxlkK79RBK6aJC1l03CobXjJbwBPSidetAOV+5rEVuiT1VSBUOAsanQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/typescript-estree": "8.14.0",
+ "@typescript-eslint/utils": "8.14.0",
+ "debug": "^4.3.4",
+ "ts-api-utils": "^1.3.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/types": {
+ "version": "8.14.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.14.0.tgz",
+ "integrity": "sha512-yjeB9fnO/opvLJFAsPNYlKPnEM8+z4og09Pk504dkqonT02AyL5Z9SSqlE0XqezS93v6CXn49VHvB2G7XSsl0g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree": {
+ "version": "8.14.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.14.0.tgz",
+ "integrity": "sha512-OPXPLYKGZi9XS/49rdaCbR5j/S14HazviBlUQFvSKz3npr3NikF+mrgK7CFVur6XEt95DZp/cmke9d5i3vtVnQ==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "@typescript-eslint/types": "8.14.0",
+ "@typescript-eslint/visitor-keys": "8.14.0",
+ "debug": "^4.3.4",
+ "fast-glob": "^3.3.2",
+ "is-glob": "^4.0.3",
+ "minimatch": "^9.0.4",
+ "semver": "^7.6.0",
+ "ts-api-utils": "^1.3.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.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,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/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,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@typescript-eslint/utils": {
+ "version": "8.14.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.14.0.tgz",
+ "integrity": "sha512-OGqj6uB8THhrHj0Fk27DcHPojW7zKwKkPmHXHvQ58pLYp4hy8CSUdTKykKeh+5vFqTTVmjz0zCOOPKRovdsgHA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.4.0",
+ "@typescript-eslint/scope-manager": "8.14.0",
+ "@typescript-eslint/types": "8.14.0",
+ "@typescript-eslint/typescript-estree": "8.14.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/visitor-keys": {
+ "version": "8.14.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.14.0.tgz",
+ "integrity": "sha512-vG0XZo8AdTH9OE6VFRwAZldNc7qtJ/6NLGWak+BtENuEUXGZgFpihILPiBvKXvJ2nFu27XNGC6rKiwuaoMbYzQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/types": "8.14.0",
+ "eslint-visitor-keys": "^3.4.3"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@vitejs/plugin-react": {
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.3.tgz",
+ "integrity": "sha512-NooDe9GpHGqNns1i8XDERg0Vsg5SSYRhRxxyTGogUdkdNt47jal+fbuYi+Yfq6pzRCKXyoPcWisfxE6RIM3GKA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/core": "^7.25.2",
+ "@babel/plugin-transform-react-jsx-self": "^7.24.7",
+ "@babel/plugin-transform-react-jsx-source": "^7.24.7",
+ "@types/babel__core": "^7.20.5",
+ "react-refresh": "^0.14.2"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "vite": "^4.2.0 || ^5.0.0"
+ }
+ },
+ "node_modules/@webassemblyjs/ast": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz",
+ "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/helper-numbers": "1.13.2",
+ "@webassemblyjs/helper-wasm-bytecode": "1.13.2"
+ }
+ },
+ "node_modules/@webassemblyjs/floating-point-hex-parser": {
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz",
+ "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@webassemblyjs/helper-api-error": {
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz",
+ "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@webassemblyjs/helper-buffer": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz",
+ "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@webassemblyjs/helper-numbers": {
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz",
+ "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/floating-point-hex-parser": "1.13.2",
+ "@webassemblyjs/helper-api-error": "1.13.2",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "node_modules/@webassemblyjs/helper-wasm-bytecode": {
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz",
+ "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@webassemblyjs/helper-wasm-section": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz",
+ "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.14.1",
+ "@webassemblyjs/helper-buffer": "1.14.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.13.2",
+ "@webassemblyjs/wasm-gen": "1.14.1"
+ }
+ },
+ "node_modules/@webassemblyjs/ieee754": {
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz",
+ "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@xtuc/ieee754": "^1.2.0"
+ }
+ },
+ "node_modules/@webassemblyjs/leb128": {
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz",
+ "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "node_modules/@webassemblyjs/utf8": {
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz",
+ "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@webassemblyjs/wasm-edit": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz",
+ "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.14.1",
+ "@webassemblyjs/helper-buffer": "1.14.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.13.2",
+ "@webassemblyjs/helper-wasm-section": "1.14.1",
+ "@webassemblyjs/wasm-gen": "1.14.1",
+ "@webassemblyjs/wasm-opt": "1.14.1",
+ "@webassemblyjs/wasm-parser": "1.14.1",
+ "@webassemblyjs/wast-printer": "1.14.1"
+ }
+ },
+ "node_modules/@webassemblyjs/wasm-gen": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz",
+ "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.14.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.13.2",
+ "@webassemblyjs/ieee754": "1.13.2",
+ "@webassemblyjs/leb128": "1.13.2",
+ "@webassemblyjs/utf8": "1.13.2"
+ }
+ },
+ "node_modules/@webassemblyjs/wasm-opt": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz",
+ "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.14.1",
+ "@webassemblyjs/helper-buffer": "1.14.1",
+ "@webassemblyjs/wasm-gen": "1.14.1",
+ "@webassemblyjs/wasm-parser": "1.14.1"
+ }
+ },
+ "node_modules/@webassemblyjs/wasm-parser": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz",
+ "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.14.1",
+ "@webassemblyjs/helper-api-error": "1.13.2",
+ "@webassemblyjs/helper-wasm-bytecode": "1.13.2",
+ "@webassemblyjs/ieee754": "1.13.2",
+ "@webassemblyjs/leb128": "1.13.2",
+ "@webassemblyjs/utf8": "1.13.2"
+ }
+ },
+ "node_modules/@webassemblyjs/wast-printer": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz",
+ "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.14.1",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "node_modules/@xtuc/ieee754": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
+ "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "peer": true
+ },
+ "node_modules/@xtuc/long": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
+ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "peer": true
+ },
+ "node_modules/acorn": {
+ "version": "8.14.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz",
+ "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/ajv-formats": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz",
+ "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ajv": "^8.0.0"
+ },
+ "peerDependencies": {
+ "ajv": "^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "ajv": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/ajv-formats/node_modules/ajv": {
+ "version": "8.17.1",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
+ "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3",
+ "fast-uri": "^3.0.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/ajv-formats/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/ajv-keywords": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
+ "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "peerDependencies": {
+ "ajv": "^6.9.1"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true,
+ "license": "Python-2.0"
+ },
+ "node_modules/babel-loader": {
+ "version": "9.2.1",
+ "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.2.1.tgz",
+ "integrity": "sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "find-cache-dir": "^4.0.0",
+ "schema-utils": "^4.0.0"
+ },
+ "engines": {
+ "node": ">= 14.15.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.12.0",
+ "webpack": ">=5"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fill-range": "^7.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/browserslist": {
+ "version": "4.24.2",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz",
+ "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "caniuse-lite": "^1.0.30001669",
+ "electron-to-chromium": "^1.5.41",
+ "node-releases": "^2.0.18",
+ "update-browserslist-db": "^1.1.1"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ }
+ },
+ "node_modules/buffer-builder": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/buffer-builder/-/buffer-builder-0.2.0.tgz",
+ "integrity": "sha512-7VPMEPuYznPSoR21NE1zvd2Xna6c/CloiZCfcMXR1Jny6PjX0N4Nsa38zcBFo/FMK+BlA+FLKbJCQ0i2yxp+Xg==",
+ "dev": true,
+ "license": "MIT/X11"
+ },
+ "node_modules/buffer-equal-constant-time": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
+ "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==",
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/buffer-from": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001680",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001680.tgz",
+ "integrity": "sha512-rPQy70G6AGUMnbwS1z6Xg+RkHYPAi18ihs47GH0jcxIG7wArmPgY3XbS2sRdBbxJljp3thdT8BIqv9ccCypiPA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "CC-BY-4.0"
+ },
+ "node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/chrome-trace-event": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz",
+ "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=6.0"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/colorjs.io": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/colorjs.io/-/colorjs.io-0.5.2.tgz",
+ "integrity": "sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/common-path-prefix": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz",
+ "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/convert-source-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.5.tgz",
+ "integrity": "sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/csstype": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
+ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
+ "license": "MIT"
+ },
+ "node_modules/debug": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/dom-helpers": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz",
+ "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@babel/runtime": "^7.8.7",
+ "csstype": "^3.0.2"
+ }
+ },
+ "node_modules/ecdsa-sig-formatter": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
+ "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "node_modules/electron-to-chromium": {
+ "version": "1.5.57",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.57.tgz",
+ "integrity": "sha512-xS65H/tqgOwUBa5UmOuNSLuslDo7zho0y/lgQw35pnrqiZh7UOWHCeL/Bt6noJATbA6tpQJGCifsFsIRZj1Fqg==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "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==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "graceful-fs": "^4.2.4",
+ "tapable": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "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==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/esbuild": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz",
+ "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.21.5",
+ "@esbuild/android-arm": "0.21.5",
+ "@esbuild/android-arm64": "0.21.5",
+ "@esbuild/android-x64": "0.21.5",
+ "@esbuild/darwin-arm64": "0.21.5",
+ "@esbuild/darwin-x64": "0.21.5",
+ "@esbuild/freebsd-arm64": "0.21.5",
+ "@esbuild/freebsd-x64": "0.21.5",
+ "@esbuild/linux-arm": "0.21.5",
+ "@esbuild/linux-arm64": "0.21.5",
+ "@esbuild/linux-ia32": "0.21.5",
+ "@esbuild/linux-loong64": "0.21.5",
+ "@esbuild/linux-mips64el": "0.21.5",
+ "@esbuild/linux-ppc64": "0.21.5",
+ "@esbuild/linux-riscv64": "0.21.5",
+ "@esbuild/linux-s390x": "0.21.5",
+ "@esbuild/linux-x64": "0.21.5",
+ "@esbuild/netbsd-x64": "0.21.5",
+ "@esbuild/openbsd-x64": "0.21.5",
+ "@esbuild/sunos-x64": "0.21.5",
+ "@esbuild/win32-arm64": "0.21.5",
+ "@esbuild/win32-ia32": "0.21.5",
+ "@esbuild/win32-x64": "0.21.5"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint": {
+ "version": "9.14.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.14.0.tgz",
+ "integrity": "sha512-c2FHsVBr87lnUtjP4Yhvk4yEhKrQavGafRA/Se1ouse8PfbfC/Qh9Mxa00yWsZRlqeUB9raXip0aiiUZkgnr9g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.2.0",
+ "@eslint-community/regexpp": "^4.12.1",
+ "@eslint/config-array": "^0.18.0",
+ "@eslint/core": "^0.7.0",
+ "@eslint/eslintrc": "^3.1.0",
+ "@eslint/js": "9.14.0",
+ "@eslint/plugin-kit": "^0.2.0",
+ "@humanfs/node": "^0.16.6",
+ "@humanwhocodes/module-importer": "^1.0.1",
+ "@humanwhocodes/retry": "^0.4.0",
+ "@types/estree": "^1.0.6",
+ "@types/json-schema": "^7.0.15",
+ "ajv": "^6.12.4",
+ "chalk": "^4.0.0",
+ "cross-spawn": "^7.0.2",
+ "debug": "^4.3.2",
+ "escape-string-regexp": "^4.0.0",
+ "eslint-scope": "^8.2.0",
+ "eslint-visitor-keys": "^4.2.0",
+ "espree": "^10.3.0",
+ "esquery": "^1.5.0",
+ "esutils": "^2.0.2",
+ "fast-deep-equal": "^3.1.3",
+ "file-entry-cache": "^8.0.0",
+ "find-up": "^5.0.0",
+ "glob-parent": "^6.0.2",
+ "ignore": "^5.2.0",
+ "imurmurhash": "^0.1.4",
+ "is-glob": "^4.0.0",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "lodash.merge": "^4.6.2",
+ "minimatch": "^3.1.2",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.9.3",
+ "text-table": "^0.2.0"
+ },
+ "bin": {
+ "eslint": "bin/eslint.js"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://eslint.org/donate"
+ },
+ "peerDependencies": {
+ "jiti": "*"
+ },
+ "peerDependenciesMeta": {
+ "jiti": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-plugin-react-hooks": {
+ "version": "5.1.0-rc-fb9a90fa48-20240614",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.1.0-rc-fb9a90fa48-20240614.tgz",
+ "integrity": "sha512-xsiRwaDNF5wWNC4ZHLut+x/YcAxksUd9Rizt7LaEn3bV8VyYRpXnRJQlLOfYaVy9esk4DFP4zPPnoNVjq5Gc0w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0"
+ }
+ },
+ "node_modules/eslint-plugin-react-refresh": {
+ "version": "0.4.14",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.14.tgz",
+ "integrity": "sha512-aXvzCTK7ZBv1e7fahFuR3Z/fyQQSIQ711yPgYRj+Oj64tyTgO4iQIDmYXDBqvSWQ/FA4OSCsXOStlF+noU0/NA==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "eslint": ">=7"
+ }
+ },
+ "node_modules/eslint-scope": {
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz",
+ "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-visitor-keys": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz",
+ "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/espree": {
+ "version": "10.3.0",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz",
+ "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "acorn": "^8.14.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^4.2.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/esquery": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz",
+ "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "estraverse": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/events": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
+ "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=0.8.x"
+ }
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/fast-glob": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
+ "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/fast-glob/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/fast-uri": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.3.tgz",
+ "integrity": "sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==",
+ "dev": true,
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/fastq": {
+ "version": "1.17.1",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
+ "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/file-entry-cache": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz",
+ "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "flat-cache": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/find-cache-dir": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz",
+ "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "common-path-prefix": "^3.0.0",
+ "pkg-dir": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/flat-cache": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz",
+ "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "flatted": "^3.2.9",
+ "keyv": "^4.5.4"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/flatted": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz",
+ "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/glob-to-regexp": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
+ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "peer": true
+ },
+ "node_modules/globals": {
+ "version": "15.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-15.12.0.tgz",
+ "integrity": "sha512-1+gLErljJFhbOVyaetcwJiJ4+eLe45S2E7P5UiZ9xGfeq3ATQf5DOv9G7MH3gGbKQLkzmNh2DxfZwLdw+j6oTQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "dev": true,
+ "license": "ISC",
+ "peer": true
+ },
+ "node_modules/graphemer": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
+ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ignore": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
+ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/immutable": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.0.2.tgz",
+ "integrity": "sha512-1NU7hWZDkV7hJ4PJ9dur9gTNQ4ePNPN4k9/0YhwjzykTi/+3Q5pF93YU5QoVj8BuOnhLgaY8gs0U2pj4kSYVcw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/import-fresh": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/jest-worker": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
+ "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@types/node": "*",
+ "merge-stream": "^2.0.0",
+ "supports-color": "^8.0.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ }
+ },
+ "node_modules/jest-worker/node_modules/supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
+ }
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "license": "MIT"
+ },
+ "node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/jsesc": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz",
+ "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "jsesc": "bin/jsesc"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/json-parse-even-better-errors": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "json5": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/jsonwebtoken": {
+ "version": "9.0.2",
+ "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz",
+ "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==",
+ "license": "MIT",
+ "dependencies": {
+ "jws": "^3.2.2",
+ "lodash.includes": "^4.3.0",
+ "lodash.isboolean": "^3.0.3",
+ "lodash.isinteger": "^4.0.4",
+ "lodash.isnumber": "^3.0.3",
+ "lodash.isplainobject": "^4.0.6",
+ "lodash.isstring": "^4.0.1",
+ "lodash.once": "^4.0.0",
+ "ms": "^2.1.1",
+ "semver": "^7.5.4"
+ },
+ "engines": {
+ "node": ">=12",
+ "npm": ">=6"
+ }
+ },
+ "node_modules/jsonwebtoken/node_modules/semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/jwa": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
+ "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
+ "license": "MIT",
+ "dependencies": {
+ "buffer-equal-constant-time": "1.0.1",
+ "ecdsa-sig-formatter": "1.0.11",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "node_modules/jws": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
+ "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
+ "license": "MIT",
+ "dependencies": {
+ "jwa": "^1.4.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "node_modules/keyv": {
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "json-buffer": "3.0.1"
+ }
+ },
+ "node_modules/levn": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/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==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=6.11.5"
+ }
+ },
+ "node_modules/locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/lodash.includes": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
+ "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==",
+ "license": "MIT"
+ },
+ "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==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.isinteger": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
+ "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.isnumber": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
+ "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==",
+ "license": "MIT"
+ },
+ "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==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.isstring": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
+ "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/lodash.once": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
+ "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==",
+ "license": "MIT"
+ },
+ "node_modules/loose-envify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "license": "MIT",
+ "dependencies": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ },
+ "bin": {
+ "loose-envify": "cli.js"
+ }
+ },
+ "node_modules/lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "node_modules/merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT"
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.7",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
+ "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/neo-async": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
+ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/node-releases": {
+ "version": "2.0.18",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz",
+ "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/optionator": {
+ "version": "0.9.4",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
+ "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "deep-is": "^0.1.3",
+ "fast-levenshtein": "^2.0.6",
+ "levn": "^0.4.1",
+ "prelude-ls": "^1.2.1",
+ "type-check": "^0.4.0",
+ "word-wrap": "^1.2.5"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/pkg-dir": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz",
+ "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "find-up": "^6.3.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/find-up": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz",
+ "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "locate-path": "^7.1.0",
+ "path-exists": "^5.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/locate-path": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz",
+ "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "p-locate": "^6.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/p-limit": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz",
+ "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "yocto-queue": "^1.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/p-locate": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz",
+ "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "p-limit": "^4.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/path-exists": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz",
+ "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/yocto-queue": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz",
+ "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/postcss": {
+ "version": "8.4.49",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz",
+ "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "nanoid": "^3.3.7",
+ "picocolors": "^1.1.1",
+ "source-map-js": "^1.2.1"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/prelude-ls": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/prop-types": {
+ "version": "15.8.1",
+ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
+ "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
+ "license": "MIT",
+ "dependencies": {
+ "loose-envify": "^1.4.0",
+ "object-assign": "^4.1.1",
+ "react-is": "^16.13.1"
+ }
+ },
+ "node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/randombytes": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
+ "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "safe-buffer": "^5.1.0"
+ }
+ },
+ "node_modules/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==",
+ "license": "MIT",
+ "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==",
+ "license": "MIT",
+ "dependencies": {
+ "loose-envify": "^1.1.0",
+ "scheduler": "^0.23.2"
+ },
+ "peerDependencies": {
+ "react": "^18.3.1"
+ }
+ },
+ "node_modules/react-is": {
+ "version": "16.13.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
+ "license": "MIT"
+ },
+ "node_modules/react-refresh": {
+ "version": "0.14.2",
+ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz",
+ "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-router": {
+ "version": "6.28.0",
+ "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.28.0.tgz",
+ "integrity": "sha512-HrYdIFqdrnhDw0PqG/AKjAqEqM7AvxCz0DQ4h2W8k6nqmc5uRBYDag0SBxx9iYz5G8gnuNVLzUe13wl9eAsXXg==",
+ "license": "MIT",
+ "dependencies": {
+ "@remix-run/router": "1.21.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "react": ">=16.8"
+ }
+ },
+ "node_modules/react-router-dom": {
+ "version": "6.28.0",
+ "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.28.0.tgz",
+ "integrity": "sha512-kQ7Unsl5YdyOltsPGl31zOjLrDv+m2VcIEcIHqYYD3Lp0UppLjrzcfJqDJwXxFw3TH/yvapbnUvPlAj7Kx5nbg==",
+ "license": "MIT",
+ "dependencies": {
+ "@remix-run/router": "1.21.0",
+ "react-router": "6.28.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "react": ">=16.8",
+ "react-dom": ">=16.8"
+ }
+ },
+ "node_modules/react-transition-group": {
+ "version": "4.4.5",
+ "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz",
+ "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==",
+ "license": "BSD-3-Clause",
+ "peer": true,
+ "dependencies": {
+ "@babel/runtime": "^7.5.5",
+ "dom-helpers": "^5.0.1",
+ "loose-envify": "^1.4.0",
+ "prop-types": "^15.6.2"
+ },
+ "peerDependencies": {
+ "react": ">=16.6.0",
+ "react-dom": ">=16.6.0"
+ }
+ },
+ "node_modules/regenerator-runtime": {
+ "version": "0.14.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
+ "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/require-from-string": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
+ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/rollup": {
+ "version": "4.26.0",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.26.0.tgz",
+ "integrity": "sha512-ilcl12hnWonG8f+NxU6BlgysVA0gvY2l8N0R84S1HcINbW20bvwuCngJkkInV6LXhwRpucsW5k1ovDwEdBVrNg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "1.0.6"
+ },
+ "bin": {
+ "rollup": "dist/bin/rollup"
+ },
+ "engines": {
+ "node": ">=18.0.0",
+ "npm": ">=8.0.0"
+ },
+ "optionalDependencies": {
+ "@rollup/rollup-android-arm-eabi": "4.26.0",
+ "@rollup/rollup-android-arm64": "4.26.0",
+ "@rollup/rollup-darwin-arm64": "4.26.0",
+ "@rollup/rollup-darwin-x64": "4.26.0",
+ "@rollup/rollup-freebsd-arm64": "4.26.0",
+ "@rollup/rollup-freebsd-x64": "4.26.0",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.26.0",
+ "@rollup/rollup-linux-arm-musleabihf": "4.26.0",
+ "@rollup/rollup-linux-arm64-gnu": "4.26.0",
+ "@rollup/rollup-linux-arm64-musl": "4.26.0",
+ "@rollup/rollup-linux-powerpc64le-gnu": "4.26.0",
+ "@rollup/rollup-linux-riscv64-gnu": "4.26.0",
+ "@rollup/rollup-linux-s390x-gnu": "4.26.0",
+ "@rollup/rollup-linux-x64-gnu": "4.26.0",
+ "@rollup/rollup-linux-x64-musl": "4.26.0",
+ "@rollup/rollup-win32-arm64-msvc": "4.26.0",
+ "@rollup/rollup-win32-ia32-msvc": "4.26.0",
+ "@rollup/rollup-win32-x64-msvc": "4.26.0",
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "node_modules/rxjs": {
+ "version": "7.8.1",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz",
+ "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/rxjs/node_modules/tslib": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+ "dev": true,
+ "license": "0BSD"
+ },
+ "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"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/sass-embedded": {
+ "version": "1.80.7",
+ "resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.80.7.tgz",
+ "integrity": "sha512-OwF0QvpDUjW2udPCvxgaObU0tQHycpsIgCDtHBVHuOqZ2LN0OkkY+uxSO7bOaw9wD7vXtt+1V+jiIZDTxiSRVQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@bufbuild/protobuf": "^2.0.0",
+ "buffer-builder": "^0.2.0",
+ "colorjs.io": "^0.5.0",
+ "immutable": "^5.0.2",
+ "rxjs": "^7.4.0",
+ "supports-color": "^8.1.1",
+ "sync-child-process": "^1.0.2",
+ "varint": "^6.0.0"
+ },
+ "bin": {
+ "sass": "dist/bin/sass.js"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ },
+ "optionalDependencies": {
+ "sass-embedded-android-arm": "1.80.7",
+ "sass-embedded-android-arm64": "1.80.7",
+ "sass-embedded-android-ia32": "1.80.7",
+ "sass-embedded-android-riscv64": "1.80.7",
+ "sass-embedded-android-x64": "1.80.7",
+ "sass-embedded-darwin-arm64": "1.80.7",
+ "sass-embedded-darwin-x64": "1.80.7",
+ "sass-embedded-linux-arm": "1.80.7",
+ "sass-embedded-linux-arm64": "1.80.7",
+ "sass-embedded-linux-ia32": "1.80.7",
+ "sass-embedded-linux-musl-arm": "1.80.7",
+ "sass-embedded-linux-musl-arm64": "1.80.7",
+ "sass-embedded-linux-musl-ia32": "1.80.7",
+ "sass-embedded-linux-musl-riscv64": "1.80.7",
+ "sass-embedded-linux-musl-x64": "1.80.7",
+ "sass-embedded-linux-riscv64": "1.80.7",
+ "sass-embedded-linux-x64": "1.80.7",
+ "sass-embedded-win32-arm64": "1.80.7",
+ "sass-embedded-win32-ia32": "1.80.7",
+ "sass-embedded-win32-x64": "1.80.7"
+ }
+ },
+ "node_modules/sass-embedded-android-arm": {
+ "version": "1.80.7",
+ "resolved": "https://registry.npmjs.org/sass-embedded-android-arm/-/sass-embedded-android-arm-1.80.7.tgz",
+ "integrity": "sha512-pMxJ70yOGXYGmfoGlAMKqnr/nuP/UgKV3jc7v5kpmWGpPPMF2u63DM2QkvTqM32FyfwyxSycVaNFNT+gPomTiw==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/sass-embedded-android-arm64": {
+ "version": "1.80.7",
+ "resolved": "https://registry.npmjs.org/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.80.7.tgz",
+ "integrity": "sha512-Gwl/OY80uEA14MLm7efJvc1ErgGT51SvAv4/kIpTziOJpkk+999/nrEJHQ6YAJ7r5DuQcKvC3lHipcENUIpP9A==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/sass-embedded-android-ia32": {
+ "version": "1.80.7",
+ "resolved": "https://registry.npmjs.org/sass-embedded-android-ia32/-/sass-embedded-android-ia32-1.80.7.tgz",
+ "integrity": "sha512-CJccGPgBePPYiXhyQWvgHF8AqjIDSGf+mcC4Ac/f5upRd9Z/vhQVrJfsDxt4c4tV0HGEfbQpT9xOCYF1Z6luZQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/sass-embedded-android-riscv64": {
+ "version": "1.80.7",
+ "resolved": "https://registry.npmjs.org/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.80.7.tgz",
+ "integrity": "sha512-kIGcyuhNes9NUDzJ9VHy/ZGKdADCCt7JAwiC7lFSc6/xs5rJtGRn6hZ+mcG7gQWAezb5oK/VMQl8ps7HBFUEXw==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/sass-embedded-android-x64": {
+ "version": "1.80.7",
+ "resolved": "https://registry.npmjs.org/sass-embedded-android-x64/-/sass-embedded-android-x64-1.80.7.tgz",
+ "integrity": "sha512-oLMQiFpbSczOrGZSWlZvVJ1T9L6nDjS2u8PTxfT0MFX/FT3EhaxylHeiYKrmtY4epRufNCC/G96DMVqnSNa1QQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/sass-embedded-darwin-arm64": {
+ "version": "1.80.7",
+ "resolved": "https://registry.npmjs.org/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.80.7.tgz",
+ "integrity": "sha512-Vi5BbTWd9OO0tC60CPw5IY7w3Tccr1/Gy2DdkfE4qP6Rc368WmUis5ceG8ehAye0IT7aoRXpw8XTzWyXAZHbfw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/sass-embedded-darwin-x64": {
+ "version": "1.80.7",
+ "resolved": "https://registry.npmjs.org/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.80.7.tgz",
+ "integrity": "sha512-yeANclgSHJ7K/XLG4Lnk7aQ5dk7K+oqIOtoOP0bjXgWsdPbes9V7k1ZJ9mZGl+f/XAPaRRPqjKs4WHU9s8m8MA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/sass-embedded-linux-arm": {
+ "version": "1.80.7",
+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.80.7.tgz",
+ "integrity": "sha512-ZttC6H2Z9YXUVFlprqZ0AgXuHdzqhvhUWsG7UUqkND9JSHvyFSwRij4h90aOK3gKg3PBGI4yG5tonLq2yV525A==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/sass-embedded-linux-arm64": {
+ "version": "1.80.7",
+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.80.7.tgz",
+ "integrity": "sha512-Idb5K9LHHWklN7A/kqWUd6sktA36V70bSjZ/gvCDu/5CBJBkMsVNdrxcdpGzrZe7pYV4XUTkMZOwf91owEywtQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/sass-embedded-linux-ia32": {
+ "version": "1.80.7",
+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-ia32/-/sass-embedded-linux-ia32-1.80.7.tgz",
+ "integrity": "sha512-xKnWWEFz1jFc9xDAG7nMcjPBCTuiJbqvTmEtwQoWj79hQrzVdkLM6SiUGVbGa1c2s2fJMS3Bg2fkDJBK6/BcuQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/sass-embedded-linux-musl-arm": {
+ "version": "1.80.7",
+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.80.7.tgz",
+ "integrity": "sha512-gJLfSFiiuGaqWjaj0bcuhOlQ+t1jS9StuzXnW1b9gy2I6Y0uCprgbbELgtRVPSZlCG2BBolR76YCGQTB85M43Q==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/sass-embedded-linux-musl-arm64": {
+ "version": "1.80.7",
+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.80.7.tgz",
+ "integrity": "sha512-7+GCYIh+c1BG4ot/PbTvVXUxd2GxDWcMxV7i3sARStQBDpTZFfohWdjUytLyqGxQgJIrbq0Q60Ucrw6HUJtJ9A==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/sass-embedded-linux-musl-ia32": {
+ "version": "1.80.7",
+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-ia32/-/sass-embedded-linux-musl-ia32-1.80.7.tgz",
+ "integrity": "sha512-Iw2E6P1lha335C5tGNgPjLD7Oll7OdLBJ7uPKaU+I7KbiOPk7ELsxUL9AYIrKO0/MLtgxGqOWWfTo/5cvU8xSA==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/sass-embedded-linux-musl-riscv64": {
+ "version": "1.80.7",
+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.80.7.tgz",
+ "integrity": "sha512-gd92dkDVpTh4xJb2hpX82E6el30h4MxCb7VJLwtbQSrQuxOlZgaDX4plMSZifsNTLvOsafdLCYyI+QsZRr8bkA==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/sass-embedded-linux-musl-x64": {
+ "version": "1.80.7",
+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.80.7.tgz",
+ "integrity": "sha512-i5udU+i0LZrL3dhHAgIfK7LBaHtScwAceiykndNIHyRXc1TY2DX3lG0EolVUvPyWFUNnvGCgxZF8oUToPzJ+pw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/sass-embedded-linux-riscv64": {
+ "version": "1.80.7",
+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.80.7.tgz",
+ "integrity": "sha512-DvnXvu019c6THNQnSWfy2eY/HFWZ2ogGUjRkdKAxj7U7i/YD+bsDIxdDQHZ48qzOguzx8n2aRa/clriM0HQPUA==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/sass-embedded-linux-x64": {
+ "version": "1.80.7",
+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.80.7.tgz",
+ "integrity": "sha512-nQB+IZwCzVPpPkP5L9zV416/AGPLky7L2GGPWtvxG2CEeTV1Rzet+gkhzk2eYEdbh+3py/w9YVRTaQuZ3QV0vQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/sass-embedded-win32-arm64": {
+ "version": "1.80.7",
+ "resolved": "https://registry.npmjs.org/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.80.7.tgz",
+ "integrity": "sha512-Q6Rh/CM30m8txoKK5SIVamnwPXs028Mvfq4Ol4saHgSYro9kY/HTrrWlG/RPd6sPvYBCYIm1mX8oBteDUMCajQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/sass-embedded-win32-ia32": {
+ "version": "1.80.7",
+ "resolved": "https://registry.npmjs.org/sass-embedded-win32-ia32/-/sass-embedded-win32-ia32-1.80.7.tgz",
+ "integrity": "sha512-VZMRp81KWUZZDqNwkL3yTDT+VRxB7ScJKUJD1M8fq6P1nyJP35+r1byXLF4UQMoNgpC5B16txxMvqdkv43OqAA==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/sass-embedded-win32-x64": {
+ "version": "1.80.7",
+ "resolved": "https://registry.npmjs.org/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.80.7.tgz",
+ "integrity": "sha512-4p+GzOJJ1KqxPKrkIkKisod4YAcC70fj4WMRLrQLLuUW+MzAvtKgX2+ZJf90D50CozSdgETGBvdPSj3VLjBzZw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/sass-embedded/node_modules/supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
+ }
+ },
+ "node_modules/scheduler": {
+ "version": "0.23.2",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz",
+ "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==",
+ "license": "MIT",
+ "dependencies": {
+ "loose-envify": "^1.1.0"
+ }
+ },
+ "node_modules/schema-utils": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz",
+ "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/json-schema": "^7.0.9",
+ "ajv": "^8.9.0",
+ "ajv-formats": "^2.1.1",
+ "ajv-keywords": "^5.1.0"
+ },
+ "engines": {
+ "node": ">= 12.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ }
+ },
+ "node_modules/schema-utils/node_modules/ajv": {
+ "version": "8.17.1",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
+ "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3",
+ "fast-uri": "^3.0.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/schema-utils/node_modules/ajv-keywords": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
+ "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3"
+ },
+ "peerDependencies": {
+ "ajv": "^8.8.2"
+ }
+ },
+ "node_modules/schema-utils/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/serialize-javascript": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz",
+ "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "peer": true,
+ "dependencies": {
+ "randombytes": "^2.1.0"
+ }
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-support": {
+ "version": "0.5.21",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
+ "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
+ "node_modules/strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/sync-child-process": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/sync-child-process/-/sync-child-process-1.0.2.tgz",
+ "integrity": "sha512-8lD+t2KrrScJ/7KXCSyfhT3/hRq78rC0wBFqNJXv3mZyn6hW2ypM05JmlSvtqRbeq6jqA94oHbxAr2vYsJ8vDA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "sync-message-port": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/sync-message-port": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/sync-message-port/-/sync-message-port-1.1.3.tgz",
+ "integrity": "sha512-GTt8rSKje5FilG+wEdfCkOcLL7LWqpMlr2c3LRuKt/YXxcJ52aGSbGBAdI4L3aaqfrBt6y711El53ItyH1NWzg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/tapable": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
+ "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/terser": {
+ "version": "5.36.0",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.36.0.tgz",
+ "integrity": "sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "peer": true,
+ "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==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "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==",
+ "dev": true,
+ "license": "MIT",
+ "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/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,
+ "license": "MIT"
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/ts-api-utils": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.0.tgz",
+ "integrity": "sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=16"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.2.0"
+ }
+ },
+ "node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "license": "0BSD"
+ },
+ "node_modules/type-check": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "prelude-ls": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/typescript": {
+ "version": "5.6.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz",
+ "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
+ "node_modules/typescript-eslint": {
+ "version": "8.14.0",
+ "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.14.0.tgz",
+ "integrity": "sha512-K8fBJHxVL3kxMmwByvz8hNdBJ8a0YqKzKDX6jRlrjMuNXyd5T2V02HIq37+OiWXvUUOXgOOGiSSOh26Mh8pC3w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/eslint-plugin": "8.14.0",
+ "@typescript-eslint/parser": "8.14.0",
+ "@typescript-eslint/utils": "8.14.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/undici-types": {
+ "version": "6.19.8",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
+ "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/update-browserslist-db": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz",
+ "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "escalade": "^3.2.0",
+ "picocolors": "^1.1.0"
+ },
+ "bin": {
+ "update-browserslist-db": "cli.js"
+ },
+ "peerDependencies": {
+ "browserslist": ">= 4.21.0"
+ }
+ },
+ "node_modules/uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/varint": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz",
+ "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/vite": {
+ "version": "5.4.11",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.11.tgz",
+ "integrity": "sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "esbuild": "^0.21.3",
+ "postcss": "^8.4.43",
+ "rollup": "^4.20.0"
+ },
+ "bin": {
+ "vite": "bin/vite.js"
+ },
+ "engines": {
+ "node": "^18.0.0 || >=20.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/vitejs/vite?sponsor=1"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.3"
+ },
+ "peerDependencies": {
+ "@types/node": "^18.0.0 || >=20.0.0",
+ "less": "*",
+ "lightningcss": "^1.21.0",
+ "sass": "*",
+ "sass-embedded": "*",
+ "stylus": "*",
+ "sugarss": "*",
+ "terser": "^5.4.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ },
+ "less": {
+ "optional": true
+ },
+ "lightningcss": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ },
+ "sass-embedded": {
+ "optional": true
+ },
+ "stylus": {
+ "optional": true
+ },
+ "sugarss": {
+ "optional": true
+ },
+ "terser": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/watchpack": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz",
+ "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "glob-to-regexp": "^0.4.1",
+ "graceful-fs": "^4.1.2"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/webpack": {
+ "version": "5.96.1",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz",
+ "integrity": "sha512-l2LlBSvVZGhL4ZrPwyr8+37AunkcYj5qh8o6u2/2rzoPc8gxFJkLj1WxNgooi9pnoc06jh0BjuXnamM4qlujZA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@types/eslint-scope": "^3.7.7",
+ "@types/estree": "^1.0.6",
+ "@webassemblyjs/ast": "^1.12.1",
+ "@webassemblyjs/wasm-edit": "^1.12.1",
+ "@webassemblyjs/wasm-parser": "^1.12.1",
+ "acorn": "^8.14.0",
+ "browserslist": "^4.24.0",
+ "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==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/webpack/node_modules/eslint-scope": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
+ "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "peer": true,
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^4.1.1"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/webpack/node_modules/estraverse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "peer": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/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==",
+ "dev": true,
+ "license": "MIT",
+ "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/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/word-wrap": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
+ "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/yocto-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ }
+ }
+}
diff --git a/examples/ecommerce-jewellery-store/package.json b/examples/ecommerce-jewellery-store/package.json
new file mode 100644
index 00000000..f852d87d
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/package.json
@@ -0,0 +1,58 @@
+{
+ "name": "ecommerce-jewellery-store",
+ "private": true,
+ "version": "0.0.0",
+ "type": "module",
+ "scripts": {
+ "dev": "vite",
+ "build": "tsc -b && vite build",
+ "lint": "eslint .",
+ "preview": "vite preview"
+ },
+ "dependencies": {
+ "@progress/kendo-data-query": "^1.7.0",
+ "@progress/kendo-drawing": "^1.21.1",
+ "@progress/kendo-licensing": "^1.3.5",
+ "@progress/kendo-react-animation": "^9.0.0",
+ "@progress/kendo-react-buttons": "^9.0.0",
+ "@progress/kendo-react-chart-wizard": "^9.0.0",
+ "@progress/kendo-react-common": "^9.0.0",
+ "@progress/kendo-react-data-tools": "^9.0.0",
+ "@progress/kendo-react-dateinputs": "^9.0.0",
+ "@progress/kendo-react-dropdowns": "^9.0.0",
+ "@progress/kendo-react-form": "^9.0.0",
+ "@progress/kendo-react-grid": "^9.0.0",
+ "@progress/kendo-react-indicators": "^9.0.0",
+ "@progress/kendo-react-inputs": "^9.0.0",
+ "@progress/kendo-react-intl": "^9.0.0",
+ "@progress/kendo-react-layout": "^9.0.0",
+ "@progress/kendo-react-notification": "^9.0.0",
+ "@progress/kendo-react-popup": "^9.0.0",
+ "@progress/kendo-react-progressbars": "^9.0.0",
+ "@progress/kendo-react-treeview": "^9.0.0",
+ "@progress/kendo-svg-icons": "^4.0.0",
+ "@progress/kendo-theme-default": "^10.0.1",
+ "@progress/kendo-theme-utils": "^10.0.1",
+ "react": "^18.3.1",
+ "react-dom": "^18.3.1",
+ "react-router-dom": "^6.27.0"
+ },
+ "devDependencies": {
+ "@babel/core": "^7.26.0",
+ "@babel/preset-react": "^7.25.9",
+ "@eslint/js": "^9.11.1",
+ "@types/node": "^22.9.0",
+ "@types/react": "^18.3.12",
+ "@types/react-dom": "^18.3.1",
+ "@vitejs/plugin-react": "^4.3.2",
+ "babel-loader": "^9.2.1",
+ "eslint": "^9.11.1",
+ "eslint-plugin-react-hooks": "^5.1.0-rc.0",
+ "eslint-plugin-react-refresh": "^0.4.12",
+ "globals": "^15.9.0",
+ "sass-embedded": "^1.80.5",
+ "typescript": "^5.6.3",
+ "typescript-eslint": "^8.7.0",
+ "vite": "^5.4.8"
+ }
+}
diff --git a/examples/ecommerce-jewellery-store/public/vite.svg b/examples/ecommerce-jewellery-store/public/vite.svg
new file mode 100644
index 00000000..e7b8dfb1
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/public/vite.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/examples/ecommerce-jewellery-store/src/App.tsx b/examples/ecommerce-jewellery-store/src/App.tsx
new file mode 100644
index 00000000..26229d75
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/src/App.tsx
@@ -0,0 +1,47 @@
+import { BrowserRouter as Router, Routes, Route } from "react-router-dom";
+import Header from "./components/Header";
+import Footer from "./components/Footer";
+import Contacts from "./pages/Contacts";
+import ThankYou from "./pages/ThankYou";
+import PaymentDetails from "./pages/PaymentDetails";
+import { AllProductsListView } from "./pages/AllProductsListView";
+import Home from "./pages/Home";
+import "@progress/kendo-theme-default/dist/all.css";
+import "@progress/kendo-theme-utils/dist/all.scss";
+import { SizedParent } from "./components/SizedParent";
+import { DetailedCategory } from "./pages/DetailedCategory";
+import { ProductDetails } from "./pages/ProductsDetails";
+import { CartProvider } from "./helpers/CartContext";
+import { AdminProvider } from './helpers/AdminContext';
+import { CategoriesProvider } from './helpers/CategoriesContext';
+import { ShoppingCartList } from "./components/ShoppingCartList"; // Adjust path if necessary
+
+function App() {
+ return (
+
+
+
+
+
+
+
+ } />
+ } />
+ } />
+ } />
+ } />
+ } />
+ } />
+ } />
+ } />
+
+
+
+
+
+
+
+ );
+}
+
+export default App;
\ No newline at end of file
diff --git a/examples/ecommerce-jewellery-store/src/assets/1111.jfif b/examples/ecommerce-jewellery-store/src/assets/1111.jfif
new file mode 100644
index 00000000..5ac80b4a
Binary files /dev/null and b/examples/ecommerce-jewellery-store/src/assets/1111.jfif differ
diff --git a/examples/ecommerce-jewellery-store/src/assets/aurelia-detail-page.png b/examples/ecommerce-jewellery-store/src/assets/aurelia-detail-page.png
new file mode 100644
index 00000000..98143cf7
Binary files /dev/null and b/examples/ecommerce-jewellery-store/src/assets/aurelia-detail-page.png differ
diff --git a/examples/ecommerce-jewellery-store/src/assets/bracelets.png b/examples/ecommerce-jewellery-store/src/assets/bracelets.png
new file mode 100644
index 00000000..9fb1c42e
Binary files /dev/null and b/examples/ecommerce-jewellery-store/src/assets/bracelets.png differ
diff --git a/examples/ecommerce-jewellery-store/src/assets/brownWatch.jpg b/examples/ecommerce-jewellery-store/src/assets/brownWatch.jpg
new file mode 100644
index 00000000..086711ea
Binary files /dev/null and b/examples/ecommerce-jewellery-store/src/assets/brownWatch.jpg differ
diff --git a/examples/ecommerce-jewellery-store/src/assets/contactsImage.png b/examples/ecommerce-jewellery-store/src/assets/contactsImage.png
new file mode 100644
index 00000000..5c705df3
Binary files /dev/null and b/examples/ecommerce-jewellery-store/src/assets/contactsImage.png differ
diff --git a/examples/ecommerce-jewellery-store/src/assets/creditCards.png b/examples/ecommerce-jewellery-store/src/assets/creditCards.png
new file mode 100644
index 00000000..074a5b62
Binary files /dev/null and b/examples/ecommerce-jewellery-store/src/assets/creditCards.png differ
diff --git a/examples/ecommerce-jewellery-store/src/assets/diamondRingPinkRuby.jpg b/examples/ecommerce-jewellery-store/src/assets/diamondRingPinkRuby.jpg
new file mode 100644
index 00000000..913e6e4d
Binary files /dev/null and b/examples/ecommerce-jewellery-store/src/assets/diamondRingPinkRuby.jpg differ
diff --git a/examples/ecommerce-jewellery-store/src/assets/homeModel2.png b/examples/ecommerce-jewellery-store/src/assets/homeModel2.png
new file mode 100644
index 00000000..31d2ae50
Binary files /dev/null and b/examples/ecommerce-jewellery-store/src/assets/homeModel2.png differ
diff --git a/examples/ecommerce-jewellery-store/src/assets/homeModel3.png b/examples/ecommerce-jewellery-store/src/assets/homeModel3.png
new file mode 100644
index 00000000..9aac5e79
Binary files /dev/null and b/examples/ecommerce-jewellery-store/src/assets/homeModel3.png differ
diff --git a/examples/ecommerce-jewellery-store/src/assets/homeServicesImage.png b/examples/ecommerce-jewellery-store/src/assets/homeServicesImage.png
new file mode 100644
index 00000000..63d2927d
Binary files /dev/null and b/examples/ecommerce-jewellery-store/src/assets/homeServicesImage.png differ
diff --git a/examples/ecommerce-jewellery-store/src/assets/homeWatch1.png b/examples/ecommerce-jewellery-store/src/assets/homeWatch1.png
new file mode 100644
index 00000000..74ccbb0c
Binary files /dev/null and b/examples/ecommerce-jewellery-store/src/assets/homeWatch1.png differ
diff --git a/examples/ecommerce-jewellery-store/src/assets/homemadePinkDiamondRing.jpg b/examples/ecommerce-jewellery-store/src/assets/homemadePinkDiamondRing.jpg
new file mode 100644
index 00000000..3ab23a91
Binary files /dev/null and b/examples/ecommerce-jewellery-store/src/assets/homemadePinkDiamondRing.jpg differ
diff --git a/examples/ecommerce-jewellery-store/src/assets/listViewImages/casualSilverWatch.png b/examples/ecommerce-jewellery-store/src/assets/listViewImages/casualSilverWatch.png
new file mode 100644
index 00000000..9bdfe8ad
Binary files /dev/null and b/examples/ecommerce-jewellery-store/src/assets/listViewImages/casualSilverWatch.png differ
diff --git a/examples/ecommerce-jewellery-store/src/assets/listViewImages/diamondRingRuby.png b/examples/ecommerce-jewellery-store/src/assets/listViewImages/diamondRingRuby.png
new file mode 100644
index 00000000..94601133
Binary files /dev/null and b/examples/ecommerce-jewellery-store/src/assets/listViewImages/diamondRingRuby.png differ
diff --git a/examples/ecommerce-jewellery-store/src/assets/listViewImages/diamondRingSapphire.png b/examples/ecommerce-jewellery-store/src/assets/listViewImages/diamondRingSapphire.png
new file mode 100644
index 00000000..30850f5d
Binary files /dev/null and b/examples/ecommerce-jewellery-store/src/assets/listViewImages/diamondRingSapphire.png differ
diff --git a/examples/ecommerce-jewellery-store/src/assets/listViewImages/diamondWeddingBands.png b/examples/ecommerce-jewellery-store/src/assets/listViewImages/diamondWeddingBands.png
new file mode 100644
index 00000000..ebb82294
Binary files /dev/null and b/examples/ecommerce-jewellery-store/src/assets/listViewImages/diamondWeddingBands.png differ
diff --git a/examples/ecommerce-jewellery-store/src/assets/listViewImages/diamondWeddingRing.png b/examples/ecommerce-jewellery-store/src/assets/listViewImages/diamondWeddingRing.png
new file mode 100644
index 00000000..00887e90
Binary files /dev/null and b/examples/ecommerce-jewellery-store/src/assets/listViewImages/diamondWeddingRing.png differ
diff --git a/examples/ecommerce-jewellery-store/src/assets/listViewImages/goldEarringsGarnet.png b/examples/ecommerce-jewellery-store/src/assets/listViewImages/goldEarringsGarnet.png
new file mode 100644
index 00000000..936a59df
Binary files /dev/null and b/examples/ecommerce-jewellery-store/src/assets/listViewImages/goldEarringsGarnet.png differ
diff --git a/examples/ecommerce-jewellery-store/src/assets/listViewImages/handmadeDiamongRing.png b/examples/ecommerce-jewellery-store/src/assets/listViewImages/handmadeDiamongRing.png
new file mode 100644
index 00000000..79afea1e
Binary files /dev/null and b/examples/ecommerce-jewellery-store/src/assets/listViewImages/handmadeDiamongRing.png differ
diff --git a/examples/ecommerce-jewellery-store/src/assets/listViewImages/handmadeSilverEarrings.png b/examples/ecommerce-jewellery-store/src/assets/listViewImages/handmadeSilverEarrings.png
new file mode 100644
index 00000000..90ec0511
Binary files /dev/null and b/examples/ecommerce-jewellery-store/src/assets/listViewImages/handmadeSilverEarrings.png differ
diff --git a/examples/ecommerce-jewellery-store/src/assets/listViewImages/handmadeYellowGoldRing.png b/examples/ecommerce-jewellery-store/src/assets/listViewImages/handmadeYellowGoldRing.png
new file mode 100644
index 00000000..9eedfa3d
Binary files /dev/null and b/examples/ecommerce-jewellery-store/src/assets/listViewImages/handmadeYellowGoldRing.png differ
diff --git a/examples/ecommerce-jewellery-store/src/assets/listViewImages/necklace.png b/examples/ecommerce-jewellery-store/src/assets/listViewImages/necklace.png
new file mode 100644
index 00000000..c4057b4e
Binary files /dev/null and b/examples/ecommerce-jewellery-store/src/assets/listViewImages/necklace.png differ
diff --git a/examples/ecommerce-jewellery-store/src/assets/listViewImages/pinkSilverBracelet.png b/examples/ecommerce-jewellery-store/src/assets/listViewImages/pinkSilverBracelet.png
new file mode 100644
index 00000000..7690bf15
Binary files /dev/null and b/examples/ecommerce-jewellery-store/src/assets/listViewImages/pinkSilverBracelet.png differ
diff --git a/examples/ecommerce-jewellery-store/src/assets/listViewImages/roseGoldEarringsOpal.png b/examples/ecommerce-jewellery-store/src/assets/listViewImages/roseGoldEarringsOpal.png
new file mode 100644
index 00000000..70126cfe
Binary files /dev/null and b/examples/ecommerce-jewellery-store/src/assets/listViewImages/roseGoldEarringsOpal.png differ
diff --git a/examples/ecommerce-jewellery-store/src/assets/listViewImages/silverBraceletCross.png b/examples/ecommerce-jewellery-store/src/assets/listViewImages/silverBraceletCross.png
new file mode 100644
index 00000000..cef20607
Binary files /dev/null and b/examples/ecommerce-jewellery-store/src/assets/listViewImages/silverBraceletCross.png differ
diff --git a/examples/ecommerce-jewellery-store/src/assets/listViewImages/silverBraceletOnyx.png b/examples/ecommerce-jewellery-store/src/assets/listViewImages/silverBraceletOnyx.png
new file mode 100644
index 00000000..412435d9
Binary files /dev/null and b/examples/ecommerce-jewellery-store/src/assets/listViewImages/silverBraceletOnyx.png differ
diff --git a/examples/ecommerce-jewellery-store/src/assets/listViewImages/silverBraceletTopaz.png b/examples/ecommerce-jewellery-store/src/assets/listViewImages/silverBraceletTopaz.png
new file mode 100644
index 00000000..19b610fb
Binary files /dev/null and b/examples/ecommerce-jewellery-store/src/assets/listViewImages/silverBraceletTopaz.png differ
diff --git a/examples/ecommerce-jewellery-store/src/assets/listViewImages/silverHeartBracelet.png b/examples/ecommerce-jewellery-store/src/assets/listViewImages/silverHeartBracelet.png
new file mode 100644
index 00000000..51005963
Binary files /dev/null and b/examples/ecommerce-jewellery-store/src/assets/listViewImages/silverHeartBracelet.png differ
diff --git a/examples/ecommerce-jewellery-store/src/assets/listViewImages/silverWeddingBands.png b/examples/ecommerce-jewellery-store/src/assets/listViewImages/silverWeddingBands.png
new file mode 100644
index 00000000..db8bf912
Binary files /dev/null and b/examples/ecommerce-jewellery-store/src/assets/listViewImages/silverWeddingBands.png differ
diff --git a/examples/ecommerce-jewellery-store/src/assets/listViewImages/stainlessSteelWatch.png b/examples/ecommerce-jewellery-store/src/assets/listViewImages/stainlessSteelWatch.png
new file mode 100644
index 00000000..74c7f319
Binary files /dev/null and b/examples/ecommerce-jewellery-store/src/assets/listViewImages/stainlessSteelWatch.png differ
diff --git a/examples/ecommerce-jewellery-store/src/assets/listViewImages/weddingBandsPearl.png b/examples/ecommerce-jewellery-store/src/assets/listViewImages/weddingBandsPearl.png
new file mode 100644
index 00000000..2fb1a198
Binary files /dev/null and b/examples/ecommerce-jewellery-store/src/assets/listViewImages/weddingBandsPearl.png differ
diff --git a/examples/ecommerce-jewellery-store/src/assets/listViewImages/yellowGoldEarrings.png b/examples/ecommerce-jewellery-store/src/assets/listViewImages/yellowGoldEarrings.png
new file mode 100644
index 00000000..e5392325
Binary files /dev/null and b/examples/ecommerce-jewellery-store/src/assets/listViewImages/yellowGoldEarrings.png differ
diff --git a/examples/ecommerce-jewellery-store/src/assets/model_1.png b/examples/ecommerce-jewellery-store/src/assets/model_1.png
new file mode 100644
index 00000000..d082eb9e
Binary files /dev/null and b/examples/ecommerce-jewellery-store/src/assets/model_1.png differ
diff --git a/examples/ecommerce-jewellery-store/src/assets/necklace_1.jfif b/examples/ecommerce-jewellery-store/src/assets/necklace_1.jfif
new file mode 100644
index 00000000..378424b9
Binary files /dev/null and b/examples/ecommerce-jewellery-store/src/assets/necklace_1.jfif differ
diff --git a/examples/ecommerce-jewellery-store/src/assets/present.png b/examples/ecommerce-jewellery-store/src/assets/present.png
new file mode 100644
index 00000000..21c0a379
Binary files /dev/null and b/examples/ecommerce-jewellery-store/src/assets/present.png differ
diff --git a/examples/ecommerce-jewellery-store/src/assets/react.svg b/examples/ecommerce-jewellery-store/src/assets/react.svg
new file mode 100644
index 00000000..6c87de9b
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/src/assets/react.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/examples/ecommerce-jewellery-store/src/assets/ring_1.jfif b/examples/ecommerce-jewellery-store/src/assets/ring_1.jfif
new file mode 100644
index 00000000..2df50d8d
Binary files /dev/null and b/examples/ecommerce-jewellery-store/src/assets/ring_1.jfif differ
diff --git a/examples/ecommerce-jewellery-store/src/assets/shoppingCartImg.png b/examples/ecommerce-jewellery-store/src/assets/shoppingCartImg.png
new file mode 100644
index 00000000..54580b35
Binary files /dev/null and b/examples/ecommerce-jewellery-store/src/assets/shoppingCartImg.png differ
diff --git a/examples/ecommerce-jewellery-store/src/assets/testemonials1.jpg b/examples/ecommerce-jewellery-store/src/assets/testemonials1.jpg
new file mode 100644
index 00000000..b4e0ffbb
Binary files /dev/null and b/examples/ecommerce-jewellery-store/src/assets/testemonials1.jpg differ
diff --git a/examples/ecommerce-jewellery-store/src/assets/testemonials2.jpg b/examples/ecommerce-jewellery-store/src/assets/testemonials2.jpg
new file mode 100644
index 00000000..3e9cde9f
Binary files /dev/null and b/examples/ecommerce-jewellery-store/src/assets/testemonials2.jpg differ
diff --git a/examples/ecommerce-jewellery-store/src/assets/testemonials3.jpg b/examples/ecommerce-jewellery-store/src/assets/testemonials3.jpg
new file mode 100644
index 00000000..b2bc4638
Binary files /dev/null and b/examples/ecommerce-jewellery-store/src/assets/testemonials3.jpg differ
diff --git a/examples/ecommerce-jewellery-store/src/assets/tolosCollection.jfif b/examples/ecommerce-jewellery-store/src/assets/tolosCollection.jfif
new file mode 100644
index 00000000..c862c787
Binary files /dev/null and b/examples/ecommerce-jewellery-store/src/assets/tolosCollection.jfif differ
diff --git a/examples/ecommerce-jewellery-store/src/assets/vilora-logo.png b/examples/ecommerce-jewellery-store/src/assets/vilora-logo.png
new file mode 100644
index 00000000..00c594ef
Binary files /dev/null and b/examples/ecommerce-jewellery-store/src/assets/vilora-logo.png differ
diff --git a/examples/ecommerce-jewellery-store/src/assets/vitageWatch.jpg b/examples/ecommerce-jewellery-store/src/assets/vitageWatch.jpg
new file mode 100644
index 00000000..4b4bba24
Binary files /dev/null and b/examples/ecommerce-jewellery-store/src/assets/vitageWatch.jpg differ
diff --git a/examples/ecommerce-jewellery-store/src/assets/whiteSandDiamondRing.jpg b/examples/ecommerce-jewellery-store/src/assets/whiteSandDiamondRing.jpg
new file mode 100644
index 00000000..c8718455
Binary files /dev/null and b/examples/ecommerce-jewellery-store/src/assets/whiteSandDiamondRing.jpg differ
diff --git a/examples/ecommerce-jewellery-store/src/components/AdminView.tsx b/examples/ecommerce-jewellery-store/src/components/AdminView.tsx
new file mode 100644
index 00000000..2febadfe
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/src/components/AdminView.tsx
@@ -0,0 +1,201 @@
+import * as React from 'react';
+import { getter } from '@progress/kendo-react-common';
+import {
+ Grid,
+ GridColumn,
+ GridSelectionChangeEvent,
+ GridHandle,
+ getSelectedState,
+ GridKeyDownEvent,
+ getSelectedStateFromKeyDown,
+ GridSortChangeEvent,
+ GridPageChangeEvent,
+} from '@progress/kendo-react-grid';
+import {
+ ChartWizard,
+ ChartWizardDataRow,
+ getWizardDataFromGridSelection,
+} from '@progress/kendo-react-chart-wizard';
+import { Button } from '@progress/kendo-react-buttons';
+import { orderBy } from '@progress/kendo-data-query';
+import { chartAreaStackedIcon } from '@progress/kendo-svg-icons';
+import { sampleData } from '../data/shared-gd-sampleChartData';
+
+interface SampleDataItem {
+ ID: string;
+ Product: string;
+ SKU: string;
+ Category: string;
+ Price: number;
+ Sales: number;
+ Status: string;
+ Quantity: number;
+ URL: string;
+}
+
+const DATA_ITEM_KEY = 'ID';
+const SELECTED_FIELD = 'selected';
+const idGetter = getter(DATA_ITEM_KEY);
+
+interface SelectedState {
+ [id: string]: boolean | number[];
+}
+
+const AdminView: React.FC = () => {
+ const gridRef = React.useRef(null);
+ const [selectedState, setSelectedState] = React.useState({});
+ const [sort, setSort] = React.useState<{ field: string; dir: 'asc' | 'desc' }[]>([
+ { field: 'Sales', dir: 'desc' },
+ ]);
+ const [showChartWizard, setShowChartWizard] = React.useState(false);
+ const [chartData, setChartData] = React.useState([]);
+ const [top3SalesData, setTop3SalesData] = React.useState([]);
+ const [top3Visible, setTop3Visible] = React.useState(false);
+ const [page, setPage] = React.useState<{ skip: number; take: number }>({ skip: 0, take: 4 });
+
+ const data = sampleData.map((item) => ({
+ ...item,
+ [SELECTED_FIELD]: selectedState[idGetter(item)],
+ }));
+
+ const pagedData = orderBy(data, sort).slice(page.skip, page.skip + page.take);
+
+ const onSelectionChange = (event: GridSelectionChangeEvent) => {
+ const newSelectedState = getSelectedState({
+ event,
+ selectedState,
+ dataItemKey: DATA_ITEM_KEY,
+ });
+ setSelectedState(newSelectedState);
+ };
+
+ const onKeyDown = (event: GridKeyDownEvent) => {
+ const newSelectedState = getSelectedStateFromKeyDown({
+ event,
+ selectedState,
+ dataItemKey: DATA_ITEM_KEY,
+ });
+ setSelectedState(newSelectedState);
+ };
+
+ const onPageChange = (event: GridPageChangeEvent) => {
+ setPage({ skip: event.page.skip, take: event.page.take });
+ };
+
+ const disabled = Object.keys(selectedState).length === 0;
+
+ const handleSelectedChart = React.useCallback(() => {
+ if (gridRef.current) {
+ const chartWizardData = getWizardDataFromGridSelection({
+ grid: gridRef.current,
+ data: sampleData,
+ selectedState,
+ dataItemKey: DATA_ITEM_KEY,
+ });
+
+ setChartData(chartWizardData);
+ setShowChartWizard(true);
+ } else {
+ console.error('Grid reference is not available.');
+ }
+ }, [selectedState]);
+
+ const handleTop3Sales = React.useCallback(() => {
+ const selectedData = getWizardDataFromGridSelection({
+ grid: gridRef.current,
+ data: sampleData,
+ selectedState,
+ dataItemKey: DATA_ITEM_KEY,
+ });
+
+ const sortedTop3Sales = selectedData
+ .sort(
+ (a, b) =>
+ b.find((field) => field.field === 'Total Sales')?.value -
+ a.find((field) => field.field === 'Total Sales')?.value
+ )
+ .slice(0, 3);
+
+ setTop3SalesData(sortedTop3Sales);
+ setTop3Visible(true);
+ }, [selectedState]);
+
+ const URLImageCell: React.FC<{ dataItem: SampleDataItem; field?: string }> = ({
+ dataItem,
+ field,
+ }) => {
+ const imageUrl = field && field in dataItem ? (dataItem as Record)[field] : dataItem.URL;
+ return (
+
+
+ |
+ );
+ };
+
+ return (
+ <>
+
+
+
+
+ {
+ setSort(e.sort as { field: string; dir: 'asc' | 'desc' }[]);
+ }}
+ >
+
+
+
+
+
+
+
+
+
+ {showChartWizard && (
+ setShowChartWizard(false)}
+ />
+ )}
+
+ {top3Visible && (
+ setTop3Visible(false)}
+ />
+ )}
+ >
+ );
+};
+
+export default AdminView;
diff --git a/examples/ecommerce-jewellery-store/src/components/AppointmentInput.tsx b/examples/ecommerce-jewellery-store/src/components/AppointmentInput.tsx
new file mode 100644
index 00000000..ee4a406e
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/src/components/AppointmentInput.tsx
@@ -0,0 +1,37 @@
+import * as React from 'react';
+
+import {
+ DropDownList,
+ DropDownListChangeEvent,
+ } from '@progress/kendo-react-dropdowns';
+
+ const AppointmentInput: React.FC = () => {
+ const appointments = [
+ { text: 'Customer Service Appointment', id: 1 },
+ { text: 'Sales Representative Appointment', id: 2 },
+ { text: 'Refund Appointment', id: 3 },
+ ];
+
+ const [state, setState] = React.useState({
+ value: { text: 'Customer Service Appointment', id: 1 },
+ });
+
+ const handleChange = (event: DropDownListChangeEvent) => {
+ setState({
+ value: event.target.value,
+ });
+ };
+
+ return (
+
+ );
+ };
+
+ export default AppointmentInput;
+
\ No newline at end of file
diff --git a/examples/ecommerce-jewellery-store/src/components/BackgroundImage.tsx b/examples/ecommerce-jewellery-store/src/components/BackgroundImage.tsx
new file mode 100644
index 00000000..88edd69e
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/src/components/BackgroundImage.tsx
@@ -0,0 +1,39 @@
+import { Button } from "@progress/kendo-react-buttons";
+import { BackgroundImageProps } from "../data/types";
+import { useNavigate } from "react-router-dom";
+
+export const BackgroundImage = (props: BackgroundImageProps) => {
+ const { img, title, subtitle, buttonText } = props;
+ const navigate = useNavigate();
+
+ const onButtonClick = () => {
+ navigate('/products')
+ }
+
+ return (
+
+
+
+
+ {title}
+
+
{subtitle}
+ {buttonText && (
+
+ )}
+
+
+
+ );
+};
diff --git a/examples/ecommerce-jewellery-store/src/components/CardHolder.tsx b/examples/ecommerce-jewellery-store/src/components/CardHolder.tsx
new file mode 100644
index 00000000..2d3772c8
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/src/components/CardHolder.tsx
@@ -0,0 +1,10 @@
+import { TextBox } from '@progress/kendo-react-inputs';
+
+const CardNumber = () => {
+ return (
+
+
+ );
+};
+
+export default CardNumber;
diff --git a/examples/ecommerce-jewellery-store/src/components/CardNumber.tsx b/examples/ecommerce-jewellery-store/src/components/CardNumber.tsx
new file mode 100644
index 00000000..eef0c2d2
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/src/components/CardNumber.tsx
@@ -0,0 +1,13 @@
+import { MaskedTextBox } from '@progress/kendo-react-inputs';
+
+const CardNumber = () => {
+ return (
+
+ );
+};
+
+export default CardNumber;
diff --git a/examples/ecommerce-jewellery-store/src/components/CardsList.tsx b/examples/ecommerce-jewellery-store/src/components/CardsList.tsx
new file mode 100644
index 00000000..b7fb0464
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/src/components/CardsList.tsx
@@ -0,0 +1,92 @@
+import { Badge, BadgeContainer } from "@progress/kendo-react-indicators";
+import { Button } from "@progress/kendo-react-buttons";
+import { cartIcon } from "@progress/kendo-svg-icons";
+import { CardListProps } from "../data/types";
+import { useNavigate } from "react-router-dom";
+
+export const CardsList = (props: CardListProps) => {
+ const navigate = useNavigate();
+
+ const onButtonClick = (index: number) => {
+ navigate(`/product/${index + 1}`);
+ };
+
+ return (
+
+ {props.data.map((item, index) => {
+ return (
+
+ {item.status !== null ? (
+
+
+
+
+ {item.status}
+
+
+ ) : (
+
+ )}
+
+
{item.title}
+
+
+ {item.oldPrice && (
+ {`$${item.oldPrice}`}
+ )}
+ {`$${item.newPrice}`}
+
+
+
+
+
+
+
+ );
+ })}
+
+ );
+};
diff --git a/examples/ecommerce-jewellery-store/src/components/CategoryList.tsx b/examples/ecommerce-jewellery-store/src/components/CategoryList.tsx
new file mode 100644
index 00000000..9db2421e
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/src/components/CategoryList.tsx
@@ -0,0 +1,60 @@
+
+import { useNavigate } from "react-router-dom";
+import { CategoryListProps } from "../data/types";
+import { Button } from "@progress/kendo-react-buttons";
+import { CardDescriptor } from "../data/types";
+
+export const CategoryList: React.FC = ({ data, title, subtitle, colSpan = 4 }) => {
+ const navigate = useNavigate();
+
+ const onNavigate = (card: CardDescriptor) => {
+ if (card.collectionText === `Collection "AURELIA"`) {
+ navigate("/category")
+ }
+ }
+
+ return (
+ <>
+
+ {title}
+
+
+ {subtitle}
+
+
+ {data.map((card, index) => {
+ return (
+
+
+
+ {card.collectionText}
+
+
+
+
+
+ );
+ })}
+
+ >
+ );
+}
diff --git a/examples/ecommerce-jewellery-store/src/components/CityInput.tsx b/examples/ecommerce-jewellery-store/src/components/CityInput.tsx
new file mode 100644
index 00000000..02379f7a
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/src/components/CityInput.tsx
@@ -0,0 +1,38 @@
+import * as React from 'react';
+
+import {
+ DropDownList,
+ DropDownListChangeEvent,
+ } from '@progress/kendo-react-dropdowns';
+
+ const CityInput: React.FC = () => {
+ const cities = [
+ { text: 'London', id: 1 },
+ { text: 'Liverpool', id: 2 },
+ { text: 'Canterbury', id: 3 },
+ { text: 'Lancaster', id: 4 },
+ ];
+
+ const [state, setState] = React.useState({
+ value: { text: 'Liverpool', id: 2 },
+ });
+
+ const handleChange = (event: DropDownListChangeEvent) => {
+ setState({
+ value: event.target.value,
+ });
+ };
+
+ return (
+
+ );
+ };
+
+ export default CityInput;
+
\ No newline at end of file
diff --git a/examples/ecommerce-jewellery-store/src/components/ContactsRadioButtons.tsx b/examples/ecommerce-jewellery-store/src/components/ContactsRadioButtons.tsx
new file mode 100644
index 00000000..57cd09e4
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/src/components/ContactsRadioButtons.tsx
@@ -0,0 +1,28 @@
+
+
+import * as React from 'react';
+
+import { RadioButton, RadioButtonChangeEvent } from '@progress/kendo-react-inputs';
+
+const ContactsRadioButtons: React.FC = () => {
+ const [selectedValue, setSelectedValue] = React.useState('first');
+
+ const handleChange = React.useCallback(
+ (e: RadioButtonChangeEvent) => {
+ setSelectedValue(e.value);
+ },
+ [setSelectedValue]
+ );
+
+ return (
+
+
+
+
+
+
+
+ );
+}
+
+export default ContactsRadioButtons;
diff --git a/examples/ecommerce-jewellery-store/src/components/CustomizedSection.tsx b/examples/ecommerce-jewellery-store/src/components/CustomizedSection.tsx
new file mode 100644
index 00000000..739651b4
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/src/components/CustomizedSection.tsx
@@ -0,0 +1,7 @@
+import { SectionProps } from "../data/types";
+
+export const CustomSection = (props: SectionProps) => {
+ return
+};
\ No newline at end of file
diff --git a/examples/ecommerce-jewellery-store/src/components/DateChooserInput.tsx b/examples/ecommerce-jewellery-store/src/components/DateChooserInput.tsx
new file mode 100644
index 00000000..92867475
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/src/components/DateChooserInput.tsx
@@ -0,0 +1,18 @@
+import * as React from 'react';
+import { DateInput, DateInputChangeEvent } from '@progress/kendo-react-dateinputs';
+
+const DateChooserInput: React.FC = () => {
+ const [value, setValue] = React.useState(new Date(2017, 1, 13));
+ const min = new Date(2000, 2, 10);
+ const max = new Date(2020, 2, 10);
+
+ const changeDate = (event: DateInputChangeEvent) => {
+ setValue(event.value);
+ };
+
+ return
+
+
;
+};
+
+export default DateChooserInput;
\ No newline at end of file
diff --git a/examples/ecommerce-jewellery-store/src/components/EmailInput.tsx b/examples/ecommerce-jewellery-store/src/components/EmailInput.tsx
new file mode 100644
index 00000000..5ed545e2
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/src/components/EmailInput.tsx
@@ -0,0 +1,13 @@
+import * as React from 'react';
+import { Input } from '@progress/kendo-react-inputs';
+
+const EmailInput: React.FC = () => {
+
+ return (
+
+
+
+ );
+};
+
+export default EmailInput;
diff --git a/examples/ecommerce-jewellery-store/src/components/ExpiryDate.tsx b/examples/ecommerce-jewellery-store/src/components/ExpiryDate.tsx
new file mode 100644
index 00000000..442dcc43
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/src/components/ExpiryDate.tsx
@@ -0,0 +1,9 @@
+import { DateInput } from "@progress/kendo-react-dateinputs";
+
+const ExpiryDate = () => {
+ return (
+
+ );
+};
+
+export default ExpiryDate;
diff --git a/examples/ecommerce-jewellery-store/src/components/FilterComponent.tsx b/examples/ecommerce-jewellery-store/src/components/FilterComponent.tsx
new file mode 100644
index 00000000..b2d455fb
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/src/components/FilterComponent.tsx
@@ -0,0 +1,135 @@
+import React, { useEffect } from "react";
+import { MultiSelect, DropDownList } from "@progress/kendo-react-dropdowns";
+import { SvgIcon } from "@progress/kendo-react-common";
+import { filterIcon, sortAscIcon } from "@progress/kendo-svg-icons";
+import { FilterDescriptor, SortDescriptor, State } from "@progress/kendo-data-query";
+import { useCategoriesContext } from "../helpers/CategoriesContext";
+
+const chips = ["Bracelets", "Rings", "Earrings", "Watches", "Necklaces"];
+const statuses = ["Sale", "Recommended", "Must Have"];
+const materials = ["Gold", "Silver"];
+
+interface FilterComponentProps {
+ updateUI: (state: State) => void;
+}
+
+export const FilterComponent: React.FC = ({ updateUI }) => {
+ const { selectedCategory, setSelectedCategory } = useCategoriesContext();
+ const [categoryValue, setCategoryValue] = React.useState([]);
+ const [statusValue, setStatusValue] = React.useState("Recommended");
+ const [materialValue, setMaterialValue] = React.useState("Material");
+
+ useEffect(() => {
+ if (selectedCategory) {
+ setCategoryValue([selectedCategory]);
+ applyCategoryFilter([selectedCategory]);
+ } else {
+ setCategoryValue([]);
+ applyCategoryFilter([]);
+ }
+ }, [selectedCategory]);
+
+ const applyCategoryFilter = (categories: string[]) => {
+ const filters = categories.map((category) => ({
+ field: "category",
+ operator: "eq",
+ value: category,
+ }));
+
+ const customCompositeFilters: State = {
+ filter: {
+ logic: "or",
+ filters,
+ },
+ sort: undefined,
+ };
+
+ updateUI(customCompositeFilters);
+ };
+
+ const onCategoryChange = (e: any) => {
+ setCategoryValue(e.value);
+ applyCategoryFilter(e.value);
+ setSelectedCategory(e.value.length > 0 ? e.value[0] : null);
+ };
+
+ const onStatusChange = (e: any) => {
+ setStatusValue(e.value);
+
+ const newSorts: SortDescriptor[] = [
+ {
+ field: "status",
+ dir: "desc",
+ },
+ ];
+
+ const customCompositeFilters: State = {
+ filter: undefined,
+ sort: newSorts,
+ };
+
+ updateUI(customCompositeFilters);
+ };
+
+ const onMaterialChange = (e: any) => {
+ setMaterialValue(e.value);
+
+ const newFilter: FilterDescriptor[] = [
+ {
+ field: "material",
+ operator: "eq",
+ value: e.value,
+ },
+ ];
+
+ const customCompositeFilters: State = {
+ filter: {
+ logic: "or",
+ filters: newFilter,
+ },
+ sort: undefined,
+ };
+
+ updateUI(customCompositeFilters);
+ setCategoryValue([]);
+ };
+
+ const clearFilters = () => {
+ setCategoryValue([]);
+ setStatusValue("Recommended");
+ setMaterialValue("Material");
+ setSelectedCategory(null);
+ updateUI({ filter: undefined, sort: undefined });
+ };
+
+ return (
+
+
+
+ Filter:
+
+
+
+
+
+
+
+
+
+
+ Sort by:
+
+
+
+
+
+
+
+ );
+};
diff --git a/examples/ecommerce-jewellery-store/src/components/Footer.tsx b/examples/ecommerce-jewellery-store/src/components/Footer.tsx
new file mode 100644
index 00000000..953fc889
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/src/components/Footer.tsx
@@ -0,0 +1,81 @@
+import React from 'react';
+import { Button } from '@progress/kendo-react-buttons';
+import { SvgIcon } from '@progress/kendo-react-common';
+import { TextBox, InputSuffix, InputSeparator } from '@progress/kendo-react-inputs';
+import { Label } from '@progress/kendo-react-labels';
+import {
+ facebookIcon,
+ linkedinIcon,
+ twitterIcon,
+} from '@progress/kendo-svg-icons';
+import viloraLogo from '@/assets/vilora-logo.png';
+
+const Footer: React.FC = () => {
+ return (
+
+
+
+
+
+
+
We use cookies to improve your experience.
+
All rights reserved.
+
Subscribe to our Newsletter:
+
+
(
+
+
+
+
+ )}
+ />
+ Follow us:
+
+
+ Facebook
+
+
+ Twitter
+
+
+ LinkedIn
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default Footer;
diff --git a/examples/ecommerce-jewellery-store/src/components/Header.tsx b/examples/ecommerce-jewellery-store/src/components/Header.tsx
new file mode 100644
index 00000000..957ed557
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/src/components/Header.tsx
@@ -0,0 +1,89 @@
+import React from "react";
+import { useNavigate } from "react-router-dom";
+import { Menu, MenuSelectEvent } from "@progress/kendo-react-layout";
+import { Button } from "@progress/kendo-react-buttons";
+import { SvgIcon } from "@progress/kendo-react-common";
+import { InputPrefix, InputSeparator, TextBox, Switch } from "@progress/kendo-react-inputs";
+import { searchIcon, userIcon, cartIcon } from "@progress/kendo-svg-icons";
+import viloraLogo from "@/assets/vilora-logo.png";
+import items from "../data/items";
+import languageItems from "../data/language-items";
+import { AppBar, AppBarSection } from "@progress/kendo-react-layout";
+import { useAdminContext } from "../helpers/AdminContext";
+import { useCategoriesContext } from "../helpers/CategoriesContext";
+
+const Header: React.FC = () => {
+ const navigate = useNavigate();
+ const { toggleRole } = useAdminContext();
+ const { setSelectedCategory } = useCategoriesContext();
+
+ const handleCartClick = () => {
+ navigate("/shoppingcart");
+ };
+
+ const handleSwitchChange = () => {
+ toggleRole();
+ };
+
+ const handleMenuSelect = (event: MenuSelectEvent) => {
+ const selectedItem = event.item;
+
+ if (selectedItem.url) {
+ navigate(selectedItem.url);
+ return;
+ }
+
+ const selectedCategory = selectedItem.text;
+ if (selectedCategory === "All") {
+ setSelectedCategory(null);
+ } else {
+ setSelectedCategory(selectedCategory ?? null);
+ navigate("/category");
+ }
+ };
+
+ return (
+ <>
+
+
+
+
+
+
+
+
+
+ (
+ <>
+
+
+
+
+
+
+ >
+ )}
+ style={{ width: 300 }}
+ />
+
+
+
+
+
+
+ >
+ );
+};
+
+export default Header;
\ No newline at end of file
diff --git a/examples/ecommerce-jewellery-store/src/components/Layout.tsx b/examples/ecommerce-jewellery-store/src/components/Layout.tsx
new file mode 100644
index 00000000..e5c9570d
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/src/components/Layout.tsx
@@ -0,0 +1,8 @@
+import "../styles.css"
+import { LayoutProps } from "../data/types";
+
+export const Layout = (props: LayoutProps) => {
+ return
+ {props.children}
+
;
+};
diff --git a/examples/ecommerce-jewellery-store/src/components/OrderedImageCard.tsx b/examples/ecommerce-jewellery-store/src/components/OrderedImageCard.tsx
new file mode 100644
index 00000000..e1e7a54b
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/src/components/OrderedImageCard.tsx
@@ -0,0 +1,31 @@
+import { Button } from "@progress/kendo-react-buttons";
+import { OrderedImgTextProps } from "../data/types";
+
+export const OrderedImgText = (props: OrderedImgTextProps) => {
+ const { title, subtitle, contentText, img, order, link } = props;
+
+ return (
+ <>
+
+
+ {title}
+ {subtitle}
+ {contentText}
+
+ {link && (
+
+
+
+ )}
+
+ >
+ );
+};
diff --git a/examples/ecommerce-jewellery-store/src/components/PasswordInput.tsx b/examples/ecommerce-jewellery-store/src/components/PasswordInput.tsx
new file mode 100644
index 00000000..5b288652
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/src/components/PasswordInput.tsx
@@ -0,0 +1,35 @@
+import * as React from 'react';
+import { TextBox, TextBoxChangeEvent } from '@progress/kendo-react-inputs';
+import { Button } from '@progress/kendo-react-buttons';
+import { eyeIcon, eyeSlashIcon } from '@progress/kendo-svg-icons';
+
+const PasswordInput: React.FC = () => {
+ const [value, setValue] = React.useState('');
+ const [textboxType, setTextboxType] = React.useState<'password' | 'text'>('password');
+ const [iconName, setIconName] = React.useState(eyeIcon);
+
+ const handleClick = () => {
+ setTextboxType(textboxType === 'password' ? 'text' : 'password');
+ setIconName(iconName === eyeIcon ? eyeSlashIcon : eyeIcon);
+ };
+
+ const handleChange = (ev: TextBoxChangeEvent) => {
+ setValue(ev.target.value as string);
+};
+
+ return (
+
+ (
+
+ )}
+ />
+
+ );
+};
+
+export default PasswordInput;
diff --git a/examples/ecommerce-jewellery-store/src/components/PhoneInput.tsx b/examples/ecommerce-jewellery-store/src/components/PhoneInput.tsx
new file mode 100644
index 00000000..f969fa70
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/src/components/PhoneInput.tsx
@@ -0,0 +1,9 @@
+import { MaskedTextBox } from '@progress/kendo-react-inputs';
+
+const PhoneNumber: React.FC = () => {
+ return (
+
+ );
+};
+
+export default PhoneNumber;
diff --git a/examples/ecommerce-jewellery-store/src/components/ProductCard.tsx b/examples/ecommerce-jewellery-store/src/components/ProductCard.tsx
new file mode 100644
index 00000000..a9fbd971
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/src/components/ProductCard.tsx
@@ -0,0 +1,69 @@
+import { Breadcrumb } from "@progress/kendo-react-layout";
+import { ProductCardProps } from "../data/types";
+import { NumericTextBox, Rating } from "@progress/kendo-react-inputs";
+import { Button } from "@progress/kendo-react-buttons";
+
+export const ProductCard = (props: ProductCardProps) => {
+ return (
+ <>
+
+
+
+
+
+
+
+
{props.title}
+
{props.subtitle}
+
+
+
+ {props.reviews}
+
+
+
+
+ {`$${props.price}`}
+
+
+
+
{props.description}
+
+
+
+
+
+
+ >
+ );
+};
diff --git a/examples/ecommerce-jewellery-store/src/components/ShoppingCartList.tsx b/examples/ecommerce-jewellery-store/src/components/ShoppingCartList.tsx
new file mode 100644
index 00000000..df6a60ee
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/src/components/ShoppingCartList.tsx
@@ -0,0 +1,268 @@
+import * as React from "react";
+import {
+ chevronLeftIcon,
+ trashIcon,
+ walletSolidIcon,
+ heartIcon,
+ percentIcon,
+} from "@progress/kendo-svg-icons";
+import {
+ Form,
+ Field,
+ FormElement,
+ FieldRenderProps,
+ FieldWrapper,
+} from "@progress/kendo-react-form";
+import { Error } from "@progress/kendo-react-labels";
+import { Input } from "@progress/kendo-react-inputs";
+import { Button } from "@progress/kendo-react-buttons";
+import { useCart } from "../helpers/CartContext";
+import {
+ NumericTextBox
+} from "@progress/kendo-react-inputs";
+import { useNavigate } from "react-router-dom";
+import { Layout } from "./Layout";
+import shoppingCartImage from "../assets/shoppingCartImg.png";
+import { Avatar } from "@progress/kendo-react-layout";
+import { SvgIcon } from "@progress/kendo-react-common";
+
+const EmailInput = (fieldRenderProps: FieldRenderProps) => {
+ const { validationMessage, visited, ...others } = fieldRenderProps;
+ return (
+
+
+ {visited && validationMessage && {validationMessage}}
+
+ );
+};
+
+export const ShoppingCartList: React.FC = () => {
+ const { cart, updateIndividualCartItem } = useCart();
+ const navigate = useNavigate();
+
+ const onBackClick = () => {
+ navigate("/products");
+ };
+
+ const onProceedClick = () => {
+ navigate("/paymentdetails");
+ };
+
+ const updateQuantity = (event: any) => {
+ const target = event.target.element;
+ const id = target.getAttribute("id");
+
+ updateIndividualCartItem(id);
+ };
+
+ return (
+ <>
+
+
+ Shopping Cart
+
+
+
+
+
+ {cart.map((item) => {
+ const isCartItem = "quantity" in item;
+
+ return (
+
+
+
+ {isCartItem ? item.product.title : null}
+ {`$${
+ isCartItem ? item.product.newPrice.toLocaleString() : null
+ }`}
+
+ {isCartItem ? (
+
+ ) : (
+ Quantity not available
+ )}
+
+
+
+ {`$${(
+ item.quantity * item.product.newPrice
+ ).toLocaleString()}`}
+
+
+
+ );
+ })}
+
+ {cart.length > 0 ? (
+
+
+
+ ) : null}
+
+
+
+
Why people choose us?
+
+
+
+
+
+
+
+ Return Policy
+
+
+ You can return your items within 30 days for a full refund or
+ exchange.
+
+
+
+
+
+
+
+
+ Included Gift Wrapping
+
+
+ Apply your discount code at checkout to enjoy exclusive savings
+ on your order.
+
+
+
+
+
+
+
+
+ Discount Code Available
+
+
+ Add gift wrapping for a special touch, along with a personalized
+ message for your loved ones.
+
+
+
+
+
+ >
+ );
+};
diff --git a/examples/ecommerce-jewellery-store/src/components/SizedParent.tsx b/examples/ecommerce-jewellery-store/src/components/SizedParent.tsx
new file mode 100644
index 00000000..f349fd20
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/src/components/SizedParent.tsx
@@ -0,0 +1,12 @@
+
+import "../styles.css"
+import { SizedParentProps } from "../data/types";
+
+export const SizedParent = (props: SizedParentProps) => {
+ return (
+
+ {props.children}
+
+ );
+};
diff --git a/examples/ecommerce-jewellery-store/src/components/Testemonials.tsx b/examples/ecommerce-jewellery-store/src/components/Testemonials.tsx
new file mode 100644
index 00000000..03245300
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/src/components/Testemonials.tsx
@@ -0,0 +1,66 @@
+import { Avatar } from '@progress/kendo-react-layout';
+import { Rating } from '@progress/kendo-react-inputs';
+import { TestemonialsDataDescriptor } from '../data/types';
+import testemonials1 from "../assets/testemonials1.jpg"
+import testemonials2 from "../assets/testemonials2.jpg"
+import testemonials3 from "../assets/testemonials3.jpg"
+
+
+const testemonialsData: TestemonialsDataDescriptor[] = [
+ {
+ image: testemonials1,
+ name: "Erica Moore",
+ rating: 5,
+ description: "Vilora exceeded all my expectations! The craftsmanship of my diamond necklace is absolutely stunning, and the attention to detail is unparalleled. From the moment I placed my order to the day it arrived, the entire experience was flawless."
+ },
+ {
+ image: testemonials2,
+ name: "Kelvin Hettinger",
+ rating: 4.5,
+ description: "I couldn't be happier with my custom engagement ring from Vilora. The team helped me design the perfect piece, and the final result was even more beautiful than I imagined. Their service, quality, and dedication to excellence make Vilora my go-to for all fine jewelry."
+ },
+ {
+ image: testemonials3,
+ name: "Karen Brooks",
+ rating: 5,
+ description: "Vilora’s collection is nothing short of breathtaking. I recently purchased a white sapphire ring, and it’s become my favorite piece. The elegance and brilliance of the jewelry reflect their impeccable taste and high standards. Highly recommend!"
+ }
+];
+
+export const Testemonials = () => {
+ return (
+
+
+
Customers words
+
+ What do they say about us?
+
+
+
+ {testemonialsData.map((item, index) => (
+
+
+
+
+
+
+
+
{item.name}
+
+
+
+
+ {item.description}
+
+
+
+ ))}
+
+
+ );
+}
diff --git a/examples/ecommerce-jewellery-store/src/data/items.ts b/examples/ecommerce-jewellery-store/src/data/items.ts
new file mode 100644
index 00000000..4d417ee8
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/src/data/items.ts
@@ -0,0 +1,17 @@
+const items = [
+ {
+ "text": "Home",
+ "url": "/"
+ },
+ {
+ "text": "Jewelry",
+ "items": [{ "text": "Bracelets" }, { "text": "Rings" }, { "text": "Earings" }, { "text": "Watches" },{ "text": "All" }],
+ },
+ {
+ "text": "Contacts",
+ "url": "/contacts"
+ }
+ ];
+
+ export default items;
+
\ No newline at end of file
diff --git a/examples/ecommerce-jewellery-store/src/data/language-items.ts b/examples/ecommerce-jewellery-store/src/data/language-items.ts
new file mode 100644
index 00000000..b1dd1ee0
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/src/data/language-items.ts
@@ -0,0 +1,11 @@
+const languageItems = [
+
+ {
+ "text": "English",
+ "items": [{ "text": "English" }, { "text": "French" }, { "text": "Spanish" }]
+ },
+
+ ];
+
+ export default languageItems;
+
\ No newline at end of file
diff --git a/examples/ecommerce-jewellery-store/src/data/listData.ts b/examples/ecommerce-jewellery-store/src/data/listData.ts
new file mode 100644
index 00000000..f1d974f6
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/src/data/listData.ts
@@ -0,0 +1,184 @@
+import diamongWeddingRing from "../assets/listViewImages/diamondWeddingRing.png";
+import pinkSilverBracelet from "../assets/listViewImages/pinkSilverBracelet.png";
+import silverBraceletCross from "../assets/listViewImages/silverBraceletCross.png";
+import yellowGoldEarrings from "../assets/listViewImages/yellowGoldEarrings.png";
+import silverHeartNecklace from "../assets/listViewImages/necklace.png";
+import homemadeSilverEarrings from "../assets/listViewImages/handmadeSilverEarrings.png";
+import diamondWeddingBands from "../assets/listViewImages/diamondWeddingBands.png";
+import casualSilverWatch from "../assets/listViewImages/casualSilverWatch.png";
+import silverBraceletOnyx from "../assets/listViewImages/silverBraceletOnyx.png";
+import weddingBandsPearl from "../assets/listViewImages/weddingBandsPearl.png";
+import silverWeddingBands from "../assets/listViewImages/silverWeddingBands.png";
+import handmadeYellowGoldRing from "../assets/listViewImages/handmadeYellowGoldRing.png";
+import diamondRingSapphire from "../assets/listViewImages/diamondRingSapphire.png";
+import silverHeartBracelet from "../assets/listViewImages/silverHeartBracelet.png";
+import roseGoldEarringsOpal from "../assets/listViewImages/roseGoldEarringsOpal.png";
+import silverBraceletTopaz from "../assets/listViewImages/silverBraceletTopaz.png";
+import handmadeDiamongRing from "../assets/listViewImages/handmadeDiamongRing.png";
+import diamondRingRuby from "../assets/listViewImages/diamondRingRuby.png";
+import stainlessSteelWatch from "../assets/listViewImages/stainlessSteelWatch.png";
+import goldEarringsGarnet from "../assets/listViewImages/goldEarringsGarnet.png";
+import { ListDataDescriptor } from "./types";
+
+export const listData: ListDataDescriptor[] = [{
+ img: diamongWeddingRing,
+ status: "sale",
+ title: "Diamond Wedding Ring",
+ category: "Rings",
+ material: "Silver",
+ oldPrice: 990,
+ newPrice: 890
+}, {
+ img: silverBraceletCross,
+ status: "recommended",
+ category: "Bracelets",
+ material: "Silver",
+ title: "Silver Bracelet with Cross",
+ oldPrice: null,
+ newPrice: 270
+},
+{
+ img: pinkSilverBracelet,
+ status: null,
+ category: "Bracelets",
+ material: "Silver",
+ title: "Pink Silver Bracelet",
+ oldPrice: null,
+ newPrice: 460
+}, {
+ img: yellowGoldEarrings,
+ status: "sale",
+ category: "Earrings",
+ material: "Silver",
+ title: "Yellow Gold Earrings",
+ oldPrice: 500,
+ newPrice: 380
+}, {
+ img: silverHeartNecklace,
+ status: null,
+ category: "Necklaces",
+ material: "Silver",
+ title: "Silver Heart Necklace",
+ oldPrice: null,
+ newPrice: 400
+}, {
+ img: homemadeSilverEarrings,
+ status: null,
+ category: "Earrings",
+ material: "Silver",
+ title: "Handmade Silver Earrings",
+ oldPrice: null,
+ newPrice: 650
+}, {
+ img: diamondWeddingBands,
+ status: "recommended",
+ title: "Diamond Wedding Bands",
+ material: "Gold",
+ category: "Rings",
+ oldPrice: null,
+ newPrice: 4290
+}, {
+ img: casualSilverWatch,
+ status: null,
+ title: "Casual Silver Watch",
+ category: "Watches",
+ material: "Silver",
+ oldPrice: null,
+ newPrice: 390
+}, {
+ img: silverBraceletOnyx,
+ status: "sale",
+ title: "Silver Bracelet with Onyx",
+ material: "Silver",
+ category: "Bracelets",
+ oldPrice: 950,
+ newPrice: 770
+}, {
+ img: weddingBandsPearl,
+ status: "must have",
+ title: "Wedding Bands with Pearls",
+ material: "Gold",
+ category: "Rings",
+ oldPrice: null,
+ newPrice: 900
+}, {
+ img: silverWeddingBands,
+ status: null,
+ title: "Silver Wedding Bands",
+ material: "Silver",
+ category: "Rings",
+ oldPrice: null,
+ newPrice: 250
+}, {
+ img: handmadeYellowGoldRing,
+ status: null,
+ category: "Rings",
+ material: "Silver",
+ title: "Handmade Yellow Gold Ring",
+ oldPrice: null,
+ newPrice: 560
+}, {
+ img: diamondRingSapphire,
+ status: "must have",
+ title: "Diamond Ring with Sapphire",
+ category: "Rings",
+ material: "Gold",
+ oldPrice: null,
+ newPrice: 3590
+}, {
+ img: silverHeartBracelet,
+ status: null,
+ title: "Silver Heart Bracelet",
+ category: "Bracelets",
+ material: "Silver",
+ oldPrice: null,
+ newPrice: 430
+}, {
+ img: roseGoldEarringsOpal,
+ status: "Sale",
+ title: "Rose Gold Earrings with Opal",
+ category: "Earrings",
+ material: "Gold",
+ oldPrice: 850,
+ newPrice: 690
+},{
+ img: silverBraceletTopaz,
+ status: null,
+ category: "Bracelets",
+ material: "Silver",
+ title: "Silver Bracelet with Topaz",
+ oldPrice: null,
+ newPrice: 580
+},{
+ img: handmadeDiamongRing,
+ status: null,
+ category: "Rings",
+ material: "Gold",
+ title: "Handmade Diamond Ring",
+ oldPrice: null,
+ newPrice: 1100
+},{
+ img: diamondRingRuby,
+ status: "must have",
+ category: "Rings",
+ material: "Gold",
+ title: "Diamong Ring with Ruby",
+ oldPrice: null,
+ newPrice: 5560
+},{
+ img: stainlessSteelWatch,
+ status: null,
+ material: "Silver",
+ category: "Watches",
+ title: "Silver Watch",
+ oldPrice: null,
+ newPrice: 270
+}, {
+ img: goldEarringsGarnet,
+ status: null,
+ category: "Earrings",
+ material: "Gold",
+ title: "Gold Earrings with Garnet",
+ oldPrice: null,
+ newPrice: 270
+},].map((item, index) => ({ ...item, id: index + 1, rating: Math.floor(Math.random() * 5) + 3 }));
\ No newline at end of file
diff --git a/examples/ecommerce-jewellery-store/src/data/shared-gd-sampleChartData.ts b/examples/ecommerce-jewellery-store/src/data/shared-gd-sampleChartData.ts
new file mode 100644
index 00000000..0f9b1596
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/src/data/shared-gd-sampleChartData.ts
@@ -0,0 +1,222 @@
+export const sampleData = [
+ {
+ ID: '1',
+ Product: 'Happy',
+ SKU: '06-0543',
+ Category: 'Rings',
+ Price: 12.39,
+ Sales: 300,
+ Status: 'Published',
+ Quantity: 10,
+ URL: 'https://i5.walmartimages.com/seo/Women-s-ring-zircon-sparkling-diamond-ring-with-beautiful-romantic-jewelry-gift-Zirconia-Decorative-Flower-Ring_7489d8b4-1869-4524-916f-e3eebe30c7af.7597fda62aebae63fa30bd620ad12cb7.jpeg?odnHeight=2000&odnWidth=2000&odnBg=FFFFFF',
+ },
+ {
+ ID: '2',
+ Product: 'Gorgeous',
+ SKU: '07-0659',
+ Category: 'Bracelets',
+ Price: 8.79,
+ Sales: 400,
+ Status: 'Draft',
+ Quantity: 4,
+ URL: 'https://i5.walmartimages.com/seo/Women-s-ring-zircon-sparkling-diamond-ring-with-beautiful-romantic-jewelry-gift-Zirconia-Decorative-Flower-Ring_7489d8b4-1869-4524-916f-e3eebe30c7af.7597fda62aebae63fa30bd620ad12cb7.jpeg?odnHeight=2000&odnWidth=2000&odnBg=FFFFFF',
+ },
+ {
+ ID: '3',
+ Product: 'Magical',
+ SKU: '06-0343',
+ Category: 'Earrings',
+ Price: 13.99,
+ Sales: 120,
+ Status: 'Published',
+ Quantity: 15,
+ URL: 'https://i5.walmartimages.com/seo/Women-s-ring-zircon-sparkling-diamond-ring-with-beautiful-romantic-jewelry-gift-Zirconia-Decorative-Flower-Ring_7489d8b4-1869-4524-916f-e3eebe30c7af.7597fda62aebae63fa30bd620ad12cb7.jpeg?odnHeight=2000&odnWidth=2000&odnBg=FFFFFF',
+ },
+ {
+ ID: '4',
+ Product: 'Adorable',
+ SKU: '07-0994',
+ Category: 'Necklaces',
+ Price: 9.49,
+ Sales: 260,
+ Status: 'Out of stock',
+ Quantity: 7,
+ URL: 'https://i5.walmartimages.com/seo/Women-s-ring-zircon-sparkling-diamond-ring-with-beautiful-romantic-jewelry-gift-Zirconia-Decorative-Flower-Ring_7489d8b4-1869-4524-916f-e3eebe30c7af.7597fda62aebae63fa30bd620ad12cb7.jpeg?odnHeight=2000&odnWidth=2000&odnBg=FFFFFF',
+ },
+ {
+ ID: '5',
+ Product: 'Strong',
+ SKU: '05-0321',
+ Category: 'Watches',
+ Price: 11.49,
+ Sales: 500,
+ Status: 'Published',
+ Quantity: 19,
+ URL: 'https://i5.walmartimages.com/seo/Women-s-ring-zircon-sparkling-diamond-ring-with-beautiful-romantic-jewelry-gift-Zirconia-Decorative-Flower-Ring_7489d8b4-1869-4524-916f-e3eebe30c7af.7597fda62aebae63fa30bd620ad12cb7.jpeg?odnHeight=2000&odnWidth=2000&odnBg=FFFFFF',
+ },
+ {
+ ID: '6',
+ Product: 'Elegant',
+ SKU: '02-1342',
+ Category: 'Rings',
+ Price: 15.99,
+ Sales: 150,
+ Status: 'Published',
+ Quantity: 12,
+ URL: 'https://i5.walmartimages.com/seo/Women-s-ring-zircon-sparkling-diamond-ring-with-beautiful-romantic-jewelry-gift-Zirconia-Decorative-Flower-Ring_7489d8b4-1869-4524-916f-e3eebe30c7af.7597fda62aebae63fa30bd620ad12cb7.jpeg?odnHeight=2000&odnWidth=2000&odnBg=FFFFFF',
+ },
+ {
+ ID: '7',
+ Product: 'Chic',
+ SKU: '03-2765',
+ Category: 'Bracelets',
+ Price: 7.99,
+ Sales: 320,
+ Status: 'Draft',
+ Quantity: 6,
+ URL: 'https://i5.walmartimages.com/seo/Women-s-ring-zircon-sparkling-diamond-ring-with-beautiful-romantic-jewelry-gift-Zirconia-Decorative-Flower-Ring_7489d8b4-1869-4524-916f-e3eebe30c7af.7597fda62aebae63fa30bd620ad12cb7.jpeg?odnHeight=2000&odnWidth=2000&odnBg=FFFFFF',
+ },
+ {
+ ID: '8',
+ Product: 'Classic',
+ SKU: '06-3412',
+ Category: 'Earrings',
+ Price: 10.49,
+ Sales: 180,
+ Status: 'Published',
+ Quantity: 8,
+ URL: 'https://i5.walmartimages.com/seo/Women-s-ring-zircon-sparkling-diamond-ring-with-beautiful-romantic-jewelry-gift-Zirconia-Decorative-Flower-Ring_7489d8b4-1869-4524-916f-e3eebe30c7af.7597fda62aebae63fa30bd620ad12cb7.jpeg?odnHeight=2000&odnWidth=2000&odnBg=FFFFFF',
+ },
+ {
+ ID: '9',
+ Product: 'Luxe',
+ SKU: '01-0999',
+ Category: 'Necklaces',
+ Price: 19.99,
+ Sales: 270,
+ Status: 'Published',
+ Quantity: 5,
+ URL: 'https://i5.walmartimages.com/seo/Women-s-ring-zircon-sparkling-diamond-ring-with-beautiful-romantic-jewelry-gift-Zirconia-Decorative-Flower-Ring_7489d8b4-1869-4524-916f-e3eebe30c7af.7597fda62aebae63fa30bd620ad12cb7.jpeg?odnHeight=2000&odnWidth=2000&odnBg=FFFFFF',
+ },
+ {
+ ID: '10',
+ Product: 'Bold',
+ SKU: '08-2034',
+ Category: 'Watches',
+ Price: 14.79,
+ Sales: 350,
+ Status: 'Out of stock',
+ Quantity: 0,
+ URL: 'https://i5.walmartimages.com/seo/Women-s-ring-zircon-sparkling-diamond-ring-with-beautiful-romantic-jewelry-gift-Zirconia-Decorative-Flower-Ring_7489d8b4-1869-4524-916f-e3eebe30c7af.7597fda62aebae63fa30bd620ad12cb7.jpeg?odnHeight=2000&odnWidth=2000&odnBg=FFFFFF',
+ },
+ {
+ ID: '11',
+ Product: 'Radiant',
+ SKU: '02-1123',
+ Category: 'Rings',
+ Price: 16.49,
+ Sales: 220,
+ Status: 'Published',
+ Quantity: 11,
+ URL: 'https://i5.walmartimages.com/seo/Women-s-ring-zircon-sparkling-diamond-ring-with-beautiful-romantic-jewelry-gift-Zirconia-Decorative-Flower-Ring_7489d8b4-1869-4524-916f-e3eebe30c7af.7597fda62aebae63fa30bd620ad12cb7.jpeg?odnHeight=2000&odnWidth=2000&odnBg=FFFFFF',
+ },
+ {
+ ID: '12',
+ Product: 'Sleek',
+ SKU: '07-0554',
+ Category: 'Bracelets',
+ Price: 8.39,
+ Sales: 100,
+ Status: 'Draft',
+ Quantity: 9,
+ URL: 'https://i5.walmartimages.com/seo/Women-s-ring-zircon-sparkling-diamond-ring-with-beautiful-romantic-jewelry-gift-Zirconia-Decorative-Flower-Ring_7489d8b4-1869-4524-916f-e3eebe30c7af.7597fda62aebae63fa30bd620ad12cb7.jpeg?odnHeight=2000&odnWidth=2000&odnBg=FFFFFF',
+ },
+ {
+ ID: '13',
+ Product: 'Sparkling',
+ SKU: '06-0998',
+ Category: 'Earrings',
+ Price: 12.89,
+ Sales: 290,
+ Status: 'Published',
+ Quantity: 14,
+ URL: 'https://i5.walmartimages.com/seo/Women-s-ring-zircon-sparkling-diamond-ring-with-beautiful-romantic-jewelry-gift-Zirconia-Decorative-Flower-Ring_7489d8b4-1869-4524-916f-e3eebe30c7af.7597fda62aebae63fa30bd620ad12cb7.jpeg?odnHeight=2000&odnWidth=2000&odnBg=FFFFFF',
+ },
+ {
+ ID: '14',
+ Product: 'Graceful',
+ SKU: '03-2456',
+ Category: 'Necklaces',
+ Price: 10.79,
+ Sales: 310,
+ Status: 'Published',
+ Quantity: 3,
+ URL: 'https://i5.walmartimages.com/seo/Women-s-ring-zircon-sparkling-diamond-ring-with-beautiful-romantic-jewelry-gift-Zirconia-Decorative-Flower-Ring_7489d8b4-1869-4524-916f-e3eebe30c7af.7597fda62aebae63fa30bd620ad12cb7.jpeg?odnHeight=2000&odnWidth=2000&odnBg=FFFFFF',
+ },
+ {
+ ID: '15',
+ Product: 'Timeless',
+ SKU: '08-3377',
+ Category: 'Watches',
+ Price: 13.59,
+ Sales: 430,
+ Status: 'Out of stock',
+ Quantity: 2,
+ URL: 'https://i5.walmartimages.com/seo/Women-s-ring-zircon-sparkling-diamond-ring-with-beautiful-romantic-jewelry-gift-Zirconia-Decorative-Flower-Ring_7489d8b4-1869-4524-916f-e3eebe30c7af.7597fda62aebae63fa30bd620ad12cb7.jpeg?odnHeight=2000&odnWidth=2000&odnBg=FFFFFF',
+ },
+ {
+ ID: '16',
+ Product: 'Vintage',
+ SKU: '01-0444',
+ Category: 'Rings',
+ Price: 11.29,
+ Sales: 160,
+ Status: 'Published',
+ Quantity: 18,
+ URL: 'https://i5.walmartimages.com/seo/Women-s-ring-zircon-sparkling-diamond-ring-with-beautiful-romantic-jewelry-gift-Zirconia-Decorative-Flower-Ring_7489d8b4-1869-4524-916f-e3eebe30c7af.7597fda62aebae63fa30bd620ad12cb7.jpeg?odnHeight=2000&odnWidth=2000&odnBg=FFFFFF',
+ },
+ {
+ ID: '17',
+ Product: 'Modern',
+ SKU: '02-9987',
+ Category: 'Bracelets',
+ Price: 6.99,
+ Sales: 210,
+ Status: 'Draft',
+ Quantity: 5,
+ URL: 'https://i5.walmartimages.com/seo/Women-s-ring-zircon-sparkling-diamond-ring-with-beautiful-romantic-jewelry-gift-Zirconia-Decorative-Flower-Ring_7489d8b4-1869-4524-916f-e3eebe30c7af.7597fda62aebae63fa30bd620ad12cb7.jpeg?odnHeight=2000&odnWidth=2000&odnBg=FFFFFF',
+ },
+ {
+ ID: '18',
+ Product: 'Shimmer',
+ SKU: '04-3321',
+ Category: 'Earrings',
+ Price: 13.79,
+ Sales: 240,
+ Status: 'Published',
+ Quantity: 7,
+ URL: 'https://i5.walmartimages.com/seo/Women-s-ring-zircon-sparkling-diamond-ring-with-beautiful-romantic-jewelry-gift-Zirconia-Decorative-Flower-Ring_7489d8b4-1869-4524-916f-e3eebe30c7af.7597fda62aebae63fa30bd620ad12cb7.jpeg?odnHeight=2000&odnWidth=2000&odnBg=FFFFFF',
+ },
+ {
+ ID: '19',
+ Product: 'Exquisite',
+ SKU: '09-7765',
+ Category: 'Necklaces',
+ Price: 17.49,
+ Sales: 500,
+ Status: 'Out of stock',
+ Quantity: 1,
+ URL: 'https://i5.walmartimages.com/seo/Women-s-ring-zircon-sparkling-diamond-ring-with-beautiful-romantic-jewelry-gift-Zirconia-Decorative-Flower-Ring_7489d8b4-1869-4524-916f-e3eebe30c7af.7597fda62aebae63fa30bd620ad12cb7.jpeg?odnHeight=2000&odnWidth=2000&odnBg=FFFFFF',
+ },
+ {
+ ID: '20',
+ Product: 'Bold',
+ SKU: '04-1432',
+ Category: 'Watches',
+ Price: 9.99,
+ Sales: 390,
+ Status: 'Published',
+ Quantity: 13,
+ URL: 'https://i5.walmartimages.com/seo/Women-s-ring-zircon-sparkling-diamond-ring-with-beautiful-romantic-jewelry-gift-Zirconia-Decorative-Flower-Ring_7489d8b4-1869-4524-916f-e3eebe30c7af.7597fda62aebae63fa30bd620ad12cb7.jpeg?odnHeight=2000&odnWidth=2000&odnBg=FFFFFF',
+ },
+];
diff --git a/examples/ecommerce-jewellery-store/src/data/types.ts b/examples/ecommerce-jewellery-store/src/data/types.ts
new file mode 100644
index 00000000..6de34d0b
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/src/data/types.ts
@@ -0,0 +1,97 @@
+export type CardDescriptor = {
+ img: string;
+ collectionText: string;
+};
+
+export type DataModel = {
+ text: string | undefined;
+}
+
+export type ListDataDescriptor = {
+ id?: number;
+ img: string | undefined;
+ status: string | null;
+ title: string;
+ rating?: number;
+ category: string;
+ material: string;
+ oldPrice: number | null;
+ newPrice: number;
+};
+
+export type BackgroundImageProps = {
+ title: string;
+ subtitle: string;
+ buttonText?: string;
+ img: string;
+};
+
+export type CardListProps = {
+ data: any[];
+}
+
+export type SectionProps = {
+ children: React.ReactNode
+}
+
+export type LayoutProps = {
+ children: React.ReactNode
+}
+
+export type OrderedImgTextProps = {
+ title: string;
+ subtitle: string;
+ contentText: string;
+ img: string;
+ order: string;
+ link: string | null;
+};
+
+export type SizedParentProps = {
+ children: React.ReactNode;
+};
+
+export type CategoryListProps = {
+ data: any[];
+ title: string;
+ subtitle: string;
+ colSpan?: number;
+}
+
+export type ProductCardProps = {
+ breadCrumbItem: DataModel[];
+ title: string | undefined;
+ image: string | null | undefined;
+ subtitle: string | undefined;
+ rating: number | undefined;
+ reviews: string | undefined;
+ price: number | undefined;
+ description: string | undefined;
+ addToCart: () => void;
+}
+
+export type TestemonialsDataDescriptor = {
+ image: string;
+ name: string;
+ description: string;
+ rating: number;
+}
+
+export type CartItemDescriptor = {
+ id: number;
+ image: string;
+ title: string;
+ description: string;
+ price: number;
+ quantity: number;
+ total: number;
+}
+
+export type CartContextProps = {
+ children: React.ReactNode;
+}
+
+export type CartContextDescriptor = {
+ product: ListDataDescriptor;
+ quantity: number;
+}
\ No newline at end of file
diff --git a/examples/ecommerce-jewellery-store/src/helpers/AdminContext.tsx b/examples/ecommerce-jewellery-store/src/helpers/AdminContext.tsx
new file mode 100644
index 00000000..3a6800e0
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/src/helpers/AdminContext.tsx
@@ -0,0 +1,30 @@
+import React, { createContext, useContext, useState, ReactNode } from 'react';
+
+interface AdminContextType {
+ isAdmin: boolean;
+ toggleRole: () => void;
+}
+
+const AdminContext = createContext(undefined);
+
+export const AdminProvider: React.FC<{ children: ReactNode }> = ({ children }) => {
+ const [isAdmin, setIsAdmin] = useState(false);
+
+ const toggleRole = () => {
+ setIsAdmin((prevRole) => !prevRole);
+ };
+
+ return (
+
+ {children}
+
+ );
+};
+
+export const useAdminContext = () => {
+ const context = useContext(AdminContext);
+ if (context === undefined) {
+ throw new Error('useAdminContext must be used within an AdminProvider');
+ }
+ return context;
+};
diff --git a/examples/ecommerce-jewellery-store/src/helpers/CartContext.tsx b/examples/ecommerce-jewellery-store/src/helpers/CartContext.tsx
new file mode 100644
index 00000000..d0557fd9
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/src/helpers/CartContext.tsx
@@ -0,0 +1,57 @@
+import { createContext, useState, useContext, ReactNode } from 'react';
+import { CartContextDescriptor, ListDataDescriptor } from '../data/types';
+import React from 'react';
+
+interface CartContextType {
+ cart: CartContextDescriptor[];
+ addItemToCart: (product: ListDataDescriptor) => void;
+ updateIndividualCartItem: (cart: CartContextDescriptor) => void;
+}
+
+const ShoppingCartContext = createContext(null);
+
+interface CartProviderProps {
+ children: ReactNode;
+}
+
+export const CartProvider = ({ children }: CartProviderProps) => {
+ const [shoppingCart, setShoppingCart] = useState([]);
+
+ const addItemToCart = (product: ListDataDescriptor) => {
+ const itemExists = shoppingCart.some(cartItem => cartItem.product.id === product.id);
+
+ if (itemExists) {
+ setShoppingCart(shoppingCart.map(cartItem =>
+ cartItem.product.id === product.id
+ ? { ...cartItem, quantity: cartItem.quantity + 1 }
+ : cartItem
+ ));
+ } else {
+ setShoppingCart([...shoppingCart, { product, quantity: 1 }]);
+ }
+ };
+
+ const updateCartItem = React.useCallback((id: any) => {
+ setShoppingCart(shoppingCart.map(item => {
+ if (item.product.id === Number(id)) {
+ return {...item, quantity: item.quantity + 1};
+ }
+
+ return item
+ }))
+ }, [shoppingCart]);
+
+ return (
+
+ {children}
+
+ );
+};
+
+export const useCart = () => {
+ const context = useContext(ShoppingCartContext);
+ if (context === null) {
+ throw new Error('useCart must be used within a CartProvider');
+ }
+ return context;
+};
diff --git a/examples/ecommerce-jewellery-store/src/helpers/CategoriesContext.tsx b/examples/ecommerce-jewellery-store/src/helpers/CategoriesContext.tsx
new file mode 100644
index 00000000..91feaf73
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/src/helpers/CategoriesContext.tsx
@@ -0,0 +1,26 @@
+import React, { createContext, useContext, useState } from "react";
+
+interface CategoriesContextType {
+ selectedCategory: string | null;
+ setSelectedCategory: (category: string | null) => void;
+}
+
+const CategoriesContext = createContext(undefined);
+
+export const CategoriesProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {
+ const [selectedCategory, setSelectedCategory] = useState(null);
+
+ return (
+
+ {children}
+
+ );
+};
+
+export const useCategoriesContext = () => {
+ const context = useContext(CategoriesContext);
+ if (!context) {
+ throw new Error("useCategoriesContext must be used within a CategoriesProvider");
+ }
+ return context;
+};
diff --git a/examples/ecommerce-jewellery-store/src/main.tsx b/examples/ecommerce-jewellery-store/src/main.tsx
new file mode 100644
index 00000000..e05d1477
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/src/main.tsx
@@ -0,0 +1,10 @@
+import { StrictMode } from 'react';
+import { createRoot } from 'react-dom/client';
+import App from './App';
+import './styles.css';
+
+createRoot(document.getElementById('root')!).render(
+
+
+
+);
\ No newline at end of file
diff --git a/examples/ecommerce-jewellery-store/src/pages/AllProductsListView.tsx b/examples/ecommerce-jewellery-store/src/pages/AllProductsListView.tsx
new file mode 100644
index 00000000..866fa47e
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/src/pages/AllProductsListView.tsx
@@ -0,0 +1,99 @@
+import * as React from "react";
+
+import bracelets from "@/assets/bracelets.png?url";
+import necklace from "@/assets/necklace_1.jfif?url";
+import ring from "@/assets/ring_1.jfif?url";
+import jewel from "@/assets/1111.jfif?url";
+import { Layout } from "../components/Layout";
+import { OrderedImgText } from "../components/OrderedImageCard";
+import { CustomSection } from "../components/CustomizedSection";
+import { listData } from "../data/listData";
+import { FilterComponent } from "../components/FilterComponent";
+import { CardsList } from "../components/CardsList";
+import { CategoryList } from "../components/CategoryList";
+import { CardDescriptor } from "../data/types";
+import { DataModel } from "../data/types";
+
+import { Breadcrumb } from "@progress/kendo-react-layout";
+import { Button, ButtonGroup } from "@progress/kendo-react-buttons";
+import { layout2By2Icon, gridLayoutIcon } from "@progress/kendo-svg-icons";
+import { process, State } from "@progress/kendo-data-query";
+
+export const AllProductsListView = () => {
+ const title = "Fine Selection";
+ const subtitle = "Enjoy the real craftsmanship";
+ const contentText =
+ "Jewelry is a meaningful form of self-expression that enhances personal style and adds beauty to any occasion.";
+ const order = "first";
+
+ const [data, setData] = React.useState(listData);
+
+ const updateUI = (newState: State) => {
+ const newData = process(listData, newState)
+ setData(newData.data)
+ };
+
+ const cards: CardDescriptor[] = [
+ {
+ img: necklace,
+ collectionText: 'Collection "SERENE"',
+ },
+ {
+ img: ring,
+ collectionText: 'Collection "AURELIA"',
+ },
+ {
+ img: jewel,
+ collectionText: 'Collection "RAVINA"',
+ },
+ ];
+
+ const BreakcrumbData: DataModel[] = [{
+ text: "Home"
+ },
+ {
+ text: "Jewelry"
+ }]
+
+ return (
+ <>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ >
+ );
+};
diff --git a/examples/ecommerce-jewellery-store/src/pages/Contacts.tsx b/examples/ecommerce-jewellery-store/src/pages/Contacts.tsx
new file mode 100644
index 00000000..5fe9e5ac
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/src/pages/Contacts.tsx
@@ -0,0 +1,96 @@
+import React from 'react';
+import { Layout } from '../components/Layout';
+import EmailInput from '../components/EmailInput';
+import CardHolder from '../components/CardHolder';
+import CityInput from '../components/CityInput';
+import PhoneInput from '../components/PhoneInput';
+import AppointmentInput from '../components/AppointmentInput';
+import DateChooserInput from '../components/DateChooserInput';
+import ContactsRadioButtons from '../components/ContactsRadioButtons'
+import contactsImage from '@/assets/contactsImage.png';
+import { Button } from '@progress/kendo-react-buttons';
+import { useNavigate } from 'react-router-dom';
+
+import {
+ Form,
+ Field,
+ FormElement,
+ FieldWrapper,
+} from '@progress/kendo-react-form';
+import { Label } from '@progress/kendo-react-labels';
+
+const Contacts: React.FC = () => {
+ const navigate = useNavigate();
+
+ const onSubmitClick = () => {
+ navigate('/thankyou');
+ };
+
+ return (
+
+
+
+
+
Get in touch
+
If you have any questions, contact us
+
+
+
+
+
+
+
+ );
+};
+
+export default Contacts;
diff --git a/examples/ecommerce-jewellery-store/src/pages/DetailedCategory.tsx b/examples/ecommerce-jewellery-store/src/pages/DetailedCategory.tsx
new file mode 100644
index 00000000..22fcdeed
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/src/pages/DetailedCategory.tsx
@@ -0,0 +1,103 @@
+import * as React from 'react';
+import { Layout } from "../components/Layout";
+import { OrderedImgText } from "../components/OrderedImageCard";
+import aureliaImg from "../assets/aurelia-detail-page.png";
+import { CustomSection } from "../components/CustomizedSection";
+import { Button, ButtonGroup } from "@progress/kendo-react-buttons";
+import { Breadcrumb } from "@progress/kendo-react-layout";
+import { layout2By2Icon, gridLayoutIcon } from "@progress/kendo-svg-icons"
+
+import necklace from "../assets/necklace_1.jfif?url";
+import jewel from "../assets/1111.jfif?url";
+import tolos from "../assets/tolosCollection.jfif";
+import { CategoryList } from "../components/CategoryList";
+import { FilterComponent } from "../components/FilterComponent";
+import { CardsList } from "../components/CardsList";
+import { listData } from '../data/listData';
+import { process, State } from '@progress/kendo-data-query';
+import { CardDescriptor } from '../data/types';
+import { DataModel } from '../data/types';
+
+const cards: CardDescriptor[] = [
+ {
+ img: necklace,
+ collectionText: "SERENE",
+ },
+ {
+ img: jewel,
+ collectionText: "RAVINA",
+ },
+ {
+ img: tolos,
+ collectionText: "TOLOS",
+ },
+];
+
+const BreakcrumbData: DataModel[] = [
+ {
+ text: "Home",
+ },
+ {
+ text: "Jewelry",
+ },
+ {
+ text: "Rings"
+ }
+];
+
+
+export const DetailedCategory = () => {
+ const [data, setData] = React.useState(listData);
+ const title = "AURELIA Collection";
+ const subtitle = "Unique handmade rings";
+ const contentText =
+ "Rings are versatile jewelry pieces that symbolize personal style, suitable for both special occasions and everyday wear.";
+ const order = "first";
+
+ const updateUI = (newState: State) => {
+ const newData = process(listData, newState)
+ setData(newData.data)
+ };
+
+ return (
+ <>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ >
+ );
+};
diff --git a/examples/ecommerce-jewellery-store/src/pages/Home.tsx b/examples/ecommerce-jewellery-store/src/pages/Home.tsx
new file mode 100644
index 00000000..03d8d584
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/src/pages/Home.tsx
@@ -0,0 +1,141 @@
+import React from 'react';
+import { BackgroundImage } from '../components/BackgroundImage';
+import model from "../assets/model_1.png";
+import { Layout } from '../components/Layout';
+import { CategoryList } from '../components/CategoryList';
+import { CardDescriptor } from "../data/types";
+import silverBraceletOnyx from "../assets/listViewImages/silverBraceletOnyx.png";
+import weddingBandsPearl from "../assets/listViewImages/weddingBandsPearl.png";
+import roseGoldEarringsOpal from "../assets/listViewImages/roseGoldEarringsOpal.png";
+import { CustomSection } from '../components/CustomizedSection';
+import { OrderedImgText } from '../components/OrderedImageCard';
+import homeModel2 from '../assets/homeModel2.png';
+import homeModel3 from '../assets/homeModel3.png';
+import homeWatch1 from '../assets/homeWatch1.png';
+import diamondWeddingRing from "../assets/listViewImages/diamondWeddingRing.png";
+import diamondWeddingBands from "../assets/listViewImages/diamondWeddingBands.png";
+import brownWatch from '../assets/brownWatch.jpg';
+import vitageWatch from '../assets/vitageWatch.jpg';
+import casualSilverWatch from "../assets/listViewImages/casualSilverWatch.png";
+import homeServicesImage from '../assets/homeServicesImage.png';
+import { Testemonials } from '../components/Testemonials';
+import { useAdminContext } from "../helpers/AdminContext";
+import AdminView from "../components/AdminView";
+
+const data: CardDescriptor[] = [
+ { img: silverBraceletOnyx, collectionText: "Silver Bracelet with Onyx" },
+ { img: weddingBandsPearl, collectionText: "Wedding Bands with Pearls" },
+ { img: roseGoldEarringsOpal, collectionText: "Rose Gold Earrings with Opal" }
+];
+
+const ringsData: CardDescriptor[] = [
+ { img: diamondWeddingRing, collectionText: "Diamond Wedding Ring" },
+ { img: diamondWeddingBands, collectionText: "Diamond Wedding Bands" }
+];
+
+const watchData: CardDescriptor[] = [
+ { img: brownWatch, collectionText: "Brown Leather Watch" },
+ { img: casualSilverWatch, collectionText: "Casual Silver Watch" },
+ { img: vitageWatch, collectionText: "Vintage Silver Watch" }
+];
+
+const Home: React.FC = () => {
+ const { isAdmin } = useAdminContext();
+ const title = "Vilora Jewelry";
+ const subtitle = "we offer exquisite jewelry, each showcasing timeless elegance";
+ const buttonText = "See Collections";
+
+ return (
+ <>
+
+
+ {isAdmin ? (
+
+
+
+ ) : (
+ <>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ >
+ )}
+ >
+ );
+};
+
+export default Home;
diff --git a/examples/ecommerce-jewellery-store/src/pages/PaymentDetails.tsx b/examples/ecommerce-jewellery-store/src/pages/PaymentDetails.tsx
new file mode 100644
index 00000000..5abba0d5
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/src/pages/PaymentDetails.tsx
@@ -0,0 +1,97 @@
+import React from 'react';
+import { Layout } from "../components/Layout";
+import CardNumber from "../components/CardNumber";
+import ExpiryDate from "../components/ExpiryDate";
+import PasswordInput from "../components/PasswordInput";
+import CardHolder from "../components/CardHolder";
+import { Button } from "@progress/kendo-react-buttons";
+import { useNavigate } from 'react-router-dom';
+
+import {
+ Form,
+ Field,
+ FormElement,
+ FieldWrapper,
+} from "@progress/kendo-react-form";
+import {
+ RadioButton,
+} from "@progress/kendo-react-inputs";
+import {
+ Label,
+} from "@progress/kendo-react-labels";
+
+import creditCards from '../assets/creditCards.png';
+
+const PaymentDetails: React.FC = () => {
+ const navigate = useNavigate();
+
+ const onSubmitClick = () => {
+ navigate("/thankyou")
+ }
+
+ return (
+
+
+
+
+
Payment Details
+
Please, submit your payment details
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sub total
+
US Dollars
+
VAT
+
US Dollars
+
Shipping Method
+
Standard Free Delivery
+
Gift Wrapping
+
Included Gift Wrapping
+
Total
+
US Dollars
+
+
+
+
+ );
+};
+
+export default PaymentDetails;
diff --git a/examples/ecommerce-jewellery-store/src/pages/ProductsDetails.tsx b/examples/ecommerce-jewellery-store/src/pages/ProductsDetails.tsx
new file mode 100644
index 00000000..dda3ea55
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/src/pages/ProductsDetails.tsx
@@ -0,0 +1,85 @@
+import { useParams } from "react-router-dom";
+import { ProductCard } from "../components/ProductCard";
+import { listData } from "../data/listData";
+import { DataModel } from "../data/types";
+import { Layout } from "../components/Layout";
+import { CategoryList } from "../components/CategoryList";
+import { CardDescriptor } from "../data/types";
+import homemadePinkDiamondRing from "../assets/homemadePinkDiamondRing.jpg";
+import diamondRingPinkRuby from "../assets/diamondRingPinkRuby.jpg";
+import whiteSandDiamondRing from "../assets/whiteSandDiamondRing.jpg";
+import { CustomSection } from "../components/CustomizedSection";
+import { useCart } from "../helpers/CartContext";
+import { useNavigate } from "react-router-dom";
+
+export const ProductDetails = () => {
+ const { id } = useParams();
+ const productId = id ? parseInt(id, 10) : null;
+
+ const descriptionText =
+ "Elegant wedding bands featuring lustrous pearls, beautifully set in sleek, timeless bands. These rings offer a unique blend of classic charm and modern sophistication, making them a perfect symbol of everlasting love. The delicate pearls add a touch of grace, creating a refined and distinctive look that’s perfect for a memorable occasion.";
+ const { addItemToCart } = useCart();
+ const productToAdd = listData.find((item) => item.id === productId);
+ const navigate = useNavigate();
+
+ const addToCart = () => {
+ if (productToAdd) {
+ addItemToCart(productToAdd);
+ }
+ navigate("/shoppingcart");
+ };
+
+ const data: CardDescriptor[] = [
+ {
+ img: diamondRingPinkRuby,
+ collectionText: "Diamond Ring with Pink Ruby",
+ },
+ {
+ img: whiteSandDiamondRing,
+ collectionText: "White Sand Diamond Ring",
+ },
+ {
+ img: homemadePinkDiamondRing,
+ collectionText: "Handmade Pink Diamond Ring",
+ },
+ ];
+
+ const BreakcrumbData: DataModel[] = [
+ {
+ text: "Home",
+ },
+ {
+ text: "Jewelry",
+ },
+ {
+ text: productToAdd?.category,
+ },
+ ];
+
+ return (
+ <>
+
+
+
+
+
+
+
+
+ >
+ );
+};
diff --git a/examples/ecommerce-jewellery-store/src/pages/ThankYou.tsx b/examples/ecommerce-jewellery-store/src/pages/ThankYou.tsx
new file mode 100644
index 00000000..e3691f01
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/src/pages/ThankYou.tsx
@@ -0,0 +1,28 @@
+import React from 'react';
+import { Layout } from "../components/Layout";
+import { BackgroundImage } from '../components/BackgroundImage';
+import present from "@/assets/present.png";
+import { Button } from "@progress/kendo-react-buttons";
+import { useNavigate } from 'react-router-dom';
+
+const ThankYou: React.FC = () => {
+ const navigate = useNavigate();
+
+ const onBacktoShoppingClick = () => {
+ navigate("/products");
+ }
+ return (
+ <>
+
+
+
+
Thank You For Your Order!
+
You have submitted your order
+
+
+
+ >
+ );
+};
+
+export default ThankYou;
diff --git a/examples/ecommerce-jewellery-store/src/styles.css b/examples/ecommerce-jewellery-store/src/styles.css
new file mode 100644
index 00000000..c17e56b3
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/src/styles.css
@@ -0,0 +1,26 @@
+html, body {
+ margin: 0;
+ padding: 0;
+ width: 100%;
+ height: 100%;
+ box-sizing: border-box;
+ font-family: 'Roboto', sans-serif;
+ }
+
+.header {
+ background-color: #FAFAFA;
+}
+
+.kr-p-r-l-b-60{
+ padding: 0px 60px 60px 60px;
+}
+
+.kr-mw-1280{
+ max-width: 1280px;
+}
+
+.k-menu-popup {
+ position: fixed !important;
+ top: auto !important;
+ z-index: 1000;
+}
\ No newline at end of file
diff --git a/examples/ecommerce-jewellery-store/src/vite-env.d.ts b/examples/ecommerce-jewellery-store/src/vite-env.d.ts
new file mode 100644
index 00000000..11f02fe2
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/src/vite-env.d.ts
@@ -0,0 +1 @@
+///
diff --git a/examples/ecommerce-jewellery-store/tsconfig.app.json b/examples/ecommerce-jewellery-store/tsconfig.app.json
new file mode 100644
index 00000000..f0a23505
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/tsconfig.app.json
@@ -0,0 +1,24 @@
+{
+ "compilerOptions": {
+ "target": "ES2020",
+ "useDefineForClassFields": true,
+ "lib": ["ES2020", "DOM", "DOM.Iterable"],
+ "module": "ESNext",
+ "skipLibCheck": true,
+
+ /* Bundler mode */
+ "moduleResolution": "bundler",
+ "allowImportingTsExtensions": true,
+ "isolatedModules": true,
+ "moduleDetection": "force",
+ "noEmit": true,
+ "jsx": "react-jsx",
+
+ /* Linting */
+ "strict": true,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "noFallthroughCasesInSwitch": true
+ },
+ "include": ["src"]
+}
diff --git a/examples/ecommerce-jewellery-store/tsconfig.app.tsbuildinfo b/examples/ecommerce-jewellery-store/tsconfig.app.tsbuildinfo
new file mode 100644
index 00000000..aed0db54
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/tsconfig.app.tsbuildinfo
@@ -0,0 +1 @@
+{"root":["./src/app.tsx","./src/main.tsx","./src/vite-env.d.ts","./src/components/adminview.tsx","./src/components/appointmentinput.tsx","./src/components/backgroundimage.tsx","./src/components/cardholder.tsx","./src/components/cardnumber.tsx","./src/components/cardslist.tsx","./src/components/categorylist.tsx","./src/components/cityinput.tsx","./src/components/contactsradiobuttons.tsx","./src/components/customizedsection.tsx","./src/components/datechooserinput.tsx","./src/components/emailinput.tsx","./src/components/expirydate.tsx","./src/components/filtercomponent.tsx","./src/components/footer.tsx","./src/components/header.tsx","./src/components/layout.tsx","./src/components/orderedimagecard.tsx","./src/components/passwordinput.tsx","./src/components/phoneinput.tsx","./src/components/productcard.tsx","./src/components/shoppingcartlist.tsx","./src/components/sizedparent.tsx","./src/components/testemonials.tsx","./src/data/items.ts","./src/data/language-items.ts","./src/data/listdata.ts","./src/data/shared-gd-samplechartdata.ts","./src/data/types.ts","./src/helpers/admincontext.tsx","./src/helpers/cartcontext.tsx","./src/helpers/categoriescontext.tsx","./src/pages/allproductslistview.tsx","./src/pages/contacts.tsx","./src/pages/detailedcategory.tsx","./src/pages/home.tsx","./src/pages/paymentdetails.tsx","./src/pages/productsdetails.tsx","./src/pages/thankyou.tsx"],"version":"5.6.3"}
\ No newline at end of file
diff --git a/examples/ecommerce-jewellery-store/tsconfig.json b/examples/ecommerce-jewellery-store/tsconfig.json
new file mode 100644
index 00000000..abae5979
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/tsconfig.json
@@ -0,0 +1,12 @@
+{
+ "files": [],
+ "references": [
+ { "path": "./tsconfig.app.json" },
+ { "path": "./tsconfig.node.json" }
+ ], "compilerOptions": {
+ "baseUrl": ".", // This is important to set the base URL for the paths
+ "paths": {
+ "@/*": ["src/*"]
+ }
+ }
+}
\ No newline at end of file
diff --git a/examples/ecommerce-jewellery-store/tsconfig.node.json b/examples/ecommerce-jewellery-store/tsconfig.node.json
new file mode 100644
index 00000000..7676b341
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/tsconfig.node.json
@@ -0,0 +1,19 @@
+{
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "target": "ESNext",
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "strict": true,
+ "esModuleInterop": true,
+ "skipLibCheck": true,
+ "forceConsistentCasingInFileNames": true,
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true
+ },
+ "include": [
+ "src/**/*"
+ ]
+}
+
\ No newline at end of file
diff --git a/examples/ecommerce-jewellery-store/tsconfig.node.tsbuildinfo b/examples/ecommerce-jewellery-store/tsconfig.node.tsbuildinfo
new file mode 100644
index 00000000..aed0db54
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/tsconfig.node.tsbuildinfo
@@ -0,0 +1 @@
+{"root":["./src/app.tsx","./src/main.tsx","./src/vite-env.d.ts","./src/components/adminview.tsx","./src/components/appointmentinput.tsx","./src/components/backgroundimage.tsx","./src/components/cardholder.tsx","./src/components/cardnumber.tsx","./src/components/cardslist.tsx","./src/components/categorylist.tsx","./src/components/cityinput.tsx","./src/components/contactsradiobuttons.tsx","./src/components/customizedsection.tsx","./src/components/datechooserinput.tsx","./src/components/emailinput.tsx","./src/components/expirydate.tsx","./src/components/filtercomponent.tsx","./src/components/footer.tsx","./src/components/header.tsx","./src/components/layout.tsx","./src/components/orderedimagecard.tsx","./src/components/passwordinput.tsx","./src/components/phoneinput.tsx","./src/components/productcard.tsx","./src/components/shoppingcartlist.tsx","./src/components/sizedparent.tsx","./src/components/testemonials.tsx","./src/data/items.ts","./src/data/language-items.ts","./src/data/listdata.ts","./src/data/shared-gd-samplechartdata.ts","./src/data/types.ts","./src/helpers/admincontext.tsx","./src/helpers/cartcontext.tsx","./src/helpers/categoriescontext.tsx","./src/pages/allproductslistview.tsx","./src/pages/contacts.tsx","./src/pages/detailedcategory.tsx","./src/pages/home.tsx","./src/pages/paymentdetails.tsx","./src/pages/productsdetails.tsx","./src/pages/thankyou.tsx"],"version":"5.6.3"}
\ No newline at end of file
diff --git a/examples/ecommerce-jewellery-store/vite.config.ts b/examples/ecommerce-jewellery-store/vite.config.ts
new file mode 100644
index 00000000..bcf02067
--- /dev/null
+++ b/examples/ecommerce-jewellery-store/vite.config.ts
@@ -0,0 +1,17 @@
+import { defineConfig } from 'vite';
+import react from '@vitejs/plugin-react';
+import path from 'path';
+import { fileURLToPath } from 'url';
+
+const __filename = fileURLToPath(import.meta.url);
+const __dirname = path.dirname(__filename);
+
+// https://vitejs.dev/config/
+export default defineConfig({
+ plugins: [react()],
+ resolve: {
+ alias: {
+ '@': path.resolve(__dirname, 'src'),
+ },
+ },
+});