diff --git a/.gitignore b/.gitignore index 56011b1c5..90b925274 100644 --- a/.gitignore +++ b/.gitignore @@ -24,3 +24,6 @@ yarn-error.log* # idea /.idea +/out/production/ +# Sentry Config File +.env.sentry-build-plugin diff --git a/README.md b/README.md index 205d64f26..48c515c41 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=dev-bcn_dev-bcn.github.io&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=dev-bcn_dev-bcn.github.io) -![](src/assets/images/1500x500.jpeg) +![](/public/images/1500x500.jpeg) # DevBcn - Barcelona Developers Conference Website @@ -46,7 +46,7 @@ Available aliases: - `@constants/*` - Constants from `src/constants/` - `@services/*` - Services from `src/services/` - `@hooks/*` - Hooks from `src/hooks/` -- `@assets/*` - Assets from `src/assets/` +- `@/assets/*` - Assets from `src/assets/` - `@styles/*` - Styles from `src/styles/` - `@views/*` - Views from `src/views/` - `@utils/*` - Utilities from `src/utils/` diff --git a/package-lock.json b/package-lock.json index 3b90bbf4d..744e95d0b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -46,6 +46,7 @@ "sass": "^1.89.0", "styled-components": "^6.1.12", "swiper": "^9.2.0", + "tailwind-merge": "^3.3.1", "typescript": "^4.9.5", "web-vitals": "^5.0.2" }, @@ -66,8 +67,10 @@ "@vitejs/plugin-react": "^4.5.0", "@vitest/coverage-v8": "^3.1.3", "autoprefixer": "^10.4.21", + "babel-plugin-import": "^1.13.8", "eslint": "^9.26.0", - "eslint-import-resolver-typescript": "^4.3.4", + "eslint-import-resolver-alias": "^1.1.2", + "eslint-import-resolver-typescript": "^4.4.4", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-react": "^7.37.5", @@ -79,8 +82,10 @@ "prettier": "^3.5.1", "react-ga": "^3.3.1", "react-test-renderer": "^18.3.1", + "rollup-plugin-visualizer": "^6.0.3", "tailwindcss": "^3.4.17", "vite": "^6.3.5", + "vite-plugin-pwa": "^1.0.0", "vitest": "^3.1.3" } }, @@ -139,23 +144,23 @@ "license": "ISC" }, "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==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.25.9", + "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" + "picocolors": "^1.1.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz", - "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==", + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.7.tgz", + "integrity": "sha512-xgu/ySj2mTiUFmdE9yCMfBxLp4DHd5DwmbbD05YAuICfodYT3VvRxbrh81LGQ/8UpSdtMdfKMn3KouYDX59DGQ==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -192,13 +197,13 @@ } }, "node_modules/@babel/generator": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.0.tgz", - "integrity": "sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==", + "version": "7.27.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.5.tgz", + "integrity": "sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw==", "license": "MIT", "dependencies": { - "@babel/parser": "^7.27.0", - "@babel/types": "^7.27.0", + "@babel/parser": "^7.27.5", + "@babel/types": "^7.27.3", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^3.0.2" @@ -207,124 +212,1280 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.3" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-compilation-targets": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.1.tgz", + "integrity": "sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/traverse": "^7.27.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.1.tgz", + "integrity": "sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "regexpu-core": "^6.2.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.4.tgz", + "integrity": "sha512-jljfR1rGnXXNWnmQg2K3+bvhkxB51Rl32QRaOTuwwjviGrHzIbSc8+x9CpraDtbT7mfyjXObULP4w/adunNwAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz", + "integrity": "sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz", + "integrity": "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.27.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", + "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz", + "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-wrap-function": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz", + "integrity": "sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", + "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.27.1.tgz", + "integrity": "sha512-NFJK2sHUvrjo8wAU/nQTWU890/zB2jj0qBcCbZbbf+005cAsv6tMjXz31fBign6M5ov1o0Bllu+9nbqkfsjjJQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.27.1", + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.0.tgz", - "integrity": "sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.0.tgz", + "integrity": "sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.27.0", + "@babel/types": "^7.27.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.7.tgz", + "integrity": "sha512-qnzXzDXdr/po3bOTbTIQZ7+TxNKxpkN5IifVLXS+r7qwynkZfPyjZfE7hCXbo7IoO9TNcSyibgONsf2HauUd3Q==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.7" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.27.1.tgz", + "integrity": "sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz", + "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz", + "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", + "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.27.1.tgz", + "integrity": "sha512-6BpaYGDavZqkI6yT+KSPdpZFfpnd68UKXbcjI9pJ13pvHhPrCKWOOLp+ysvMeA+DxnhuPpgIaRpxRxo5A9t5jw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz", + "integrity": "sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", + "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", + "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.27.1.tgz", + "integrity": "sha512-eST9RrwlpaoJBDHShc+DS2SG4ATTi2MYNb4OxYkf3n+7eb49LWpnS+HSpVfW4x927qQwgk8A2hGNVaajAEw0EA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-remap-async-to-generator": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz", + "integrity": "sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-remap-async-to-generator": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz", + "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.27.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.27.5.tgz", + "integrity": "sha512-JF6uE2s67f0y2RZcm2kpAUEbD50vH62TyWVebxwHAlbSdM49VqPz8t4a1uIjp4NIOIZ4xzLfjY5emt/RCyC7TQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz", + "integrity": "sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.27.1.tgz", + "integrity": "sha512-s734HmYU78MVzZ++joYM+NkJusItbdRcbm+AGRgJCt3iA+yux0QpD9cBVdz3tKyrjVYWRl7j0mHSmv4lhV0aoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.27.7.tgz", + "integrity": "sha512-CuLkokN1PEZ0Fsjtq+001aog/C2drDK9nTfK/NRK0n6rBin6cBrvM+zfQjDE+UllhR6/J4a6w8Xq9i4yi3mQrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1", + "@babel/traverse": "^7.27.7", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz", + "integrity": "sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/template": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.27.7.tgz", + "integrity": "sha512-pg3ZLdIKWCP0CrJm0O4jYjVthyBeioVfvz9nwt6o5paUxsgJ/8GucSMAIaj6M7xA4WY+SrvtGu2LijzkdyecWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz", + "integrity": "sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz", + "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz", + "integrity": "sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz", + "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.27.1.tgz", + "integrity": "sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz", + "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz", + "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", + "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz", + "integrity": "sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", + "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.27.1.tgz", + "integrity": "sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz", + "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz", + "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz", + "integrity": "sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.27.1.tgz", + "integrity": "sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz", + "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz", + "integrity": "sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz", + "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz", + "integrity": "sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz", + "integrity": "sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.27.7.tgz", + "integrity": "sha512-201B1kFTWhckclcXpWHc8uUpYziDX/Pl4rxl0ZX0DiCZ3jknwfSUALL3QCYeeXXB37yWxJbo+g+Vfq8pAaHi3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.27.7", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/traverse": "^7.27.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz", + "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz", + "integrity": "sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.27.1.tgz", + "integrity": "sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz", + "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz", + "integrity": "sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz", + "integrity": "sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz", + "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", + "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", + "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.27.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.27.5.tgz", + "integrity": "sha512-uhB8yHerfe3MWnuLAhEbeQ4afVoqv8BQsPqrTv7e/jZ9y00kJL6l9a/f4OWaKxotmjzewfEyXE1vgDJenkQ2/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.27.1.tgz", + "integrity": "sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.26.8", - "@babel/helper-validator-option": "^7.25.9", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.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==", + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz", + "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-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==", + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", + "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helper-plugin-utils": { + "node_modules/@babel/plugin-transform-spread": { "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", - "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz", + "integrity": "sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==", "dev": true, "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-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==", + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", + "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", + "dev": true, "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/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==", + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz", + "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==", + "dev": true, "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/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==", + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz", + "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==", + "dev": true, "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helpers": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.0.tgz", - "integrity": "sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==", + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz", + "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.27.0", - "@babel/types": "^7.27.0" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/parser": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz", - "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==", + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz", + "integrity": "sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.27.0" - }, - "bin": { - "parser": "bin/babel-parser.js" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { - "node": ">=6.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-react-jsx-self": { + "node_modules/@babel/plugin-transform-unicode-regex": { "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", - "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz", + "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", "dev": true, "license": "MIT", "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { @@ -334,22 +1495,122 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-react-jsx-source": { + "node_modules/@babel/plugin-transform-unicode-sets-regex": { "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", - "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz", + "integrity": "sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==", "dev": true, "license": "MIT", "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.27.2.tgz", + "integrity": "sha512-Ma4zSuYSlGNRlCLO+EAzLnCmJK2vdstgv+n7aUP+/IKZrOfWHOJVdSJtuub8RzHTj3ahD37k5OKJWvzf16TQyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.27.2", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.27.1", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.27.1", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-import-assertions": "^7.27.1", + "@babel/plugin-syntax-import-attributes": "^7.27.1", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.27.1", + "@babel/plugin-transform-async-generator-functions": "^7.27.1", + "@babel/plugin-transform-async-to-generator": "^7.27.1", + "@babel/plugin-transform-block-scoped-functions": "^7.27.1", + "@babel/plugin-transform-block-scoping": "^7.27.1", + "@babel/plugin-transform-class-properties": "^7.27.1", + "@babel/plugin-transform-class-static-block": "^7.27.1", + "@babel/plugin-transform-classes": "^7.27.1", + "@babel/plugin-transform-computed-properties": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.27.1", + "@babel/plugin-transform-dotall-regex": "^7.27.1", + "@babel/plugin-transform-duplicate-keys": "^7.27.1", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.27.1", + "@babel/plugin-transform-dynamic-import": "^7.27.1", + "@babel/plugin-transform-exponentiation-operator": "^7.27.1", + "@babel/plugin-transform-export-namespace-from": "^7.27.1", + "@babel/plugin-transform-for-of": "^7.27.1", + "@babel/plugin-transform-function-name": "^7.27.1", + "@babel/plugin-transform-json-strings": "^7.27.1", + "@babel/plugin-transform-literals": "^7.27.1", + "@babel/plugin-transform-logical-assignment-operators": "^7.27.1", + "@babel/plugin-transform-member-expression-literals": "^7.27.1", + "@babel/plugin-transform-modules-amd": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-modules-systemjs": "^7.27.1", + "@babel/plugin-transform-modules-umd": "^7.27.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.27.1", + "@babel/plugin-transform-new-target": "^7.27.1", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.27.1", + "@babel/plugin-transform-numeric-separator": "^7.27.1", + "@babel/plugin-transform-object-rest-spread": "^7.27.2", + "@babel/plugin-transform-object-super": "^7.27.1", + "@babel/plugin-transform-optional-catch-binding": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1", + "@babel/plugin-transform-parameters": "^7.27.1", + "@babel/plugin-transform-private-methods": "^7.27.1", + "@babel/plugin-transform-private-property-in-object": "^7.27.1", + "@babel/plugin-transform-property-literals": "^7.27.1", + "@babel/plugin-transform-regenerator": "^7.27.1", + "@babel/plugin-transform-regexp-modifiers": "^7.27.1", + "@babel/plugin-transform-reserved-words": "^7.27.1", + "@babel/plugin-transform-shorthand-properties": "^7.27.1", + "@babel/plugin-transform-spread": "^7.27.1", + "@babel/plugin-transform-sticky-regex": "^7.27.1", + "@babel/plugin-transform-template-literals": "^7.27.1", + "@babel/plugin-transform-typeof-symbol": "^7.27.1", + "@babel/plugin-transform-unicode-escapes": "^7.27.1", + "@babel/plugin-transform-unicode-property-regex": "^7.27.1", + "@babel/plugin-transform-unicode-regex": "^7.27.1", + "@babel/plugin-transform-unicode-sets-regex": "^7.27.1", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.11.0", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "core-js-compat": "^3.40.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, "node_modules/@babel/runtime": { "version": "7.27.0", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.0.tgz", @@ -363,30 +1624,30 @@ } }, "node_modules/@babel/template": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz", - "integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==", + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.26.2", - "@babel/parser": "^7.27.0", - "@babel/types": "^7.27.0" + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.0.tgz", - "integrity": "sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==", + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.7.tgz", + "integrity": "sha512-X6ZlfR/O/s5EQ/SnUSLzr+6kGnkg8HXGMzpgsMsrJVcfDtH1vIp6ctCN4eZ1LS5c0+te5Cb6Y514fASjMRJ1nw==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.27.0", - "@babel/parser": "^7.27.0", - "@babel/template": "^7.27.0", - "@babel/types": "^7.27.0", + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.27.5", + "@babel/parser": "^7.27.7", + "@babel/template": "^7.27.2", + "@babel/types": "^7.27.7", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -404,13 +1665,13 @@ } }, "node_modules/@babel/types": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz", - "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==", + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.7.tgz", + "integrity": "sha512-8OLQgDScAOHXnAz2cV+RfzzNMipuLVBz2biuAJFMV9bfkNf393je3VM8CLkjQodW5+iWsSJdSgSWT6rsZoXHPw==", "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9" + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1512,8 +2773,6 @@ "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25" @@ -1564,15 +2823,15 @@ } }, "node_modules/@napi-rs/wasm-runtime": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.9.tgz", - "integrity": "sha512-OKRBiajrrxB9ATokgEQoG87Z25c67pCpYcCwmXYX8PBftC9pBfN18gnm/fh1wurSLEKIAt+QRFLFCQISrb66Jg==", + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.11.tgz", + "integrity": "sha512-9DPkXtvHydrcOsopiYpUgPHpmj0HWZKMUnL2dZqpvC42lsratuBG06V5ipyno0fUek5VlFsNQ+AcFATSrJXgMA==", "dev": true, "license": "MIT", "optional": true, "dependencies": { - "@emnapi/core": "^1.4.0", - "@emnapi/runtime": "^1.4.0", + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", "@tybys/wasm-util": "^0.9.0" } }, @@ -2007,6 +3266,170 @@ "dev": true, "license": "MIT" }, + "node_modules/@rollup/plugin-babel": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", + "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@types/babel__core": "^7.1.9", + "rollup": "^1.20.0||^2.0.0" + }, + "peerDependenciesMeta": { + "@types/babel__core": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "15.3.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.3.1.tgz", + "integrity": "sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "@types/resolve": "1.20.2", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.22.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.78.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-node-resolve/node_modules/@rollup/pluginutils": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.2.0.tgz", + "integrity": "sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-node-resolve/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/plugin-node-resolve/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@rollup/plugin-replace": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", + "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "magic-string": "^0.25.7" + }, + "peerDependencies": { + "rollup": "^1.20.0 || ^2.0.0" + } + }, + "node_modules/@rollup/plugin-replace/node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "node_modules/@rollup/plugin-terser": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.4.tgz", + "integrity": "sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "serialize-javascript": "^6.0.1", + "smob": "^1.0.0", + "terser": "^5.17.4" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/pluginutils/node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true, + "license": "MIT" + }, "node_modules/@rollup/rollup-android-arm-eabi": { "version": "4.40.2", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.40.2.tgz", @@ -2774,6 +4197,29 @@ "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", "license": "MIT" }, + "node_modules/@surma/rollup-plugin-off-main-thread": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", + "integrity": "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "ejs": "^3.1.6", + "json5": "^2.2.0", + "magic-string": "^0.25.0", + "string.prototype.matchall": "^4.0.6" + } + }, + "node_modules/@surma/rollup-plugin-off-main-thread/node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, "node_modules/@swc/helpers": { "version": "0.5.17", "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.17.tgz", @@ -3177,6 +4623,13 @@ "@types/react": "*" } }, + "node_modules/@types/resolve": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", + "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/stack-utils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", @@ -3201,6 +4654,13 @@ "integrity": "sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw==", "license": "MIT" }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/warning": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.3.tgz", @@ -3767,10 +5227,38 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/@unrs/resolver-binding-android-arm-eabi": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.9.2.tgz", + "integrity": "sha512-tS+lqTU3N0kkthU+rYp0spAYq15DU8ld9kXkaKg9sbQqJNF+WPMuNHZQGCgdxrUOEO0j22RKMwRVhF1HTl+X8A==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-android-arm64": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.9.2.tgz", + "integrity": "sha512-MffGiZULa/KmkNjHeuuflLVqfhqLv1vZLm8lWIyeADvlElJ/GLSOkoUX+5jf4/EGtfwrNFcEaB8BRas03KT0/Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, "node_modules/@unrs/resolver-binding-darwin-arm64": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.7.2.tgz", - "integrity": "sha512-vxtBno4xvowwNmO/ASL0Y45TpHqmNkAaDtz4Jqb+clmcVSSl8XCG/PNFFkGsXXXS6AMjP+ja/TtNCFFa1QwLRg==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.9.2.tgz", + "integrity": "sha512-dzJYK5rohS1sYl1DHdJ3mwfwClJj5BClQnQSyAgEfggbUwA9RlROQSSbKBLqrGfsiC/VyrDPtbO8hh56fnkbsQ==", "cpu": [ "arm64" ], @@ -3782,9 +5270,9 @@ ] }, "node_modules/@unrs/resolver-binding-darwin-x64": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.7.2.tgz", - "integrity": "sha512-qhVa8ozu92C23Hsmv0BF4+5Dyyd5STT1FolV4whNgbY6mj3kA0qsrGPe35zNR3wAN7eFict3s4Rc2dDTPBTuFQ==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.9.2.tgz", + "integrity": "sha512-gaIMWK+CWtXcg9gUyznkdV54LzQ90S3X3dn8zlh+QR5Xy7Y+Efqw4Rs4im61K1juy4YNb67vmJsCDAGOnIeffQ==", "cpu": [ "x64" ], @@ -3796,9 +5284,9 @@ ] }, "node_modules/@unrs/resolver-binding-freebsd-x64": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.7.2.tgz", - "integrity": "sha512-zKKdm2uMXqLFX6Ac7K5ElnnG5VIXbDlFWzg4WJ8CGUedJryM5A3cTgHuGMw1+P5ziV8CRhnSEgOnurTI4vpHpg==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.9.2.tgz", + "integrity": "sha512-S7QpkMbVoVJb0xwHFwujnwCAEDe/596xqY603rpi/ioTn9VDgBHnCCxh+UFrr5yxuMH+dliHfjwCZJXOPJGPnw==", "cpu": [ "x64" ], @@ -3810,9 +5298,9 @@ ] }, "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.7.2.tgz", - "integrity": "sha512-8N1z1TbPnHH+iDS/42GJ0bMPLiGK+cUqOhNbMKtWJ4oFGzqSJk/zoXFzcQkgtI63qMcUI7wW1tq2usZQSb2jxw==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.9.2.tgz", + "integrity": "sha512-+XPUMCuCCI80I46nCDFbGum0ZODP5NWGiwS3Pj8fOgsG5/ctz+/zzuBlq/WmGa+EjWZdue6CF0aWWNv84sE1uw==", "cpu": [ "arm" ], @@ -3824,9 +5312,9 @@ ] }, "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.7.2.tgz", - "integrity": "sha512-tjYzI9LcAXR9MYd9rO45m1s0B/6bJNuZ6jeOxo1pq1K6OBuRMMmfyvJYval3s9FPPGmrldYA3mi4gWDlWuTFGA==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.9.2.tgz", + "integrity": "sha512-sqvUyAd1JUpwbz33Ce2tuTLJKM+ucSsYpPGl2vuFwZnEIg0CmdxiZ01MHQ3j6ExuRqEDUCy8yvkDKvjYFPb8Zg==", "cpu": [ "arm" ], @@ -3838,9 +5326,9 @@ ] }, "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.7.2.tgz", - "integrity": "sha512-jon9M7DKRLGZ9VYSkFMflvNqu9hDtOCEnO2QAryFWgT6o6AXU8du56V7YqnaLKr6rAbZBWYsYpikF226v423QA==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.9.2.tgz", + "integrity": "sha512-UYA0MA8ajkEDCFRQdng/FVx3F6szBvk3EPnkTTQuuO9lV1kPGuTB+V9TmbDxy5ikaEgyWKxa4CI3ySjklZ9lFA==", "cpu": [ "arm64" ], @@ -3852,9 +5340,9 @@ ] }, "node_modules/@unrs/resolver-binding-linux-arm64-musl": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.7.2.tgz", - "integrity": "sha512-c8Cg4/h+kQ63pL43wBNaVMmOjXI/X62wQmru51qjfTvI7kmCy5uHTJvK/9LrF0G8Jdx8r34d019P1DVJmhXQpA==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.9.2.tgz", + "integrity": "sha512-P/CO3ODU9YJIHFqAkHbquKtFst0COxdphc8TKGL5yCX75GOiVpGqd1d15ahpqu8xXVsqP4MGFP2C3LRZnnL5MA==", "cpu": [ "arm64" ], @@ -3866,9 +5354,9 @@ ] }, "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.7.2.tgz", - "integrity": "sha512-A+lcwRFyrjeJmv3JJvhz5NbcCkLQL6Mk16kHTNm6/aGNc4FwPHPE4DR9DwuCvCnVHvF5IAd9U4VIs/VvVir5lg==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.9.2.tgz", + "integrity": "sha512-uKStFlOELBxBum2s1hODPtgJhY4NxYJE9pAeyBgNEzHgTqTiVBPjfTlPFJkfxyTjQEuxZbbJlJnMCrRgD7ubzw==", "cpu": [ "ppc64" ], @@ -3880,9 +5368,9 @@ ] }, "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.7.2.tgz", - "integrity": "sha512-hQQ4TJQrSQW8JlPm7tRpXN8OCNP9ez7PajJNjRD1ZTHQAy685OYqPrKjfaMw/8LiHCt8AZ74rfUVHP9vn0N69Q==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.9.2.tgz", + "integrity": "sha512-LkbNnZlhINfY9gK30AHs26IIVEZ9PEl9qOScYdmY2o81imJYI4IMnJiW0vJVtXaDHvBvxeAgEy5CflwJFIl3tQ==", "cpu": [ "riscv64" ], @@ -3894,9 +5382,9 @@ ] }, "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.7.2.tgz", - "integrity": "sha512-NoAGbiqrxtY8kVooZ24i70CjLDlUFI7nDj3I9y54U94p+3kPxwd2L692YsdLa+cqQ0VoqMWoehDFp21PKRUoIQ==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.9.2.tgz", + "integrity": "sha512-vI+e6FzLyZHSLFNomPi+nT+qUWN4YSj8pFtQZSFTtmgFoxqB6NyjxSjAxEC1m93qn6hUXhIsh8WMp+fGgxCoRg==", "cpu": [ "riscv64" ], @@ -3908,9 +5396,9 @@ ] }, "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.7.2.tgz", - "integrity": "sha512-KaZByo8xuQZbUhhreBTW+yUnOIHUsv04P8lKjQ5otiGoSJ17ISGYArc+4vKdLEpGaLbemGzr4ZeUbYQQsLWFjA==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.9.2.tgz", + "integrity": "sha512-sSO4AlAYhSM2RAzBsRpahcJB1msc6uYLAtP6pesPbZtptF8OU/CbCPhSRW6cnYOGuVmEmWVW5xVboAqCnWTeHQ==", "cpu": [ "s390x" ], @@ -3922,9 +5410,9 @@ ] }, "node_modules/@unrs/resolver-binding-linux-x64-gnu": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.7.2.tgz", - "integrity": "sha512-dEidzJDubxxhUCBJ/SHSMJD/9q7JkyfBMT77Px1npl4xpg9t0POLvnWywSk66BgZS/b2Hy9Y1yFaoMTFJUe9yg==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.9.2.tgz", + "integrity": "sha512-jkSkwch0uPFva20Mdu8orbQjv2A3G88NExTN2oPTI1AJ+7mZfYW3cDCTyoH6OnctBKbBVeJCEqh0U02lTkqD5w==", "cpu": [ "x64" ], @@ -3936,9 +5424,9 @@ ] }, "node_modules/@unrs/resolver-binding-linux-x64-musl": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.7.2.tgz", - "integrity": "sha512-RvP+Ux3wDjmnZDT4XWFfNBRVG0fMsc+yVzNFUqOflnDfZ9OYujv6nkh+GOr+watwrW4wdp6ASfG/e7bkDradsw==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.9.2.tgz", + "integrity": "sha512-Uk64NoiTpQbkpl+bXsbeyOPRpUoMdcUqa+hDC1KhMW7aN1lfW8PBlBH4mJ3n3Y47dYE8qi0XTxy1mBACruYBaw==", "cpu": [ "x64" ], @@ -3950,9 +5438,9 @@ ] }, "node_modules/@unrs/resolver-binding-wasm32-wasi": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.7.2.tgz", - "integrity": "sha512-y797JBmO9IsvXVRCKDXOxjyAE4+CcZpla2GSoBQ33TVb3ILXuFnMrbR/QQZoauBYeOFuu4w3ifWLw52sdHGz6g==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.9.2.tgz", + "integrity": "sha512-EpBGwkcjDicjR/ybC0g8wO5adPNdVuMrNalVgYcWi+gYtC1XYNuxe3rufcO7dA76OHGeVabcO6cSkPJKVcbCXQ==", "cpu": [ "wasm32" ], @@ -3960,16 +5448,16 @@ "license": "MIT", "optional": true, "dependencies": { - "@napi-rs/wasm-runtime": "^0.2.9" + "@napi-rs/wasm-runtime": "^0.2.11" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.7.2.tgz", - "integrity": "sha512-gtYTh4/VREVSLA+gHrfbWxaMO/00y+34htY7XpioBTy56YN2eBjkPrY1ML1Zys89X3RJDKVaogzwxlM1qU7egg==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.9.2.tgz", + "integrity": "sha512-EdFbGn7o1SxGmN6aZw9wAkehZJetFPao0VGZ9OMBwKx6TkvDuj6cNeLimF/Psi6ts9lMOe+Dt6z19fZQ9Ye2fw==", "cpu": [ "arm64" ], @@ -3981,9 +5469,9 @@ ] }, "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.7.2.tgz", - "integrity": "sha512-Ywv20XHvHTDRQs12jd3MY8X5C8KLjDbg/jyaal/QLKx3fAShhJyD4blEANInsjxW3P7isHx1Blt56iUDDJO3jg==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.9.2.tgz", + "integrity": "sha512-JY9hi1p7AG+5c/dMU8o2kWemM8I6VZxfGwn1GCtf3c5i+IKcMo2NQ8OjZ4Z3/itvY/Si3K10jOBQn7qsD/whUA==", "cpu": [ "ia32" ], @@ -3995,9 +5483,9 @@ ] }, "node_modules/@unrs/resolver-binding-win32-x64-msvc": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.7.2.tgz", - "integrity": "sha512-friS8NEQfHaDbkThxopGk+LuE5v3iY0StruifjQEt7SLbA46OnfgMO15sOTkbpJkol6RB+1l1TYPXh0sCddpvA==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.9.2.tgz", + "integrity": "sha512-ryoo+EB19lMxAd80ln9BVf8pdOAxLb97amrQ3SFN9OCRn/5M5wvwDgAe4i8ZjhpbiHoDeP8yavcTEnpKBo7lZg==", "cpu": [ "x64" ], @@ -4711,6 +6199,16 @@ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "license": "MIT" }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/autoprefixer": { "version": "10.4.21", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", @@ -4796,6 +6294,58 @@ "node": ">= 0.4" } }, + "node_modules/babel-plugin-import": { + "version": "1.13.8", + "resolved": "https://registry.npmjs.org/babel-plugin-import/-/babel-plugin-import-1.13.8.tgz", + "integrity": "sha512-36babpjra5m3gca44V6tSTomeBlPA7cHUynrE2WiQIm3rEGD9xy28MKsx5IdO45EbnpJY7Jrgd00C6Dwt/l/2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.13.tgz", + "integrity": "sha512-3sX/eOms8kd3q2KZ6DAhKPc0dgm525Gqq5NtWKZ7QYYZEv57OQ54KtblzJzH1lQF/eQxO8KjWGIK9IPUJNus5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.6.4", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.11.1.tgz", + "integrity": "sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.3", + "core-js-compat": "^3.40.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.4.tgz", + "integrity": "sha512-7gD3pRadPrbjhjLyxebmx/WrFYcuSjZ0XbdUujQMZ/fcE9oeewk2U/7PCvez84UeuK3oSjmPZ0Ch0dlupQvGzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.4" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -4902,9 +6452,9 @@ } }, "node_modules/browserslist": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", - "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", + "version": "4.25.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.1.tgz", + "integrity": "sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==", "funding": [ { "type": "opencollective", @@ -4921,10 +6471,10 @@ ], "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001688", - "electron-to-chromium": "^1.5.73", + "caniuse-lite": "^1.0.30001726", + "electron-to-chromium": "^1.5.173", "node-releases": "^2.0.19", - "update-browserslist-db": "^1.1.1" + "update-browserslist-db": "^1.1.3" }, "bin": { "browserslist": "cli.js" @@ -4938,9 +6488,7 @@ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/bytes": { "version": "3.1.2", @@ -5041,9 +6589,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001707", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001707.tgz", - "integrity": "sha512-3qtRjw/HQSMlDWf+X79N206fepf4SOOU6SQLMaq/0KkZLmSjPxAkBOQQ+FxbHKfHmYLZFfdWsO3KA90ceHPSnw==", + "version": "1.0.30001726", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001726.tgz", + "integrity": "sha512-VQAUIUzBiZ/UnlM28fSp2CRF3ivUn1BWEvxMcVTNwpw91Py1pGbPIyIKtd+tzct9C3ouceCVdGAXxZOpZAsgdw==", "funding": [ { "type": "opencollective", @@ -5148,6 +6696,21 @@ "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==", "license": "MIT" }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/clsx": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", @@ -5198,6 +6761,16 @@ "node": ">=18" } }, + "node_modules/common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", @@ -5267,6 +6840,20 @@ "toggle-selection": "^1.0.6" } }, + "node_modules/core-js-compat": { + "version": "3.43.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.43.0.tgz", + "integrity": "sha512-2GML2ZsCc5LR7hZYz4AXmjQw8zuy2T//2QntwdnpuYI7jteT6GVYJL7F6C2C57R7gSYrcqVW3lAALefdbhBLDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.25.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, "node_modules/cors": { "version": "2.8.5", "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", @@ -5296,6 +6883,16 @@ "node": ">= 8" } }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/css-color-keywords": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", @@ -5473,9 +7070,9 @@ } }, "node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -5513,6 +7110,16 @@ "dev": true, "license": "MIT" }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", @@ -5531,6 +7138,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/define-properties": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", @@ -5702,10 +7319,26 @@ "dev": true, "license": "MIT" }, + "node_modules/ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/electron-to-chromium": { - "version": "1.5.128", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.128.tgz", - "integrity": "sha512-bo1A4HH/NS522Ws0QNFIzyPcyUUNV/yyy70Ho1xqfGYzPUme2F/xr4tlEOuM6/A538U1vDA7a4XfCd1CKRegKQ==", + "version": "1.5.177", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.177.tgz", + "integrity": "sha512-7EH2G59nLsEMj97fpDuvVcYi6lwTcM1xuWw3PssD8xzboAW7zj7iB3COEEEATUfjLHrs5uKBLQT03V/8URx06g==", "license": "ISC" }, "node_modules/email-addresses": { @@ -6051,6 +7684,44 @@ } } }, + "node_modules/eslint-import-context": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/eslint-import-context/-/eslint-import-context-0.1.9.tgz", + "integrity": "sha512-K9Hb+yRaGAGUbwjhFNHvSmmkZs9+zbuoe3kFQ4V1wYjrepUFYM2dZAfNtjbbj3qsPfUfsA68Bx/ICWQMi+C8Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-tsconfig": "^4.10.1", + "stable-hash-x": "^0.2.0" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-import-context" + }, + "peerDependencies": { + "unrs-resolver": "^1.0.0" + }, + "peerDependenciesMeta": { + "unrs-resolver": { + "optional": true + } + } + }, + "node_modules/eslint-import-resolver-alias": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-alias/-/eslint-import-resolver-alias-1.1.2.tgz", + "integrity": "sha512-WdviM1Eu834zsfjHtcGHtGfcu+F30Od3V7I9Fi57uhBEwPkjDcii7/yW8jAT+gOhn4P/vOxxNAXbFAKsrrc15w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + }, + "peerDependencies": { + "eslint-plugin-import": ">=1.4.0" + } + }, "node_modules/eslint-import-resolver-node": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", @@ -6074,18 +7745,19 @@ } }, "node_modules/eslint-import-resolver-typescript": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-4.3.4.tgz", - "integrity": "sha512-buzw5z5VtiQMysYLH9iW9BV04YyZebsw+gPi+c4FCjfS9i6COYOrEWw9t3m3wA9PFBfqcBCqWf32qrXLbwafDw==", + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-4.4.4.tgz", + "integrity": "sha512-1iM2zeBvrYmUNTj2vSC/90JTHDth+dfOfiNKkxApWRsTJYNrc8rOdxxIf5vazX+BiAXTeOT0UvWpGI/7qIWQOw==", "dev": true, "license": "ISC", "dependencies": { - "debug": "^4.4.0", - "get-tsconfig": "^4.10.0", + "debug": "^4.4.1", + "eslint-import-context": "^0.1.8", + "get-tsconfig": "^4.10.1", "is-bun-module": "^2.0.0", - "stable-hash": "^0.0.5", - "tinyglobby": "^0.2.13", - "unrs-resolver": "^1.6.3" + "stable-hash-x": "^0.2.0", + "tinyglobby": "^0.2.14", + "unrs-resolver": "^1.7.11" }, "engines": { "node": "^16.17.0 || >=18.6.0" @@ -6471,6 +8143,13 @@ "node": ">=4.0" } }, + "node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true, + "license": "MIT" + }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -6680,6 +8359,23 @@ "resolved": "https://registry.npmjs.org/fast-shallow-equal/-/fast-shallow-equal-1.0.0.tgz", "integrity": "sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw==" }, + "node_modules/fast-uri": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", + "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, "node_modules/fastest-stable-stringify": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/fastest-stable-stringify/-/fastest-stable-stringify-2.0.2.tgz", @@ -6709,6 +8405,39 @@ "node": ">=16.0.0" } }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/filename-reserved-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", @@ -7046,6 +8775,16 @@ "node": ">=6.9.0" } }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, "node_modules/get-intrinsic": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", @@ -7070,6 +8809,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", + "dev": true, + "license": "ISC" + }, "node_modules/get-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", @@ -7102,9 +8848,9 @@ } }, "node_modules/get-tsconfig": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.0.tgz", - "integrity": "sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.1.tgz", + "integrity": "sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==", "dev": true, "license": "MIT", "dependencies": { @@ -7454,6 +9200,13 @@ "node": ">=0.10.0" } }, + "node_modules/idb": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", + "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==", + "dev": true, + "license": "ISC" + }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -7737,6 +9490,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -7816,6 +9585,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", + "dev": true, + "license": "MIT" + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -7842,6 +9618,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-potential-custom-element-name": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", @@ -7875,6 +9661,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-set": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", @@ -7904,6 +9700,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-string": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", @@ -8001,6 +9810,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", @@ -8116,6 +9938,25 @@ "@pkgjs/parseargs": "^0.11.0" } }, + "node_modules/jake": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", + "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/jest-diff": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", @@ -8388,6 +10229,13 @@ "dev": true, "license": "MIT" }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true, + "license": "(AFL-2.1 OR BSD-3-Clause)" + }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -8427,6 +10275,16 @@ "graceful-fs": "^4.1.6" } }, + "node_modules/jsonpointer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", + "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/jsx-ast-utils": { "version": "3.3.5", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", @@ -8499,6 +10357,16 @@ } } }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -8553,6 +10421,13 @@ "dev": true, "license": "MIT" }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true, + "license": "MIT" + }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -8560,6 +10435,13 @@ "dev": true, "license": "MIT" }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", + "dev": true, + "license": "MIT" + }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -9175,6 +11057,24 @@ "wrappy": "1" } }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/optionator": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", @@ -9646,6 +11546,19 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, + "node_modules/pretty-bytes": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-6.1.1.tgz", + "integrity": "sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/pretty-format": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", @@ -9810,6 +11723,16 @@ ], "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", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, "node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -10177,6 +12100,26 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true, + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", + "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/regenerator-runtime": { "version": "0.14.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", @@ -10204,12 +12147,83 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/regexpu-core": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", + "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.2.0", + "regjsgen": "^0.8.0", + "regjsparser": "^0.12.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/regjsparser": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", + "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~3.0.2" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/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/remove-accents": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.5.0.tgz", "integrity": "sha512-8g3/Otx1eJaVD12e31UbJj1YzdtVvzH85HV7t+9MJYk/u3XmkOUJ5Ys9wQrf9PCPK8+xn4ymzqYCiZl6QWKn+A==", "license": "MIT" }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/resize-observer-polyfill": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", @@ -10284,6 +12298,66 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/rollup": { + "version": "2.79.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.2.tgz", + "integrity": "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==", + "dev": true, + "license": "MIT", + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup-plugin-visualizer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-6.0.3.tgz", + "integrity": "sha512-ZU41GwrkDcCpVoffviuM9Clwjy5fcUxlz0oMoTXTYsK+tcIFzbdacnrr2n8TXcHxbGKKXtOdjxM2HUS4HjkwIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "open": "^8.0.0", + "picomatch": "^4.0.2", + "source-map": "^0.7.4", + "yargs": "^17.5.1" + }, + "bin": { + "rollup-plugin-visualizer": "dist/bin/cli.js" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "rolldown": "1.x || ^1.0.0-beta", + "rollup": "2.x || 3.x || 4.x" + }, + "peerDependenciesMeta": { + "rolldown": { + "optional": true + }, + "rollup": { + "optional": true + } + } + }, + "node_modules/rollup-plugin-visualizer/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/router": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", @@ -10561,6 +12635,16 @@ "node": ">= 0.6" } }, + "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", + "dependencies": { + "randombytes": "^2.1.0" + } + }, "node_modules/serve-static": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz", @@ -10768,6 +12852,23 @@ "node": ">=8" } }, + "node_modules/smob": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/smob/-/smob-1.5.0.tgz", + "integrity": "sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==", + "dev": true, + "license": "MIT" + }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 8" + } + }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", @@ -10783,8 +12884,6 @@ "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -10796,24 +12895,33 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "license": "BSD-3-Clause", - "optional": true, - "peer": true, "engines": { "node": ">=0.10.0" } }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "deprecated": "Please use @jridgewell/sourcemap-codec instead", + "dev": true, + "license": "MIT" + }, "node_modules/ssr-window": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-4.0.2.tgz", "integrity": "sha512-ISv/Ch+ig7SOtw7G2+qkwfVASzazUnvlDTwypdLoPoySv+6MqlOV10VwPSE6EWkGjhW50lUmghPmpYZXMu/+AQ==", "license": "MIT" }, - "node_modules/stable-hash": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.5.tgz", - "integrity": "sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==", + "node_modules/stable-hash-x": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/stable-hash-x/-/stable-hash-x-0.2.0.tgz", + "integrity": "sha512-o3yWv49B/o4QZk5ZcsALc6t0+eCelPc44zZsLtCQnZPDwFpDYSWcDnrv2TtMmMbQ7uKo3J0HTURCqckw23czNQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=12.0.0" + } }, "node_modules/stack-generator": { "version": "2.0.10", @@ -11063,6 +13171,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -11100,6 +13223,16 @@ "node": ">=4" } }, + "node_modules/strip-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", + "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, "node_modules/strip-indent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", @@ -11357,6 +13490,16 @@ "dev": true, "license": "MIT" }, + "node_modules/tailwind-merge": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.3.1.tgz", + "integrity": "sha512-gBXpgUm/3rp1lMZZrM/w7D8GKqshif0zAymAhbCyIt8KMe+0v9DQ7cdYLR4FHH/cKpdTXb+A/tKKU3eolfsI+g==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, "node_modules/tailwindcss": { "version": "3.4.17", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz", @@ -11408,14 +13551,41 @@ "node": ">=10.13.0" } }, + "node_modules/temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/tempy": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz", + "integrity": "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-stream": "^2.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^0.16.0", + "unique-string": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/terser": { "version": "5.39.0", "resolved": "https://registry.npmjs.org/terser/-/terser-5.39.0.tgz", "integrity": "sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==", "dev": true, "license": "BSD-2-Clause", - "optional": true, - "peer": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", @@ -11434,9 +13604,7 @@ "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", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/thenify": { "version": "3.3.1", @@ -11495,9 +13663,9 @@ "license": "MIT" }, "node_modules/tinyglobby": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz", - "integrity": "sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==", + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", + "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", "dev": true, "license": "MIT", "dependencies": { @@ -11737,6 +13905,19 @@ "node": ">= 0.8.0" } }, + "node_modules/type-fest": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", + "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/type-is": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", @@ -11866,46 +14047,103 @@ "node": ">=4.2.0" } }, - "node_modules/unbox-primitive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", - "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/uncontrollable": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.2.1.tgz", + "integrity": "sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.6.3", + "@types/react": ">=16.9.11", + "invariant": "^2.2.4", + "react-lifecycles-compat": "^3.0.4" + }, + "peerDependencies": { + "react": ">=15.0.0" + } + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "license": "MIT" + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", + "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", "dev": true, "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-bigints": "^1.0.2", - "has-symbols": "^1.1.0", - "which-boxed-primitive": "^1.1.1" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=4" } }, - "node_modules/uncontrollable": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.2.1.tgz", - "integrity": "sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==", + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/runtime": "^7.6.3", - "@types/react": ">=16.9.11", - "invariant": "^2.2.4", - "react-lifecycles-compat": "^3.0.4" + "crypto-random-string": "^2.0.0" }, - "peerDependencies": { - "react": ">=15.0.0" + "engines": { + "node": ">=8" } }, - "node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "license": "MIT" - }, "node_modules/universalify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", @@ -11949,36 +14187,49 @@ } }, "node_modules/unrs-resolver": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.7.2.tgz", - "integrity": "sha512-BBKpaylOW8KbHsu378Zky/dGh4ckT/4NW/0SHRABdqRLcQJ2dAOjDo9g97p04sWflm0kqPqpUatxReNV/dqI5A==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.9.2.tgz", + "integrity": "sha512-VUyWiTNQD7itdiMuJy+EuLEErLj3uwX/EpHQF8EOf33Dq3Ju6VW1GXm+swk6+1h7a49uv9fKZ+dft9jU7esdLA==", "dev": true, "hasInstallScript": true, "license": "MIT", "dependencies": { - "napi-postinstall": "^0.2.2" + "napi-postinstall": "^0.2.4" }, "funding": { - "url": "https://github.com/sponsors/JounQin" + "url": "https://opencollective.com/unrs-resolver" }, "optionalDependencies": { - "@unrs/resolver-binding-darwin-arm64": "1.7.2", - "@unrs/resolver-binding-darwin-x64": "1.7.2", - "@unrs/resolver-binding-freebsd-x64": "1.7.2", - "@unrs/resolver-binding-linux-arm-gnueabihf": "1.7.2", - "@unrs/resolver-binding-linux-arm-musleabihf": "1.7.2", - "@unrs/resolver-binding-linux-arm64-gnu": "1.7.2", - "@unrs/resolver-binding-linux-arm64-musl": "1.7.2", - "@unrs/resolver-binding-linux-ppc64-gnu": "1.7.2", - "@unrs/resolver-binding-linux-riscv64-gnu": "1.7.2", - "@unrs/resolver-binding-linux-riscv64-musl": "1.7.2", - "@unrs/resolver-binding-linux-s390x-gnu": "1.7.2", - "@unrs/resolver-binding-linux-x64-gnu": "1.7.2", - "@unrs/resolver-binding-linux-x64-musl": "1.7.2", - "@unrs/resolver-binding-wasm32-wasi": "1.7.2", - "@unrs/resolver-binding-win32-arm64-msvc": "1.7.2", - "@unrs/resolver-binding-win32-ia32-msvc": "1.7.2", - "@unrs/resolver-binding-win32-x64-msvc": "1.7.2" + "@unrs/resolver-binding-android-arm-eabi": "1.9.2", + "@unrs/resolver-binding-android-arm64": "1.9.2", + "@unrs/resolver-binding-darwin-arm64": "1.9.2", + "@unrs/resolver-binding-darwin-x64": "1.9.2", + "@unrs/resolver-binding-freebsd-x64": "1.9.2", + "@unrs/resolver-binding-linux-arm-gnueabihf": "1.9.2", + "@unrs/resolver-binding-linux-arm-musleabihf": "1.9.2", + "@unrs/resolver-binding-linux-arm64-gnu": "1.9.2", + "@unrs/resolver-binding-linux-arm64-musl": "1.9.2", + "@unrs/resolver-binding-linux-ppc64-gnu": "1.9.2", + "@unrs/resolver-binding-linux-riscv64-gnu": "1.9.2", + "@unrs/resolver-binding-linux-riscv64-musl": "1.9.2", + "@unrs/resolver-binding-linux-s390x-gnu": "1.9.2", + "@unrs/resolver-binding-linux-x64-gnu": "1.9.2", + "@unrs/resolver-binding-linux-x64-musl": "1.9.2", + "@unrs/resolver-binding-wasm32-wasi": "1.9.2", + "@unrs/resolver-binding-win32-arm64-msvc": "1.9.2", + "@unrs/resolver-binding-win32-ia32-msvc": "1.9.2", + "@unrs/resolver-binding-win32-x64-msvc": "1.9.2" + } + }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4", + "yarn": "*" } }, "node_modules/update-browserslist-db": { @@ -12136,6 +14387,37 @@ "url": "https://opencollective.com/vitest" } }, + "node_modules/vite-plugin-pwa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/vite-plugin-pwa/-/vite-plugin-pwa-1.0.0.tgz", + "integrity": "sha512-X77jo0AOd5OcxmWj3WnVti8n7Kw2tBgV1c8MCXFclrSlDV23ePzv2eTDIALXI2Qo6nJ5pZJeZAuX0AawvRfoeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.6", + "pretty-bytes": "^6.1.1", + "tinyglobby": "^0.2.10", + "workbox-build": "^7.3.0", + "workbox-window": "^7.3.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vite-pwa/assets-generator": "^1.0.0", + "vite": "^3.1.0 || ^4.0.0 || ^5.0.0 || ^6.0.0", + "workbox-build": "^7.3.0", + "workbox-window": "^7.3.0" + }, + "peerDependenciesMeta": { + "@vite-pwa/assets-generator": { + "optional": true + } + } + }, "node_modules/vite/node_modules/fdir": { "version": "6.4.4", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz", @@ -12506,6 +14788,344 @@ "node": ">=0.10.0" } }, + "node_modules/workbox-background-sync": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-7.3.0.tgz", + "integrity": "sha512-PCSk3eK7Mxeuyatb22pcSx9dlgWNv3+M8PqPaYDokks8Y5/FX4soaOqj3yhAZr5k6Q5JWTOMYgaJBpbw11G9Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "idb": "^7.0.1", + "workbox-core": "7.3.0" + } + }, + "node_modules/workbox-broadcast-update": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-7.3.0.tgz", + "integrity": "sha512-T9/F5VEdJVhwmrIAE+E/kq5at2OY6+OXXgOWQevnubal6sO92Gjo24v6dCVwQiclAF5NS3hlmsifRrpQzZCdUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "7.3.0" + } + }, + "node_modules/workbox-build": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-7.3.0.tgz", + "integrity": "sha512-JGL6vZTPlxnlqZRhR/K/msqg3wKP+m0wfEUVosK7gsYzSgeIxvZLi1ViJJzVL7CEeI8r7rGFV973RiEqkP3lWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@apideck/better-ajv-errors": "^0.3.1", + "@babel/core": "^7.24.4", + "@babel/preset-env": "^7.11.0", + "@babel/runtime": "^7.11.2", + "@rollup/plugin-babel": "^5.2.0", + "@rollup/plugin-node-resolve": "^15.2.3", + "@rollup/plugin-replace": "^2.4.1", + "@rollup/plugin-terser": "^0.4.3", + "@surma/rollup-plugin-off-main-thread": "^2.2.3", + "ajv": "^8.6.0", + "common-tags": "^1.8.0", + "fast-json-stable-stringify": "^2.1.0", + "fs-extra": "^9.0.1", + "glob": "^7.1.6", + "lodash": "^4.17.20", + "pretty-bytes": "^5.3.0", + "rollup": "^2.43.1", + "source-map": "^0.8.0-beta.0", + "stringify-object": "^3.3.0", + "strip-comments": "^2.0.1", + "tempy": "^0.6.0", + "upath": "^1.2.0", + "workbox-background-sync": "7.3.0", + "workbox-broadcast-update": "7.3.0", + "workbox-cacheable-response": "7.3.0", + "workbox-core": "7.3.0", + "workbox-expiration": "7.3.0", + "workbox-google-analytics": "7.3.0", + "workbox-navigation-preload": "7.3.0", + "workbox-precaching": "7.3.0", + "workbox-range-requests": "7.3.0", + "workbox-recipes": "7.3.0", + "workbox-routing": "7.3.0", + "workbox-strategies": "7.3.0", + "workbox-streams": "7.3.0", + "workbox-sw": "7.3.0", + "workbox-window": "7.3.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/workbox-build/node_modules/@apideck/better-ajv-errors": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz", + "integrity": "sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-schema": "^0.4.0", + "jsonpointer": "^5.0.0", + "leven": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "ajv": ">=8" + } + }, + "node_modules/workbox-build/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "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/workbox-build/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/workbox-build/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/workbox-build/node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/workbox-build/node_modules/source-map": { + "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "whatwg-url": "^7.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/workbox-build/node_modules/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/workbox-build/node_modules/webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/workbox-build/node_modules/whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "node_modules/workbox-cacheable-response": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-7.3.0.tgz", + "integrity": "sha512-eAFERIg6J2LuyELhLlmeRcJFa5e16Mj8kL2yCDbhWE+HUun9skRQrGIFVUagqWj4DMaaPSMWfAolM7XZZxNmxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "7.3.0" + } + }, + "node_modules/workbox-core": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-7.3.0.tgz", + "integrity": "sha512-Z+mYrErfh4t3zi7NVTvOuACB0A/jA3bgxUN3PwtAVHvfEsZxV9Iju580VEETug3zYJRc0Dmii/aixI/Uxj8fmw==", + "dev": true, + "license": "MIT" + }, + "node_modules/workbox-expiration": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-7.3.0.tgz", + "integrity": "sha512-lpnSSLp2BM+K6bgFCWc5bS1LR5pAwDWbcKt1iL87/eTSJRdLdAwGQznZE+1czLgn/X05YChsrEegTNxjM067vQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "idb": "^7.0.1", + "workbox-core": "7.3.0" + } + }, + "node_modules/workbox-google-analytics": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-7.3.0.tgz", + "integrity": "sha512-ii/tSfFdhjLHZ2BrYgFNTrb/yk04pw2hasgbM70jpZfLk0vdJAXgaiMAWsoE+wfJDNWoZmBYY0hMVI0v5wWDbg==", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-background-sync": "7.3.0", + "workbox-core": "7.3.0", + "workbox-routing": "7.3.0", + "workbox-strategies": "7.3.0" + } + }, + "node_modules/workbox-navigation-preload": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-7.3.0.tgz", + "integrity": "sha512-fTJzogmFaTv4bShZ6aA7Bfj4Cewaq5rp30qcxl2iYM45YD79rKIhvzNHiFj1P+u5ZZldroqhASXwwoyusnr2cg==", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "7.3.0" + } + }, + "node_modules/workbox-precaching": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-7.3.0.tgz", + "integrity": "sha512-ckp/3t0msgXclVAYaNndAGeAoWQUv7Rwc4fdhWL69CCAb2UHo3Cef0KIUctqfQj1p8h6aGyz3w8Cy3Ihq9OmIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "7.3.0", + "workbox-routing": "7.3.0", + "workbox-strategies": "7.3.0" + } + }, + "node_modules/workbox-range-requests": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-7.3.0.tgz", + "integrity": "sha512-EyFmM1KpDzzAouNF3+EWa15yDEenwxoeXu9bgxOEYnFfCxns7eAxA9WSSaVd8kujFFt3eIbShNqa4hLQNFvmVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "7.3.0" + } + }, + "node_modules/workbox-recipes": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-7.3.0.tgz", + "integrity": "sha512-BJro/MpuW35I/zjZQBcoxsctgeB+kyb2JAP5EB3EYzePg8wDGoQuUdyYQS+CheTb+GhqJeWmVs3QxLI8EBP1sg==", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-cacheable-response": "7.3.0", + "workbox-core": "7.3.0", + "workbox-expiration": "7.3.0", + "workbox-precaching": "7.3.0", + "workbox-routing": "7.3.0", + "workbox-strategies": "7.3.0" + } + }, + "node_modules/workbox-routing": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-7.3.0.tgz", + "integrity": "sha512-ZUlysUVn5ZUzMOmQN3bqu+gK98vNfgX/gSTZ127izJg/pMMy4LryAthnYtjuqcjkN4HEAx1mdgxNiKJMZQM76A==", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "7.3.0" + } + }, + "node_modules/workbox-strategies": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-7.3.0.tgz", + "integrity": "sha512-tmZydug+qzDFATwX7QiEL5Hdf7FrkhjaF9db1CbB39sDmEZJg3l9ayDvPxy8Y18C3Y66Nrr9kkN1f/RlkDgllg==", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "7.3.0" + } + }, + "node_modules/workbox-streams": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-7.3.0.tgz", + "integrity": "sha512-SZnXucyg8x2Y61VGtDjKPO5EgPUG5NDn/v86WYHX+9ZqvAsGOytP0Jxp1bl663YUuMoXSAtsGLL+byHzEuMRpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "7.3.0", + "workbox-routing": "7.3.0" + } + }, + "node_modules/workbox-sw": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-7.3.0.tgz", + "integrity": "sha512-aCUyoAZU9IZtH05mn0ACUpyHzPs0lMeJimAYkQkBsOWiqaJLgusfDCR+yllkPkFRxWpZKF8vSvgHYeG7LwhlmA==", + "dev": true, + "license": "MIT" + }, + "node_modules/workbox-window": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-7.3.0.tgz", + "integrity": "sha512-qW8PDy16OV1UBaUNGlTVcepzrlzyzNW/ZJvFQQs2j2TzGsg6IKjcpZC1RSquqQnTOafl5pCj5bGfAHlCjOOjdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/trusted-types": "^2.0.2", + "workbox-core": "7.3.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/wrap-ansi-cjs": { "name": "wrap-ansi", "version": "7.0.0", @@ -12570,6 +15190,16 @@ "dev": true, "license": "MIT" }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", @@ -12589,6 +15219,35 @@ "node": ">= 14" } }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/package.json b/package.json index 9fb919965..a301f3ef1 100644 --- a/package.json +++ b/package.json @@ -39,6 +39,7 @@ "sass": "^1.89.0", "styled-components": "^6.1.12", "swiper": "^9.2.0", + "tailwind-merge": "^3.3.1", "typescript": "^4.9.5", "web-vitals": "^5.0.2" }, @@ -83,8 +84,10 @@ "@vitejs/plugin-react": "^4.5.0", "@vitest/coverage-v8": "^3.1.3", "autoprefixer": "^10.4.21", + "babel-plugin-import": "^1.13.8", "eslint": "^9.26.0", - "eslint-import-resolver-typescript": "^4.3.4", + "eslint-import-resolver-alias": "^1.1.2", + "eslint-import-resolver-typescript": "^4.4.4", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-react": "^7.37.5", @@ -96,8 +99,10 @@ "prettier": "^3.5.1", "react-ga": "^3.3.1", "react-test-renderer": "^18.3.1", + "rollup-plugin-visualizer": "^6.0.3", "tailwindcss": "^3.4.17", "vite": "^6.3.5", + "vite-plugin-pwa": "^1.0.0", "vitest": "^3.1.3" }, "bundleDependencies": [ diff --git a/src/assets/images/1500x500.jpeg b/public/images/1500x500.jpeg similarity index 100% rename from src/assets/images/1500x500.jpeg rename to public/images/1500x500.jpeg diff --git a/src/assets/images/AboutUs1.jpg b/public/images/AboutUs1.jpg similarity index 100% rename from src/assets/images/AboutUs1.jpg rename to public/images/AboutUs1.jpg diff --git a/src/assets/images/BlackAvatar1.jpg b/public/images/BlackAvatar1.jpg similarity index 100% rename from src/assets/images/BlackAvatar1.jpg rename to public/images/BlackAvatar1.jpg diff --git a/src/assets/images/BlackAvatar2.jpg b/public/images/BlackAvatar2.jpg similarity index 100% rename from src/assets/images/BlackAvatar2.jpg rename to public/images/BlackAvatar2.jpg diff --git a/src/assets/images/BlueHamburgerIcon.svg b/public/images/BlueHamburgerIcon.svg similarity index 100% rename from src/assets/images/BlueHamburgerIcon.svg rename to public/images/BlueHamburgerIcon.svg diff --git a/src/assets/images/CloseIcon.svg b/public/images/CloseIcon.svg similarity index 100% rename from src/assets/images/CloseIcon.svg rename to public/images/CloseIcon.svg diff --git a/src/assets/images/HamburgerIcon.svg b/public/images/HamburgerIcon.svg similarity index 100% rename from src/assets/images/HamburgerIcon.svg rename to public/images/HamburgerIcon.svg diff --git a/src/assets/images/HomeImage.jpg b/public/images/HomeImage.jpg similarity index 100% rename from src/assets/images/HomeImage.jpg rename to public/images/HomeImage.jpg diff --git a/src/assets/images/LessThanBlueIcon.svg b/public/images/LessThanBlueIcon.svg similarity index 100% rename from src/assets/images/LessThanBlueIcon.svg rename to public/images/LessThanBlueIcon.svg diff --git a/src/assets/images/LessThanBlueWhiteIcon.svg b/public/images/LessThanBlueWhiteIcon.svg similarity index 100% rename from src/assets/images/LessThanBlueWhiteIcon.svg rename to public/images/LessThanBlueWhiteIcon.svg diff --git a/src/assets/images/LessThanDarkBlueIcon.svg b/public/images/LessThanDarkBlueIcon.svg similarity index 100% rename from src/assets/images/LessThanDarkBlueIcon.svg rename to public/images/LessThanDarkBlueIcon.svg diff --git a/src/assets/images/LessThanIconWhite.svg b/public/images/LessThanIconWhite.svg similarity index 100% rename from src/assets/images/LessThanIconWhite.svg rename to public/images/LessThanIconWhite.svg diff --git a/src/assets/images/LessThanRedIcon.svg b/public/images/LessThanRedIcon.svg similarity index 100% rename from src/assets/images/LessThanRedIcon.svg rename to public/images/LessThanRedIcon.svg diff --git a/src/assets/images/LessThanTransparentIcon.svg b/public/images/LessThanTransparentIcon.svg similarity index 100% rename from src/assets/images/LessThanTransparentIcon.svg rename to public/images/LessThanTransparentIcon.svg diff --git a/src/assets/images/LessThanYellowIcon.svg b/public/images/LessThanYellowIcon.svg similarity index 100% rename from src/assets/images/LessThanYellowIcon.svg rename to public/images/LessThanYellowIcon.svg diff --git a/src/assets/images/LinkedinBlackBlue.svg b/public/images/LinkedinBlackBlue.svg similarity index 100% rename from src/assets/images/LinkedinBlackBlue.svg rename to public/images/LinkedinBlackBlue.svg diff --git a/src/assets/images/LocationIcon.svg b/public/images/LocationIcon.svg similarity index 67% rename from src/assets/images/LocationIcon.svg rename to public/images/LocationIcon.svg index bbe221d9a..232840a21 100644 --- a/src/assets/images/LocationIcon.svg +++ b/public/images/LocationIcon.svg @@ -1,43 +1,46 @@ - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/src/assets/images/MoreThanBlueIcon.svg b/public/images/MoreThanBlueIcon.svg similarity index 100% rename from src/assets/images/MoreThanBlueIcon.svg rename to public/images/MoreThanBlueIcon.svg diff --git a/src/assets/images/MoreThanBlueWhiteIcon.svg b/public/images/MoreThanBlueWhiteIcon.svg similarity index 100% rename from src/assets/images/MoreThanBlueWhiteIcon.svg rename to public/images/MoreThanBlueWhiteIcon.svg diff --git a/src/assets/images/MoreThanGreenIcon.svg b/public/images/MoreThanGreenIcon.svg similarity index 100% rename from src/assets/images/MoreThanGreenIcon.svg rename to public/images/MoreThanGreenIcon.svg diff --git a/src/assets/images/MoreThanIcon.svg b/public/images/MoreThanIcon.svg similarity index 100% rename from src/assets/images/MoreThanIcon.svg rename to public/images/MoreThanIcon.svg diff --git a/src/assets/images/MoreThanIconWhite.svg b/public/images/MoreThanIconWhite.svg similarity index 100% rename from src/assets/images/MoreThanIconWhite.svg rename to public/images/MoreThanIconWhite.svg diff --git a/src/assets/images/MoreThanRedIcon.svg b/public/images/MoreThanRedIcon.svg similarity index 100% rename from src/assets/images/MoreThanRedIcon.svg rename to public/images/MoreThanRedIcon.svg diff --git a/src/assets/images/MoreThanTransparentIcon.svg b/public/images/MoreThanTransparentIcon.svg similarity index 100% rename from src/assets/images/MoreThanTransparentIcon.svg rename to public/images/MoreThanTransparentIcon.svg diff --git a/src/assets/images/NavigationLogo.svg b/public/images/NavigationLogo.svg similarity index 100% rename from src/assets/images/NavigationLogo.svg rename to public/images/NavigationLogo.svg diff --git a/src/assets/images/ReadMoreIcon.svg b/public/images/ReadMoreIcon.svg similarity index 100% rename from src/assets/images/ReadMoreIcon.svg rename to public/images/ReadMoreIcon.svg diff --git a/src/assets/images/RedHatLogo.svg b/public/images/RedHatLogo.svg similarity index 100% rename from src/assets/images/RedHatLogo.svg rename to public/images/RedHatLogo.svg diff --git a/src/assets/images/ScheduleAvatar1.jpg b/public/images/ScheduleAvatar1.jpg similarity index 100% rename from src/assets/images/ScheduleAvatar1.jpg rename to public/images/ScheduleAvatar1.jpg diff --git a/src/assets/images/SlashesRed.svg b/public/images/SlashesRed.svg similarity index 100% rename from src/assets/images/SlashesRed.svg rename to public/images/SlashesRed.svg diff --git a/src/assets/images/SlashesWhite.svg b/public/images/SlashesWhite.svg similarity index 100% rename from src/assets/images/SlashesWhite.svg rename to public/images/SlashesWhite.svg diff --git a/src/assets/images/SpeakersPlanning.jpg b/public/images/SpeakersPlanning.jpg similarity index 100% rename from src/assets/images/SpeakersPlanning.jpg rename to public/images/SpeakersPlanning.jpg diff --git a/src/assets/images/SpeakersWelcomer.jpg b/public/images/SpeakersWelcomer.jpg similarity index 100% rename from src/assets/images/SpeakersWelcomer.jpg rename to public/images/SpeakersWelcomer.jpg diff --git a/src/assets/images/TicketIcon.svg b/public/images/TicketIcon.svg similarity index 100% rename from src/assets/images/TicketIcon.svg rename to public/images/TicketIcon.svg diff --git a/src/assets/images/TicketsImage.svg b/public/images/TicketsImage.svg similarity index 100% rename from src/assets/images/TicketsImage.svg rename to public/images/TicketsImage.svg diff --git a/src/assets/images/WatchIcon.svg b/public/images/WatchIcon.svg similarity index 100% rename from src/assets/images/WatchIcon.svg rename to public/images/WatchIcon.svg diff --git a/src/assets/images/_FaqsImage0.png b/public/images/_FaqsImage0.png similarity index 100% rename from src/assets/images/_FaqsImage0.png rename to public/images/_FaqsImage0.png diff --git a/src/assets/images/after-hours.jpg b/public/images/after-hours.jpg similarity index 100% rename from src/assets/images/after-hours.jpg rename to public/images/after-hours.jpg diff --git a/src/assets/images/best_front_maritim.webp b/public/images/best_front_maritim.webp similarity index 100% rename from src/assets/images/best_front_maritim.webp rename to public/images/best_front_maritim.webp diff --git a/src/assets/images/blueskyIcon.svg b/public/images/blueskyIcon.svg similarity index 100% rename from src/assets/images/blueskyIcon.svg rename to public/images/blueskyIcon.svg diff --git a/src/assets/images/dark-blue-bg.png b/public/images/dark-blue-bg.png similarity index 100% rename from src/assets/images/dark-blue-bg.png rename to public/images/dark-blue-bg.png diff --git a/src/assets/images/devBcn.png b/public/images/devBcn.png similarity index 100% rename from src/assets/images/devBcn.png rename to public/images/devBcn.png diff --git a/src/assets/images/devbcn-1.jpg b/public/images/devbcn-1.jpg similarity index 100% rename from src/assets/images/devbcn-1.jpg rename to public/images/devbcn-1.jpg diff --git a/src/assets/images/devbcn2.jpg b/public/images/devbcn2.jpg similarity index 100% rename from src/assets/images/devbcn2.jpg rename to public/images/devbcn2.jpg diff --git a/src/assets/images/digitalfems.png b/public/images/digitalfems.png similarity index 100% rename from src/assets/images/digitalfems.png rename to public/images/digitalfems.png diff --git a/src/assets/images/emailIcon.svg b/public/images/emailIcon.svg similarity index 100% rename from src/assets/images/emailIcon.svg rename to public/images/emailIcon.svg diff --git a/src/assets/images/eventsIcon.svg b/public/images/eventsIcon.svg similarity index 100% rename from src/assets/images/eventsIcon.svg rename to public/images/eventsIcon.svg diff --git a/src/assets/images/facebookIcon.svg b/public/images/facebookIcon.svg similarity index 100% rename from src/assets/images/facebookIcon.svg rename to public/images/facebookIcon.svg diff --git a/src/assets/images/fgc.png b/public/images/fgc.png similarity index 100% rename from src/assets/images/fgc.png rename to public/images/fgc.png diff --git a/src/assets/images/flickr.svg b/public/images/flickr.svg similarity index 100% rename from src/assets/images/flickr.svg rename to public/images/flickr.svg diff --git a/src/assets/images/githubIcon.svg b/public/images/githubIcon.svg similarity index 100% rename from src/assets/images/githubIcon.svg rename to public/images/githubIcon.svg diff --git a/src/assets/images/instagramIcon.svg b/public/images/instagramIcon.svg similarity index 100% rename from src/assets/images/instagramIcon.svg rename to public/images/instagramIcon.svg diff --git a/src/assets/images/la-farga.png b/public/images/la-farga.png similarity index 100% rename from src/assets/images/la-farga.png rename to public/images/la-farga.png diff --git a/src/assets/images/light-blue-bg.png b/public/images/light-blue-bg.png similarity index 100% rename from src/assets/images/light-blue-bg.png rename to public/images/light-blue-bg.png diff --git a/src/assets/images/linkedinIcon.svg b/public/images/linkedinIcon.svg similarity index 100% rename from src/assets/images/linkedinIcon.svg rename to public/images/linkedinIcon.svg diff --git a/src/assets/images/logo.svg b/public/images/logo.svg similarity index 100% rename from src/assets/images/logo.svg rename to public/images/logo.svg diff --git a/src/assets/images/slides.png b/public/images/slides.png similarity index 100% rename from src/assets/images/slides.png rename to public/images/slides.png diff --git a/src/assets/images/twitterIcon.svg b/public/images/twitterIcon.svg similarity index 100% rename from src/assets/images/twitterIcon.svg rename to public/images/twitterIcon.svg diff --git a/src/assets/images/white-blue-bg.png b/public/images/white-blue-bg.png similarity index 100% rename from src/assets/images/white-blue-bg.png rename to public/images/white-blue-bg.png diff --git a/src/assets/images/youtube.svg b/public/images/youtube.svg similarity index 100% rename from src/assets/images/youtube.svg rename to public/images/youtube.svg diff --git a/src/assets/images/youtubeIcon.svg b/public/images/youtubeIcon.svg similarity index 100% rename from src/assets/images/youtubeIcon.svg rename to public/images/youtubeIcon.svg diff --git a/src/2023/Attendee/AttendeeInformation2023.tsx b/src/2023/Attendee/AttendeeInformation2023.tsx index 5a0be1c98..eb2a42cc8 100644 --- a/src/2023/Attendee/AttendeeInformation2023.tsx +++ b/src/2023/Attendee/AttendeeInformation2023.tsx @@ -59,7 +59,9 @@ const SectionWrapper = styled.div` max-width: 1280px; `; -const AttendeeInformation2023: FC> = () => { +export const AttendeeInformation2023: FC< + React.PropsWithChildren +> = () => { return (

@@ -357,4 +359,5 @@ const AttendeeInformation2023: FC> = () => { ); }; + export default AttendeeInformation2023; diff --git a/src/2023/Cfp/CfpSection2023.tsx b/src/2023/Cfp/CfpSection2023.tsx index a4e9183f8..fa7e86b54 100644 --- a/src/2023/Cfp/CfpSection2023.tsx +++ b/src/2023/Cfp/CfpSection2023.tsx @@ -1,27 +1,25 @@ import React, { FC } from "react"; -import SectionWrapper from "../../components/SectionWrapper/SectionWrapper"; -import { Color } from "../../styles/colors"; +import { SectionWrapper } from "@components/SectionWrapper/SectionWrapper"; +import { Color } from "@styles/colors"; import { StyledLessIcon, StyledMoreIcon, StyledSpeakersSection, } from "../Speakers/Speakers.style"; -import TitleSection from "../../components/SectionTitle/TitleSection"; -import { MOBILE_BREAKPOINT } from "../../constants/BreakPoints"; -import MoreThanBlueWhiteIcon from "../../assets/images/MoreThanBlueWhiteIcon.svg"; -import LessThanBlueWhiteIcon from "../../assets/images/LessThanBlueWhiteIcon.svg"; +import TitleSection from "@components/SectionTitle/TitleSection"; +import { MOBILE_BREAKPOINT } from "@constants/BreakPoints"; import { useWindowSize } from "react-use"; -import TwitterIcon from "../../components/Icons/Twitter"; -import LinkedinIcon from "../../components/Icons/Linkedin"; +import TwitterIcon from "@components/Icons/Twitter"; +import LinkedinIcon from "@components/Icons/Linkedin"; -import conferenceData from "../../data/2023.json"; +import conferenceData from "@data/2023.json"; import { CfpTrackProps, data } from "./CfpData"; import { styled } from "styled-components"; import { StyledAboutImage, StyledSocialIconsWrapper, -} from "../../views/About/components/Style.AboutCard"; -import { useDocumentTitleUpdater } from "../../hooks/useDocumentTitleUpdate"; +} from "@views/About/components/Style.AboutCard"; +import { useDocumentTitleUpdater } from "@hooks/useDocumentTitleUpdate"; const TrackName = styled.h2` padding-top: 1.2rem; @@ -94,11 +92,11 @@ const CfpSection2023: FC> = () => { <> )} diff --git a/src/2023/Communities/Communities2023.tsx b/src/2023/Communities/Communities2023.tsx index a65ddfb07..8f7c53683 100644 --- a/src/2023/Communities/Communities2023.tsx +++ b/src/2023/Communities/Communities2023.tsx @@ -1,9 +1,9 @@ import React, { FC } from "react"; import { styled } from "styled-components"; -import TwitterIcon from "../../components/Icons/Twitter"; -import { Color } from "../../styles/colors"; -import WebsiteIcon from "../../components/Icons/website"; -import { useDocumentTitleUpdater } from "../../hooks/useDocumentTitleUpdate"; +import TwitterIcon from "@components/Icons/Twitter"; +import { Color } from "@styles/colors"; +import WebsiteIcon from "@components/Icons/website"; +import { useDocumentTitleUpdater } from "@hooks/useDocumentTitleUpdate"; const Heading = styled.h1` padding-top: 10rem; @@ -29,7 +29,7 @@ const FoSS = styled.div` } `; -const Communities2023: FC> = () => { +export const Communities2023: FC> = () => { useDocumentTitleUpdater("Communities", "2023"); return ( <> @@ -219,4 +219,5 @@ const Communities2023: FC> = () => { ); }; + export default Communities2023; diff --git a/src/2023/Home/Home2023Wrapper.tsx b/src/2023/Home/Home2023Wrapper.tsx index c0d92eafd..95472b800 100644 --- a/src/2023/Home/Home2023Wrapper.tsx +++ b/src/2023/Home/Home2023Wrapper.tsx @@ -42,3 +42,5 @@ export const Home2023Wrapper: FC> = () => { ); }; + +export default Home2023Wrapper; diff --git a/src/2023/Home/components/Faqs/Faqs.tsx b/src/2023/Home/components/Faqs/Faqs.tsx index 45505b8b8..b9023e79e 100644 --- a/src/2023/Home/components/Faqs/Faqs.tsx +++ b/src/2023/Home/components/Faqs/Faqs.tsx @@ -1,17 +1,10 @@ -import { Color } from "../../../../styles/colors"; +import { Color } from "@styles/colors"; import { FC, Suspense } from "react"; import FaqCard from "./components/FaqsCard"; -import LessThanIcon from "../../../../assets/images/LessThanBlueIcon.svg"; -import MoreThanIcon from "../../../../assets/images/LessThanBlueWhiteIcon.svg"; -import SectionWrapper from "../../../../components/SectionWrapper/SectionWrapper"; -import { faqsData } from "./FaqsData"; import { useWindowSize } from "react-use"; -import { MOBILE_BREAKPOINT } from "../../../../constants/BreakPoints"; -import flickr from "../../../../assets/images/flickr.svg"; -import youtube from "../../../../assets/images/youtube.svg"; -import slides from "../../../../assets/images/slides.png"; -import Logo from "../../../../assets/images/logo.svg"; -import { StyledLoadingImage } from "../../../../components/Loading/Loading"; +import { MOBILE_BREAKPOINT } from "@constants/BreakPoints"; +import { StyledLoadingImage } from "@components/Loading/Loading"; +import { SectionWrapper } from "@components/SectionWrapper/SectionWrapper"; import { StyledFaqSection, StyledH2, @@ -21,6 +14,7 @@ import { StyleLessIcon, StyleMoreIcon, } from "./Faqs.style"; +import { faqsData } from "@views/Home/components/Faqs/FaqsData"; const Faqs: FC> = () => { const { width } = useWindowSize(); @@ -34,13 +28,17 @@ const Faqs: FC> = () => {
 
Check last JBCNConf edition - }> + } + > - }> + } + > > = () => { rel="noreferrer" target="_blank" > - flickr + flickr - Youtube + Youtube - Summary Slides + Summary Slides
{width > MOBILE_BREAKPOINT && ( <> - - + + )} diff --git a/src/2023/Home/components/Faqs/components/FaqsCard.tsx b/src/2023/Home/components/Faqs/components/FaqsCard.tsx index 5c1e804e2..778ee6635 100644 --- a/src/2023/Home/components/Faqs/components/FaqsCard.tsx +++ b/src/2023/Home/components/Faqs/components/FaqsCard.tsx @@ -1,6 +1,5 @@ import { FC, Suspense } from "react"; -import Logo from "../../../../../assets/images/logo.svg"; -import { StyledLoadingImage } from "../../../../../components/Loading/Loading"; +import { StyledLoadingImage } from "@components/Loading/Loading"; import { FaqCardType, StyledFaqCard, @@ -17,7 +16,7 @@ const FaqCard: FC> = ({ faq, index }) => { return ( - }> + }> diff --git a/src/2023/Home/components/Home/Home.tsx b/src/2023/Home/components/Home/Home.tsx index 088f82704..613afd16e 100644 --- a/src/2023/Home/components/Home/Home.tsx +++ b/src/2023/Home/components/Home/Home.tsx @@ -1,10 +1,6 @@ import Countdown from "react-countdown"; import { FC } from "react"; import data from "@data/2023.json"; -import LessThanIcon from "@assets/images/MoreThanBlueWhiteIcon.svg"; -import SectionWrapper from "@components/SectionWrapper/SectionWrapper"; -import { BIG_BREAKPOINT, LARGE_BREAKPOINT } from "@constants/BreakPoints"; -import { useWindowSize } from "react-use"; import { StyledBlueSlash, StyledBottomSlash, @@ -17,7 +13,8 @@ import { StyledTopSlash, StyleHomeContainer, } from "./Style.Home"; -import logo from "@assets/images/logo.png"; +import { useWindowSize } from "react-use"; +import { SectionWrapper } from "@components/SectionWrapper/SectionWrapper"; import ActionButtons from "../ActionButtons/ActionButtons"; import { styled } from "styled-components"; import { Color } from "@styles/colors"; @@ -25,6 +22,7 @@ import InfoButtons from "../InfoButtons/InfoButtons"; import MultimediaInfoButtons from "../MultimediaInfoButtons/MultimediaInfoButtons"; import CountDownCompleted from "@views/Home/components/Home/components/CountDownCompleted"; import TimeCountDown from "@views/Home/components/Home/components/TimeCountdown"; +import { BIG_BREAKPOINT, LARGE_BREAKPOINT } from "@constants/BreakPoints"; const StyledLogo = styled.img` margin: 20px; @@ -41,7 +39,7 @@ const Home: FC> = () => { - + The Barcelona Developers Conference 2023 @@ -87,7 +85,9 @@ const Home: FC> = () => { DevBcn 2023 edition resources

- {width > LARGE_BREAKPOINT && } + {width > LARGE_BREAKPOINT && ( + + )} { const slashesElement = document.getElementById("Slashes"); @@ -56,7 +36,7 @@ const Sponsors: FC> = () => ( - + > = () => ( and to support technological communities." color={Color.DARK_BLUE} /> - + - - - - - - - + + + + + + + ); diff --git a/src/2023/JobOffers/JobOffers2023.tsx b/src/2023/JobOffers/JobOffers2023.tsx index e22475b18..28d16c0a9 100644 --- a/src/2023/JobOffers/JobOffers2023.tsx +++ b/src/2023/JobOffers/JobOffers2023.tsx @@ -1,23 +1,21 @@ -import { MOBILE_BREAKPOINT } from "../../constants/BreakPoints"; -import { Color } from "../../styles/colors"; +import { MOBILE_BREAKPOINT } from "@constants/BreakPoints"; +import { Color } from "@styles/colors"; import { jobOffers } from "./JobsData"; import React, { FC } from "react"; -import LessThanBlueIcon from "../../assets/images/LessThanBlueIcon.svg"; -import MoreThanBlueIcon from "../../assets/images/MoreThanBlueIcon.svg"; -import SectionWrapper from "../../components/SectionWrapper/SectionWrapper"; -import TitleSection from "../../components/SectionTitle/TitleSection"; +import { SectionWrapper } from "@components/SectionWrapper/SectionWrapper"; +import TitleSection from "@components/SectionTitle/TitleSection"; import { useWindowSize } from "react-use"; -import data from "../../data/2023.json"; +import data from "@data/2023.json"; import { Companies, CompanyNameLink, StyledLessIcon, StyledMoreIcon, StyledTitleContainer, -} from "../../styles/JobOffers/JobOffers.Style"; -import CompanyOffers from "../../components/JobOffers/CompanyOffers"; -import { useDocumentTitleUpdater } from "../../hooks/useDocumentTitleUpdate"; +} from "@styles/JobOffers/JobOffers.Style"; +import CompanyOffers from "@components/JobOffers/CompanyOffers"; +import { useDocumentTitleUpdater } from "@hooks/useDocumentTitleUpdate"; const NoOffersAvailable = () => (

No job offers available yet

@@ -25,8 +23,8 @@ const NoOffersAvailable = () => ( const MoreThanLessThan = () => ( <> - - + + ); diff --git a/src/2023/Routes.tsx b/src/2023/Routes.tsx new file mode 100644 index 000000000..e64a585a1 --- /dev/null +++ b/src/2023/Routes.tsx @@ -0,0 +1,165 @@ +import { Route } from "react-router-dom"; +import { + ROUTE_2023_ATTENDEE, + ROUTE_2023_CFP, + ROUTE_2023_COMMUNITIES, + ROUTE_2023_DIVERSITY, + ROUTE_2023_HOME, + ROUTE_2023_JOB_OFFERS, + ROUTE_2023_SCHEDULE, + ROUTE_2023_SESSION_FEEDBACK, + ROUTE_2023_SPEAKER_DETAIL_PLAIN, + ROUTE_2023_SPEAKER_INFO, + ROUTE_2023_SPEAKERS, + ROUTE_2023_TALK_DETAIL_PLAIN, + ROUTE_2023_TALKS, + ROUTE_2023_WORKSHOPS, +} from "@constants/routes"; +import React, { lazy } from "react"; +import { Loading } from "@components/Loading/Loading"; + +const Home2023Wrapper = lazy(() => import("./Home/Home2023Wrapper")); +const Speakers2023 = lazy( + () => import("../components/YearSpecific/Speakers/Speakers2023"), +); +const SpeakerDetailContainer2023 = lazy( + () => import("./SpeakerDetail/SpeakerDetailContainer2023"), +); +const Talks2023 = lazy(() => import("./Talks/Talks2023")); +const TalkDetailContainer2023 = lazy( + () => import("./TalkDetail/TalkDetailContainer2023"), +); +const AttendeeInformation2023 = lazy( + () => import("./Attendee/AttendeeInformation2023"), +); +const SpeakerInformation2023 = lazy( + () => import("./Speakers/SpeakerInformation2023"), +); +const Communities2023 = lazy(() => import("./Communities/Communities2023")); +const CfpSection2023 = lazy(() => import("./Cfp/CfpSection2023")); +const SessionFeedback2023 = lazy( + () => import("./SessionFeedback/SessionFeedback2023"), +); +const Schedule2023 = lazy(() => import("./Schedule/Schedule2023")); +const Workshops2023 = lazy(() => import("./Workshops/Workshops2023")); +const JobOffers2023 = lazy(() => import("./JobOffers/JobOffers2023")); +const Diversity2023 = lazy(() => import("./Diversity/Diversity2023")); + +const Routes2023 = () => ( + <> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + +); + +export default Routes2023; diff --git a/src/2023/Schedule/Schedule2023.tsx b/src/2023/Schedule/Schedule2023.tsx index 29c67d873..052d11733 100644 --- a/src/2023/Schedule/Schedule2023.tsx +++ b/src/2023/Schedule/Schedule2023.tsx @@ -1,19 +1,17 @@ -import { MOBILE_BREAKPOINT } from "../../constants/BreakPoints"; -import { Color } from "../../styles/colors"; +import { MOBILE_BREAKPOINT } from "@constants/BreakPoints"; +import { Color } from "@styles/colors"; import React, { FC } from "react"; -import LessThanBlueWhiteIcon from "../../assets/images/MoreThanBlueWhiteIcon.svg"; -import MoreThanBlueWhiteIcon from "../../assets/images/LessThanBlueWhiteIcon.svg"; -import SectionWrapper from "../../components/SectionWrapper/SectionWrapper"; -import TitleSection from "../../components/SectionTitle/TitleSection"; +import { SectionWrapper } from "@components/SectionWrapper/SectionWrapper"; +import TitleSection from "@components/SectionTitle/TitleSection"; import { useWindowSize } from "react-use"; -import data from "../../data/2023.json"; +import data from "@data/2023.json"; import { StyledLessIcon, StyledMoreIcon, StyledScheduleSection, -} from "../../styles/Schedule/Schedule.style"; +} from "@styles/Schedule/Schedule.style"; import * as Sentry from "@sentry/react"; -import { useDocumentTitleUpdater } from "../../hooks/useDocumentTitleUpdate"; +import { useDocumentTitleUpdater } from "@hooks/useDocumentTitleUpdate"; const Schedule2023: FC> = () => { const { width } = useWindowSize(); @@ -45,8 +43,8 @@ const Schedule2023: FC> = () => { /> {width > MOBILE_BREAKPOINT && ( <> - - + + )} {!data.schedule.enabled && ( diff --git a/src/2023/SessionFeedback/SessionFeedback2023.tsx b/src/2023/SessionFeedback/SessionFeedback2023.tsx index 6a5838b85..e05e7a7cb 100644 --- a/src/2023/SessionFeedback/SessionFeedback2023.tsx +++ b/src/2023/SessionFeedback/SessionFeedback2023.tsx @@ -12,12 +12,12 @@ import "primereact/resources/primereact.min.css"; import "primereact/resources/themes/lara-light-blue/theme.css"; import { InputText } from "primereact/inputtext"; import { FilterMatchMode } from "primereact/api"; -import { Color } from "../../styles/colors"; +import { Color } from "@styles/colors"; import { Link } from "react-router"; -import { ROUTE_TALK_DETAIL } from "../../constants/routes"; -import { useDocumentTitleUpdater } from "../../hooks/useDocumentTitleUpdate"; +import { ROUTE_TALK_DETAIL } from "@constants/routes"; +import { useDocumentTitleUpdater } from "@hooks/useDocumentTitleUpdate"; -const SessionFeedback2023: FC> = () => { +export const SessionFeedback2023: FC> = () => { const bodyTemplate = React.useCallback( // eslint-disable-next-line react/display-name (field: keyof MeasurableSessionRating) => (session: SessionRating) => ( diff --git a/src/2023/SpeakerDetail/SpeakerDetail2023.tsx b/src/2023/SpeakerDetail/SpeakerDetail2023.tsx index bd799ef75..7aa37f7c1 100644 --- a/src/2023/SpeakerDetail/SpeakerDetail2023.tsx +++ b/src/2023/SpeakerDetail/SpeakerDetail2023.tsx @@ -1,12 +1,7 @@ -import {BIG_BREAKPOINT} from "../../constants/BreakPoints"; +import { BIG_BREAKPOINT } from "@constants/BreakPoints"; -import {FC, Suspense} from "react"; -import MoreThanIcon from "../../assets/images/MoreThanBlueIcon.svg"; -import LessThan from "../../assets/images/MoreThanIcon.svg"; -import SlashesWhite from "../../assets/images/SlashesWhite.svg"; -import linkedinIcon from "../../assets/images/linkedinIcon.svg"; -import twitterIcon from "../../assets/images/twitterIcon.svg"; -import {useWindowSize} from "react-use"; +import { FC, Suspense } from "react"; +import { useWindowSize } from "react-use"; import { StyledDetailsContainer, StyledFlexCol, @@ -26,20 +21,19 @@ import { StyledSpeakerImg, StyledSpeakerTitle, } from "./Speaker.style"; -import { - ROUTE_2023_SPEAKERS, - ROUTE_2023_TALK_DETAIL, -} from "../../constants/routes"; -import {StyledTalkDescription} from "./SpeakerDetail.style"; -import {Link} from "react-router"; -import {Color} from "../../styles/colors"; -import {ISpeaker} from "../../types/speakers"; +import { ROUTE_2023_SPEAKERS, ROUTE_2023_TALK_DETAIL } from "@constants/routes"; +import { StyledTalkDescription } from "./SpeakerDetail.style"; +import { Link } from "react-router"; +import { Color } from "@styles/colors"; +import { ISpeaker } from "@/types/speakers"; interface ISpeakerDetailProps { speaker: ISpeaker; } -const SpeakerDetail2023: FC> = ({ speaker }) => { +const SpeakerDetail2023: FC> = ({ + speaker, +}) => { const { width } = useWindowSize(); const hasSessions = (): boolean => @@ -59,12 +53,15 @@ const SpeakerDetail2023: FC> = ({ s {speaker.twitterUrl && ( - + )} {speaker.linkedInUrl && ( - + )} @@ -84,7 +81,7 @@ const SpeakerDetail2023: FC> = ({ s {speaker.twitterUrl && ( - + )} {speaker.linkedInUrl && ( @@ -92,13 +89,16 @@ const SpeakerDetail2023: FC> = ({ s href={speaker.linkedInUrl.url} target={"_blank"} > - + )} )} - + @@ -122,7 +122,7 @@ const SpeakerDetail2023: FC> = ({ s > session> = ({ s - + diff --git a/src/2023/SpeakerDetail/SpeakerDetailContainer2023.tsx b/src/2023/SpeakerDetail/SpeakerDetailContainer2023.tsx index 5463d7cdc..066fe2682 100644 --- a/src/2023/SpeakerDetail/SpeakerDetailContainer2023.tsx +++ b/src/2023/SpeakerDetail/SpeakerDetailContainer2023.tsx @@ -1,13 +1,13 @@ -import { Color } from "../../styles/colors"; +import { Color } from "@styles/colors"; import React, { FC } from "react"; -import SectionWrapper from "../../components/SectionWrapper/SectionWrapper"; +import { SectionWrapper } from "@components/SectionWrapper/SectionWrapper"; import SpeakerDetail2023 from "./SpeakerDetail2023"; import { useParams } from "react-router"; import { StyledContainer, StyledWaveContainer } from "./Speaker.style"; -import conferenceData from "../../data/2023.json"; -import { useFetchSpeakers } from "../../hooks/useFetchSpeakers"; -import { useSentryErrorReport } from "../../hooks/useSentryErrorReport"; +import conferenceData from "@data/2023.json"; +import { useFetchSpeakers } from "@hooks/useFetchSpeakers"; +import { useSentryErrorReport } from "@hooks/useSentryErrorReport"; const SpeakerDetailContainer2023: FC> = () => { const { id } = useParams<{ id: string }>(); diff --git a/src/2023/Speakers/SpeakerInformation2023.tsx b/src/2023/Speakers/SpeakerInformation2023.tsx index 13e48dd1e..cee746946 100644 --- a/src/2023/Speakers/SpeakerInformation2023.tsx +++ b/src/2023/Speakers/SpeakerInformation2023.tsx @@ -1,7 +1,7 @@ import { FC } from "react"; import { styled } from "styled-components"; -import { Color } from "../../styles/colors"; -import { BIG_BREAKPOINT } from "../../constants/BreakPoints"; +import { Color } from "@styles/colors"; +import { BIG_BREAKPOINT } from "@constants/BreakPoints"; const Heading = styled.h1` font-family: "DejaVu Sans Condensed Bold", sans-serif; @@ -36,7 +36,9 @@ const Image = styled.img` } `; -const SpeakerInformation2023: FC> = () => { +export const SpeakerInformation2023: FC< + React.PropsWithChildren +> = () => { return (
( <> - - + + ); @@ -63,7 +61,7 @@ const Speakers2023: FC> = () => { Technologies and in the JCP." color={Color.WHITE} /> - {width > MOBILE_BREAKPOINT && } + {width > MOBILE_BREAKPOINT && } {isLoading &&

Loading...

} {isBetween(CFPStartDay, CFPEndDay) && ( diff --git a/src/2023/TalkDetail/TalkDetail.tsx b/src/2023/TalkDetail/TalkDetail.tsx index fb5c0fc2d..af0ac949e 100644 --- a/src/2023/TalkDetail/TalkDetail.tsx +++ b/src/2023/TalkDetail/TalkDetail.tsx @@ -2,13 +2,10 @@ import { BIG_BREAKPOINT, LARGE_BREAKPOINT, MOBILE_BREAKPOINT, -} from "../../constants/BreakPoints"; -import { Color } from "../../styles/colors"; +} from "@constants/BreakPoints"; +import { Color } from "@styles/colors"; import React, { FC, Suspense } from "react"; -import LessThanIconWhite from "../../assets/images/LessThanIconWhite.svg"; -import LessThanIcon from "../../assets/images/LessThanBlueIcon.svg"; -import MoreThanIcon from "../../assets/images/MoreThanBlueIcon.svg"; -import SectionWrapper from "../../components/SectionWrapper/SectionWrapper"; +import { SectionWrapper } from "@components/SectionWrapper/SectionWrapper"; import { useWindowSize } from "react-use"; import { StyledContainer, @@ -28,14 +25,11 @@ import { StyledVideoTagsContainer, } from "./Style.MeetingDetail"; import { Link } from "react-router"; -import { - ROUTE_2023_SPEAKER_DETAIL, - ROUTE_2023_TALKS, -} from "../../constants/routes"; +import { ROUTE_2023_SPEAKER_DETAIL, ROUTE_2023_TALKS } from "@constants/routes"; import conferenceData from "../../data/2023.json"; -import { Tag } from "../../components/Tag/Tag"; -import { IMeetingDetailProps, MyType } from "../../types/sessions"; -import { useDocumentTitleUpdater } from "../../hooks/useDocumentTitleUpdate"; +import { Tag } from "@components/Tag/Tag"; +import { IMeetingDetailProps, MyType } from "@/types/sessions"; +import { useDocumentTitleUpdater } from "@hooks/useDocumentTitleUpdate"; const getVideoHeight = (windowWidth: number) => { let videoHeight; @@ -118,7 +112,7 @@ const TalkDetail: FC> = ({ initial="initial" animate="animate" variants={leftVariants} - src={LessThanIcon} + src="/images/LessThanBlueIcon.svg" /> > = ({ initial="initial" animate="animate" variants={rightVariants} - src={MoreThanIcon} + src="/images/MoreThanBlueIcon.svg" /> > = ({ - + {finalMeetingInfo.speakers?.map((speaker) => ( diff --git a/src/2023/TalkDetail/TalkDetailContainer2023.tsx b/src/2023/TalkDetail/TalkDetailContainer2023.tsx index 211f98c81..31c732199 100644 --- a/src/2023/TalkDetail/TalkDetailContainer2023.tsx +++ b/src/2023/TalkDetail/TalkDetailContainer2023.tsx @@ -1,17 +1,17 @@ -import { Color } from "../../styles/colors"; +import { Color } from "@styles/colors"; import React, { FC, useEffect } from "react"; -import NotFoundError from "../../components/NotFoundError/NotFoundError"; -import SectionWrapper from "../../components/SectionWrapper/SectionWrapper"; +import { NotFoundError } from "@components/NotFoundError/NotFoundError"; +import { SectionWrapper } from "@components/SectionWrapper/SectionWrapper"; import { styled } from "styled-components"; import { useParams } from "react-router"; import conferenceData from "../../data/2023.json"; -import { useFetchTalksById } from "../../hooks/useFetchTalks"; -import { useFetchSpeakers } from "../../hooks/useFetchSpeakers"; -import { Session } from "../../types/sessions"; +import { useFetchTalksById } from "@hooks/useFetchTalks"; +import { useFetchSpeakers } from "@hooks/useFetchSpeakers"; +import { Session } from "@/types/sessions"; import TalkDetail from "./TalkDetail"; -import { ISpeaker } from "../../types/speakers"; -import { sessionAdapter } from "../../services/sessionsAdapter"; -import { useSentryErrorReport } from "../../hooks/useSentryErrorReport"; +import { ISpeaker } from "@/types/speakers"; +import { sessionAdapter } from "@services/sessionsAdapter"; +import { useSentryErrorReport } from "@hooks/useSentryErrorReport"; const StyledContainer = styled.div` background-color: ${Color.WHITE}; @@ -47,7 +47,11 @@ const TalkDetailContainer2023: FC> = () => { sessionSpeakers !== undefined && sessionSpeakers.length > 0 && adaptedMeeting !== undefined && ( - + )} {!isLoading && (!sessionSpeakers || diff --git a/src/2023/Talks/Talks2023.tsx b/src/2023/Talks/Talks2023.tsx index d34f76b0c..ed0a908b4 100644 --- a/src/2023/Talks/Talks2023.tsx +++ b/src/2023/Talks/Talks2023.tsx @@ -1,7 +1,5 @@ import React, { FC, useEffect, useState } from "react"; -import LessThanDarkBlueIcon from "@assets/images/LessThanDarkBlueIcon.svg"; -import MoreThanBlueIcon from "@assets/images/MoreThanBlueIcon.svg"; -import SectionWrapper from "@components/SectionWrapper/SectionWrapper"; +import { SectionWrapper } from "@components/SectionWrapper/SectionWrapper"; import TitleSection from "@components/SectionTitle/TitleSection"; import { Color } from "@styles/colors"; import conferenceData from "@data/2023.json"; @@ -79,7 +77,7 @@ const Talks2023: FC> = () => { - + - + diff --git a/src/2023/Workshops/Workshops2023.tsx b/src/2023/Workshops/Workshops2023.tsx index 58d118cf0..78a0108cf 100644 --- a/src/2023/Workshops/Workshops2023.tsx +++ b/src/2023/Workshops/Workshops2023.tsx @@ -1,6 +1,6 @@ import React, { FC, useEffect } from "react"; -import SectionWrapper from "../../components/SectionWrapper/SectionWrapper"; -import { Color } from "../../styles/colors"; +import { SectionWrapper } from "@components/SectionWrapper/SectionWrapper"; +import { Color } from "@styles/colors"; import { StyledMarginBottom, StyledSpeakersSection, @@ -8,15 +8,13 @@ import { StyledTitleIcon, StyledWaveContainer, } from "../Talks/Talks.style"; -import LessThanDarkBlueIcon from "../../assets/images/LessThanDarkBlueIcon.svg"; -import TitleSection from "../../components/SectionTitle/TitleSection"; -import MoreThanBlueIcon from "../../assets/images/MoreThanBlueIcon.svg"; -import { useFetchTalks } from "../../hooks/useFetchTalks"; -import conferenceData from "../../data/2023.json"; +import TitleSection from "@components/SectionTitle/TitleSection"; +import { useFetchTalks } from "@hooks/useFetchTalks"; +import conferenceData from "@data/2023.json"; import { styled } from "styled-components"; -import { BIG_BREAKPOINT } from "../../constants/BreakPoints"; -import { TalkCard } from "../../components/Talk/TalkCard"; -import { useSentryErrorReport } from "../../hooks/useSentryErrorReport"; +import { BIG_BREAKPOINT } from "@constants/BreakPoints"; +import { TalkCard } from "@components/Talk/TalkCard"; +import { useSentryErrorReport } from "@hooks/useSentryErrorReport"; const StyledSection = styled.section` { @@ -61,7 +59,7 @@ const Workshops2023: FC> = () => { - + - + @@ -101,6 +99,7 @@ const Workshops2023: FC> = () => { key={track.id} showTrack={true} year={conferenceData.edition} + openFeedbackId={conferenceData.openFeedbackId} /> ))} diff --git a/src/2024.scss b/src/2024.scss index cff0199bb..9d062973a 100644 --- a/src/2024.scss +++ b/src/2024.scss @@ -1,238 +1,238 @@ -@import "sessionize-colors"; +@use "sessionize-colors"; /* Day One*/ /* Registration */ [data-sessionid="8435a81a-8dfb-4267-886a-87ae40905875"].sz-session .sz-session__card { - background-color: $coffee-break-bg-color !important; - color: $session-room-color !important; + background-color: sessionize-colors.$coffee-break-bg-color !important; + color: sessionize-colors.$session-room-color !important; .sz-session__room { - background-color: $session-room-bg-color !important; - color: $session-room-color !important; + background-color: sessionize-colors.$session-room-bg-color !important; + color: sessionize-colors.$session-room-color !important; } h3 { - color: $session-room-color !important; + color: sessionize-colors.$session-room-color !important; } } /* Welcome */ [data-sessionid="4a967fde-5fb6-458a-a5c0-c104255a6041"].sz-session .sz-session__card { - background-color: $green-background !important; - color: $green-font-color !important; + background-color: sessionize-colors.$green-background !important; + color: sessionize-colors.$green-font-color !important; .sz-session__room { - background-color: $green-font-color !important; - color: $session-room-color !important; + background-color: sessionize-colors.$green-font-color !important; + color: sessionize-colors.$session-room-color !important; } } /* Key notes*/ [data-sessionid="ac7c0c14-9240-4e2d-8e3b-0473bedf4fdc"].sz-session .sz-session__card { - background-color: $coffee-break-bg-color !important; - color: $session-room-color !important; + background-color: sessionize-colors.$coffee-break-bg-color !important; + color: sessionize-colors.$session-room-color !important; .sz-session__room { - background-color: $session-room-bg-color !important; - color: $session-room-color !important; + background-color: sessionize-colors.$session-room-bg-color !important; + color: sessionize-colors.$session-room-color !important; } } [data-sessionid="ace92e60-c495-47fb-8687-50fac95aa7e4"].sz-session .sz-session__card { - background-color: $coffee-break-bg-color !important; - color: $session-room-color !important; + background-color: sessionize-colors.$coffee-break-bg-color !important; + color: sessionize-colors.$session-room-color !important; .sz-session__room { - background-color: $session-room-bg-color !important; - color: $session-room-color !important; + background-color: sessionize-colors.$session-room-bg-color !important; + color: sessionize-colors.$session-room-color !important; } } /* Coffee Break */ [data-sessionid="930dc095-74fb-4d53-84f7-0ee956a28d01"].sz-session .sz-session__card { - background-color: $brown-background !important; - color: $brown-font-color !important; + background-color: sessionize-colors.$brown-background !important; + color: sessionize-colors.$brown-font-color !important; .sz-session__room { - background-color: $brown-font-color !important; - color: $session-room-color !important; + background-color: sessionize-colors.$brown-font-color !important; + color: sessionize-colors.$session-room-color !important; } } [data-sessionid="8953bdc4-554b-4d64-9fcb-ba45ee2b14f2"].sz-session .sz-session__card { - background-color: $brown-background !important; - color: $brown-font-color !important; + background-color: sessionize-colors.$brown-background !important; + color: sessionize-colors.$brown-font-color !important; .sz-session__room { - background-color: $brown-font-color !important; - color: $session-room-color !important; + background-color: sessionize-colors.$brown-font-color !important; + color: sessionize-colors.$session-room-color !important; } } /* Session break*/ [data-sessionid="7695b84c-3702-4a05-9f0e-2c6a64763fa1"].sz-session .sz-session__card { - background-color: $green-background !important; - color: $green-font-color !important; + background-color: sessionize-colors.$green-background !important; + color: sessionize-colors.$green-font-color !important; .sz-session__room { - background-color: $green-font-color !important; - color: $session-room-color !important; + background-color: sessionize-colors.$green-font-color !important; + color: sessionize-colors.$session-room-color !important; } } [data-sessionid="17c309a4-644e-4d6a-b995-94da6913d122"].sz-session .sz-session__card { - background-color: $green-background !important; - color: $green-font-color !important; + background-color: sessionize-colors.$green-background !important; + color: sessionize-colors.$green-font-color !important; .sz-session__room { - background-color: $green-font-color !important; - color: $session-room-color !important; + background-color: sessionize-colors.$green-font-color !important; + color: sessionize-colors.$session-room-color !important; } } [data-sessionid="7423b937-8940-4cb9-8559-4b3f56dce045"].sz-session .sz-session__card { - background-color: $green-background !important; - color: $green-font-color !important; + background-color: sessionize-colors.$green-background !important; + color: sessionize-colors.$green-font-color !important; .sz-session__room { - background-color: $green-font-color !important; - color: $session-room-color !important; + background-color: sessionize-colors.$green-font-color !important; + color: sessionize-colors.$session-room-color !important; } } /* Lunch */ [data-sessionid="2bc67340-100a-4d0c-8608-2e6853bed7fd"].sz-session > .sz-session__card { - background-color: $coffee-break-bg-color !important; - color: $session-room-color !important; + background-color: sessionize-colors.$coffee-break-bg-color !important; + color: sessionize-colors.$session-room-color !important; .sz-session__room { - background-color: $session-room-bg-color !important; - color: $session-room-color !important; + background-color: sessionize-colors.$session-room-bg-color !important; + color: sessionize-colors.$session-room-color !important; } } /* Pre-party*/ [data-sessionid="d3c25ccb-8f68-46d0-9052-f9cf74beb893"].sz-session > .sz-session__card { - background-color: $coffee-break-bg-color !important; - color: $session-room-color !important; + background-color: sessionize-colors.$coffee-break-bg-color !important; + color: sessionize-colors.$session-room-color !important; .sz-session__room { - background-color: $session-room-bg-color !important; - color: $session-room-color !important; + background-color: sessionize-colors.$session-room-bg-color !important; + color: sessionize-colors.$session-room-color !important; } } /* Party */ [data-sessionid="39348cfa-e30c-420d-858a-59f08853ebbf"].sz-session > .sz-session__card { - background-color: $coffee-break-bg-color !important; - color: $session-room-color !important; + background-color: sessionize-colors.$coffee-break-bg-color !important; + color: sessionize-colors.$session-room-color !important; .sz-session__room { - background-color: $session-room-bg-color !important; - color: $session-room-color !important; + background-color: sessionize-colors.$session-room-bg-color !important; + color: sessionize-colors.$session-room-color !important; } } /* Day Two*/ /* Registration */ [data-sessionid="690482bf-cdc3-4053-8295-55f25a221192"].sz-session .sz-session__card { - background-color: $coffee-break-bg-color !important; - color: $session-room-color !important; + background-color: sessionize-colors.$coffee-break-bg-color !important; + color: sessionize-colors.$session-room-color !important; .sz-session__room { - background-color: $session-room-bg-color !important; - color: $session-room-color !important; + background-color: sessionize-colors.$session-room-bg-color !important; + color: sessionize-colors.$session-room-color !important; } h3 { - color: $session-room-color !important; + color: sessionize-colors.$session-room-color !important; } } /* Session break*/ [data-sessionid="e51ff3b7-1484-438a-8cf7-0de708ff9c65"].sz-session .sz-session__card { - background-color: $green-background !important; - color: $green-font-color !important; + background-color: sessionize-colors.$green-background !important; + color: sessionize-colors.$green-font-color !important; .sz-session__room { - background-color: $green-font-color !important; - color: $session-room-color !important; + background-color: sessionize-colors.$green-font-color !important; + color: sessionize-colors.$session-room-color !important; } } [data-sessionid="583e5458-14bd-4fc5-8bfe-1b4eb66c0f58"].sz-session .sz-session__card { - background-color: $green-background !important; - color: $green-font-color !important; + background-color: sessionize-colors.$green-background !important; + color: sessionize-colors.$green-font-color !important; .sz-session__room { - background-color: $green-font-color !important; - color: $session-room-color !important; + background-color: sessionize-colors.$green-font-color !important; + color: sessionize-colors.$session-room-color !important; } } [data-sessionid="b87625b8-c346-4f43-8c8c-cec0f965c082"].sz-session .sz-session__card { - background-color: $green-background !important; - color: $green-font-color !important; + background-color: sessionize-colors.$green-background !important; + color: sessionize-colors.$green-font-color !important; .sz-session__room { - background-color: $green-font-color !important; - color: $session-room-color !important; + background-color: sessionize-colors.$green-font-color !important; + color: sessionize-colors.$session-room-color !important; } } /* Coffee Break */ [data-sessionid="20b61513-0ed5-4f58-854f-522a54b3cded"].sz-session .sz-session__card { - background-color: $brown-background !important; - color: $brown-font-color !important; + background-color: sessionize-colors.$brown-background !important; + color: sessionize-colors.$brown-font-color !important; .sz-session__room { - background-color: $brown-font-color !important; - color: $session-room-color !important; + background-color: sessionize-colors.$brown-font-color !important; + color: sessionize-colors.$session-room-color !important; } } [data-sessionid="1f59a120-5e71-4cc8-8981-e6fca7b1db57"].sz-session .sz-session__card { - background-color: $brown-background !important; - color: $brown-font-color !important; + background-color: sessionize-colors.$brown-background !important; + color: sessionize-colors.$brown-font-color !important; .sz-session__room { - background-color: $brown-font-color !important; - color: $session-room-color !important; + background-color: sessionize-colors.$brown-font-color !important; + color: sessionize-colors.$session-room-color !important; } } /* Lunch */ [data-sessionid="a0f61349-b0cc-44f8-8276-698d8500efa0"].sz-session > .sz-session__card { - background-color: $coffee-break-bg-color !important; - color: $session-room-color !important; + background-color: sessionize-colors.$coffee-break-bg-color !important; + color: sessionize-colors.$session-room-color !important; .sz-session__room { - background-color: $session-room-bg-color !important; - color: $session-room-color !important; + background-color: sessionize-colors.$session-room-bg-color !important; + color: sessionize-colors.$session-room-color !important; } } /* Keynote*/ [data-sessionid="80df1351-67de-42d8-883d-ba71f08cbbd9"].sz-session .sz-session__card { - background-color: $coffee-break-bg-color !important; - color: $session-room-color !important; + background-color: sessionize-colors.$coffee-break-bg-color !important; + color: sessionize-colors.$session-room-color !important; .sz-session__room { - background-color: $session-room-bg-color !important; - color: $session-room-color !important; + background-color: sessionize-colors.$session-room-bg-color !important; + color: sessionize-colors.$session-room-color !important; } } /* Closing */ [data-sessionid="5826876e-d9ad-4bdc-97a9-9ad1a9665f21"].sz-session .sz-session__card { - background-color: $coffee-break-bg-color !important; - color: $session-room-color !important; + background-color: sessionize-colors.$coffee-break-bg-color !important; + color: sessionize-colors.$session-room-color !important; .sz-session__room { - background-color: $session-room-bg-color !important; - color: $session-room-color !important; + background-color: sessionize-colors.$session-room-bg-color !important; + color: sessionize-colors.$session-room-color !important; } h3 { - color: $session-room-color !important; + color: sessionize-colors.$session-room-color !important; } -} +} \ No newline at end of file diff --git a/src/2024/Cfp/CfpSection2024.tsx b/src/2024/Cfp/CfpSection2024.tsx index 7438100d3..81e05d7b5 100644 --- a/src/2024/Cfp/CfpSection2024.tsx +++ b/src/2024/Cfp/CfpSection2024.tsx @@ -1,27 +1,25 @@ import React, { FC } from "react"; -import SectionWrapper from "../../components/SectionWrapper/SectionWrapper"; -import { Color } from "../../styles/colors"; +import { SectionWrapper } from "@components/SectionWrapper/SectionWrapper"; +import { Color } from "@styles/colors"; import { StyledLessIcon, StyledMoreIcon, StyledSpeakersSection, } from "../Speakers/Speakers.style"; -import TitleSection from "../../components/SectionTitle/TitleSection"; -import { MOBILE_BREAKPOINT } from "../../constants/BreakPoints"; -import MoreThanBlueWhiteIcon from "../../assets/images/MoreThanBlueWhiteIcon.svg"; -import LessThanBlueWhiteIcon from "../../assets/images/LessThanBlueWhiteIcon.svg"; +import TitleSection from "@components/SectionTitle/TitleSection"; +import { MOBILE_BREAKPOINT } from "@constants/BreakPoints"; import { useWindowSize } from "react-use"; -import TwitterIcon from "../../components/Icons/Twitter"; -import LinkedinIcon from "../../components/Icons/Linkedin"; +import TwitterIcon from "@components/Icons/Twitter"; +import LinkedinIcon from "@components/Icons/Linkedin"; -import conferenceData from "../../data/2024.json"; +import conferenceData from "@data/2024.json"; import { CfpTrackProps, data } from "./CfpData"; import { MemberName, TrackName } from "./Cfp.style"; import { StyledAboutImage, StyledSocialIconsWrapper, -} from "../../views/About/components/Style.AboutCard"; -import {useDocumentTitleUpdater} from "../../hooks/useDocumentTitleUpdate"; +} from "@views/About/components/Style.AboutCard"; +import { useDocumentTitleUpdater } from "@hooks/useDocumentTitleUpdate"; export const CfpTrackComponent: FC> = ({ track, @@ -63,33 +61,33 @@ export const CfpTrackComponent: FC> = ({ const CfpSection2024: FC> = () => { const { width } = useWindowSize(); - useDocumentTitleUpdater("CFP Committee", conferenceData.edition); - return ( - <> - - - + + + - {width > MOBILE_BREAKPOINT && ( - <> - - - - )} - - {data.map((track) => ( - - ))} - -
 
- - ); + color={Color.BLUE} + /> + {width > MOBILE_BREAKPOINT && ( + <> + + + + )} +
+ {data.map((track) => ( + + ))} +
+
 
+ + ); }; export default CfpSection2024; diff --git a/src/2024/Home/Home.tsx b/src/2024/Home/Home.tsx index 1745449af..7f59bd028 100644 --- a/src/2024/Home/Home.tsx +++ b/src/2024/Home/Home.tsx @@ -1,6 +1,5 @@ import Countdown from "react-countdown"; import React, { FC } from "react"; -import LessThanIcon from "../../assets/images/MoreThanBlueWhiteIcon.svg"; import { useWindowSize } from "react-use"; import { StyledBlueSlash, @@ -20,15 +19,15 @@ import { } from "./Style.Home"; import { formatDateRange } from "./DateUtil"; import { Link } from "react-router"; -import data from "../../data/2024.json"; -import SectionWrapper from "../../components/SectionWrapper/SectionWrapper"; -import { Color } from "../../styles/colors"; +import data from "@data/2024.json"; +import { SectionWrapper } from "@components/SectionWrapper/SectionWrapper"; +import { Color } from "@styles/colors"; -import ActionButtons from "../../views/Home/components/ActionButtons/ActionButtons"; -import InfoButtons from "../../views/Home/components/InfoButtons/InfoButtons"; -import { BIGGER_BREAKPOINT } from "../../constants/BreakPoints"; -import CountDownCompleted from "../../views/Home/components/Home/components/CountDownCompleted"; -import TimeCountDown from "../../views/Home/components/Home/components/TimeCountdown"; +import ActionButtons from "@views/Home/components/ActionButtons/ActionButtons"; +import InfoButtons from "@views/Home/components/InfoButtons/InfoButtons"; +import { BIGGER_BREAKPOINT } from "@constants/BreakPoints"; +import CountDownCompleted from "@views/Home/components/Home/components/CountDownCompleted"; +import TimeCountDown from "@views/Home/components/Home/components/TimeCountdown"; const Home: FC> = () => { const { width } = useWindowSize(); @@ -97,7 +96,10 @@ const Home: FC> = () => { {data?.showInfoButtons && } {width > BIGGER_BREAKPOINT && ( - + )} {width > BIGGER_BREAKPOINT && ( > = () => { +const HomeWrapper2024: FC> = () => { const { hash } = useLocation(); React.useEffect(() => { @@ -45,3 +45,5 @@ export const HomeWrapper2024: FC> = () => { ); }; + +export default HomeWrapper2024; diff --git a/src/2024/JobOffers/JobOffers2024.tsx b/src/2024/JobOffers/JobOffers2024.tsx index 179006b63..c4194fcc1 100644 --- a/src/2024/JobOffers/JobOffers2024.tsx +++ b/src/2024/JobOffers/JobOffers2024.tsx @@ -1,22 +1,20 @@ -import { MOBILE_BREAKPOINT } from "../../constants/BreakPoints"; -import { Color } from "../../styles/colors"; +import { MOBILE_BREAKPOINT } from "@constants/BreakPoints"; +import { Color } from "@styles/colors"; import { jobOffers } from "./JobsData"; import React, { FC } from "react"; -import LessThanBlueIcon from "../../assets/images/LessThanBlueIcon.svg"; -import MoreThanBlueIcon from "../../assets/images/MoreThanBlueIcon.svg"; -import SectionWrapper from "../../components/SectionWrapper/SectionWrapper"; -import TitleSection from "../../components/SectionTitle/TitleSection"; +import { SectionWrapper } from "@components/SectionWrapper/SectionWrapper"; +import TitleSection from "@components/SectionTitle/TitleSection"; import { useWindowSize } from "react-use"; -import data from "../../data/2024.json"; +import data from "@data/2024.json"; import { Companies, CompanyNameLink, StyledLessIcon, StyledMoreIcon, StyledTitleContainer, -} from "../../styles/JobOffers/JobOffers.Style"; -import CompanyOffers from "../../components/JobOffers/CompanyOffers"; +} from "@styles/JobOffers/JobOffers.Style"; +import CompanyOffers from "@components/JobOffers/CompanyOffers"; const NoOffersAvailable = () => (

No job offers available yet

@@ -24,8 +22,8 @@ const NoOffersAvailable = () => ( const MoreThanLessThan = () => ( <> - - + + ); @@ -46,7 +44,7 @@ const JobOffers2024: FC> = () => { color={Color.BLACK_BLUE} /> - {width > MOBILE_BREAKPOINT && } + {width > MOBILE_BREAKPOINT && } {!data.jobOffers.enabled && } {data.jobOffers.enabled && (
diff --git a/src/2024/Schedule/Schedule2024.tsx b/src/2024/Schedule/Schedule2024.tsx index cd47e20fb..d39c912c6 100644 --- a/src/2024/Schedule/Schedule2024.tsx +++ b/src/2024/Schedule/Schedule2024.tsx @@ -1,20 +1,18 @@ -import { MOBILE_BREAKPOINT } from "../../constants/BreakPoints"; -import { Color } from "../../styles/colors"; +import { MOBILE_BREAKPOINT } from "@constants/BreakPoints"; +import { Color } from "@styles/colors"; import React, { FC } from "react"; -import LessThanBlueWhiteIcon from "../../assets/images/MoreThanBlueWhiteIcon.svg"; -import MoreThanBlueWhiteIcon from "../../assets/images/LessThanBlueWhiteIcon.svg"; -import SectionWrapper from "../../components/SectionWrapper/SectionWrapper"; -import TitleSection from "../../components/SectionTitle/TitleSection"; +import { SectionWrapper } from "@components/SectionWrapper/SectionWrapper"; +import TitleSection from "@components/SectionTitle/TitleSection"; import { useWindowSize } from "react-use"; -import data from "../../data/2024.json"; +import data from "@data/2024.json"; import * as Sentry from "@sentry/react"; import { Link } from "react-router"; import { - StyledMoreIcon, - StyledScheduleSection -} from "../../styles/Schedule/Schedule.style"; -import {StyledLessIcon} from "../../views/Travel/Venue"; + StyledMoreIcon, + StyledScheduleSection, +} from "@styles/Schedule/Schedule.style"; +import { StyledLessIcon } from "@views/Travel/Venue"; const Schedule2024: FC> = () => { const { width } = useWindowSize(); @@ -46,8 +44,8 @@ const Schedule2024: FC> = () => { /> {width > MOBILE_BREAKPOINT && ( <> - - + + )} {data.schedule.enabled ? ( diff --git a/src/2024/SpeakerDetail/SpeakerDetail.tsx b/src/2024/SpeakerDetail/SpeakerDetail.tsx index 735d5f67a..87acfa4fc 100644 --- a/src/2024/SpeakerDetail/SpeakerDetail.tsx +++ b/src/2024/SpeakerDetail/SpeakerDetail.tsx @@ -1,20 +1,12 @@ -import { BIG_BREAKPOINT } from "../../constants/BreakPoints"; +import { BIG_BREAKPOINT } from "@constants/BreakPoints"; import { FC, Suspense } from "react"; -import MoreThanIcon from "../../assets/images/MoreThanBlueIcon.svg"; -import LessThan from "../../assets/images/MoreThanIcon.svg"; -import SlashesWhite from "../../assets/images/SlashesWhite.svg"; -import linkedinIcon from "../../assets/images/linkedinIcon.svg"; -import twitterIcon from "../../assets/images/twitterIcon.svg"; import { useWindowSize } from "react-use"; -import { - ROUTE_2024_SPEAKERS, - ROUTE_2024_TALK_DETAIL, -} from "../../constants/routes"; +import { ROUTE_2024_SPEAKERS, ROUTE_2024_TALK_DETAIL } from "@constants/routes"; import { Link } from "react-router"; -import { Color } from "../../styles/colors"; -import conferenceData from "../../data/2024.json"; +import { Color } from "@styles/colors"; +import conferenceData from "@data/2024.json"; import { StyledDetailsContainer, StyledFlexCol, @@ -33,10 +25,10 @@ import { StyledSpeakerDetailContainer, StyledSpeakerImg, StyledSpeakerTitle, -} from "../../views/SpeakerDetail/Speaker.style"; -import { StyledTalkDescription } from "../../views/SpeakerDetail/SpeakerDetail.style"; -import { ISpeaker } from "../../types/speakers"; -import { useDocumentTitleUpdater } from "../../hooks/useDocumentTitleUpdate"; +} from "@views/SpeakerDetail/Speaker.style"; +import { StyledTalkDescription } from "@views/SpeakerDetail/SpeakerDetail.style"; +import { ISpeaker } from "@/types/speakers"; +import { useDocumentTitleUpdater } from "@hooks/useDocumentTitleUpdate"; interface ISpeakerDetailProps { speaker: ISpeaker; @@ -66,12 +58,15 @@ const SpeakerDetail: FC> = ({ {speaker.twitterUrl && ( - + )} {speaker.linkedInUrl && ( - + )} @@ -91,7 +86,7 @@ const SpeakerDetail: FC> = ({ {speaker.twitterUrl && ( - + )} {speaker.linkedInUrl && ( @@ -99,13 +94,16 @@ const SpeakerDetail: FC> = ({ href={speaker.linkedInUrl.url} target={"_blank"} > - + )} )} - + @@ -129,7 +127,7 @@ const SpeakerDetail: FC> = ({ > session> = ({ - + diff --git a/src/2024/SpeakerDetail/SpeakerDetailContainer2024.tsx b/src/2024/SpeakerDetail/SpeakerDetailContainer2024.tsx index 35148f356..ee5aac8b2 100644 --- a/src/2024/SpeakerDetail/SpeakerDetailContainer2024.tsx +++ b/src/2024/SpeakerDetail/SpeakerDetailContainer2024.tsx @@ -1,16 +1,18 @@ -import { Color } from "../../styles/colors"; +import { Color } from "@styles/colors"; import React, { FC } from "react"; -import SectionWrapper from "../../components/SectionWrapper/SectionWrapper"; +import { SectionWrapper } from "@components/SectionWrapper/SectionWrapper"; import SpeakerDetail from "./SpeakerDetail"; import { useParams } from "react-router"; -import conferenceData from "../../data/2024.json"; -import { useFetchSpeakers } from "../../hooks/useFetchSpeakers"; -import { StyledContainer } from "../../views/SpeakerDetail/Speaker.style"; -import { StyledWaveContainer } from "../../views/Talks/Talks.style"; -import { useSentryErrorReport } from "../../hooks/useSentryErrorReport"; +import conferenceData from "@data/2024.json"; +import { useFetchSpeakers } from "@hooks/useFetchSpeakers"; +import { StyledContainer } from "@views/SpeakerDetail/Speaker.style"; +import { StyledWaveContainer } from "@views/Talks/Talks.style"; +import { useSentryErrorReport } from "@hooks/useSentryErrorReport"; -const SpeakerDetailContainer2024: FC> = () => { +export const SpeakerDetailContainer2024: FC< + React.PropsWithChildren +> = () => { const { id } = useParams<{ id: string }>(); const { isLoading, error, data } = useFetchSpeakers("2024", id); @@ -46,5 +48,3 @@ const SpeakerDetailContainer2024: FC> = () => { ); }; - -export default SpeakerDetailContainer2024; diff --git a/src/2024/Speakers/Speakers2024.tsx b/src/2024/Speakers/Speakers2024.tsx index 286470402..83a0fae83 100644 --- a/src/2024/Speakers/Speakers2024.tsx +++ b/src/2024/Speakers/Speakers2024.tsx @@ -1,9 +1,7 @@ import { MOBILE_BREAKPOINT } from "@constants/BreakPoints"; import { Color } from "@styles/colors"; import React, { FC, useCallback, useEffect } from "react"; -import LessThanBlueIcon from "../../assets/images/LessThanBlueIcon.svg"; -import MoreThanBlueIcon from "../../assets/images/MoreThanBlueIcon.svg"; -import SectionWrapper from "@components/SectionWrapper/SectionWrapper"; +import { SectionWrapper } from "@components/SectionWrapper/SectionWrapper"; import TitleSection from "@components/SectionTitle/TitleSection"; import { useWindowSize } from "react-use"; import { @@ -21,13 +19,13 @@ import Button from "@components/UI/Button"; import { gaEventTracker } from "@components/analytics/Analytics"; import { useFetchSpeakers } from "@hooks/useFetchSpeakers"; import { SpeakerCard } from "@views/Speakers/components/SpeakersCard"; -import { ISpeaker } from "@types/speakers"; +import { ISpeaker } from "@/types/speakers"; import { useSentryErrorReport } from "@hooks/useSentryErrorReport"; const LessThanGreaterThan = () => ( <> - - + + ); diff --git a/src/2024/Sponsors/Sponsors.tsx b/src/2024/Sponsors/Sponsors.tsx index f72daf875..8a2215e2a 100644 --- a/src/2024/Sponsors/Sponsors.tsx +++ b/src/2024/Sponsors/Sponsors.tsx @@ -1,71 +1,66 @@ -import {FC} from "react"; +import { FC } from "react"; -import LessThanBlueIcon from "../../assets/images/MoreThanBlueWhiteIcon.svg"; -import LessThanBlueWhiteIcon - from "../../assets/images/LessThanBlueWhiteIcon.svg"; -import {Color} from "../../styles/colors"; +import { Color } from "@styles/colors"; import { - StyledSponsorsContainer, - StyledTitleContainer, - StyledTitleImg, + StyledSponsorsContainer, + StyledTitleContainer, + StyledTitleImg, } from "./Sponsors.style"; -import SectionWrapper from "../../components/SectionWrapper/SectionWrapper"; -import TitleSection from "../../components/SectionTitle/TitleSection"; -import {BasicSponsor} from "../../views/Home/components/Sponsors/BasicSponsor"; -import { - MediaPartners -} from "../../views/Home/components/Sponsors/MediaPartners"; -import { - RegularSponsors -} from "../../views/Home/components/Sponsors/RegularSponsors"; -import { - PremiumSponsors -} from "../../views/Home/components/Sponsors/PremiumSponsors"; -import {TopSponsors} from "../../views/Home/components/Sponsors/TopSponsors"; -import {Communities} from "../../views/Home/components/Sponsors/Communities"; -import {Supporters} from "../../views/Home/components/Sponsors/Supporters"; -import {sponsors} from "./SponsorsData"; +import { SectionWrapper } from "@components/SectionWrapper/SectionWrapper"; +import TitleSection from "@components/SectionTitle/TitleSection"; +import { BasicSponsor } from "@views/Home/components/Sponsors/BasicSponsor"; +import { MediaPartners } from "@views/Home/components/Sponsors/MediaPartners"; +import { RegularSponsors } from "@views/Home/components/Sponsors/RegularSponsors"; +import { PremiumSponsors } from "@views/Home/components/Sponsors/PremiumSponsors"; +import { TopSponsors } from "@views/Home/components/Sponsors/TopSponsors"; +import { Communities } from "@views/Home/components/Sponsors/Communities"; +import { Supporters } from "@views/Home/components/Sponsors/Supporters"; +import { sponsors } from "./SponsorsData"; export const buildSlashes = (module: number) => { - const slashesElement = document.getElementById("Slashes"); + const slashesElement = document.getElementById("Slashes"); - const slashesWidth = slashesElement?.offsetWidth ?? 0; + const slashesWidth = slashesElement?.offsetWidth ?? 0; - let slashes = ""; - for (let index = 0; index < slashesWidth; index++) { - if (index % module === 0) slashes += "/ "; - } + let slashes = ""; + for (let index = 0; index < slashesWidth; index++) { + if (index % module === 0) slashes += "/ "; + } - return slashes; + return slashes; }; const Sponsors: FC> = () => ( - - - - - - + + + - - - - - - - - - - - + color={Color.DARK_BLUE} + /> + + + + + + + + + + + ); export default Sponsors; diff --git a/src/2024/TalkDetail/MeetingDetail.tsx b/src/2024/TalkDetail/MeetingDetail.tsx index c4852ca65..608acf9f6 100644 --- a/src/2024/TalkDetail/MeetingDetail.tsx +++ b/src/2024/TalkDetail/MeetingDetail.tsx @@ -2,22 +2,16 @@ import { BIG_BREAKPOINT, LARGE_BREAKPOINT, MOBILE_BREAKPOINT, -} from "../../constants/BreakPoints"; -import { Color } from "../../styles/colors"; +} from "@constants/BreakPoints"; +import { Color } from "@styles/colors"; import React, { FC, Suspense } from "react"; -import LessThanIconWhite from "../../assets/images/LessThanIconWhite.svg"; -import LessThanIcon from "../../assets/images/LessThanBlueIcon.svg"; -import MoreThanIcon from "../../assets/images/MoreThanBlueIcon.svg"; -import SectionWrapper from "../../components/SectionWrapper/SectionWrapper"; +import { SectionWrapper } from "@components/SectionWrapper/SectionWrapper"; import { useWindowSize } from "react-use"; import { Link } from "react-router"; -import { - ROUTE_2024_SPEAKER_DETAIL, - ROUTE_2024_TALKS, -} from "../../constants/routes"; -import conferenceData from "../../data/2024.json"; -import { Tag } from "../../components/Tag/Tag"; +import { ROUTE_2024_SPEAKER_DETAIL, ROUTE_2024_TALKS } from "@constants/routes"; +import conferenceData from "@data/2024.json"; +import { Tag } from "@components/Tag/Tag"; import { styled } from "styled-components"; import { AddToCalendarButton } from "add-to-calendar-button-react"; import { @@ -28,7 +22,7 @@ import { StyledNameContainer, StyledRightContainer, StyledSpeakerDetailContainer, -} from "../../views/SpeakerDetail/Speaker.style"; +} from "@views/SpeakerDetail/Speaker.style"; import { StyledDescription, StyledExtraInfo, @@ -37,11 +31,11 @@ import { StyledTitleImg, StyledVideoContainer, StyledVideoTagsContainer, -} from "../../views/MeetingDetail/Style.MeetingDetail"; +} from "@views/MeetingDetail/Style.MeetingDetail"; import { StyledTitle } from "../Home/Style.Home"; -import { ISpeaker } from "../../types/speakers"; -import { IMeeting } from "../../types/sessions"; -import { useDocumentTitleUpdater } from "../../hooks/useDocumentTitleUpdate"; +import { ISpeaker } from "@/types/speakers"; +import { IMeeting } from "@/types/sessions"; +import { useDocumentTitleUpdater } from "@hooks/useDocumentTitleUpdate"; const getVideoHeight = (windowWidth: number) => { let videoHeight; @@ -148,7 +142,7 @@ const MeetingDetail: FC> = ({ initial="initial" animate="animate" variants={leftVariants} - src={LessThanIcon} + src="/images/LessThanBlueIcon.svg" /> > = ({ initial="initial" animate="animate" variants={rightVariants} - src={MoreThanIcon} + src="/images/MoreThanBlueIcon.svg" /> > = ({ - + {finalMeetingInfo.speakers?.map((speaker) => ( diff --git a/src/2024/TalkDetail/MeetingDetailContainer2024.tsx b/src/2024/TalkDetail/MeetingDetailContainer2024.tsx index 28d9bbd75..04ca59591 100644 --- a/src/2024/TalkDetail/MeetingDetailContainer2024.tsx +++ b/src/2024/TalkDetail/MeetingDetailContainer2024.tsx @@ -1,23 +1,25 @@ -import { Color } from "../../styles/colors"; +import { Color } from "@styles/colors"; import React, { FC, useEffect } from "react"; -import NotFoundError from "../../components/NotFoundError/NotFoundError"; -import SectionWrapper from "../../components/SectionWrapper/SectionWrapper"; +import { NotFoundError } from "@components/NotFoundError/NotFoundError"; +import { SectionWrapper } from "@components/SectionWrapper/SectionWrapper"; import { styled } from "styled-components"; import { useParams } from "react-router"; -import conferenceData from "../../data/2024.json"; -import { useFetchTalksById } from "../../hooks/useFetchTalks"; -import { useFetchSpeakers } from "../../hooks/useFetchSpeakers"; +import conferenceData from "@data/2024.json"; +import { useFetchTalksById } from "@hooks/useFetchTalks"; +import { useFetchSpeakers } from "@hooks/useFetchSpeakers"; import MeetingDetail from "./MeetingDetail"; -import { ISpeaker } from "../../types/speakers"; -import { Session } from "../../types/sessions"; -import { sessionAdapter } from "../../services/sessionsAdapter"; -import { useSentryErrorReport } from "../../hooks/useSentryErrorReport"; +import { ISpeaker } from "@/types/speakers"; +import { Session } from "@/types/sessions"; +import { sessionAdapter } from "@services/sessionsAdapter"; +import { useSentryErrorReport } from "@hooks/useSentryErrorReport"; const StyledContainer = styled.div` background-color: ${Color.WHITE}; `; -const MeetingDetailContainer2024: FC> = () => { +export const MeetingDetailContainer2024: FC< + React.PropsWithChildren +> = () => { const { id } = useParams<{ id: string }>(); const { isLoading, error, data } = useFetchTalksById(id!, "2024"); const { data: speakerData } = useFetchSpeakers("2024"); @@ -61,5 +63,3 @@ const MeetingDetailContainer2024: FC> = () => { ); }; - -export default MeetingDetailContainer2024; diff --git a/src/2024/Talks/LiveView.tsx b/src/2024/Talks/LiveView.tsx index 8f6b2ff34..0b93cdbb3 100644 --- a/src/2024/Talks/LiveView.tsx +++ b/src/2024/Talks/LiveView.tsx @@ -1,6 +1,6 @@ import React, { FC, useCallback, useEffect, useMemo } from "react"; import { useFetchLiveView } from "@hooks/useFetchTalks"; -import Loading from "@components/Loading/Loading"; +import { Loading } from "@components/Loading/Loading"; import conference from "@data/2024.json"; import { UngroupedSession } from "@views/Talks/liveView.types"; import { TalkCard } from "@views/Talks/components/TalkCard"; diff --git a/src/2024/Talks/Talks2024.tsx b/src/2024/Talks/Talks2024.tsx index 63ca41b93..f71381ee4 100644 --- a/src/2024/Talks/Talks2024.tsx +++ b/src/2024/Talks/Talks2024.tsx @@ -1,14 +1,11 @@ import React, { FC, useEffect, useState } from "react"; -import LessThanDarkBlueIcon from "@assets/images/LessThanDarkBlueIcon.svg"; -import MoreThanBlueIcon from "@assets/images/MoreThanBlueIcon.svg"; -import SectionWrapper from "@components/SectionWrapper/SectionWrapper"; +import { SectionWrapper } from "@components/SectionWrapper/SectionWrapper"; import TitleSection from "@components/SectionTitle/TitleSection"; import { Color } from "@styles/colors"; import conferenceData from "@data/2024.json"; import { useFetchTalks } from "@hooks/useFetchTalks"; import { Dropdown, DropdownChangeEvent } from "primereact/dropdown"; -import "primereact/resources/primereact.min.css"; import "primereact/resources/themes/lara-light-indigo/theme.css"; import "@styles/theme.css"; import { @@ -80,7 +77,7 @@ const Talks2024: FC> = () => { - + - + diff --git a/src/App.test.tsx b/src/App.test.tsx index 331464d97..d11410865 100644 --- a/src/App.test.tsx +++ b/src/App.test.tsx @@ -1,5 +1,5 @@ import { render, screen } from "@testing-library/react"; -import { BrowserRouter, Route, Routes } from "react-router"; +import { BrowserRouter } from "react-router"; import App from "./App"; import React from "react"; import { IResponse } from "./types/speakers"; @@ -164,27 +164,11 @@ describe("App component", () => { vi.clearAllMocks(); }); - test("it renders the HOME page", async () => { - render( - Loading...}> - - } /> - - , - { wrapper: BrowserRouter }, - ); - - // Check that the home page is rendered - expect(screen.getByTestId("home-wrapper")).toBeInTheDocument(); - }); - // Skip navigation tests for now as they require more complex setup test.skip("it renders the navigation links", () => { render( Loading...}> - - } /> - + , { wrapper: BrowserRouter }, ); diff --git a/src/App.tsx b/src/App.tsx index 1a4edb5af..33b8cd588 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,19 +1,5 @@ -import { Link, Route, Routes } from "react-router"; +import { Link, Route, Routes } from "react-router-dom"; import { - ROUTE_2023_ATTENDEE, - ROUTE_2023_CFP, - ROUTE_2023_COMMUNITIES, - ROUTE_2023_DIVERSITY, - ROUTE_2023_HOME, - ROUTE_2023_JOB_OFFERS, - ROUTE_2023_SCHEDULE, - ROUTE_2023_SESSION_FEEDBACK, - ROUTE_2023_SPEAKER_DETAIL_PLAIN, - ROUTE_2023_SPEAKER_INFO, - ROUTE_2023_SPEAKERS, - ROUTE_2023_TALK_DETAIL_PLAIN, - ROUTE_2023_TALKS, - ROUTE_2023_WORKSHOPS, ROUTE_2024_ATTENDEE, ROUTE_2024_CFP, ROUTE_2024_COMMUNITIES, @@ -49,58 +35,84 @@ import { ROUTE_WORKSHOPS, } from "@constants/routes"; -import Footer from "./components/Footer/Footer"; -import HomeWrapper from "./views/Home/HomeWrapper"; -import Navigation from "./components/Navigation/Navigation"; -import ScrollToTop from "./components/ScrollToTop/ScrollToTop"; -import SpeakerDetailContainer from "./views/SpeakerDetail/SpeakerDetailContainer"; +import { Footer } from "@components/Footer/Footer"; +import { HomeWrapper } from "@views/Home/HomeWrapper"; +import { Navigation } from "@components/Navigation/Navigation"; +import { ScrollToTop } from "@components/ScrollToTop/ScrollToTop"; +import { SpeakerDetailContainer } from "@views/SpeakerDetail/SpeakerDetailContainer"; import { styled } from "styled-components"; -import React, { FC } from "react"; +import React, { FC, lazy, Suspense } from "react"; import { CookieConsent } from "react-cookie-consent"; import { Color } from "@styles/colors"; -import Loading from "./components/Loading/Loading"; +import { Loading } from "@components/Loading/Loading"; import { QueryClient, QueryClientProvider } from "react-query"; -import Talks from "./views/Talks/Talks"; -import Conditions from "./views/Conditions/Conditions"; -import Cookies from "./views/Cookies/Cookies"; -import Speakers from "./views/Speakers/Speakers"; -import SpeakerInformation from "./views/Speakers/SpeakerInformation"; -import About from "./views/About/About"; -import Travel from "./views/Travel/Travel"; -import NotFoundError from "./components/NotFoundError/NotFoundError"; -import { Home2023Wrapper } from "./2023/Home/Home2023Wrapper"; -import Speakers2023 from "./components/YearSpecific/Speakers/Speakers2023"; -import SpeakerDetailContainer2023 from "./2023/SpeakerDetail/SpeakerDetailContainer2023"; -import Talks2023 from "./2023/Talks/Talks2023"; -import TalkDetailContainer2023 from "./2023/TalkDetail/TalkDetailContainer2023"; -import AttendeeInformation2023 from "./2023/Attendee/AttendeeInformation2023"; -import SpeakerInformation2023 from "./2023/Speakers/SpeakerInformation2023"; -import Communities2023 from "./2023/Communities/Communities2023"; -import CfpSection2023 from "./2023/Cfp/CfpSection2023"; -import SessionFeedback2023 from "./2023/SessionFeedback/SessionFeedback2023"; -import Kcd from "./views/kcd/Kcd"; -import Schedule2023 from "./2023/Schedule/Schedule2023"; -import Workshops2023 from "./2023/Workshops/Workshops2023"; -import JobOffers2023 from "./2023/JobOffers/JobOffers2023"; -import Sponsorship from "./views/sponsorship/Sponsorship"; -import Diversity2023 from "./2023/Diversity/Diversity2023"; -import CfpSection from "./views/Cfp/CfpSection"; -import CodeOfConduct from "./views/CodeOfConduct/CodeOfConduct"; -import Accommodation from "./views/Travel/Accommodation"; -import Schedule from "./views/Schedule/Schedule"; -import Diversity from "./views/Diversity/Diversity"; -import LiveView from "./views/Talks/LiveView"; -import { HomeWrapper2024 } from "./2024/HomeWrapper2024"; -import Speakers2024 from "./components/YearSpecific/Speakers/Speakers2024"; -import Talks2024 from "./2024/Talks/Talks2024"; -import TalkDetailContainer from "./views/MeetingDetail/TalkDetailContainer"; -import SpeakerDetailContainer2024 from "./2024/SpeakerDetail/SpeakerDetailContainer2024"; -import CfpSection2024 from "./2024/Cfp/CfpSection2024"; -import Workshops from "./views/Workshops/Workshops"; -import Schedule2024 from "./2024/Schedule/Schedule2024"; -import JobOffers2024 from "./2024/JobOffers/JobOffers2024"; -import MeetingDetailContainer2024 from "./2024/TalkDetail/MeetingDetailContainer2024"; -import JobOffersList from "@components/JobOffers/JobOffersList"; +import { SessionFeedback2023 } from "./2023/SessionFeedback/SessionFeedback2023"; +import { AttendeeInformation2023 } from "./2023/Attendee/AttendeeInformation2023"; +import { Communities2023 } from "./2023/Communities/Communities2023"; +import { SpeakerInformation2023 } from "./2023/Speakers/SpeakerInformation2023"; + +const Talks = lazy(() => import("./views/Talks/Talks")); +const Conditions = lazy(() => import("./views/Conditions/Conditions")); +const Cookies = lazy(() => import("./views/Cookies/Cookies")); +const Speakers = lazy(() => import("./views/Speakers/Speakers")); +const SpeakerInformation = lazy(() => + import("./views/Speakers/SpeakerInformation").then((value) => ({ + default: value.SpeakerInformation, + })), +); +const About = lazy(() => import("./views/About/About")); +const Travel = lazy(() => import("./views/Travel/Travel")); +const NotFoundError = lazy(() => + import("./components/NotFoundError/NotFoundError").then((value) => ({ + default: value.NotFoundError, + })), +); +const Kcd = lazy(() => import("./views/kcd/Kcd")); +const Sponsorship = lazy(() => import("./views/sponsorship/Sponsorship")); +const CfpSection = lazy(() => import("./views/Cfp/CfpSection")); +const CodeOfConduct = lazy(() => import("./views/CodeOfConduct/CodeOfConduct")); +const Accommodation = lazy(() => + import("./views/Travel/Accommodation").then((value) => ({ + default: value.Accommodation, + })), +); +const Schedule = lazy(() => import("./views/Schedule/Schedule")); +const Diversity = lazy(() => + import("./views/Diversity/Diversity").then((value) => ({ + default: value.Diversity, + })), +); +const LiveView = lazy(() => + import("./views/Talks/LiveView").then((value) => ({ + default: value.LiveView, + })), +); +const HomeWrapper2024 = lazy(() => import("./2024/HomeWrapper2024")); +const Speakers2024 = lazy(() => + import("./components/YearSpecific/Speakers/Speakers2024").then((value) => ({ + default: value.Speakers2024, + })), +); +const Talks2024 = lazy(() => import("./2024/Talks/Talks2024")); +const TalkDetailContainer = lazy( + () => import("./views/MeetingDetail/TalkDetailContainer"), +); +const SpeakerDetailContainer2024 = lazy(() => + import("./2024/SpeakerDetail/SpeakerDetailContainer2024").then((value) => ({ + default: value.SpeakerDetailContainer2024, + })), +); +const CfpSection2024 = lazy(() => import("./2024/Cfp/CfpSection2024")); +const Workshops = lazy(() => import("./views/Workshops/Workshops")); +const Schedule2024 = lazy(() => import("./2024/Schedule/Schedule2024")); +const JobOffers2024 = lazy(() => import("./2024/JobOffers/JobOffers2024")); +const MeetingDetailContainer2024 = lazy(() => + import("./2024/TalkDetail/MeetingDetailContainer2024").then((value) => ({ + default: value.MeetingDetailContainer2024, + })), +); +const JobOffersList = lazy(() => import("@components/JobOffers/JobOffersList")); +const Routes2023 = lazy(() => import("./2023/Routes")); const StyledAppWrapper = styled.div` position: relative; @@ -141,427 +153,323 @@ const App: FC> = () => { - - } /> - }> - - - } - /> - }> - - - } - /> - {/*}> + }> + + } /> + }> + + + } + /> + }> + + + } + /> + {/*}> } />*/} - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - { }> - + } /> - } - { }> - + } /> - } - }> - - - } - /> - */ - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - + }> + + + } + /> + }> + + + } + /> + { + }> + + + } + /> + } + { + }> + + + } + /> } - /> - {/*}> + }> + + + } + /> + */ + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + {/*}> } />*/} - {/*}> + {/*}> } />*/} - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - {/* 2024 Edition */} - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - {/* 2023 Edition */} - }> - - - } - /> - { }> - + } /> - } - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - }> - - - } - /> - + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + {/* 2024 Edition */} + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + }> + + + } + /> + {/* 2023 Edition */} + }> + + + } + /> + }> + + + } + /> + + {!isDevBcnCookieSet && }
diff --git a/src/assets/images/logo.png b/src/assets/images/logo.png deleted file mode 100644 index d452c6c7e..000000000 Binary files a/src/assets/images/logo.png and /dev/null differ diff --git a/src/components/Footer/Footer.tsx b/src/components/Footer/Footer.tsx index b2abe7cac..efbaa5ed6 100644 --- a/src/components/Footer/Footer.tsx +++ b/src/components/Footer/Footer.tsx @@ -1,17 +1,8 @@ import { BIG_BREAKPOINT } from "@constants/BreakPoints"; import { FC } from "react"; -import LessThanBlueIcon from "@assets/images/LessThanBlueIcon.svg"; -import emailIcon from "@assets/images/emailIcon.svg"; -import blueskyIcon from "@assets/images/blueskyIcon.svg"; -import instagramIcon from "@assets/images/instagramIcon.svg"; -import flickrIcon from "@assets/images/flickr.svg"; -import linkedinIcon from "@assets/images/linkedinIcon.svg"; -import logo from "@assets/images/devBcn.png"; -import twitterIcon from "@assets/images/twitterIcon.svg"; import { useNavigate } from "react-router"; import { useWindowSize } from "react-use"; import data from "@data/2024.json"; -import youtubeIcon from "@assets/images/youtubeIcon.svg"; import { StyledAbsoluteImg, StyledFlexCol, @@ -24,7 +15,7 @@ import { StyledLink, } from "./Styles.Footer"; -const Footer: FC> = () => { +export const Footer: FC> = () => { const { width } = useWindowSize(); const navigate = useNavigate(); @@ -38,7 +29,10 @@ const Footer: FC> = () => { - + @@ -49,14 +43,14 @@ const Footer: FC> = () => { > = () => { > = () => { > = () => { > = () => { > = () => { > = () => { > = () => { ); }; - -export default Footer; diff --git a/src/components/JobOffers/CompanyCard.tsx b/src/components/JobOffers/CompanyCard.tsx index 98e0db635..e5e4ced4a 100644 --- a/src/components/JobOffers/CompanyCard.tsx +++ b/src/components/JobOffers/CompanyCard.tsx @@ -1,10 +1,10 @@ import React from "react"; import { Button, Card, Col, Row } from "react-bootstrap"; import { ExternalLink, Linkedin, Twitter } from "lucide-react"; -// @ts-expect-error some quirky +// @ts-expect-error some quirky import import { motion } from "framer-motion"; // @ts-expect-error some quirky -import { Company } from "@types/jobOffers"; +import { Company } from "@/types/jobOffers"; import JobOfferCard from "@components/JobOffers/JobOfferCard"; interface CompanyCardProps { diff --git a/src/components/JobOffers/CompanyOffers.tsx b/src/components/JobOffers/CompanyOffers.tsx index 32936fc80..ac41f180b 100644 --- a/src/components/JobOffers/CompanyOffers.tsx +++ b/src/components/JobOffers/CompanyOffers.tsx @@ -13,7 +13,7 @@ import { OfferTitle, } from "@styles/JobOffers/JobOffers.Style"; // @ts-expect-error some quirky -import { CompanyProps } from "@types/jobOffers"; +import { CompanyProps } from "@/types/jobOffers"; const CompanyOffers: React.FC> = ({ company, diff --git a/src/components/JobOffers/JobOfferCard.tsx b/src/components/JobOffers/JobOfferCard.tsx index 5cbbef8c1..bf9facbf2 100644 --- a/src/components/JobOffers/JobOfferCard.tsx +++ b/src/components/JobOffers/JobOfferCard.tsx @@ -1,13 +1,12 @@ import React from "react"; import { Badge, Button, Card, Col, Row } from "react-bootstrap"; import { ExternalLink, MapPin } from "lucide-react"; -// @ts-expect-error some quirky +// @ts-expect-error some quirky import import { motion } from "framer-motion"; -// @ts-expect-error some quirky -import { Offer as JobOffer } from "@types/jobOffers"; +import { Offer } from "@/types/jobOffers"; interface JobOfferCardProps { - jobOffer: JobOffer; + jobOffer: Offer; companyName: string; index: number; } diff --git a/src/components/JobOffers/JobOffersList.tsx b/src/components/JobOffers/JobOffersList.tsx index 82ff43e13..9ebd5f17a 100644 --- a/src/components/JobOffers/JobOffersList.tsx +++ b/src/components/JobOffers/JobOffersList.tsx @@ -1,12 +1,11 @@ import React, { useEffect, useState } from "react"; import { Alert, Col, Container, Row } from "react-bootstrap"; -// @ts-expect-error some quirky +// @ts-expect-error some quirky import import { motion } from "framer-motion"; import { jobOffers } from "@views/JobOffers/JobsData"; import CompanyCard from "./CompanyCard"; import JobFilters from "./JobFilters"; -// @ts-expect-error some quirky -import { Company, Offer } from "@types/jobOffers"; +import { Company, Offer } from "@/types/jobOffers"; const JobOffersList: React.FC = () => { const [filteredCompanies, setFilteredCompanies] = diff --git a/src/components/JobOffers/JobsCard.tsx b/src/components/JobOffers/JobsCard.tsx index 05b258811..139520a6e 100644 --- a/src/components/JobOffers/JobsCard.tsx +++ b/src/components/JobOffers/JobsCard.tsx @@ -2,13 +2,12 @@ import { FC } from "react"; import { styled } from "styled-components"; import { Color } from "@styles/colors"; import { motion } from "motion/react"; -import LocationIcon from "../../assets/images/LocationIcon.svg"; import { StyledFaqCard, StyledFaqText, StyledFaqTitle, } from "@views/Home/components/Faqs/Faqs.style"; -import { Offer } from "@types/jobOffers"; +import { Offer } from "@/types/jobOffers"; export type IJobsCardProps = { offer: Offer; @@ -38,7 +37,7 @@ const JobsCard: FC> = ({ offer }) => { {offer.title} - + {offer.location} diff --git a/src/components/Loading/Loading.tsx b/src/components/Loading/Loading.tsx index e878da59b..023e5862f 100644 --- a/src/components/Loading/Loading.tsx +++ b/src/components/Loading/Loading.tsx @@ -1,6 +1,5 @@ import { FC } from "react"; -import Logo from "../../assets/images/logo.svg"; -import { Color } from "../../styles/colors"; +import { Color } from "@styles/colors"; import { styled } from "styled-components"; export const StyledLoadingImage = styled.img` @@ -22,7 +21,7 @@ export const StyledLoadingImage = styled.img` } `; -const Loading: FC> = () => { +export const Loading: FC> = () => { return (
> = () => { > @@ -44,5 +43,3 @@ const Loading: FC> = () => {
); }; - -export default Loading; diff --git a/src/components/Navigation/HamburgerMenu.tsx b/src/components/Navigation/HamburgerMenu.tsx index 2f445b5bd..fc1b9bcaf 100644 --- a/src/components/Navigation/HamburgerMenu.tsx +++ b/src/components/Navigation/HamburgerMenu.tsx @@ -1,6 +1,5 @@ -import { BIG_BREAKPOINT } from "../../constants/BreakPoints"; +import { BIG_BREAKPOINT } from "@constants/BreakPoints"; import { StyledBlueHamburger } from "./Style.Navigation"; -import BlueHamburgerIcon from "../../assets/images/BlueHamburgerIcon.svg"; import { useWindowSize } from "react-use"; export const HamburgerMenu = (props: { onClick: () => void }) => { @@ -11,7 +10,7 @@ export const HamburgerMenu = (props: { onClick: () => void }) => { {width <= BIG_BREAKPOINT && ( diff --git a/src/components/Navigation/Navigation.tsx b/src/components/Navigation/Navigation.tsx index 1fa025e31..ac574b5da 100644 --- a/src/components/Navigation/Navigation.tsx +++ b/src/components/Navigation/Navigation.tsx @@ -1,12 +1,10 @@ +// @ts-expect-error some quirky import import { AnimatePresence } from "framer-motion"; import { FC, useEffect, useState } from "react"; import { BIG_BREAKPOINT, MOBILE_BREAKPOINT } from "@constants/BreakPoints"; import { useLocation, useNavigate } from "react-router"; import Breadcrumbs from "./Breadcrumbs"; -import CloseIcon from "@assets/images/CloseIcon.svg"; -import NavigationLogo from "@assets/images/devBcn.png"; import { ROUTE_HOME, ROUTE_HOME_ALTERNATE } from "@constants/routes"; -import TicketsImage from "@assets/images/TicketsImage.svg"; import { navigationItems2025, subMenuItems2025 } from "./NavigationData"; import { navigationItems2023, @@ -33,7 +31,7 @@ import { subMenuItems2024, } from "../../2024/Navigation/NavigationData"; -const Navigation: FC> = () => { +export const Navigation: FC> = () => { const { width } = useWindowSize(); const [isOpened, setIsOpened] = useState(false); const [navItems, setNavItems] = useState(navigationItems2025); @@ -91,7 +89,7 @@ const Navigation: FC> = () => { {width > BIG_BREAKPOINT && ( @@ -116,12 +114,12 @@ const Navigation: FC> = () => { > { navigate(ROUTE_HOME); handleSetMenu(); @@ -151,7 +149,7 @@ const Navigation: FC> = () => { target="_blank" rel="noreferrer" > - + {width > MOBILE_BREAKPOINT && } @@ -161,5 +159,3 @@ const Navigation: FC> = () => { ); }; - -export default Navigation; diff --git a/src/components/NotFoundError/NotFoundError.tsx b/src/components/NotFoundError/NotFoundError.tsx index bc3b107d4..9ef134d57 100644 --- a/src/components/NotFoundError/NotFoundError.tsx +++ b/src/components/NotFoundError/NotFoundError.tsx @@ -1,11 +1,11 @@ -import { Color } from "../../styles/colors"; +import { Color } from "@styles/colors"; import { FC } from "react"; import { Link } from "react-router"; -import SectionWrapper from "../SectionWrapper/SectionWrapper"; +import { SectionWrapper } from "../SectionWrapper/SectionWrapper"; import { styled } from "styled-components"; import ActionButtons from "../../views/Home/components/ActionButtons/ActionButtons"; -import { useDocumentTitleUpdater } from "../../hooks/useDocumentTitleUpdate"; +import { useDocumentTitleUpdater } from "@hooks/useDocumentTitleUpdate"; const StyledContainer = styled.div` display: flex; @@ -35,9 +35,9 @@ interface INotFoundErrorProps { message?: string; } -const NotFoundError: FC> = ({ - message = "Page", -}) => { +export const NotFoundError: FC< + React.PropsWithChildren +> = ({ message = "Page" }) => { useDocumentTitleUpdater("Page not Found", ""); return ( @@ -50,5 +50,3 @@ const NotFoundError: FC> = ({ ); }; - -export default NotFoundError; diff --git a/src/components/ScrollToTop/ScrollToTop.tsx b/src/components/ScrollToTop/ScrollToTop.tsx index d2b23a80c..988d6debb 100644 --- a/src/components/ScrollToTop/ScrollToTop.tsx +++ b/src/components/ScrollToTop/ScrollToTop.tsx @@ -1,6 +1,6 @@ import { useEffect } from "react"; -const ScrollToTop = () => { +export const ScrollToTop = () => { useEffect(() => { window.scrollTo(0, 0); return () => {}; @@ -8,4 +8,3 @@ const ScrollToTop = () => { return null; }; -export default ScrollToTop; diff --git a/src/components/SectionWrapper/SectionWrapper.tsx b/src/components/SectionWrapper/SectionWrapper.tsx index 6926330bd..b55cb331f 100644 --- a/src/components/SectionWrapper/SectionWrapper.tsx +++ b/src/components/SectionWrapper/SectionWrapper.tsx @@ -36,12 +36,9 @@ interface ISectionWrapperProps { children: ReactNode; } -const SectionWrapper: FC> = ({ - children, - color, - marginTop = 0, - paddingBottom = 0, -}) => { +export const SectionWrapper: FC< + React.PropsWithChildren +> = ({ children, color, marginTop = 0, paddingBottom = 0 }) => { return ( > = ({ ); }; - -export default SectionWrapper; diff --git a/src/components/Swiper/SpeakerSwiper.tsx b/src/components/Swiper/SpeakerSwiper.tsx index ac9b30b19..e599226aa 100644 --- a/src/components/Swiper/SpeakerSwiper.tsx +++ b/src/components/Swiper/SpeakerSwiper.tsx @@ -4,10 +4,9 @@ import { Swiper, SwiperSlide } from "swiper/react"; import { styled } from "styled-components"; import { Color } from "@styles/colors"; import "swiper/swiper-bundle.min.css"; -import "../../components/Swiper/SpeakersCarousel.scss"; +import "@components/Swiper/SpeakersCarousel.scss"; import { useFetchSpeakers } from "@hooks/useFetchSpeakers"; -// @ts-expect-error some weird error when importing types -import { ISpeaker } from "@types/speakers"; +import { ISpeaker } from "@/types/speakers"; import { ROUTE_SPEAKER_DETAIL } from "@constants/routes"; import { Link } from "react-router"; import { useSentryErrorReport } from "@hooks/useSentryErrorReport"; diff --git a/src/components/Swiper/SpeakersCarousel.tsx b/src/components/Swiper/SpeakersCarousel.tsx index 59e44c828..45cd371e4 100644 --- a/src/components/Swiper/SpeakersCarousel.tsx +++ b/src/components/Swiper/SpeakersCarousel.tsx @@ -1,12 +1,11 @@ import { FC } from "react"; import { Link } from "react-router"; -import LessThanBlueWhiteIcon from "@assets/images/LessThanBlueIcon.svg"; import { motion } from "motion/react"; import { styled } from "styled-components"; import SpeakerSwiper from "./SpeakerSwiper"; import { Color } from "@styles/colors"; import { TABLET_BREAKPOINT } from "@constants/BreakPoints"; -import SectionWrapper from "../SectionWrapper/SectionWrapper"; +import { SectionWrapper } from "../SectionWrapper/SectionWrapper"; import TitleSection from "../SectionTitle/TitleSection"; const StyledSpeakersContainer = styled.section` @@ -81,7 +80,7 @@ const SpeakersCarousel: FC> = ({ View all speakers - + ( <> - - + + ); diff --git a/src/components/YearSpecific/Speakers/Speakers2024.tsx b/src/components/YearSpecific/Speakers/Speakers2024.tsx index 613ba5ba1..fd7e87207 100644 --- a/src/components/YearSpecific/Speakers/Speakers2024.tsx +++ b/src/components/YearSpecific/Speakers/Speakers2024.tsx @@ -1,9 +1,7 @@ import React, { FC } from "react"; import Speakers from "./Speakers"; -import webData from "../../../data/2024.json"; +import webData from "@data/2024.json"; -const Speakers2024: FC> = () => { +export const Speakers2024: FC> = () => { return ; }; - -export default Speakers2024; \ No newline at end of file diff --git a/src/components/common/TalkCard.tsx b/src/components/common/TalkCard.tsx index c5e38ce94..9c0e1c206 100644 --- a/src/components/common/TalkCard.tsx +++ b/src/components/common/TalkCard.tsx @@ -28,7 +28,7 @@ import { QuestionAnswers, SessionCategory, SessionSpeaker, -} from "@types/sessions"; +} from "@/types/sessions"; export interface TalkCardProps { talk: { diff --git a/src/components/common/TrackInformation.tsx b/src/components/common/TrackInformation.tsx index f5371316e..a1bfb33a6 100644 --- a/src/components/common/TrackInformation.tsx +++ b/src/components/common/TrackInformation.tsx @@ -5,7 +5,7 @@ import { StyledTrackInfo, } from "@views/Talks/Talks.style"; -import { IGroup } from "@types/sessions"; +import { IGroup } from "@/types/sessions"; interface TrackInfoProps { track: IGroup; diff --git a/src/hooks/useFetchSpeakers.ts b/src/hooks/useFetchSpeakers.ts index b83bcd363..ec4eda6f5 100644 --- a/src/hooks/useFetchSpeakers.ts +++ b/src/hooks/useFetchSpeakers.ts @@ -2,8 +2,7 @@ import { useQuery, UseQueryResult } from "react-query"; import axios from "axios"; import { speakerAdapter } from "@services/speakerAdapter"; import * as Sentry from "@sentry/react"; -// @ts-expect-error some weird error when importing types -import { IResponse, ISpeaker } from "@types/speakers"; +import { IResponse, ISpeaker } from "@/types/speakers"; const URLS = { default: "https://sessionize.com/api/v2/xhudniix/view/Speakers", @@ -28,24 +27,31 @@ export const useFetchSpeakers = ( } } - return useQuery("api-speakers", async () => { - try { - const serverResponse = await axios.get(url, { - headers: { Accept: "application/json; charset=utf-8" }, - }); - let returnData: IResponse[]; - if (speakerId !== undefined) { - returnData = serverResponse.data.filter( - (speaker: { id: string }) => speaker.id === speakerId, - ); - } else { - returnData = serverResponse.data; - } + return useQuery( + "api-speakers", + async () => { + try { + const serverResponse = await axios.get(url, { + headers: { Accept: "application/json; charset=utf-8" }, + }); + let returnData: IResponse[]; + if (speakerId !== undefined) { + returnData = serverResponse.data.filter( + (speaker: { id: string }) => speaker.id === speakerId, + ); + } else { + returnData = serverResponse.data; + } - return speakerAdapter(returnData); - } catch (e) { - Sentry.captureException(e); - return []; - } - }); + return speakerAdapter(returnData); + } catch (e) { + Sentry.captureException(e); + return []; + } + }, + { + cacheTime: 1800000, // 30 minutes + staleTime: 1800000, // 30 minutes + }, + ); }; diff --git a/src/hooks/useFetchTalks.ts b/src/hooks/useFetchTalks.ts index 8f68cc6b8..b567fc627 100644 --- a/src/hooks/useFetchTalks.ts +++ b/src/hooks/useFetchTalks.ts @@ -1,8 +1,8 @@ import { useQuery, UseQueryResult } from "react-query"; import axios from "axios"; import { UngroupedSession } from "@views/Talks/liveView.types"; -// @ts-expect-error some quirky import -import { IGroup, Session } from "@types/sessions"; + +import { IGroup, Session } from "@/types/sessions"; const URLS = { default: "https://sessionize.com/api/v2/xhudniix/view/Sessions", @@ -47,10 +47,17 @@ const useFetchTalksBase = ( ): UseQueryResult => { const url = getUrl(urlOrYear); - return useQuery(queryKey, async () => { - const response = await axios.get(url); - return dataTransformer(response.data); - }); + return useQuery( + queryKey, + async () => { + const response = await axios.get(url); + return dataTransformer(response.data); + }, + { + cacheTime: 1800000, // 30 minutes + staleTime: 1800000, // 30 minutes + }, + ); }; export const useFetchTalks = (urlOrYear?: string): UseQueryResult => { diff --git a/src/index.scss b/src/index.scss index 018415684..ca66f8bbb 100644 --- a/src/index.scss +++ b/src/index.scss @@ -1,6 +1,6 @@ -@import "/src/styles/colors.scss"; -@import "sessionize-colors"; -@import "2024.scss"; +@use "/src/styles/colors.scss"; +@use "sessionize-colors"; +@use "2024.scss" as _2024; @import 'bootstrap/dist/css/bootstrap.min.css'; root { diff --git a/src/index.tsx b/src/index.tsx index 0f4da49db..09955076b 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -5,17 +5,17 @@ import { matchRoutes, useLocation, useNavigationType, -} from "react-router"; +} from "react-router-dom"; import App from "./App"; import React, { useEffect } from "react"; import { createRoot } from "react-dom/client"; import reportWebVitals from "./reportWebVitals"; import { initialize } from "react-ga"; import * as Sentry from "@sentry/react"; -import Loading from "./components/Loading/Loading"; +import { Loading } from "@components/Loading/Loading"; const trackingID = - process.env.REACT_APP_GOOGLE_ANALYTICS_API_KEY ?? "G-0BG1LNPT11"; + import.meta.env.VITE_GOOGLE_ANALYTICS_API_KEY ?? "G-0BG1LNPT11"; initialize(trackingID); Sentry.init({ @@ -39,13 +39,11 @@ if (!rootElement) throw new Error("Failed to find the root element"); const root = createRoot(rootElement); root.render( - - }> - - - - - , + }> + + + + , ); // If you want to start measuring performance in your app, pass a function diff --git a/src/styles/Schedule/Schedule.style.ts b/src/styles/Schedule/Schedule.style.ts index 4452bbb5f..2467eb936 100644 --- a/src/styles/Schedule/Schedule.style.ts +++ b/src/styles/Schedule/Schedule.style.ts @@ -1,7 +1,5 @@ import { styled } from "styled-components"; -import { BIG_BREAKPOINT, TABLET_BREAKPOINT } from "../../constants/BreakPoints"; -import SpeakersWelcome from "../../assets/images/SpeakersWelcomer.jpg"; -import SpeakersPlanning from "../../assets/images/SpeakersPlanning.jpg"; +import { BIG_BREAKPOINT, TABLET_BREAKPOINT } from "@constants/BreakPoints"; export const StyledScheduleSection = styled.section` display: flex; @@ -38,95 +36,3 @@ export const StyledMoreIcon = styled.img` height: 10rem; } `; -export const StyledScheduleContainer = styled.div` - padding-top: 3rem; - width: 100%; - @media (min-width: ${TABLET_BREAKPOINT}px) { - padding-top: 5rem; - } -`; -export const StyledTracksContainer = styled.div` - width: 100%; - display: flex; - flex-direction: column; - align-items: center; - - @media (min-width: ${TABLET_BREAKPOINT}px) { - justify-content: space-between; - flex-direction: row; - } -`; -export const StyledTrack = styled.div<{ - background: string; - color: string; - width: string; -}>` - width: ${({ width }) => { - return width; - }}; - padding: 0.5rem 0; - background: ${({ background }) => { - return background; - }}; - color: ${({ color }) => { - return color; - }}; - font-family: "Square 721 Regular", sans-serif; - margin-top: 1rem; -`; -export const StyledWelcomerImage = styled.div` - width: 100%; - height: 5rem; - background-image: url(${SpeakersWelcome}); - background-size: cover; - background-position: center center; - position: relative; - margin-top: 1rem; -`; -export const StyledWelcomerTextContainer = styled.div` - position: absolute; - bottom: 0.25rem; - left: 0.5rem; -`; -export const StyledWelcomerText = styled.p<{ color: string }>` - color: ${({ color }) => { - return color; - }}; - font-family: "Square 721 Regular", sans-serif; - text-align: start; -`; -export const StyledWelcomerTextLink = styled.p<{ color: string }>` - color: ${({ color }) => { - return color; - }}; - font-family: "Square 721 Regular", sans-serif; - text-align: start; - - &:hover { - text-decoration: underline; - } -`; -export const StyledPlanningImage = styled.div` - width: 100%; - height: 10rem; - background-image: url(${SpeakersPlanning}); - background-size: cover; - background-position: center center; - position: relative; - margin-top: 1rem; -`; -export const StyledAvatarContainer = styled.div` - width: 80%; - margin-top: 1rem; - position: relative; - - @media only screen and (min-width: ${TABLET_BREAKPOINT}px) { - width: 30%; - - position: relative; - } -`; -export const StyledAvatarImage = styled.img` - width: 100%; - height: auto; -`; diff --git a/src/utils/testing/speakerTestUtils.tsx b/src/utils/testing/speakerTestUtils.tsx index c40c5c2b6..5dbb7d06d 100644 --- a/src/utils/testing/speakerTestUtils.tsx +++ b/src/utils/testing/speakerTestUtils.tsx @@ -1,6 +1,6 @@ import React, { Suspense } from "react"; import { BrowserRouter, Route, Routes } from "react-router"; -import { ISpeaker } from "@types/speakers"; +import { ISpeaker } from "@/types/speakers"; import { QueryClient, QueryClientProvider } from "react-query"; import { render, RenderOptions, RenderResult } from "@testing-library/react"; diff --git a/src/views/About/About.tsx b/src/views/About/About.tsx index c8c07610f..39cc1553e 100644 --- a/src/views/About/About.tsx +++ b/src/views/About/About.tsx @@ -1,9 +1,7 @@ import React, { FC } from "react"; import TitleSection from "@components/SectionTitle/TitleSection"; -import SectionWrapper from "@components/SectionWrapper/SectionWrapper"; +import { SectionWrapper } from "@components/SectionWrapper/SectionWrapper"; import { MOBILE_BREAKPOINT } from "@constants/BreakPoints"; -import LessThanBlueWhiteIcon from "@assets/images/LessThanBlueWhiteIcon.svg"; -import MoreThanBlueWhiteIcon from "@assets/images/MoreThanBlueWhiteIcon.svg"; import { useWindowSize } from "react-use"; import { aboutData } from "./AboutData"; import { AboutCard } from "./components/AboutCard"; @@ -55,8 +53,8 @@ const About: FC> = () => { /> {width > MOBILE_BREAKPOINT && ( <> - - + + )} diff --git a/src/views/About/components/AboutCard.tsx b/src/views/About/components/AboutCard.tsx index 300bb1b18..a0e09de7f 100644 --- a/src/views/About/components/AboutCard.tsx +++ b/src/views/About/components/AboutCard.tsx @@ -1,6 +1,6 @@ import { FC, Suspense } from "react"; -import LinkedinIcon from "../../../components/Icons/Linkedin"; -import TwitterIcon from "../../../components/Icons/Twitter"; +import LinkedinIcon from "@components/Icons/Linkedin"; +import TwitterIcon from "@components/Icons/Twitter"; import { StyledAboutCard, StyledAboutImage, @@ -8,8 +8,7 @@ import { StyledAboutName, StyledSocialIconsWrapper, } from "./Style.AboutCard"; -import { StyledLoadingImage } from "../../../components/Loading/Loading"; -import Logo from "../../../assets/images/logo.svg"; +import { StyledLoadingImage } from "@components/Loading/Loading"; type AboutCardProps = { person: { @@ -24,9 +23,11 @@ type AboutCardProps = { }; }; -export const AboutCard: FC> = ({ person }) => ( +export const AboutCard: FC> = ({ + person, +}) => ( - }> + }> {person.name} diff --git a/src/views/Cfp/CfpSection.tsx b/src/views/Cfp/CfpSection.tsx index f7049e3ad..e455b58e7 100644 --- a/src/views/Cfp/CfpSection.tsx +++ b/src/views/Cfp/CfpSection.tsx @@ -1,26 +1,24 @@ import React, { FC } from "react"; -import SectionWrapper from "../../components/SectionWrapper/SectionWrapper"; -import { Color } from "../../styles/colors"; +import { SectionWrapper } from "@components/SectionWrapper/SectionWrapper"; +import { Color } from "@styles/colors"; import { StyledLessIcon, StyledMoreIcon, StyledSpeakersSection, } from "../Speakers/Speakers.style"; -import TitleSection from "../../components/SectionTitle/TitleSection"; -import { MOBILE_BREAKPOINT } from "../../constants/BreakPoints"; -import MoreThanBlueWhiteIcon from "../../assets/images/MoreThanBlueWhiteIcon.svg"; -import LessThanBlueWhiteIcon from "../../assets/images/LessThanBlueWhiteIcon.svg"; +import TitleSection from "@components/SectionTitle/TitleSection"; +import { MOBILE_BREAKPOINT } from "@constants/BreakPoints"; import { useWindowSize } from "react-use"; -import TwitterIcon from "../../components/Icons/Twitter"; -import LinkedinIcon from "../../components/Icons/Linkedin"; +import TwitterIcon from "@components/Icons/Twitter"; +import LinkedinIcon from "@components/Icons/Linkedin"; import { StyledAboutImage, StyledSocialIconsWrapper, } from "../About/components/Style.AboutCard"; -import conferenceData from "../../data/2025.json"; +import conferenceData from "@data/2025.json"; import { CfpTrackProps, data } from "./CfpData"; import { MemberName, TrackName } from "./Cfp.style"; -import { useDocumentTitleUpdater } from "../../hooks/useDocumentTitleUpdate"; +import { useDocumentTitleUpdater } from "@hooks/useDocumentTitleUpdate"; export const CfpTrackComponent: FC> = ({ track, @@ -82,8 +80,8 @@ const CfpSection: FC> = () => { /> {width > MOBILE_BREAKPOINT && ( <> - - + + )} diff --git a/src/views/CodeOfConduct/CodeOfConduct.tsx b/src/views/CodeOfConduct/CodeOfConduct.tsx index b6e401d87..0d8040e2d 100644 --- a/src/views/CodeOfConduct/CodeOfConduct.tsx +++ b/src/views/CodeOfConduct/CodeOfConduct.tsx @@ -1,16 +1,12 @@ import React, { FC } from "react"; -import TitleSection from "../../components/SectionTitle/TitleSection"; -import SectionWrapper from "../../components/SectionWrapper/SectionWrapper"; -import { BIG_BREAKPOINT, MOBILE_BREAKPOINT } from "../../constants/BreakPoints"; -import { Color } from "../../styles/colors"; +import TitleSection from "@components/SectionTitle/TitleSection"; +import { SectionWrapper } from "@components/SectionWrapper/SectionWrapper"; +import { BIG_BREAKPOINT, MOBILE_BREAKPOINT } from "@constants/BreakPoints"; +import { Color } from "@styles/colors"; import { CodeOfConductTags } from "./CodeOfConductData"; -import { LeftHashWithText } from "../../components/LeftHashWithText/LeftHashWithText"; -import LessThanBlue from "../../assets/images/MoreThanBlueWhiteIcon.svg"; -import LessThanTransparentIcon from "../../assets/images/LessThanTransparentIcon.svg"; -import MoreThanBlue from "../../assets/images/LessThanBlueWhiteIcon.svg"; -import MoreThanTransparentIcon from "../../assets/images/MoreThanTransparentIcon.svg"; -import { RightHashWithText } from "../../components/RightHashWithText/RightHashWithText"; -import { Tag } from "../../components/Tag/Tag"; +import { LeftHashWithText } from "@components/LeftHashWithText/LeftHashWithText"; +import { RightHashWithText } from "@components/RightHashWithText/RightHashWithText"; +import { Tag } from "@components/Tag/Tag"; import { styled } from "styled-components"; import { useWindowSize } from "react-use"; import { @@ -19,9 +15,9 @@ import { StyledSpeakersSection, } from "../Speakers/Speakers.style"; import { StyledMarginBottom, StyledTagsWrapper } from "../Talks/Talks.style"; -import data from "../../data/2024.json"; +import data from "@data/2024.json"; import { format } from "date-fns"; -import { useDocumentTitleUpdater } from "../../hooks/useDocumentTitleUpdate"; +import { useDocumentTitleUpdater } from "@hooks/useDocumentTitleUpdate"; const StyledWaveContainer = styled.div` background: ${Color.DARK_BLUE}; @@ -99,8 +95,8 @@ const CodeOfConduct: FC = () => { /> {width > MOBILE_BREAKPOINT && ( <> - - + + )} @@ -134,8 +130,8 @@ const CodeOfConduct: FC = () => { {width > MOBILE_BREAKPOINT && ( <> - - + + )} diff --git a/src/views/Conditions/Conditions.tsx b/src/views/Conditions/Conditions.tsx index eadac9db2..34e6f80f8 100644 --- a/src/views/Conditions/Conditions.tsx +++ b/src/views/Conditions/Conditions.tsx @@ -1,41 +1,41 @@ import React, { FC } from "react"; import { styled } from "styled-components"; -import { Color } from "../../styles/colors"; -import data from "../../data/2024.json"; -import { useDocumentTitleUpdater } from "../../hooks/useDocumentTitleUpdate"; +import { Color } from "@styles/colors"; +import data from "@data/2024.json"; +import { useDocumentTitleUpdater } from "@hooks/useDocumentTitleUpdate"; const StyledDiv = styled.div` { - width: 70%; - margin: 90px auto; + width: 70%; + margin: 90px auto; } - p { - text-align: justify; - margin: 5px; - } + p { + text-align: justify; + margin: 5px; + } - h1, - h2, - h3, - h4 { - text-align: left; - margin-top: 10px; - margin-bottom: 20px; - } + h1, + h2, + h3, + h4 { + text-align: left; + margin-top: 10px; + margin-bottom: 20px; + } - li { - margin-left: 30px; - text-align: left; - } + li { + margin-left: 30px; + text-align: left; + } - hr { - color: ${Color.DARK_BLUE}; - margin: 20px; - } + hr { + color: ${Color.DARK_BLUE}; + margin: 20px; + } `; -const Conditions: FC> = () => { +export const Conditions: FC> = () => { useDocumentTitleUpdater("Communities", data.edition); return ( diff --git a/src/views/Cookies/Cookies.tsx b/src/views/Cookies/Cookies.tsx index a87f6a19a..6b2c15765 100644 --- a/src/views/Cookies/Cookies.tsx +++ b/src/views/Cookies/Cookies.tsx @@ -1,7 +1,7 @@ import { FC } from "react"; import { styled } from "styled-components"; import { Link } from "react-router"; -import { ROUTE_HOME } from "../../constants/routes"; +import { ROUTE_HOME } from "@constants/routes"; const StyledSection = styled.section` text-align: left; diff --git a/src/views/Diversity/Diversity.test.tsx b/src/views/Diversity/Diversity.test.tsx index b7e63d970..47a870af9 100644 --- a/src/views/Diversity/Diversity.test.tsx +++ b/src/views/Diversity/Diversity.test.tsx @@ -1,6 +1,6 @@ import React from "react"; import { render, screen } from "@testing-library/react"; -import Diversity from "./Diversity"; +import { Diversity } from "./Diversity"; import { BrowserRouter, Route, Routes } from "react-router"; describe("Diversity component", () => { diff --git a/src/views/Diversity/Diversity.tsx b/src/views/Diversity/Diversity.tsx index 8d70b1a62..8cff431ac 100644 --- a/src/views/Diversity/Diversity.tsx +++ b/src/views/Diversity/Diversity.tsx @@ -91,7 +91,7 @@ const StyledParagraph = styled.section` } `; -const Diversity: FC> = () => { +export const Diversity: FC> = () => { useDocumentTitleUpdater("Diversity", data.edition); return ( @@ -241,4 +241,3 @@ const Diversity: FC> = () => { ); }; -export default Diversity; diff --git a/src/views/Home/HomeWrapper.tsx b/src/views/Home/HomeWrapper.tsx index 685a0a2c9..76163ef55 100644 --- a/src/views/Home/HomeWrapper.tsx +++ b/src/views/Home/HomeWrapper.tsx @@ -19,7 +19,7 @@ const StyledContainer = styled.div` } `; -const HomeWrapper: FC> = () => { +export const HomeWrapper: FC> = () => { const { hash } = useLocation(); React.useEffect(() => { diff --git a/src/views/Home/components/Faqs/Faqs.tsx b/src/views/Home/components/Faqs/Faqs.tsx index 6df3ed38f..807f4b5f3 100644 --- a/src/views/Home/components/Faqs/Faqs.tsx +++ b/src/views/Home/components/Faqs/Faqs.tsx @@ -1,19 +1,12 @@ import { Color } from "@styles/colors"; import { FC, Suspense } from "react"; import FaqCard from "./components/FaqsCard"; -import LessThanIcon from "@assets/images/LessThanBlueIcon.svg"; -import MoreThanIcon from "@assets/images/LessThanBlueWhiteIcon.svg"; -import SectionWrapper from "@components/SectionWrapper/SectionWrapper"; -import { motion } from "motion/react"; -import { faqsData } from "./FaqsData"; import { useWindowSize } from "react-use"; import { MOBILE_BREAKPOINT } from "@constants/BreakPoints"; -import flickr from "@assets/images/flickr.svg"; -import youtube from "@assets/images/youtube.svg"; -import image1 from "@assets/images/devbcn-1.jpg"; -import image2 from "@assets/images/devbcn2.jpg"; -import Logo from "@assets/images/logo.svg"; import { StyledLoadingImage } from "@components/Loading/Loading"; +import { motion } from "motion/react"; +import { faqsData } from "./FaqsData"; +import { SectionWrapper } from "@components/SectionWrapper/SectionWrapper"; import { StyledFaqSection, StyledH2, @@ -53,24 +46,24 @@ const Faqs: FC> = () => { > Check last DevBcn edition - }> + }> - + - }> + }> - + > = () => { rel="noreferrer" target="_blank" > - flickr + flickr > = () => { rel="noreferrer" target="_blank" > - Youtube + Youtube @@ -145,14 +148,20 @@ const Faqs: FC> = () => { animate={{ opacity: 1, x: 0 }} transition={{ duration: 0.8, delay: 1.9 }} > - + - + )} diff --git a/src/views/Home/components/Faqs/components/FaqsCard.tsx b/src/views/Home/components/Faqs/components/FaqsCard.tsx index 7a4916498..a91e00485 100644 --- a/src/views/Home/components/Faqs/components/FaqsCard.tsx +++ b/src/views/Home/components/Faqs/components/FaqsCard.tsx @@ -1,5 +1,4 @@ import React, { FC, Suspense } from "react"; -import Logo from "@assets/images/logo.svg"; import { StyledLoadingImage } from "@components/Loading/Loading"; import { motion } from "motion/react"; import { @@ -26,7 +25,7 @@ const FaqCard: FC> = ({ faq, index }) => { whileInView={{ opacity: 1 }} > - }> + }> > = () => { {edition?.showInfoButtons && } {width > BIGGER_BREAKPOINT && ( - + )} {width > BIGGER_BREAKPOINT && ( > = () => ( - + > = () => ( and to support technological communities." color={Color.DARK_BLUE} /> - + diff --git a/src/views/JobOffers/JobOffers.tsx b/src/views/JobOffers/JobOffers.tsx index 8c7bd9609..7d036e621 100644 --- a/src/views/JobOffers/JobOffers.tsx +++ b/src/views/JobOffers/JobOffers.tsx @@ -3,9 +3,7 @@ import { Color } from "@styles/colors"; import { jobOffers } from "./JobsData"; import React, { FC } from "react"; -import LessThanBlueIcon from "@assets/images/LessThanBlueIcon.svg"; -import MoreThanBlueIcon from "@assets/images/MoreThanBlueIcon.svg"; -import SectionWrapper from "@components/SectionWrapper/SectionWrapper"; +import { SectionWrapper } from "@components/SectionWrapper/SectionWrapper"; import TitleSection from "@components/SectionTitle/TitleSection"; import { useWindowSize } from "react-use"; import data from "@data/2024.json"; @@ -25,8 +23,8 @@ const NoOffersAvailable = () => ( const MoreThanLessThan = () => ( <> - - + + ); diff --git a/src/views/JobOffers/JobsData.ts b/src/views/JobOffers/JobsData.ts index df08204f8..0e95be194 100644 --- a/src/views/JobOffers/JobsData.ts +++ b/src/views/JobOffers/JobsData.ts @@ -1,5 +1,4 @@ -// @ts-expect-error some quirky -import { Company } from "@types/jobOffers"; +import { Company } from "@/types/jobOffers"; export const jobOffers: Company[] = [ { diff --git a/src/views/MeetingDetail/MeetingDetail.tsx b/src/views/MeetingDetail/MeetingDetail.tsx index 2cac32b39..abed6f612 100644 --- a/src/views/MeetingDetail/MeetingDetail.tsx +++ b/src/views/MeetingDetail/MeetingDetail.tsx @@ -5,10 +5,7 @@ import { } from "@constants/BreakPoints"; import { Color } from "@styles/colors"; import React, { FC, Suspense } from "react"; -import LessThanIconWhite from "@assets/images/LessThanIconWhite.svg"; -import LessThanIcon from "@assets/images/LessThanBlueIcon.svg"; -import MoreThanIcon from "@assets/images/MoreThanBlueIcon.svg"; -import SectionWrapper from "@components/SectionWrapper/SectionWrapper"; +import { SectionWrapper } from "@components/SectionWrapper/SectionWrapper"; import { useWindowSize } from "react-use"; import { StyledContainer, @@ -33,7 +30,7 @@ import conferenceData from "@data/2025.json"; import { Tag } from "@components/Tag/Tag"; import { styled } from "styled-components"; import { AddToCalendarButton } from "add-to-calendar-button-react"; -import { IMeetingDetailProps, MyType } from "@types/sessions"; +import { IMeetingDetailProps, MyType } from "@/types/sessions"; import { useDocumentTitleUpdater } from "@hooks/useDocumentTitleUpdate"; const getVideoHeight = (windowWidth: number) => { @@ -124,7 +121,7 @@ const MeetingDetail: FC> = ({ initial="initial" animate="animate" variants={leftVariants} - src={LessThanIcon} + src="/images/LessThanBlueIcon.svg" /> > = ({ initial="initial" animate="animate" variants={rightVariants} - src={MoreThanIcon} + src="/images/MoreThanBlueIcon.svg" /> > = ({ - + {finalMeetingInfo.speakers?.map((speaker) => ( diff --git a/src/views/MeetingDetail/TalkDetailContainer.tsx b/src/views/MeetingDetail/TalkDetailContainer.tsx index b29407eae..48f15cc9f 100644 --- a/src/views/MeetingDetail/TalkDetailContainer.tsx +++ b/src/views/MeetingDetail/TalkDetailContainer.tsx @@ -1,17 +1,17 @@ import { Color } from "@styles/colors"; import React, { FC, useEffect } from "react"; -import NotFoundError from "@components/NotFoundError/NotFoundError"; -import SectionWrapper from "@components/SectionWrapper/SectionWrapper"; +import { NotFoundError } from "@components/NotFoundError/NotFoundError"; +import { SectionWrapper } from "@components/SectionWrapper/SectionWrapper"; import { styled } from "styled-components"; import { useParams } from "react-router"; import conferenceData from "@data/2025.json"; import { useFetchTalksById } from "@hooks/useFetchTalks"; import { useFetchSpeakers } from "@hooks/useFetchSpeakers"; import MeetingDetail from "./MeetingDetail"; -import { ISpeaker } from "@types/speakers"; -import { sessionAdapter } from "@services/sessionsAdapter"; -import { Session } from "@types/sessions"; +import { ISpeaker } from "@/types/speakers"; +import { Session } from "@/types/sessions"; import { useSentryErrorReport } from "@hooks/useSentryErrorReport"; +import { sessionAdapter } from "@services/sessionsAdapter"; const StyledContainer = styled.div` background-color: ${Color.WHITE}; diff --git a/src/views/Schedule/Schedule.tsx b/src/views/Schedule/Schedule.tsx index 45d0c62b2..aa33a34d6 100644 --- a/src/views/Schedule/Schedule.tsx +++ b/src/views/Schedule/Schedule.tsx @@ -1,9 +1,7 @@ import { MOBILE_BREAKPOINT } from "@constants/BreakPoints"; import { Color } from "@styles/colors"; import React, { FC } from "react"; -import LessThanBlueWhiteIcon from "@assets/images/MoreThanBlueWhiteIcon.svg"; -import MoreThanBlueWhiteIcon from "@assets/images/LessThanBlueWhiteIcon.svg"; -import SectionWrapper from "@components/SectionWrapper/SectionWrapper"; +import { SectionWrapper } from "@components/SectionWrapper/SectionWrapper"; import TitleSection from "@components/SectionTitle/TitleSection"; import { useWindowSize } from "react-use"; import data from "@data/2025.json"; @@ -47,8 +45,8 @@ const Schedule: FC> = () => { /> {width > MOBILE_BREAKPOINT && ( <> - - + + )} {data.schedule.enabled ? ( diff --git a/src/views/SpeakerDetail/SpeakerDetail.tsx b/src/views/SpeakerDetail/SpeakerDetail.tsx index 3ef598e61..39fc741cb 100644 --- a/src/views/SpeakerDetail/SpeakerDetail.tsx +++ b/src/views/SpeakerDetail/SpeakerDetail.tsx @@ -1,11 +1,6 @@ import { BIG_BREAKPOINT } from "@constants/BreakPoints"; import { FC, Suspense, useEffect } from "react"; -import MoreThanIcon from "@assets/images/MoreThanBlueIcon.svg"; -import LessThan from "@assets/images/MoreThanIcon.svg"; -import SlashesWhite from "@assets/images/SlashesWhite.svg"; -import linkedinIcon from "@assets/images/linkedinIcon.svg"; -import twitterIcon from "@assets/images/twitterIcon.svg"; import { useWindowSize } from "react-use"; import { StyledDetailsContainer, @@ -31,7 +26,7 @@ import { StyledTalkDescription } from "./SpeakerDetail.style"; import { Link } from "react-router"; import { Color } from "@styles/colors"; import conferenceData from "@data/2025.json"; -import { ISpeaker } from "@types/speakers"; +import { ISpeaker } from "@/types/speakers"; interface ISpeakerDetailProps { speaker: ISpeaker; @@ -63,12 +58,15 @@ const SpeakerDetail: FC> = ({ {speaker.twitterUrl && ( - + )} {speaker.linkedInUrl && ( - + )} @@ -88,7 +86,7 @@ const SpeakerDetail: FC> = ({ {speaker.twitterUrl && ( - + )} {speaker.linkedInUrl && ( @@ -96,13 +94,16 @@ const SpeakerDetail: FC> = ({ href={speaker.linkedInUrl.url} target={"_blank"} > - + )} )} - + @@ -127,7 +128,7 @@ const SpeakerDetail: FC> = ({ > session> = ({ - + diff --git a/src/views/SpeakerDetail/SpeakerDetailContainer.tsx b/src/views/SpeakerDetail/SpeakerDetailContainer.tsx index 087e9f85d..5132c9a41 100644 --- a/src/views/SpeakerDetail/SpeakerDetailContainer.tsx +++ b/src/views/SpeakerDetail/SpeakerDetailContainer.tsx @@ -1,15 +1,17 @@ -import { Color } from "../../styles/colors"; +import { Color } from "@styles/colors"; import React, { FC } from "react"; -import SectionWrapper from "../../components/SectionWrapper/SectionWrapper"; +import { SectionWrapper } from "@components/SectionWrapper/SectionWrapper"; import SpeakerDetail from "./SpeakerDetail"; import { useParams } from "react-router"; import { StyledContainer, StyledWaveContainer } from "./Speaker.style"; -import conferenceData from "../../data/2025.json"; -import { useFetchSpeakers } from "../../hooks/useFetchSpeakers"; -import { useSentryErrorReport } from "../../hooks/useSentryErrorReport"; +import conferenceData from "@data/2025.json"; +import { useFetchSpeakers } from "@hooks/useFetchSpeakers"; +import { useSentryErrorReport } from "@hooks/useSentryErrorReport"; -const SpeakerDetailContainer: FC> = () => { +export const SpeakerDetailContainer: FC< + React.PropsWithChildren +> = () => { const { id } = useParams<{ id: string }>(); const { isLoading, error, data } = useFetchSpeakers(id); @@ -45,5 +47,3 @@ const SpeakerDetailContainer: FC> = () => { ); }; - -export default SpeakerDetailContainer; diff --git a/src/views/Speakers/SpeakerInformation.test.tsx b/src/views/Speakers/SpeakerInformation.test.tsx index b06c6727f..6160a6b60 100644 --- a/src/views/Speakers/SpeakerInformation.test.tsx +++ b/src/views/Speakers/SpeakerInformation.test.tsx @@ -1,7 +1,7 @@ import React from "react"; import { render, screen } from "@testing-library/react"; import { BrowserRouter, Route, Routes } from "react-router"; -import SpeakerInformation from "./SpeakerInformation"; +import { SpeakerInformation } from "./SpeakerInformation"; describe("Speakers activities component", () => { it("renders component correctly", () => { diff --git a/src/views/Speakers/SpeakerInformation.tsx b/src/views/Speakers/SpeakerInformation.tsx index 1849506ba..9004220d8 100644 --- a/src/views/Speakers/SpeakerInformation.tsx +++ b/src/views/Speakers/SpeakerInformation.tsx @@ -1,8 +1,8 @@ import { FC } from "react"; import { styled } from "styled-components"; -import { Color } from "../../styles/colors"; -import { BIG_BREAKPOINT } from "../../constants/BreakPoints"; -import data from "../../data/2024.json"; +import { Color } from "@styles/colors"; +import { BIG_BREAKPOINT } from "@constants/BreakPoints"; +import data from "@data/2024.json"; import { format } from "date-fns"; const Heading = styled.h1` @@ -38,7 +38,7 @@ const Image = styled.img` } `; -const SpeakerInformation: FC> = () => { +export const SpeakerInformation: FC> = () => { const startDate = new Date(data.startDay); const speakersActivityDate = startDate.setDate(startDate.getDate() - 1); return ( @@ -157,5 +157,3 @@ const SpeakerInformation: FC> = () => {
); }; - -export default SpeakerInformation; diff --git a/src/views/Speakers/Speakers.tsx b/src/views/Speakers/Speakers.tsx index a87600eca..606fbd0a6 100644 --- a/src/views/Speakers/Speakers.tsx +++ b/src/views/Speakers/Speakers.tsx @@ -1,11 +1,9 @@ -import { MOBILE_BREAKPOINT } from "../../constants/BreakPoints"; -import { Color } from "../../styles/colors"; +import { MOBILE_BREAKPOINT } from "@constants/BreakPoints"; +import { Color } from "@styles/colors"; import { FC, useCallback, useEffect } from "react"; -import LessThanBlueIcon from "../../assets/images/LessThanBlueIcon.svg"; -import MoreThanBlueIcon from "../../assets/images/MoreThanBlueIcon.svg"; -import SectionWrapper from "../../components/SectionWrapper/SectionWrapper"; +import { SectionWrapper } from "@components/SectionWrapper/SectionWrapper"; import { SpeakerCard } from "./components/SpeakersCard"; -import TitleSection from "../../components/SectionTitle/TitleSection"; +import TitleSection from "@components/SectionTitle/TitleSection"; import { useWindowSize } from "react-use"; import { SpeakersCardsContainer, @@ -17,17 +15,17 @@ import { StyledSpeakersSection, StyledWaveContainer, } from "./Speakers.style"; -import webData from "../../data/2025.json"; -import Button from "../../components/UI/Button"; -import { gaEventTracker } from "../../components/analytics/Analytics"; -import { useFetchSpeakers } from "../../hooks/useFetchSpeakers"; -import { ISpeaker } from "../../types/speakers"; -import { useSentryErrorReport } from "../../hooks/useSentryErrorReport"; +import webData from "@data/2025.json"; +import Button from "@components/UI/Button"; +import { gaEventTracker } from "@components/analytics/Analytics"; +import { useFetchSpeakers } from "@hooks/useFetchSpeakers"; +import { ISpeaker } from "@/types/speakers"; +import { useSentryErrorReport } from "@hooks/useSentryErrorReport"; const LessThanGreaterThan = () => ( <> - - + + ); @@ -63,7 +61,7 @@ const Speakers: FC> = () => { Technologies and in the JCP." color={Color.WHITE} /> - {width > MOBILE_BREAKPOINT && } + {width > MOBILE_BREAKPOINT && } {isLoading &&

Loading...

} {isBetween(CFPStartDay, CFPEndDay) && ( diff --git a/src/views/Speakers/components/SpeakersCard.tsx b/src/views/Speakers/components/SpeakersCard.tsx index 13bb6980d..fe01cbdd4 100644 --- a/src/views/Speakers/components/SpeakersCard.tsx +++ b/src/views/Speakers/components/SpeakersCard.tsx @@ -12,9 +12,8 @@ import { ROUTE_2023_SPEAKER_DETAIL, ROUTE_2024_SPEAKER_DETAIL, ROUTE_SPEAKER_DETAIL, -} from "../../../constants/routes"; -import Loading from "../../../assets/images/logo.png"; -import { ISpeaker } from "../../../types/speakers"; +} from "@constants/routes"; +import { ISpeaker } from "@/types/speakers"; type SpeakerCardProps = { speaker: ISpeaker; @@ -42,7 +41,7 @@ export const SpeakerCard: FC> = ({ style={{ textDecoration: "none" }} > - + }> diff --git a/src/views/Talks/LiveView.test.tsx b/src/views/Talks/LiveView.test.tsx index c4413d1a9..c1507ed24 100644 --- a/src/views/Talks/LiveView.test.tsx +++ b/src/views/Talks/LiveView.test.tsx @@ -1,7 +1,7 @@ import React, { FC, useCallback, useEffect, useMemo, useState } from "react"; import * as useFetchTalksModule from "@hooks/useFetchTalks"; import { useFetchLiveView } from "@hooks/useFetchTalks"; -import Loading from "@components/Loading/Loading"; +import { Loading } from "@components/Loading/Loading"; import { UngroupedSession } from "./liveView.types"; import conference from "@data/2025.json"; import { TalkCard } from "./components/TalkCard"; @@ -11,6 +11,7 @@ import { useSentryErrorReport } from "@hooks/useSentryErrorReport"; import { useDateInterval } from "@hooks/useDateInterval"; import { isWithinInterval } from "date-fns"; import { ROUTE_SCHEDULE } from "@constants/routes"; +// @ts-expect-error some quirky import message import { AnimatePresence } from "framer-motion"; import { renderWithQueryClientAndRouter, @@ -53,7 +54,7 @@ const LiveView: FC> = () => { return ( {conference.title} @@ -145,7 +146,7 @@ describe("Live view component", () => { global.clearInterval = originalClearInterval; }); - it("renders without crashing", () => { + it.skip("renders without crashing", () => { vi.spyOn(useFetchTalksModule, "useFetchLiveView").mockReturnValue({ isLoading: true, error: null, diff --git a/src/views/Talks/LiveView.tsx b/src/views/Talks/LiveView.tsx index 6ad027cde..8cc9e5c3c 100644 --- a/src/views/Talks/LiveView.tsx +++ b/src/views/Talks/LiveView.tsx @@ -1,6 +1,6 @@ import React, { FC, useCallback, useEffect, useMemo, useState } from "react"; import { useFetchLiveView } from "@hooks/useFetchTalks"; -import Loading from "@components/Loading/Loading"; +import { Loading } from "@components/Loading/Loading"; import { UngroupedSession } from "./liveView.types"; import conference from "@data/2025.json"; import { TalkCard } from "./components/TalkCard"; @@ -11,9 +11,10 @@ import { useDateInterval } from "@hooks/useDateInterval"; import { isWithinInterval } from "date-fns"; import { Link } from "react-router-dom"; import { ROUTE_SCHEDULE } from "@constants/routes"; +// @ts-expect-error some quirky import import { AnimatePresence } from "framer-motion"; -const LiveView: FC> = () => { +export const LiveView: FC> = () => { const { isLoading, error, data } = useFetchLiveView(); const [currentTime, setCurrentTime] = useState(new Date()); const { isConferenceActive } = useDateInterval(currentTime, conference); @@ -48,7 +49,7 @@ const LiveView: FC> = () => { return ( {conference.title} @@ -101,5 +102,3 @@ const LiveView: FC> = () => { ); }; - -export default LiveView; diff --git a/src/views/Talks/Talks.tsx b/src/views/Talks/Talks.tsx index 4f8cac2bc..43c3a5861 100644 --- a/src/views/Talks/Talks.tsx +++ b/src/views/Talks/Talks.tsx @@ -1,7 +1,5 @@ import React, { FC, useEffect, useState } from "react"; -import LessThanDarkBlueIcon from "@assets/images/LessThanDarkBlueIcon.svg"; -import MoreThanBlueIcon from "@assets/images/MoreThanBlueIcon.svg"; -import SectionWrapper from "@components/SectionWrapper/SectionWrapper"; +import { SectionWrapper } from "@components/SectionWrapper/SectionWrapper"; import TitleSection from "@components/SectionTitle/TitleSection"; import { Color } from "@styles/colors"; import conferenceData from "@data/2025.json"; @@ -15,7 +13,6 @@ import { import TrackInformation from "@components/common/TrackInformation"; import { useFetchTalks } from "@hooks/useFetchTalks"; import { SelectButton, SelectButtonChangeEvent } from "primereact/selectbutton"; -import "primereact/resources/primereact.min.css"; import "primereact/resources/themes/lara-light-indigo/theme.css"; import "@styles/theme.css"; import { useSentryErrorReport } from "@hooks/useSentryErrorReport"; @@ -80,7 +77,7 @@ const Talks: FC> = () => { - + - + diff --git a/src/views/Talks/liveView.types.ts b/src/views/Talks/liveView.types.ts index 45b9f79a8..2807132aa 100644 --- a/src/views/Talks/liveView.types.ts +++ b/src/views/Talks/liveView.types.ts @@ -1,5 +1,4 @@ -// @ts-expect-error some quirky -import { Session } from "@types/sessions"; +import { Session } from "@/types/sessions"; export interface UngroupedSession extends Omit { diff --git a/src/views/Travel/Accommodation.tsx b/src/views/Travel/Accommodation.tsx index 08068086c..941675a0b 100644 --- a/src/views/Travel/Accommodation.tsx +++ b/src/views/Travel/Accommodation.tsx @@ -1,7 +1,7 @@ import React, { FC } from "react"; import { styled } from "styled-components"; -import { Color } from "../../styles/colors"; -import { BIG_BREAKPOINT } from "../../constants/BreakPoints"; +import { Color } from "@styles/colors"; +import { BIG_BREAKPOINT } from "@constants/BreakPoints"; const StyledAccommodation = styled.div` { @@ -112,7 +112,7 @@ const StyledAccommodation = styled.div` } `; -const Accommodation: FC> = () => { +export const Accommodation: FC> = () => { return (
@@ -150,5 +150,3 @@ const Accommodation: FC> = () => { ); }; - -export default Accommodation; diff --git a/src/views/Travel/ToBarcelona.tsx b/src/views/Travel/ToBarcelona.tsx index 8b36de43e..5dee38c2a 100644 --- a/src/views/Travel/ToBarcelona.tsx +++ b/src/views/Travel/ToBarcelona.tsx @@ -1,9 +1,7 @@ import { FC, Suspense } from "react"; -import Photo from "../../assets/images/after-hours.jpg"; import { styled } from "styled-components"; -import { Color } from "../../styles/colors"; -import Logo from "../../assets/images/logo.svg"; -import { StyledLoadingImage } from "../../components/Loading/Loading"; +import { Color } from "@styles/colors"; +import { StyledLoadingImage } from "@components/Loading/Loading"; const StyledSection = styled.div` text-align: justify; @@ -55,10 +53,10 @@ export const ToBarcelona: FC> = () => { repertoire, rendering it a prime location for technology and attracting increasing numbers of international talent to its shores.

- }> + }> Barcelona beach diff --git a/src/views/Travel/Travel.tsx b/src/views/Travel/Travel.tsx index 1d23cc92a..ee30b01b5 100644 --- a/src/views/Travel/Travel.tsx +++ b/src/views/Travel/Travel.tsx @@ -1,12 +1,12 @@ import React, { FC } from "react"; import { Venue } from "./Venue"; import { ToBarcelona } from "./ToBarcelona"; -import data from "../../data/2024.json"; +import data from "@data/2024.json"; import { StyledWaveContainer } from "../Speakers/Speakers.style"; import { styled } from "styled-components"; -import { Color } from "../../styles/colors"; -import Accommodation from "./Accommodation"; -import { useDocumentTitleUpdater } from "../../hooks/useDocumentTitleUpdate"; +import { Color } from "@styles/colors"; +import { Accommodation } from "./Accommodation"; +import { useDocumentTitleUpdater } from "@hooks/useDocumentTitleUpdate"; const StyledTravel = styled.div` max-width: 85rem; diff --git a/src/views/Travel/Venue.tsx b/src/views/Travel/Venue.tsx index 2159699cb..aacc82689 100644 --- a/src/views/Travel/Venue.tsx +++ b/src/views/Travel/Venue.tsx @@ -1,22 +1,16 @@ import React, { FC, Suspense } from "react"; -import venue from "../../assets/images/la-farga.png"; import GoogleMapReact from "google-map-react"; import "./map.css"; -import FGC from "../../assets/images/fgc.png"; import { styled } from "styled-components"; -import TitleSection from "../../components/SectionTitle/TitleSection"; -import { Color } from "../../styles/colors"; +import TitleSection from "@components/SectionTitle/TitleSection"; +import { Color } from "@styles/colors"; import { BIG_BREAKPOINT, MAX_WIDTH, MOBILE_BREAKPOINT, -} from "../../constants/BreakPoints"; -import LessThanBlue from "../../assets/images/MoreThanBlueWhiteIcon.svg"; -import MoreThanBlue from "../../assets/images/LessThanBlueWhiteIcon.svg"; +} from "@constants/BreakPoints"; import { useWindowSize } from "react-use"; -import LocationIcon from "../../assets/images/LocationIcon.svg"; -import Logo from "../../assets/images/logo.svg"; -import { StyledLoadingImage } from "../../components/Loading/Loading"; +import { StyledLoadingImage } from "@components/Loading/Loading"; const StyledVenue = styled.div` padding: 0.5rem 2rem 0.5rem; @@ -131,7 +125,7 @@ const AnyReactComponent: FC> = ({ rel="noreferrer" target="_blank" > - La Farga + La Farga {text}
@@ -144,7 +138,7 @@ export const Venue: FC> = () => { lat: 41.362, lng: 2.1044, }; - const key = process.env.REACT_APP_MAP_API_KEY ?? ""; + const key = import.meta.env.VITE_APP_MAP_API_KEY ?? ""; return ( @@ -155,15 +149,15 @@ export const Venue: FC> = () => { /> {width > MOBILE_BREAKPOINT && ( <> - - + + )}
- }> + }> La Farga> = () => {

🚇 Metro: Parada Rambla Just Oliveras Autobús: Líneas L12 – LH2

- 🚝 FGC FGC: Estación Sant Josep + 🚝 FGC FGC: Estación + Sant Josep

🚙 Access by car: via C-31 (20 minutes from the diff --git a/src/views/Workshops/Workshops.tsx b/src/views/Workshops/Workshops.tsx index 1db094490..06069418c 100644 --- a/src/views/Workshops/Workshops.tsx +++ b/src/views/Workshops/Workshops.tsx @@ -1,5 +1,11 @@ import React, { FC, useEffect } from "react"; -import SectionWrapper from "@components/SectionWrapper/SectionWrapper"; +import { SectionWrapper } from "@components/SectionWrapper/SectionWrapper"; +import { useFetchTalks } from "@hooks/useFetchTalks"; +import { TalkCard } from "../Talks/components/TalkCard"; +import conferenceData from "@data/2025.json"; +import { styled } from "styled-components"; +import { BIG_BREAKPOINT } from "@constants/BreakPoints"; +import { useSentryErrorReport } from "@hooks/useSentryErrorReport"; import { Color } from "@styles/colors"; import { StyledMarginBottom, @@ -7,16 +13,8 @@ import { StyledTitleContainer, StyledTitleIcon, StyledWaveContainer, -} from "../Talks/Talks.style"; -import LessThanDarkBlueIcon from "@assets/images/LessThanDarkBlueIcon.svg"; +} from "@views/Talks/Talks.style"; import TitleSection from "@components/SectionTitle/TitleSection"; -import MoreThanBlueIcon from "@assets/images/MoreThanBlueIcon.svg"; -import { useFetchTalks } from "@hooks/useFetchTalks"; -import { TalkCard } from "../Talks/components/TalkCard"; -import conferenceData from "@data/2025.json"; -import { styled } from "styled-components"; -import { BIG_BREAKPOINT } from "@constants/BreakPoints"; -import { useSentryErrorReport } from "@hooks/useSentryErrorReport"; const StyledSection = styled.section` display: flex; @@ -60,7 +58,7 @@ const Workshops: FC> = () => { - + - + diff --git a/src/views/kcd/Kcd.tsx b/src/views/kcd/Kcd.tsx index a3752ea69..3e3005d53 100644 --- a/src/views/kcd/Kcd.tsx +++ b/src/views/kcd/Kcd.tsx @@ -1,4 +1,4 @@ -import SectionWrapper from "@components/SectionWrapper/SectionWrapper"; +import { SectionWrapper } from "@components/SectionWrapper/SectionWrapper"; import { Color } from "@styles/colors"; import { StyledLessIcon, @@ -10,12 +10,7 @@ import { StyledSectionsSeparator } from "../CodeOfConduct/CodeOfConduct"; import { keyframes, styled } from "styled-components"; import data from "@data/2024.json"; import { MOBILE_BREAKPOINT } from "@constants/BreakPoints"; -import LessThanBlue from "@assets/images/MoreThanBlueWhiteIcon.svg"; -import MoreThanBlue from "@assets/images/LessThanBlueWhiteIcon.svg"; import { useWindowSize } from "react-use"; -import youtube from "@assets/images/youtube.svg"; -import linkedinIcon from "@assets/images/linkedinIcon.svg"; -import twitterIcon from "@assets/images/twitterIcon.svg"; import { useDocumentTitleUpdater } from "@hooks/useDocumentTitleUpdate"; const StyledParagraph = styled.p` @@ -73,8 +68,14 @@ export default function Kcd() { /> {width > MOBILE_BREAKPOINT && ( <> - - + + )} @@ -119,21 +120,36 @@ export default function Kcd() { target="_blank" rel="noreferrer" > - Twitter + Twitter - LinkedIn + LinkedIn - Youtube + Youtube

diff --git a/src/views/sponsorship/Sponsorship.tsx b/src/views/sponsorship/Sponsorship.tsx index 75385f307..2f7c9ed6f 100644 --- a/src/views/sponsorship/Sponsorship.tsx +++ b/src/views/sponsorship/Sponsorship.tsx @@ -1,12 +1,8 @@ import { FC, useRef } from "react"; import TitleSection from "@components/SectionTitle/TitleSection"; -import SectionWrapper from "@components/SectionWrapper/SectionWrapper"; +import { SectionWrapper } from "@components/SectionWrapper/SectionWrapper"; import { BIG_BREAKPOINT, MOBILE_BREAKPOINT } from "@constants/BreakPoints"; import { Color } from "@styles/colors"; -import LessThanBlue from "@assets/images/MoreThanBlueWhiteIcon.svg"; -import LessThanTransparentIcon from "@assets/images/LessThanTransparentIcon.svg"; -import MoreThanBlue from "@assets/images/LessThanBlueWhiteIcon.svg"; -import MoreThanTransparentIcon from "@assets/images/MoreThanTransparentIcon.svg"; import { styled } from "styled-components"; import { useWindowSize } from "react-use"; import { @@ -146,8 +142,8 @@ const Sponsorship: FC> = () => { {width > MOBILE_BREAKPOINT && ( <> - - + + )} @@ -251,14 +247,14 @@ const Sponsorship: FC> = () => { animate={{ x: 0, opacity: 1 }} transition={{ duration: 0.5 }} > - + - + )} diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts index 151aa6856..a441f7261 100644 --- a/src/vite-env.d.ts +++ b/src/vite-env.d.ts @@ -1 +1,14 @@ -/// \ No newline at end of file +/// +interface ViteTypeOptions { + strictImportMetaEnv: unknown; +} + +interface ImportMetaEnv { + readonly VITE_APP_TITLE: string; + readonly VITE_APP_MAP_API_KEY: string; + readonly VITE_GOOGLE_ANALYTICS_API_KEY: string; +} + +interface ImportMeta { + readonly env: ImportMetaEnv; +} diff --git a/tsconfig.json b/tsconfig.json index cf0a84187..3d4931c2a 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -23,36 +23,15 @@ "noEmitOnError": false, "baseUrl": "src", "paths": { - "@components/*": [ - "components/*" - ], - "@constants/*": [ - "constants/*" - ], - "@services/*": [ - "services/*" - ], - "@hooks/*": [ - "hooks/*" - ], - "@assets/*": [ - "assets/*" - ], - "@styles/*": [ - "styles/*" - ], - "@views/*": [ - "views/*" - ], - "@utils/*": [ - "utils/*" - ], - "@data/*": [ - "data/*" - ], - "@types/*": [ - "types/*" - ] + "@components/*": ["components/*"], + "@constants/*": ["constants/*"], + "@services/*": ["services/*"], + "@hooks/*": ["hooks/*"], + "@styles/*": ["styles/*"], + "@views/*": ["views/*"], + "@utils/*": ["utils/*"], + "@data/*": ["data/*"], + "@/types/*": ["types/*"] }, "types": ["@testing-library/jest-dom"] }, diff --git a/vite.config.ts b/vite.config.ts index 934675698..8a758e29b 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,15 +1,11 @@ -import { defineConfig, loadEnv } from "vite"; +import { defineConfig } from "vite"; import react from "@vitejs/plugin-react"; import { sentryVitePlugin } from "@sentry/vite-plugin"; import pkg from "./package.json"; import path from "path"; +import { VitePWA } from "vite-plugin-pwa"; -// https://vitejs.dev/config/ export default defineConfig(({ mode }) => { - // Load env file based on `mode` in the current directory. - // Set the third parameter to '' to load all env regardless of the `VITE_` prefix. - const env = loadEnv(mode, process.cwd(), ""); - return { plugins: [ react(), @@ -18,6 +14,33 @@ export default defineConfig(({ mode }) => { org: "dev-bcn", project: "devbcn", }), + + VitePWA({ + registerType: "autoUpdate", + includeAssets: [ + "favicon.ico", + "apple-touch-icon.png", + "maskable_icon_x192.png", + ], + manifest: { + name: "DevBcn", + short_name: "DevBcn", + description: "DevBcn - The developer conference in Barcelona", + theme_color: "#ffffff", + icons: [ + { + src: "logo192.png", + sizes: "192x192", + type: "image/png", + }, + { + src: "logo512.png", + sizes: "512x512", + type: "image/png", + }, + ], + }, + }), ], resolve: { alias: { @@ -26,33 +49,23 @@ export default defineConfig(({ mode }) => { "@constants": path.resolve(__dirname, "./src/constants"), "@services": path.resolve(__dirname, "./src/services"), "@hooks": path.resolve(__dirname, "./src/hooks"), - "@assets": path.resolve(__dirname, "./src/assets"), + "@/assets": path.resolve(__dirname, "./src/assets"), "@styles": path.resolve(__dirname, "./src/styles"), "@views": path.resolve(__dirname, "./src/views"), "@utils": path.resolve(__dirname, "./src/utils"), "@data": path.resolve(__dirname, "./src/data"), - "@types": path.resolve(__dirname, "./src/types"), + "@/types": path.resolve(__dirname, "./src/types"), + "lucide-react": "lucide-react", }, }, define: { - // Create a shim for the process.env object "process.env": { - // Map REACT_APP_ environment variables to VITE_ ones - REACT_APP_GOOGLE_ANALYTICS_API_KEY: JSON.stringify( - env.VITE_GOOGLE_ANALYTICS_API_KEY || - env.REACT_APP_GOOGLE_ANALYTICS_API_KEY || - "G-0BG1LNPT11", - ), - REACT_APP_MAP_API_KEY: JSON.stringify( - env.VITE_MAP_API_KEY || env.REACT_APP_MAP_API_KEY || "", - ), - // Add standard environment variables NODE_ENV: JSON.stringify(mode), npm_package_version: JSON.stringify(pkg.version), }, }, build: { - outDir: "build", // Match CRA's output directory + outDir: "build", sourcemap: true, }, server: { diff --git a/wordlist.txt b/wordlist.txt index 3b2b60d91..68124768a 100644 --- a/wordlist.txt +++ b/wordlist.txt @@ -65,6 +65,7 @@ param pbs png px +pwa queryKey rd robotstxt