From 2f10209b9786f94687c90084e420b97196740c3b Mon Sep 17 00:00:00 2001 From: aleksandrstarshynov Date: Mon, 16 Jun 2025 15:28:28 +0200 Subject: [PATCH 1/3] assignment finished --- week1/project/ecommerce/.gitignore | 24 + week1/project/ecommerce/README.md | 12 + week1/project/ecommerce/eslint.config.js | 33 + .../ecommerce/fake-data/all-categories.js | 6 + .../ecommerce/fake-data/all-products.js | 269 ++ week1/project/ecommerce/index.html | 13 + week1/project/ecommerce/package-lock.json | 2812 +++++++++++++++++ week1/project/ecommerce/package.json | 27 + week1/project/ecommerce/public/vite.svg | 1 + week1/project/ecommerce/src/App.css | 6 + week1/project/ecommerce/src/App.jsx | 13 + .../src/Components/CategoryButton.css | 20 + .../src/Components/CategoryButton.jsx | 13 + .../src/Composite/CategoryFilter.css | 14 + .../src/Composite/CategoryFilter.jsx | 27 + .../ecommerce/src/Composite/ProductCard.css | 30 + .../ecommerce/src/Composite/ProductCard.jsx | 15 + .../ecommerce/src/Composite/ProductList.css | 13 + .../ecommerce/src/Composite/ProductList.jsx | 13 + .../project/ecommerce/src/Pages/FeedPage.css | 15 + .../project/ecommerce/src/Pages/FeedPage.jsx | 36 + week1/project/ecommerce/src/assets/react.svg | 1 + week1/project/ecommerce/src/index.css | 14 + week1/project/ecommerce/src/main.jsx | 10 + week1/project/ecommerce/vite.config.js | 7 + 25 files changed, 3444 insertions(+) create mode 100644 week1/project/ecommerce/.gitignore create mode 100644 week1/project/ecommerce/README.md create mode 100644 week1/project/ecommerce/eslint.config.js create mode 100644 week1/project/ecommerce/fake-data/all-categories.js create mode 100644 week1/project/ecommerce/fake-data/all-products.js create mode 100644 week1/project/ecommerce/index.html create mode 100644 week1/project/ecommerce/package-lock.json create mode 100644 week1/project/ecommerce/package.json create mode 100644 week1/project/ecommerce/public/vite.svg create mode 100644 week1/project/ecommerce/src/App.css create mode 100644 week1/project/ecommerce/src/App.jsx create mode 100644 week1/project/ecommerce/src/Components/CategoryButton.css create mode 100644 week1/project/ecommerce/src/Components/CategoryButton.jsx create mode 100644 week1/project/ecommerce/src/Composite/CategoryFilter.css create mode 100644 week1/project/ecommerce/src/Composite/CategoryFilter.jsx create mode 100644 week1/project/ecommerce/src/Composite/ProductCard.css create mode 100644 week1/project/ecommerce/src/Composite/ProductCard.jsx create mode 100644 week1/project/ecommerce/src/Composite/ProductList.css create mode 100644 week1/project/ecommerce/src/Composite/ProductList.jsx create mode 100644 week1/project/ecommerce/src/Pages/FeedPage.css create mode 100644 week1/project/ecommerce/src/Pages/FeedPage.jsx create mode 100644 week1/project/ecommerce/src/assets/react.svg create mode 100644 week1/project/ecommerce/src/index.css create mode 100644 week1/project/ecommerce/src/main.jsx create mode 100644 week1/project/ecommerce/vite.config.js diff --git a/week1/project/ecommerce/.gitignore b/week1/project/ecommerce/.gitignore new file mode 100644 index 0000000000..a547bf36d8 --- /dev/null +++ b/week1/project/ecommerce/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/week1/project/ecommerce/README.md b/week1/project/ecommerce/README.md new file mode 100644 index 0000000000..7059a962ad --- /dev/null +++ b/week1/project/ecommerce/README.md @@ -0,0 +1,12 @@ +# React + Vite + +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. + +Currently, two official plugins are available: + +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh + +## Expanding the ESLint configuration + +If you are developing a production application, we recommend using TypeScript with type-aware lint rules enabled. Check out the [TS template](https://github.com/vitejs/vite/tree/main/packages/create-vite/template-react-ts) for information on how to integrate TypeScript and [`typescript-eslint`](https://typescript-eslint.io) in your project. diff --git a/week1/project/ecommerce/eslint.config.js b/week1/project/ecommerce/eslint.config.js new file mode 100644 index 0000000000..ec2b712d30 --- /dev/null +++ b/week1/project/ecommerce/eslint.config.js @@ -0,0 +1,33 @@ +import js from '@eslint/js' +import globals from 'globals' +import reactHooks from 'eslint-plugin-react-hooks' +import reactRefresh from 'eslint-plugin-react-refresh' + +export default [ + { ignores: ['dist'] }, + { + files: ['**/*.{js,jsx}'], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + parserOptions: { + ecmaVersion: 'latest', + ecmaFeatures: { jsx: true }, + sourceType: 'module', + }, + }, + plugins: { + 'react-hooks': reactHooks, + 'react-refresh': reactRefresh, + }, + rules: { + ...js.configs.recommended.rules, + ...reactHooks.configs.recommended.rules, + 'no-unused-vars': ['error', { varsIgnorePattern: '^[A-Z_]' }], + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + }, + }, +] diff --git a/week1/project/ecommerce/fake-data/all-categories.js b/week1/project/ecommerce/fake-data/all-categories.js new file mode 100644 index 0000000000..c3745dfefc --- /dev/null +++ b/week1/project/ecommerce/fake-data/all-categories.js @@ -0,0 +1,6 @@ +export default [ + "FAKE: electronics", + "FAKE: jewelery", + "FAKE: men's clothing", + "FAKE: women's clothing", +]; diff --git a/week1/project/ecommerce/fake-data/all-products.js b/week1/project/ecommerce/fake-data/all-products.js new file mode 100644 index 0000000000..cd1ac1a497 --- /dev/null +++ b/week1/project/ecommerce/fake-data/all-products.js @@ -0,0 +1,269 @@ +export default [ + { + id: 1, + title: "FAKE: Fjallraven - Foldsack No. 1 Backpack, Fits 15 Laptops", + price: 109.95, + description: + "Your perfect pack for everyday use and walks in the forest. Stash your laptop (up to 15 inches) in the padded sleeve, your everyday", + category: "men's clothing", + image: "https://fakestoreapi.com/img/81fPKd-2AYL._AC_SL1500_.jpg", + rating: { + rate: 3.9, + count: 120, + }, + }, + { + id: 2, + title: "FAKE: Mens Casual Premium Slim Fit T-Shirts ", + price: 22.3, + description: + "Slim-fitting style, contrast raglan long sleeve, three-button henley placket, light weight & soft fabric for breathable and comfortable wearing. And Solid stitched shirts with round neck made for durability and a great fit for casual fashion wear and diehard baseball fans. The Henley style round neckline includes a three-button placket.", + category: "men's clothing", + image: + "https://fakestoreapi.com/img/71-3HjGNDUL._AC_SY879._SX._UX._SY._UY_.jpg", + rating: { + rate: 4.1, + count: 259, + }, + }, + { + id: 3, + title: "FAKE: Mens Cotton Jacket", + price: 55.99, + description: + "great outerwear jackets for Spring/Autumn/Winter, suitable for many occasions, such as working, hiking, camping, mountain/rock climbing, cycling, traveling or other outdoors. Good gift choice for you or your family member. A warm hearted love to Father, husband or son in this thanksgiving or Christmas Day.", + category: "men's clothing", + image: "https://fakestoreapi.com/img/71li-ujtlUL._AC_UX679_.jpg", + rating: { + rate: 4.7, + count: 500, + }, + }, + { + id: 4, + title: "FAKE: Mens Casual Slim Fit", + price: 15.99, + description: + "The color could be slightly different between on the screen and in practice. / Please note that body builds vary by person, therefore, detailed size information should be reviewed below on the product description.", + category: "men's clothing", + image: "https://fakestoreapi.com/img/71YXzeOuslL._AC_UY879_.jpg", + rating: { + rate: 2.1, + count: 430, + }, + }, + { + id: 5, + title: + "John Hardy Women's Legends Naga Gold & Silver Dragon Station Chain Bracelet", + price: 695, + description: + "From our Legends Collection, the Naga was inspired by the mythical water dragon that protects the ocean's pearl. Wear facing inward to be bestowed with love and abundance, or outward for protection.", + category: "jewelery", + image: "https://fakestoreapi.com/img/71pWzhdJNwL._AC_UL640_QL65_ML3_.jpg", + rating: { + rate: 4.6, + count: 400, + }, + }, + { + id: 6, + title: "FAKE: Solid Gold Petite Micropave ", + price: 168, + description: + "Satisfaction Guaranteed. Return or exchange any order within 30 days.Designed and sold by Hafeez Center in the United States. Satisfaction Guaranteed. Return or exchange any order within 30 days.", + category: "jewelery", + image: "https://fakestoreapi.com/img/61sbMiUnoGL._AC_UL640_QL65_ML3_.jpg", + rating: { + rate: 3.9, + count: 70, + }, + }, + { + id: 7, + title: "FAKE: White Gold Plated Princess", + price: 9.99, + description: + "Classic Created Wedding Engagement Solitaire Diamond Promise Ring for Her. Gifts to spoil your love more for Engagement, Wedding, Anniversary, Valentine's Day...", + category: "jewelery", + image: "https://fakestoreapi.com/img/71YAIFU48IL._AC_UL640_QL65_ML3_.jpg", + rating: { + rate: 3, + count: 400, + }, + }, + { + id: 8, + title: "FAKE: Pierced Owl Rose Gold Plated Stainless Steel Double", + price: 10.99, + description: + "Rose Gold Plated Double Flared Tunnel Plug Earrings. Made of 316L Stainless Steel", + category: "jewelery", + image: "https://fakestoreapi.com/img/51UDEzMJVpL._AC_UL640_QL65_ML3_.jpg", + rating: { + rate: 1.9, + count: 100, + }, + }, + { + id: 9, + title: "FAKE: WD 2TB Elements Portable External Hard Drive - USB 3.0 ", + price: 64, + description: + "USB 3.0 and USB 2.0 Compatibility Fast data transfers Improve PC Performance High Capacity; Compatibility Formatted NTFS for Windows 10, Windows 8.1, Windows 7; Reformatting may be required for other operating systems; Compatibility may vary depending on user’s hardware configuration and operating system", + category: "electronics", + image: "https://fakestoreapi.com/img/61IBBVJvSDL._AC_SY879_.jpg", + rating: { + rate: 3.3, + count: 203, + }, + }, + { + id: 10, + title: "FAKE: SanDisk SSD PLUS 1TB Internal SSD - SATA III 6 Gb/s", + price: 109, + description: + "Easy upgrade for faster boot up, shutdown, application load and response (As compared to 5400 RPM SATA 2.5” hard drive; Based on published specifications and internal benchmarking tests using PCMark vantage scores) Boosts burst write performance, making it ideal for typical PC workloads The perfect balance of performance and reliability Read/write speeds of up to 535MB/s/450MB/s (Based on internal testing; Performance may vary depending upon drive capacity, host device, OS and application.)", + category: "electronics", + image: "https://fakestoreapi.com/img/61U7T1koQqL._AC_SX679_.jpg", + rating: { + rate: 2.9, + count: 470, + }, + }, + { + id: 11, + title: + "Silicon Power 256GB SSD 3D NAND A55 SLC Cache Performance Boost SATA III 2.5", + price: 109, + description: + "3D NAND flash are applied to deliver high transfer speeds Remarkable transfer speeds that enable faster bootup and improved overall system performance. The advanced SLC Cache Technology allows performance boost and longer lifespan 7mm slim design suitable for Ultrabooks and Ultra-slim notebooks. Supports TRIM command, Garbage Collection technology, RAID, and ECC (Error Checking & Correction) to provide the optimized performance and enhanced reliability.", + category: "electronics", + image: "https://fakestoreapi.com/img/71kWymZ+c+L._AC_SX679_.jpg", + rating: { + rate: 4.8, + count: 319, + }, + }, + { + id: 12, + title: + "WD 4TB Gaming Drive Works with Playstation 4 Portable External Hard Drive", + price: 114, + description: + "Expand your PS4 gaming experience, Play anywhere Fast and easy, setup Sleek design with high capacity, 3-year manufacturer's limited warranty", + category: "electronics", + image: "https://fakestoreapi.com/img/61mtL65D4cL._AC_SX679_.jpg", + rating: { + rate: 4.8, + count: 400, + }, + }, + { + id: 13, + title: + "FAKE: Acer SB220Q bi 21.5 inches Full HD (1920 x 1080) IPS Ultra-Thin", + price: 599, + description: + "21. 5 inches Full HD (1920 x 1080) widescreen IPS display And Radeon free Sync technology. No compatibility for VESA Mount Refresh Rate: 75Hz - Using HDMI port Zero-frame design | ultra-thin | 4ms response time | IPS panel Aspect ratio - 16: 9. Color Supported - 16. 7 million colors. Brightness - 250 nit Tilt angle -5 degree to 15 degree. Horizontal viewing angle-178 degree. Vertical viewing angle-178 degree 75 hertz", + category: "electronics", + image: "https://fakestoreapi.com/img/81QpkIctqPL._AC_SX679_.jpg", + rating: { + rate: 2.9, + count: 250, + }, + }, + { + id: 14, + title: + "Samsung 49-Inch CHG90 144Hz Curved Gaming Monitor (LC49HG90DMNXZA) – Super Ultrawide Screen QLED ", + price: 999.99, + description: + "49 INCH SUPER ULTRAWIDE 32:9 CURVED GAMING MONITOR with dual 27 inch screen side by side QUANTUM DOT (QLED) TECHNOLOGY, HDR support and factory calibration provides stunningly realistic and accurate color and contrast 144HZ HIGH REFRESH RATE and 1ms ultra fast response time work to eliminate motion blur, ghosting, and reduce input lag", + category: "electronics", + image: "https://fakestoreapi.com/img/81Zt42ioCgL._AC_SX679_.jpg", + rating: { + rate: 2.2, + count: 140, + }, + }, + { + id: 15, + title: "FAKE: BIYLACLESEN Women's 3-in-1 Snowboard Jacket Winter Coats", + price: 56.99, + description: + "Note:The Jackets is US standard size, Please choose size as your usual wear Material: 100% Polyester; Detachable Liner Fabric: Warm Fleece. Detachable Functional Liner: Skin Friendly, Lightweigt and Warm.Stand Collar Liner jacket, keep you warm in cold weather. Zippered Pockets: 2 Zippered Hand Pockets, 2 Zippered Pockets on Chest (enough to keep cards or keys)and 1 Hidden Pocket Inside.Zippered Hand Pockets and Hidden Pocket keep your things secure. Humanized Design: Adjustable and Detachable Hood and Adjustable cuff to prevent the wind and water,for a comfortable fit. 3 in 1 Detachable Design provide more convenience, you can separate the coat and inner as needed, or wear it together. It is suitable for different season and help you adapt to different climates", + category: "women's clothing", + image: "https://fakestoreapi.com/img/51Y5NI-I5jL._AC_UX679_.jpg", + rating: { + rate: 2.6, + count: 235, + }, + }, + { + id: 16, + title: + "Lock and Love Women's Removable Hooded Faux Leather Moto Biker Jacket", + price: 29.95, + description: + "100% POLYURETHANE(shell) 100% POLYESTER(lining) 75% POLYESTER 25% COTTON (SWEATER), Faux leather material for style and comfort / 2 pockets of front, 2-For-One Hooded denim style faux leather jacket, Button detail on waist / Detail stitching at sides, HAND WASH ONLY / DO NOT BLEACH / LINE DRY / DO NOT IRON", + category: "women's clothing", + image: "https://fakestoreapi.com/img/81XH0e8fefL._AC_UY879_.jpg", + rating: { + rate: 2.9, + count: 340, + }, + }, + { + id: 17, + title: "FAKE: Rain Jacket Women Windbreaker Striped Climbing Raincoats", + price: 39.99, + description: + "Lightweight perfet for trip or casual wear---Long sleeve with hooded, adjustable drawstring waist design. Button and zipper front closure raincoat, fully stripes Lined and The Raincoat has 2 side pockets are a good size to hold all kinds of things, it covers the hips, and the hood is generous but doesn't overdo it.Attached Cotton Lined Hood with Adjustable Drawstrings give it a real styled look.", + category: "women's clothing", + image: "https://fakestoreapi.com/img/71HblAHs5xL._AC_UY879_-2.jpg", + rating: { + rate: 3.8, + count: 679, + }, + }, + { + id: 18, + title: "FAKE: MBJ Women's Solid Short Sleeve Boat Neck V ", + price: 9.85, + description: + "95% RAYON 5% SPANDEX, Made in USA or Imported, Do Not Bleach, Lightweight fabric with great stretch for comfort, Ribbed on sleeves and neckline / Double stitching on bottom hem", + category: "women's clothing", + image: "https://fakestoreapi.com/img/71z3kpMAYsL._AC_UY879_.jpg", + rating: { + rate: 4.7, + count: 130, + }, + }, + { + id: 19, + title: "FAKE: Opna Women's Short Sleeve Moisture", + price: 7.95, + description: + "100% Polyester, Machine wash, 100% cationic polyester interlock, Machine Wash & Pre Shrunk for a Great Fit, Lightweight, roomy and highly breathable with moisture wicking fabric which helps to keep moisture away, Soft Lightweight Fabric with comfortable V-neck collar and a slimmer fit, delivers a sleek, more feminine silhouette and Added Comfort", + category: "women's clothing", + image: "https://fakestoreapi.com/img/51eg55uWmdL._AC_UX679_.jpg", + rating: { + rate: 4.5, + count: 146, + }, + }, + { + id: 20, + title: "FAKE: DANVOUY Womens T Shirt Casual Cotton Short", + price: 12.99, + description: + "95%Cotton,5%Spandex, Features: Casual, Short Sleeve, Letter Print,V-Neck,Fashion Tees, The fabric is soft and has some stretch., Occasion: Casual/Office/Beach/School/Home/Street. Season: Spring,Summer,Autumn,Winter.", + category: "women's clothing", + image: "https://fakestoreapi.com/img/61pHAEJ4NML._AC_UX679_.jpg", + rating: { + rate: 3.6, + count: 145, + }, + }, +]; diff --git a/week1/project/ecommerce/index.html b/week1/project/ecommerce/index.html new file mode 100644 index 0000000000..0c589eccd4 --- /dev/null +++ b/week1/project/ecommerce/index.html @@ -0,0 +1,13 @@ + + + + + + + Vite + React + + +
+ + + diff --git a/week1/project/ecommerce/package-lock.json b/week1/project/ecommerce/package-lock.json new file mode 100644 index 0000000000..e3a3c78d14 --- /dev/null +++ b/week1/project/ecommerce/package-lock.json @@ -0,0 +1,2812 @@ +{ + "name": "ecommerce", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "ecommerce", + "version": "0.0.0", + "dependencies": { + "react": "^19.1.0", + "react-dom": "^19.1.0" + }, + "devDependencies": { + "@eslint/js": "^9.25.0", + "@types/react": "^19.1.2", + "@types/react-dom": "^19.1.2", + "@vitejs/plugin-react": "^4.4.1", + "eslint": "^9.25.0", + "eslint-plugin-react-hooks": "^5.2.0", + "eslint-plugin-react-refresh": "^0.4.19", + "globals": "^16.0.0", + "vite": "^6.3.5" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.27.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.5.tgz", + "integrity": "sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.27.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.27.4.tgz", + "integrity": "sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.27.3", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.27.3", + "@babel/helpers": "^7.27.4", + "@babel/parser": "^7.27.4", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.27.4", + "@babel/types": "^7.27.3", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.27.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.5.tgz", + "integrity": "sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@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" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-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==", + "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-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==", + "dev": true, + "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-plugin-utils": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.27.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.6.tgz", + "integrity": "sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.27.2", + "@babel/types": "^7.27.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.27.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.5.tgz", + "integrity": "sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.3" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.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/template": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.27.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.4.tgz", + "integrity": "sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.27.3", + "@babel/parser": "^7.27.4", + "@babel/template": "^7.27.2", + "@babel/types": "^7.27.3", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { + "version": "7.27.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.6.tgz", + "integrity": "sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.5.tgz", + "integrity": "sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.5.tgz", + "integrity": "sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.5.tgz", + "integrity": "sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.5.tgz", + "integrity": "sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.5.tgz", + "integrity": "sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.5.tgz", + "integrity": "sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.5.tgz", + "integrity": "sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.5.tgz", + "integrity": "sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.5.tgz", + "integrity": "sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.5.tgz", + "integrity": "sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.5.tgz", + "integrity": "sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.5.tgz", + "integrity": "sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.5.tgz", + "integrity": "sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.5.tgz", + "integrity": "sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.5.tgz", + "integrity": "sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.5.tgz", + "integrity": "sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.5.tgz", + "integrity": "sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.5.tgz", + "integrity": "sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.5.tgz", + "integrity": "sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.5.tgz", + "integrity": "sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.5.tgz", + "integrity": "sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.5.tgz", + "integrity": "sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.5.tgz", + "integrity": "sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.5.tgz", + "integrity": "sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.5.tgz", + "integrity": "sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", + "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.1.tgz", + "integrity": "sha512-OL0RJzC/CBzli0DrrR31qzj6d6i6Mm3HByuhflhl4LOBiWxN+3i6/t/ZQQNii4tjksXi8r2CRW1wMpWA2ULUEw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.3.tgz", + "integrity": "sha512-u180qk2Um1le4yf0ruXH3PYFeEZeYC3p/4wCTKrr2U1CmGdzGi3KtY0nuPDH48UJxlKCC5RDzbcbh4X0XlqgHg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.14.0.tgz", + "integrity": "sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "9.29.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.29.0.tgz", + "integrity": "sha512-3PIF4cBw/y+1u2EazflInpV+lYsSG0aByVIQzAgb1m1MhHFSbqTyNqtBKHgWf/9Ykud+DhILS9EGkmekVhbKoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.2.tgz", + "integrity": "sha512-4SaFZCNfJqvk/kenHpI8xvN42DMaoycy4PzKc5otHxRswww1kAt82OlBuwRVLofCACCTZEcla2Ydxv8scMXaTg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.15.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.0.tgz", + "integrity": "sha512-b7ePw78tEWWkpgZCDYkbqDOP8dmM6qe+AOC6iuJqlq1R/0ahMAeH3qynpnqKFGkMltrp44ohV4ubGyvLX28tzw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.11", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.11.tgz", + "integrity": "sha512-L/gAA/hyCSuzTF1ftlzUSI/IKr2POHsv1Dd78GfqkR83KMNuswWD61JxGV2L7nRwBBBSDr6R1gCkdTmoN7W4ag==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.43.0.tgz", + "integrity": "sha512-Krjy9awJl6rKbruhQDgivNbD1WuLb8xAclM4IR4cN5pHGAs2oIMMQJEiC3IC/9TZJ+QZkmZhlMO/6MBGxPidpw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.43.0.tgz", + "integrity": "sha512-ss4YJwRt5I63454Rpj+mXCXicakdFmKnUNxr1dLK+5rv5FJgAxnN7s31a5VchRYxCFWdmnDWKd0wbAdTr0J5EA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.43.0.tgz", + "integrity": "sha512-eKoL8ykZ7zz8MjgBenEF2OoTNFAPFz1/lyJ5UmmFSz5jW+7XbH1+MAgCVHy72aG59rbuQLcJeiMrP8qP5d/N0A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.43.0.tgz", + "integrity": "sha512-SYwXJgaBYW33Wi/q4ubN+ldWC4DzQY62S4Ll2dgfr/dbPoF50dlQwEaEHSKrQdSjC6oIe1WgzosoaNoHCdNuMg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.43.0.tgz", + "integrity": "sha512-SV+U5sSo0yujrjzBF7/YidieK2iF6E7MdF6EbYxNz94lA+R0wKl3SiixGyG/9Klab6uNBIqsN7j4Y/Fya7wAjQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.43.0.tgz", + "integrity": "sha512-J7uCsiV13L/VOeHJBo5SjasKiGxJ0g+nQTrBkAsmQBIdil3KhPnSE9GnRon4ejX1XDdsmK/l30IYLiAaQEO0Cg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.43.0.tgz", + "integrity": "sha512-gTJ/JnnjCMc15uwB10TTATBEhK9meBIY+gXP4s0sHD1zHOaIh4Dmy1X9wup18IiY9tTNk5gJc4yx9ctj/fjrIw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.43.0.tgz", + "integrity": "sha512-ZJ3gZynL1LDSIvRfz0qXtTNs56n5DI2Mq+WACWZ7yGHFUEirHBRt7fyIk0NsCKhmRhn7WAcjgSkSVVxKlPNFFw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.43.0.tgz", + "integrity": "sha512-8FnkipasmOOSSlfucGYEu58U8cxEdhziKjPD2FIa0ONVMxvl/hmONtX/7y4vGjdUhjcTHlKlDhw3H9t98fPvyA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.43.0.tgz", + "integrity": "sha512-KPPyAdlcIZ6S9C3S2cndXDkV0Bb1OSMsX0Eelr2Bay4EsF9yi9u9uzc9RniK3mcUGCLhWY9oLr6er80P5DE6XA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.43.0.tgz", + "integrity": "sha512-HPGDIH0/ZzAZjvtlXj6g+KDQ9ZMHfSP553za7o2Odegb/BEfwJcR0Sw0RLNpQ9nC6Gy8s+3mSS9xjZ0n3rhcYg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.43.0.tgz", + "integrity": "sha512-gEmwbOws4U4GLAJDhhtSPWPXUzDfMRedT3hFMyRAvM9Mrnj+dJIFIeL7otsv2WF3D7GrV0GIewW0y28dOYWkmw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.43.0.tgz", + "integrity": "sha512-XXKvo2e+wFtXZF/9xoWohHg+MuRnvO29TI5Hqe9xwN5uN8NKUYy7tXUG3EZAlfchufNCTHNGjEx7uN78KsBo0g==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.43.0.tgz", + "integrity": "sha512-ruf3hPWhjw6uDFsOAzmbNIvlXFXlBQ4nk57Sec8E8rUxs/AI4HD6xmiiasOOx/3QxS2f5eQMKTAwk7KHwpzr/Q==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.43.0.tgz", + "integrity": "sha512-QmNIAqDiEMEvFV15rsSnjoSmO0+eJLoKRD9EAa9rrYNwO/XRCtOGM3A5A0X+wmG+XRrw9Fxdsw+LnyYiZWWcVw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.43.0.tgz", + "integrity": "sha512-jAHr/S0iiBtFyzjhOkAics/2SrXE092qyqEg96e90L3t9Op8OTzS6+IX0Fy5wCt2+KqeHAkti+eitV0wvblEoQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.43.0.tgz", + "integrity": "sha512-3yATWgdeXyuHtBhrLt98w+5fKurdqvs8B53LaoKD7P7H7FKOONLsBVMNl9ghPQZQuYcceV5CDyPfyfGpMWD9mQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.43.0.tgz", + "integrity": "sha512-wVzXp2qDSCOpcBCT5WRWLmpJRIzv23valvcTwMHEobkjippNf+C3ys/+wf07poPkeNix0paTNemB2XrHr2TnGw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.43.0.tgz", + "integrity": "sha512-fYCTEyzf8d+7diCw8b+asvWDCLMjsCEA8alvtAutqJOJp/wL5hs1rWSqJ1vkjgW0L2NB4bsYJrpKkiIPRR9dvw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.43.0.tgz", + "integrity": "sha512-SnGhLiE5rlK0ofq8kzuDkM0g7FN1s5VYY+YSMTibP7CqShxCQvqtNxTARS4xX4PFJfHjG0ZQYX9iGzI3FQh5Aw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz", + "integrity": "sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "19.1.8", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.8.tgz", + "integrity": "sha512-AwAfQ2Wa5bCx9WP8nZL2uMZWod7J7/JSplxbTmBQ5ms6QpqNYm672H0Vu9ZVKVngQ+ii4R/byguVEUZQyeg44g==", + "dev": true, + "license": "MIT", + "dependencies": { + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.1.6", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.6.tgz", + "integrity": "sha512-4hOiT/dwO8Ko0gV1m/TJZYk3y0KBnY9vzDh7W+DH17b2HFSOGgdj33dhihPeuy3l0q23+4e+hoXHV6hCC4dCXw==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.0.0" + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.5.2.tgz", + "integrity": "sha512-QNVT3/Lxx99nMQWJWF7K4N6apUEuT0KlZA3mx/mVaoGj3smm/8rc8ezz15J1pcbcjDK0V15rpHetVfya08r76Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.27.4", + "@babel/plugin-transform-react-jsx-self": "^7.27.1", + "@babel/plugin-transform-react-jsx-source": "^7.27.1", + "@rolldown/pluginutils": "1.0.0-beta.11", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.17.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0" + } + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/browserslist": { + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.0.tgz", + "integrity": "sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001718", + "electron-to-chromium": "^1.5.160", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001723", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001723.tgz", + "integrity": "sha512-1R/elMjtehrFejxwmexeXAtae5UO9iSyFn6G/I806CYC/BLyyBk1EPhrKBkWhy6wM6Xnm47dSJQec+tLJ39WHw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "dev": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.167", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.167.tgz", + "integrity": "sha512-LxcRvnYO5ez2bMOFpbuuVuAI5QNeY1ncVytE/KXaL6ZNfzX1yPlAO0nSOyIHx2fVAuUprMqPs/TdVhUFZy7SIQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/esbuild": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.5.tgz", + "integrity": "sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.5", + "@esbuild/android-arm": "0.25.5", + "@esbuild/android-arm64": "0.25.5", + "@esbuild/android-x64": "0.25.5", + "@esbuild/darwin-arm64": "0.25.5", + "@esbuild/darwin-x64": "0.25.5", + "@esbuild/freebsd-arm64": "0.25.5", + "@esbuild/freebsd-x64": "0.25.5", + "@esbuild/linux-arm": "0.25.5", + "@esbuild/linux-arm64": "0.25.5", + "@esbuild/linux-ia32": "0.25.5", + "@esbuild/linux-loong64": "0.25.5", + "@esbuild/linux-mips64el": "0.25.5", + "@esbuild/linux-ppc64": "0.25.5", + "@esbuild/linux-riscv64": "0.25.5", + "@esbuild/linux-s390x": "0.25.5", + "@esbuild/linux-x64": "0.25.5", + "@esbuild/netbsd-arm64": "0.25.5", + "@esbuild/netbsd-x64": "0.25.5", + "@esbuild/openbsd-arm64": "0.25.5", + "@esbuild/openbsd-x64": "0.25.5", + "@esbuild/sunos-x64": "0.25.5", + "@esbuild/win32-arm64": "0.25.5", + "@esbuild/win32-ia32": "0.25.5", + "@esbuild/win32-x64": "0.25.5" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.29.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.29.0.tgz", + "integrity": "sha512-GsGizj2Y1rCWDu6XoEekL3RLilp0voSePurjZIkxL3wlm5o5EC9VpgaP7lrCvjnkuLvzFBQWB3vWB3K5KQTveQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.20.1", + "@eslint/config-helpers": "^0.2.1", + "@eslint/core": "^0.14.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.29.0", + "@eslint/plugin-kit": "^0.3.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", + "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-react-refresh": { + "version": "0.4.20", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.20.tgz", + "integrity": "sha512-XpbHQ2q5gUF8BGOX4dHe+71qoirYMhApEPZ7sfhF/dNnOF1UXnCMGZf79SFTBO7Bz5YEIT4TMieSlJBWhP9WBA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "eslint": ">=8.40" + } + }, + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fdir": { + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", + "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.2.0.tgz", + "integrity": "sha512-O+7l9tPdHCU320IigZZPj5zmRCFG9xHmx9cU8FqU2Rp+JN714seHV+2S9+JslCpY4gJwU2vOGox0wzgae/MCEg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "dev": true, + "license": "MIT" + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "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/postcss": { + "version": "8.5.5", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.5.tgz", + "integrity": "sha512-d/jtm+rdNT8tpXuHY5MMtcbJFBkhXE6593XVR9UoGCH8jSFGci7jGvMGH5RYd5PBJW+00NZQt6gf7CbagJCrhg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/react": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", + "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", + "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.26.0" + }, + "peerDependencies": { + "react": "^19.1.0" + } + }, + "node_modules/react-refresh": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz", + "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/rollup": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.43.0.tgz", + "integrity": "sha512-wdN2Kd3Twh8MAEOEJZsuxuLKCsBEo4PVNLK6tQWAn10VhsVewQLzcucMgLolRlhFybGxfclbPeEYBaP6RvUFGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.7" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.43.0", + "@rollup/rollup-android-arm64": "4.43.0", + "@rollup/rollup-darwin-arm64": "4.43.0", + "@rollup/rollup-darwin-x64": "4.43.0", + "@rollup/rollup-freebsd-arm64": "4.43.0", + "@rollup/rollup-freebsd-x64": "4.43.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.43.0", + "@rollup/rollup-linux-arm-musleabihf": "4.43.0", + "@rollup/rollup-linux-arm64-gnu": "4.43.0", + "@rollup/rollup-linux-arm64-musl": "4.43.0", + "@rollup/rollup-linux-loongarch64-gnu": "4.43.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.43.0", + "@rollup/rollup-linux-riscv64-gnu": "4.43.0", + "@rollup/rollup-linux-riscv64-musl": "4.43.0", + "@rollup/rollup-linux-s390x-gnu": "4.43.0", + "@rollup/rollup-linux-x64-gnu": "4.43.0", + "@rollup/rollup-linux-x64-musl": "4.43.0", + "@rollup/rollup-win32-arm64-msvc": "4.43.0", + "@rollup/rollup-win32-ia32-msvc": "4.43.0", + "@rollup/rollup-win32-x64-msvc": "4.43.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup/node_modules/@types/estree": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/scheduler": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", + "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tinyglobby": { + "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": { + "fdir": "^6.4.4", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/vite": { + "version": "6.3.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", + "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/week1/project/ecommerce/package.json b/week1/project/ecommerce/package.json new file mode 100644 index 0000000000..445e479d8e --- /dev/null +++ b/week1/project/ecommerce/package.json @@ -0,0 +1,27 @@ +{ + "name": "ecommerce", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "lint": "eslint .", + "preview": "vite preview" + }, + "dependencies": { + "react": "^19.1.0", + "react-dom": "^19.1.0" + }, + "devDependencies": { + "@eslint/js": "^9.25.0", + "@types/react": "^19.1.2", + "@types/react-dom": "^19.1.2", + "@vitejs/plugin-react": "^4.4.1", + "eslint": "^9.25.0", + "eslint-plugin-react-hooks": "^5.2.0", + "eslint-plugin-react-refresh": "^0.4.19", + "globals": "^16.0.0", + "vite": "^6.3.5" + } +} diff --git a/week1/project/ecommerce/public/vite.svg b/week1/project/ecommerce/public/vite.svg new file mode 100644 index 0000000000..e7b8dfb1b2 --- /dev/null +++ b/week1/project/ecommerce/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/week1/project/ecommerce/src/App.css b/week1/project/ecommerce/src/App.css new file mode 100644 index 0000000000..027945e42d --- /dev/null +++ b/week1/project/ecommerce/src/App.css @@ -0,0 +1,6 @@ +#root { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; + text-align: center; +} \ No newline at end of file diff --git a/week1/project/ecommerce/src/App.jsx b/week1/project/ecommerce/src/App.jsx new file mode 100644 index 0000000000..f9bd63fd7f --- /dev/null +++ b/week1/project/ecommerce/src/App.jsx @@ -0,0 +1,13 @@ +import React from 'react'; +import './App.css'; +import FeedPage from './Pages/FeedPage'; + +function App() { + return ( +
+ +
+ ); +} + +export default App; diff --git a/week1/project/ecommerce/src/Components/CategoryButton.css b/week1/project/ecommerce/src/Components/CategoryButton.css new file mode 100644 index 0000000000..e6eafb7873 --- /dev/null +++ b/week1/project/ecommerce/src/Components/CategoryButton.css @@ -0,0 +1,20 @@ +.category-button { + padding: 10px 16px; + margin: 4px; + border: 1px solid #ccc; + background-color: white !important; + color: #333; + border-radius: 6px !important; + cursor: pointer; + transition: all 0.2s ease-in-out; +} + +.category-button:hover { + background-color: #f5f5f5; +} + +.category-button.active { + background-color: #0077cc !important; + color: white; + border-color: #0077cc; +} diff --git a/week1/project/ecommerce/src/Components/CategoryButton.jsx b/week1/project/ecommerce/src/Components/CategoryButton.jsx new file mode 100644 index 0000000000..edb73c2a3c --- /dev/null +++ b/week1/project/ecommerce/src/Components/CategoryButton.jsx @@ -0,0 +1,13 @@ +import React from "react"; +import "./CategoryButton.css"; + +export default function CategoryButton({ category, isActive, onClick }) { + return ( + + ); +} diff --git a/week1/project/ecommerce/src/Composite/CategoryFilter.css b/week1/project/ecommerce/src/Composite/CategoryFilter.css new file mode 100644 index 0000000000..e8e3e88c51 --- /dev/null +++ b/week1/project/ecommerce/src/Composite/CategoryFilter.css @@ -0,0 +1,14 @@ +.category-filter { + display: flex; + flex-wrap: wrap; + gap: 10px; + justify-content: center; + margin: 20px 0; +} + +@media (max-width: 400px) { + .category-filter { + flex-direction: column; + align-items: stretch; + } +} diff --git a/week1/project/ecommerce/src/Composite/CategoryFilter.jsx b/week1/project/ecommerce/src/Composite/CategoryFilter.jsx new file mode 100644 index 0000000000..aadf94100e --- /dev/null +++ b/week1/project/ecommerce/src/Composite/CategoryFilter.jsx @@ -0,0 +1,27 @@ +import React from "react"; +import "./CategoryFilter.css"; +import CategoryButton from "../Components/CategoryButton"; + + +export default function CategoryFilter({ categories, selectedCategory, onSelectCategory }) { + const handleClick = (category) => { + if (selectedCategory === category) { + onSelectCategory(null); + } else { + onSelectCategory(category); + } + }; + + return ( +
+ {categories.map((category) => ( + handleClick(category)} + /> + ))} +
+ ); +} diff --git a/week1/project/ecommerce/src/Composite/ProductCard.css b/week1/project/ecommerce/src/Composite/ProductCard.css new file mode 100644 index 0000000000..44c98b45cc --- /dev/null +++ b/week1/project/ecommerce/src/Composite/ProductCard.css @@ -0,0 +1,30 @@ +.product-card { + border: 1px solid #ddd; + padding: 10px; + border-radius: 8px; + text-align: center; + color: #000; + font-size: 10px; +} + +/* .product-card img { + max-height: 250px; + width: 100%; + object-fit: contain; + display: block; + margin: 0 auto; +} */ + +.product-image { + height: 250px; + display: flex; + align-items: center; + justify-content: center; + padding: 10px; +} + +.product-image img { + max-height: 100%; + max-width: 100%; + object-fit: contain; +} \ No newline at end of file diff --git a/week1/project/ecommerce/src/Composite/ProductCard.jsx b/week1/project/ecommerce/src/Composite/ProductCard.jsx new file mode 100644 index 0000000000..1e0b18ea06 --- /dev/null +++ b/week1/project/ecommerce/src/Composite/ProductCard.jsx @@ -0,0 +1,15 @@ +import React from "react"; +import "./ProductCard.css"; + +export default function ProductCard({ product }) { + console.log("PRODUCT:", product); + return ( +
+
+ {product.title} +
+

{product.title}

+

{product.price} €

+
+ ); +} diff --git a/week1/project/ecommerce/src/Composite/ProductList.css b/week1/project/ecommerce/src/Composite/ProductList.css new file mode 100644 index 0000000000..0a5f653568 --- /dev/null +++ b/week1/project/ecommerce/src/Composite/ProductList.css @@ -0,0 +1,13 @@ +.product-list { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); + gap: 16px; + margin-top: 24px; +} + +@media (max-width: 600px) { + .product-list { + grid-template-columns: 1fr; + gap: 12px; + } +} diff --git a/week1/project/ecommerce/src/Composite/ProductList.jsx b/week1/project/ecommerce/src/Composite/ProductList.jsx new file mode 100644 index 0000000000..18cd7decc0 --- /dev/null +++ b/week1/project/ecommerce/src/Composite/ProductList.jsx @@ -0,0 +1,13 @@ +import React from "react"; +import "./ProductList.css"; +import ProductCard from "./ProductCard"; + +export default function ProductList({ products }) { + return ( +
+ {products.map((product) => ( + + ))} +
+ ); +} diff --git a/week1/project/ecommerce/src/Pages/FeedPage.css b/week1/project/ecommerce/src/Pages/FeedPage.css new file mode 100644 index 0000000000..787458b3c5 --- /dev/null +++ b/week1/project/ecommerce/src/Pages/FeedPage.css @@ -0,0 +1,15 @@ +.feed-page { + max-width: 1200px; + margin: 0 auto; + padding: 16px; +} + +@media (max-width: 768px) { + .feed-page { + padding: 8px; + } +} + +h1{ + color: #000; +} \ No newline at end of file diff --git a/week1/project/ecommerce/src/Pages/FeedPage.jsx b/week1/project/ecommerce/src/Pages/FeedPage.jsx new file mode 100644 index 0000000000..8be0a41f98 --- /dev/null +++ b/week1/project/ecommerce/src/Pages/FeedPage.jsx @@ -0,0 +1,36 @@ +import React, { useState, useEffect } from "react"; +import "./FeedPage.css"; +import CategoryFilter from "../Composite/CategoryFilter"; +import ProductList from "../Composite/ProductList"; + +import categories from "../../fake-data/all-categories"; +import allProducts from "../../fake-data/all-products"; + +export default function FeedPage() { + const [selectedCategory, setSelectedCategory] = useState(null); + const [products, setProducts] = useState(allProducts); + + useEffect(() => { + if (!selectedCategory) { + setProducts(allProducts); + } else { + const cleanedCategory = selectedCategory.replace("FAKE: ", ""); + const filtered = allProducts.filter( + (product) => product.category === cleanedCategory + ); + setProducts(filtered); + } + }, [selectedCategory]); + + return ( +
+

Products

+ + +
+ ); +} diff --git a/week1/project/ecommerce/src/assets/react.svg b/week1/project/ecommerce/src/assets/react.svg new file mode 100644 index 0000000000..6c87de9bb3 --- /dev/null +++ b/week1/project/ecommerce/src/assets/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/week1/project/ecommerce/src/index.css b/week1/project/ecommerce/src/index.css new file mode 100644 index 0000000000..3924fb2265 --- /dev/null +++ b/week1/project/ecommerce/src/index.css @@ -0,0 +1,14 @@ +:root { + font-family: system-ui, Avenir, Helvetica, Arial, sans-serif; + line-height: 1.5; + font-weight: 400; + + color-scheme: light dark; + color: rgba(255, 255, 255, 0.87); + background-color: #ffffff; + + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} \ No newline at end of file diff --git a/week1/project/ecommerce/src/main.jsx b/week1/project/ecommerce/src/main.jsx new file mode 100644 index 0000000000..b9a1a6deac --- /dev/null +++ b/week1/project/ecommerce/src/main.jsx @@ -0,0 +1,10 @@ +import { StrictMode } from 'react' +import { createRoot } from 'react-dom/client' +import './index.css' +import App from './App.jsx' + +createRoot(document.getElementById('root')).render( + + + , +) diff --git a/week1/project/ecommerce/vite.config.js b/week1/project/ecommerce/vite.config.js new file mode 100644 index 0000000000..8b0f57b91a --- /dev/null +++ b/week1/project/ecommerce/vite.config.js @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +// https://vite.dev/config/ +export default defineConfig({ + plugins: [react()], +}) From db220d13c92c8c6b4e0bf24609399f66b94eea09 Mon Sep 17 00:00:00 2001 From: aleksandrstarshynov Date: Mon, 16 Jun 2025 15:53:48 +0200 Subject: [PATCH 2/3] dist added --- week1/project/ecommerce/.gitignore | 2 - .../ecommerce/dist/assets/index-9zvwJ4Pe.css | 1 + .../ecommerce/dist/assets/index-Cx-n_OD2.js | 49 +++++++++++++++++++ week1/project/ecommerce/dist/index.html | 14 ++++++ week1/project/ecommerce/dist/vite.svg | 1 + 5 files changed, 65 insertions(+), 2 deletions(-) create mode 100644 week1/project/ecommerce/dist/assets/index-9zvwJ4Pe.css create mode 100644 week1/project/ecommerce/dist/assets/index-Cx-n_OD2.js create mode 100644 week1/project/ecommerce/dist/index.html create mode 100644 week1/project/ecommerce/dist/vite.svg diff --git a/week1/project/ecommerce/.gitignore b/week1/project/ecommerce/.gitignore index a547bf36d8..234f2f1beb 100644 --- a/week1/project/ecommerce/.gitignore +++ b/week1/project/ecommerce/.gitignore @@ -8,8 +8,6 @@ pnpm-debug.log* lerna-debug.log* node_modules -dist -dist-ssr *.local # Editor directories and files diff --git a/week1/project/ecommerce/dist/assets/index-9zvwJ4Pe.css b/week1/project/ecommerce/dist/assets/index-9zvwJ4Pe.css new file mode 100644 index 0000000000..ccbb16d581 --- /dev/null +++ b/week1/project/ecommerce/dist/assets/index-9zvwJ4Pe.css @@ -0,0 +1 @@ +:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#fff;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{max-width:1280px;margin:0 auto;padding:2rem;text-align:center}.feed-page{max-width:1200px;margin:0 auto;padding:16px}@media (max-width: 768px){.feed-page{padding:8px}}h1{color:#000}.category-filter{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin:20px 0}@media (max-width: 400px){.category-filter{flex-direction:column;align-items:stretch}}.category-button{padding:10px 16px;margin:4px;border:1px solid #ccc;background-color:#fff!important;color:#333;border-radius:6px!important;cursor:pointer;transition:all .2s ease-in-out}.category-button:hover{background-color:#f5f5f5}.category-button.active{background-color:#07c!important;color:#fff;border-color:#07c}.product-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:16px;margin-top:24px}@media (max-width: 600px){.product-list{grid-template-columns:1fr;gap:12px}}.product-card{border:1px solid #ddd;padding:10px;border-radius:8px;text-align:center;color:#000;font-size:10px}.product-image{height:250px;display:flex;align-items:center;justify-content:center;padding:10px}.product-image img{max-height:100%;max-width:100%;object-fit:contain} diff --git a/week1/project/ecommerce/dist/assets/index-Cx-n_OD2.js b/week1/project/ecommerce/dist/assets/index-Cx-n_OD2.js new file mode 100644 index 0000000000..d44895c79f --- /dev/null +++ b/week1/project/ecommerce/dist/assets/index-Cx-n_OD2.js @@ -0,0 +1,49 @@ +(function(){const W=document.createElement("link").relList;if(W&&W.supports&&W.supports("modulepreload"))return;for(const C of document.querySelectorAll('link[rel="modulepreload"]'))m(C);new MutationObserver(C=>{for(const K of C)if(K.type==="childList")for(const sl of K.addedNodes)sl.tagName==="LINK"&&sl.rel==="modulepreload"&&m(sl)}).observe(document,{childList:!0,subtree:!0});function Z(C){const K={};return C.integrity&&(K.integrity=C.integrity),C.referrerPolicy&&(K.referrerPolicy=C.referrerPolicy),C.crossOrigin==="use-credentials"?K.credentials="include":C.crossOrigin==="anonymous"?K.credentials="omit":K.credentials="same-origin",K}function m(C){if(C.ep)return;C.ep=!0;const K=Z(C);fetch(C.href,K)}})();var Wc={exports:{}},ve={};/** + * @license React + * react-jsx-runtime.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Fd;function Uy(){if(Fd)return ve;Fd=1;var _=Symbol.for("react.transitional.element"),W=Symbol.for("react.fragment");function Z(m,C,K){var sl=null;if(K!==void 0&&(sl=""+K),C.key!==void 0&&(sl=""+C.key),"key"in C){K={};for(var Yl in C)Yl!=="key"&&(K[Yl]=C[Yl])}else K=C;return C=K.ref,{$$typeof:_,type:m,key:sl,ref:C!==void 0?C:null,props:K}}return ve.Fragment=W,ve.jsx=Z,ve.jsxs=Z,ve}var Pd;function Ry(){return Pd||(Pd=1,Wc.exports=Uy()),Wc.exports}var _l=Ry(),$c={exports:{}},j={};/** + * @license React + * react.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Id;function Hy(){if(Id)return j;Id=1;var _=Symbol.for("react.transitional.element"),W=Symbol.for("react.portal"),Z=Symbol.for("react.fragment"),m=Symbol.for("react.strict_mode"),C=Symbol.for("react.profiler"),K=Symbol.for("react.consumer"),sl=Symbol.for("react.context"),Yl=Symbol.for("react.forward_ref"),R=Symbol.for("react.suspense"),T=Symbol.for("react.memo"),U=Symbol.for("react.lazy"),il=Symbol.iterator;function el(s){return s===null||typeof s!="object"?null:(s=il&&s[il]||s["@@iterator"],typeof s=="function"?s:null)}var Bl={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},ql=Object.assign,dt={};function Gl(s,E,O){this.props=s,this.context=E,this.refs=dt,this.updater=O||Bl}Gl.prototype.isReactComponent={},Gl.prototype.setState=function(s,E){if(typeof s!="object"&&typeof s!="function"&&s!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,s,E,"setState")},Gl.prototype.forceUpdate=function(s){this.updater.enqueueForceUpdate(this,s,"forceUpdate")};function da(){}da.prototype=Gl.prototype;function _t(s,E,O){this.props=s,this.context=E,this.refs=dt,this.updater=O||Bl}var Dl=_t.prototype=new da;Dl.constructor=_t,ql(Dl,Gl.prototype),Dl.isPureReactComponent=!0;var rt=Array.isArray,J={H:null,A:null,T:null,S:null,V:null},Zl=Object.prototype.hasOwnProperty;function Vl(s,E,O,p,H,w){return O=w.ref,{$$typeof:_,type:s,key:E,ref:O!==void 0?O:null,props:w}}function Kl(s,E){return Vl(s.type,E,void 0,void 0,void 0,s.props)}function mt(s){return typeof s=="object"&&s!==null&&s.$$typeof===_}function Na(s){var E={"=":"=0",":":"=2"};return"$"+s.replace(/[=:]/g,function(O){return E[O]})}var pt=/\/+/g;function Ml(s,E){return typeof s=="object"&&s!==null&&s.key!=null?Na(""+s.key):E.toString(36)}function ra(){}function ya(s){switch(s.status){case"fulfilled":return s.value;case"rejected":throw s.reason;default:switch(typeof s.status=="string"?s.then(ra,ra):(s.status="pending",s.then(function(E){s.status==="pending"&&(s.status="fulfilled",s.value=E)},function(E){s.status==="pending"&&(s.status="rejected",s.reason=E)})),s.status){case"fulfilled":return s.value;case"rejected":throw s.reason}}throw s}function Ul(s,E,O,p,H){var w=typeof s;(w==="undefined"||w==="boolean")&&(s=null);var G=!1;if(s===null)G=!0;else switch(w){case"bigint":case"string":case"number":G=!0;break;case"object":switch(s.$$typeof){case _:case W:G=!0;break;case U:return G=s._init,Ul(G(s._payload),E,O,p,H)}}if(G)return H=H(s),G=p===""?"."+Ml(s,0):p,rt(H)?(O="",G!=null&&(O=G.replace(pt,"$&/")+"/"),Ul(H,E,O,"",function(xt){return xt})):H!=null&&(mt(H)&&(H=Kl(H,O+(H.key==null||s&&s.key===H.key?"":(""+H.key).replace(pt,"$&/")+"/")+G)),E.push(H)),1;G=0;var Jl=p===""?".":p+":";if(rt(s))for(var cl=0;cl>>1,s=S[al];if(0>>1;alC(p,B))HC(w,p)?(S[al]=w,S[H]=B,al=H):(S[al]=p,S[O]=B,al=O);else if(HC(w,B))S[al]=w,S[H]=B,al=H;else break l}}return z}function C(S,z){var B=S.sortIndex-z.sortIndex;return B!==0?B:S.id-z.id}if(_.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var K=performance;_.unstable_now=function(){return K.now()}}else{var sl=Date,Yl=sl.now();_.unstable_now=function(){return sl.now()-Yl}}var R=[],T=[],U=1,il=null,el=3,Bl=!1,ql=!1,dt=!1,Gl=!1,da=typeof setTimeout=="function"?setTimeout:null,_t=typeof clearTimeout=="function"?clearTimeout:null,Dl=typeof setImmediate<"u"?setImmediate:null;function rt(S){for(var z=Z(T);z!==null;){if(z.callback===null)m(T);else if(z.startTime<=S)m(T),z.sortIndex=z.expirationTime,W(R,z);else break;z=Z(T)}}function J(S){if(dt=!1,rt(S),!ql)if(Z(R)!==null)ql=!0,Zl||(Zl=!0,Ml());else{var z=Z(T);z!==null&&Ul(J,z.startTime-S)}}var Zl=!1,Vl=-1,Kl=5,mt=-1;function Na(){return Gl?!0:!(_.unstable_now()-mtS&&Na());){var al=il.callback;if(typeof al=="function"){il.callback=null,el=il.priorityLevel;var s=al(il.expirationTime<=S);if(S=_.unstable_now(),typeof s=="function"){il.callback=s,rt(S),z=!0;break t}il===Z(R)&&m(R),rt(S)}else m(R);il=Z(R)}if(il!==null)z=!0;else{var E=Z(T);E!==null&&Ul(J,E.startTime-S),z=!1}}break l}finally{il=null,el=B,Bl=!1}z=void 0}}finally{z?Ml():Zl=!1}}}var Ml;if(typeof Dl=="function")Ml=function(){Dl(pt)};else if(typeof MessageChannel<"u"){var ra=new MessageChannel,ya=ra.port2;ra.port1.onmessage=pt,Ml=function(){ya.postMessage(null)}}else Ml=function(){da(pt,0)};function Ul(S,z){Vl=da(function(){S(_.unstable_now())},z)}_.unstable_IdlePriority=5,_.unstable_ImmediatePriority=1,_.unstable_LowPriority=4,_.unstable_NormalPriority=3,_.unstable_Profiling=null,_.unstable_UserBlockingPriority=2,_.unstable_cancelCallback=function(S){S.callback=null},_.unstable_forceFrameRate=function(S){0>S||125al?(S.sortIndex=B,W(T,S),Z(R)===null&&S===Z(T)&&(dt?(_t(Vl),Vl=-1):dt=!0,Ul(J,B-al))):(S.sortIndex=s,W(R,S),ql||Bl||(ql=!0,Zl||(Zl=!0,Ml()))),S},_.unstable_shouldYield=Na,_.unstable_wrapCallback=function(S){var z=el;return function(){var B=el;el=z;try{return S.apply(this,arguments)}finally{el=B}}}}(Ic)),Ic}var ar;function Yy(){return ar||(ar=1,Pc.exports=Ny()),Pc.exports}var lf={exports:{}},Nl={};/** + * @license React + * react-dom.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var ur;function By(){if(ur)return Nl;ur=1;var _=af();function W(R){var T="https://react.dev/errors/"+R;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(_)}catch(W){console.error(W)}}return _(),lf.exports=By(),lf.exports}/** + * @license React + * react-dom-client.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var nr;function Cy(){if(nr)return me;nr=1;var _=Yy(),W=af(),Z=qy();function m(l){var t="https://react.dev/errors/"+l;if(1s||(l.current=al[s],al[s]=null,s--)}function p(l,t){s++,al[s]=l.current,l.current=t}var H=E(null),w=E(null),G=E(null),Jl=E(null);function cl(l,t){switch(p(G,t),p(w,l),p(H,null),t.nodeType){case 9:case 11:l=(l=t.documentElement)&&(l=l.namespaceURI)?zd(l):0;break;default:if(l=t.tagName,t=t.namespaceURI)t=zd(t),l=Od(t,l);else switch(l){case"svg":l=1;break;case"math":l=2;break;default:l=0}}O(H),p(H,l)}function xt(){O(H),O(w),O(G)}function Bn(l){l.memoizedState!==null&&p(Jl,l);var t=H.current,a=Od(t,l.type);t!==a&&(p(w,l),p(H,a))}function ge(l){w.current===l&&(O(H),O(w)),Jl.current===l&&(O(Jl),oe._currentValue=B)}var qn=Object.prototype.hasOwnProperty,Cn=_.unstable_scheduleCallback,Gn=_.unstable_cancelCallback,cr=_.unstable_shouldYield,fr=_.unstable_requestPaint,gt=_.unstable_now,sr=_.unstable_getCurrentPriorityLevel,uf=_.unstable_ImmediatePriority,ef=_.unstable_UserBlockingPriority,Se=_.unstable_NormalPriority,or=_.unstable_LowPriority,nf=_.unstable_IdlePriority,dr=_.log,rr=_.unstable_setDisableYieldValue,Su=null,wl=null;function Qt(l){if(typeof dr=="function"&&rr(l),wl&&typeof wl.setStrictMode=="function")try{wl.setStrictMode(Su,l)}catch{}}var kl=Math.clz32?Math.clz32:vr,yr=Math.log,hr=Math.LN2;function vr(l){return l>>>=0,l===0?32:31-(yr(l)/hr|0)|0}var be=256,Ae=4194304;function ha(l){var t=l&42;if(t!==0)return t;switch(l&-l){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return l&4194048;case 4194304:case 8388608:case 16777216:case 33554432:return l&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return l}}function Ee(l,t,a){var u=l.pendingLanes;if(u===0)return 0;var e=0,n=l.suspendedLanes,i=l.pingedLanes;l=l.warmLanes;var c=u&134217727;return c!==0?(u=c&~n,u!==0?e=ha(u):(i&=c,i!==0?e=ha(i):a||(a=c&~l,a!==0&&(e=ha(a))))):(c=u&~n,c!==0?e=ha(c):i!==0?e=ha(i):a||(a=u&~l,a!==0&&(e=ha(a)))),e===0?0:t!==0&&t!==e&&(t&n)===0&&(n=e&-e,a=t&-t,n>=a||n===32&&(a&4194048)!==0)?t:e}function bu(l,t){return(l.pendingLanes&~(l.suspendedLanes&~l.pingedLanes)&t)===0}function mr(l,t){switch(l){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function cf(){var l=be;return be<<=1,(be&4194048)===0&&(be=256),l}function ff(){var l=Ae;return Ae<<=1,(Ae&62914560)===0&&(Ae=4194304),l}function jn(l){for(var t=[],a=0;31>a;a++)t.push(l);return t}function Au(l,t){l.pendingLanes|=t,t!==268435456&&(l.suspendedLanes=0,l.pingedLanes=0,l.warmLanes=0)}function gr(l,t,a,u,e,n){var i=l.pendingLanes;l.pendingLanes=a,l.suspendedLanes=0,l.pingedLanes=0,l.warmLanes=0,l.expiredLanes&=a,l.entangledLanes&=a,l.errorRecoveryDisabledLanes&=a,l.shellSuspendCounter=0;var c=l.entanglements,f=l.expirationTimes,y=l.hiddenUpdates;for(a=i&~a;0)":-1e||f[u]!==y[e]){var g=` +`+f[u].replace(" at new "," at ");return l.displayName&&g.includes("")&&(g=g.replace("",l.displayName)),g}while(1<=u&&0<=e);break}}}finally{Vn=!1,Error.prepareStackTrace=a}return(a=l?l.displayName||l.name:"")?ja(a):""}function _r(l){switch(l.tag){case 26:case 27:case 5:return ja(l.type);case 16:return ja("Lazy");case 13:return ja("Suspense");case 19:return ja("SuspenseList");case 0:case 15:return Kn(l.type,!1);case 11:return Kn(l.type.render,!1);case 1:return Kn(l.type,!0);case 31:return ja("Activity");default:return""}}function Sf(l){try{var t="";do t+=_r(l),l=l.return;while(l);return t}catch(a){return` +Error generating stack: `+a.message+` +`+a.stack}}function at(l){switch(typeof l){case"bigint":case"boolean":case"number":case"string":case"undefined":return l;case"object":return l;default:return""}}function bf(l){var t=l.type;return(l=l.nodeName)&&l.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function pr(l){var t=bf(l)?"checked":"value",a=Object.getOwnPropertyDescriptor(l.constructor.prototype,t),u=""+l[t];if(!l.hasOwnProperty(t)&&typeof a<"u"&&typeof a.get=="function"&&typeof a.set=="function"){var e=a.get,n=a.set;return Object.defineProperty(l,t,{configurable:!0,get:function(){return e.call(this)},set:function(i){u=""+i,n.call(this,i)}}),Object.defineProperty(l,t,{enumerable:a.enumerable}),{getValue:function(){return u},setValue:function(i){u=""+i},stopTracking:function(){l._valueTracker=null,delete l[t]}}}}function pe(l){l._valueTracker||(l._valueTracker=pr(l))}function Af(l){if(!l)return!1;var t=l._valueTracker;if(!t)return!0;var a=t.getValue(),u="";return l&&(u=bf(l)?l.checked?"true":"false":l.value),l=u,l!==a?(t.setValue(l),!0):!1}function ze(l){if(l=l||(typeof document<"u"?document:void 0),typeof l>"u")return null;try{return l.activeElement||l.body}catch{return l.body}}var zr=/[\n"\\]/g;function ut(l){return l.replace(zr,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function Jn(l,t,a,u,e,n,i,c){l.name="",i!=null&&typeof i!="function"&&typeof i!="symbol"&&typeof i!="boolean"?l.type=i:l.removeAttribute("type"),t!=null?i==="number"?(t===0&&l.value===""||l.value!=t)&&(l.value=""+at(t)):l.value!==""+at(t)&&(l.value=""+at(t)):i!=="submit"&&i!=="reset"||l.removeAttribute("value"),t!=null?wn(l,i,at(t)):a!=null?wn(l,i,at(a)):u!=null&&l.removeAttribute("value"),e==null&&n!=null&&(l.defaultChecked=!!n),e!=null&&(l.checked=e&&typeof e!="function"&&typeof e!="symbol"),c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"?l.name=""+at(c):l.removeAttribute("name")}function Ef(l,t,a,u,e,n,i,c){if(n!=null&&typeof n!="function"&&typeof n!="symbol"&&typeof n!="boolean"&&(l.type=n),t!=null||a!=null){if(!(n!=="submit"&&n!=="reset"||t!=null))return;a=a!=null?""+at(a):"",t=t!=null?""+at(t):a,c||t===l.value||(l.value=t),l.defaultValue=t}u=u??e,u=typeof u!="function"&&typeof u!="symbol"&&!!u,l.checked=c?l.checked:!!u,l.defaultChecked=!!u,i!=null&&typeof i!="function"&&typeof i!="symbol"&&typeof i!="boolean"&&(l.name=i)}function wn(l,t,a){t==="number"&&ze(l.ownerDocument)===l||l.defaultValue===""+a||(l.defaultValue=""+a)}function Xa(l,t,a,u){if(l=l.options,t){t={};for(var e=0;e"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Pn=!1;if(Ot)try{var pu={};Object.defineProperty(pu,"passive",{get:function(){Pn=!0}}),window.addEventListener("test",pu,pu),window.removeEventListener("test",pu,pu)}catch{Pn=!1}var Zt=null,In=null,De=null;function Mf(){if(De)return De;var l,t=In,a=t.length,u,e="value"in Zt?Zt.value:Zt.textContent,n=e.length;for(l=0;l=Du),Bf=" ",qf=!1;function Cf(l,t){switch(l){case"keyup":return Ir.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Gf(l){return l=l.detail,typeof l=="object"&&"data"in l?l.data:null}var Za=!1;function t0(l,t){switch(l){case"compositionend":return Gf(t);case"keypress":return t.which!==32?null:(qf=!0,Bf);case"textInput":return l=t.data,l===Bf&&qf?null:l;default:return null}}function a0(l,t){if(Za)return l==="compositionend"||!ei&&Cf(l,t)?(l=Mf(),De=In=Zt=null,Za=!1,l):null;switch(l){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:a,offset:t-l};l=u}l:{for(;a;){if(a.nextSibling){a=a.nextSibling;break l}a=a.parentNode}a=void 0}a=Kf(a)}}function wf(l,t){return l&&t?l===t?!0:l&&l.nodeType===3?!1:t&&t.nodeType===3?wf(l,t.parentNode):"contains"in l?l.contains(t):l.compareDocumentPosition?!!(l.compareDocumentPosition(t)&16):!1:!1}function kf(l){l=l!=null&&l.ownerDocument!=null&&l.ownerDocument.defaultView!=null?l.ownerDocument.defaultView:window;for(var t=ze(l.document);t instanceof l.HTMLIFrameElement;){try{var a=typeof t.contentWindow.location.href=="string"}catch{a=!1}if(a)l=t.contentWindow;else break;t=ze(l.document)}return t}function ci(l){var t=l&&l.nodeName&&l.nodeName.toLowerCase();return t&&(t==="input"&&(l.type==="text"||l.type==="search"||l.type==="tel"||l.type==="url"||l.type==="password")||t==="textarea"||l.contentEditable==="true")}var o0=Ot&&"documentMode"in document&&11>=document.documentMode,Va=null,fi=null,Hu=null,si=!1;function Wf(l,t,a){var u=a.window===a?a.document:a.nodeType===9?a:a.ownerDocument;si||Va==null||Va!==ze(u)||(u=Va,"selectionStart"in u&&ci(u)?u={start:u.selectionStart,end:u.selectionEnd}:(u=(u.ownerDocument&&u.ownerDocument.defaultView||window).getSelection(),u={anchorNode:u.anchorNode,anchorOffset:u.anchorOffset,focusNode:u.focusNode,focusOffset:u.focusOffset}),Hu&&Ru(Hu,u)||(Hu=u,u=Sn(fi,"onSelect"),0>=i,e-=i,Mt=1<<32-kl(t)+e|a<n?n:8;var i=S.T,c={};S.T=c,ki(l,!1,t,a);try{var f=e(),y=S.S;if(y!==null&&y(c,f),f!==null&&typeof f=="object"&&typeof f.then=="function"){var g=b0(f,u);Ju(l,t,g,lt(l))}else Ju(l,t,u,lt(l))}catch(A){Ju(l,t,{then:function(){},status:"rejected",reason:A},lt())}finally{z.p=n,S.T=i}}function p0(){}function Ji(l,t,a,u){if(l.tag!==5)throw Error(m(476));var e=$s(l).queue;Ws(l,e,t,B,a===null?p0:function(){return Fs(l),a(u)})}function $s(l){var t=l.memoizedState;if(t!==null)return t;t={memoizedState:B,baseState:B,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Nt,lastRenderedState:B},next:null};var a={};return t.next={memoizedState:a,baseState:a,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Nt,lastRenderedState:a},next:null},l.memoizedState=t,l=l.alternate,l!==null&&(l.memoizedState=t),t}function Fs(l){var t=$s(l).next.queue;Ju(l,t,{},lt())}function wi(){return Hl(oe)}function Ps(){return ml().memoizedState}function Is(){return ml().memoizedState}function z0(l){for(var t=l.return;t!==null;){switch(t.tag){case 24:case 3:var a=lt();l=Jt(a);var u=wt(t,l,a);u!==null&&(tt(u,t,a),xu(u,t,a)),t={cache:_i()},l.payload=t;return}t=t.return}}function O0(l,t,a){var u=lt();a={lane:u,revertLane:0,action:a,hasEagerState:!1,eagerState:null,next:null},Fe(l)?to(t,a):(a=yi(l,t,a,u),a!==null&&(tt(a,l,u),ao(a,t,u)))}function lo(l,t,a){var u=lt();Ju(l,t,a,u)}function Ju(l,t,a,u){var e={lane:u,revertLane:0,action:a,hasEagerState:!1,eagerState:null,next:null};if(Fe(l))to(t,e);else{var n=l.alternate;if(l.lanes===0&&(n===null||n.lanes===0)&&(n=t.lastRenderedReducer,n!==null))try{var i=t.lastRenderedState,c=n(i,a);if(e.hasEagerState=!0,e.eagerState=c,Wl(c,i))return Be(l,t,e,0),nl===null&&Ye(),!1}catch{}finally{}if(a=yi(l,t,e,u),a!==null)return tt(a,l,u),ao(a,t,u),!0}return!1}function ki(l,t,a,u){if(u={lane:2,revertLane:Oc(),action:u,hasEagerState:!1,eagerState:null,next:null},Fe(l)){if(t)throw Error(m(479))}else t=yi(l,a,u,2),t!==null&&tt(t,l,2)}function Fe(l){var t=l.alternate;return l===X||t!==null&&t===X}function to(l,t){lu=Ke=!0;var a=l.pending;a===null?t.next=t:(t.next=a.next,a.next=t),l.pending=t}function ao(l,t,a){if((a&4194048)!==0){var u=t.lanes;u&=l.pendingLanes,a|=u,t.lanes=a,of(l,a)}}var Pe={readContext:Hl,use:we,useCallback:yl,useContext:yl,useEffect:yl,useImperativeHandle:yl,useLayoutEffect:yl,useInsertionEffect:yl,useMemo:yl,useReducer:yl,useRef:yl,useState:yl,useDebugValue:yl,useDeferredValue:yl,useTransition:yl,useSyncExternalStore:yl,useId:yl,useHostTransitionStatus:yl,useFormState:yl,useActionState:yl,useOptimistic:yl,useMemoCache:yl,useCacheRefresh:yl},uo={readContext:Hl,use:we,useCallback:function(l,t){return xl().memoizedState=[l,t===void 0?null:t],l},useContext:Hl,useEffect:xs,useImperativeHandle:function(l,t,a){a=a!=null?a.concat([l]):null,$e(4194308,4,Vs.bind(null,t,l),a)},useLayoutEffect:function(l,t){return $e(4194308,4,l,t)},useInsertionEffect:function(l,t){$e(4,2,l,t)},useMemo:function(l,t){var a=xl();t=t===void 0?null:t;var u=l();if(Da){Qt(!0);try{l()}finally{Qt(!1)}}return a.memoizedState=[u,t],u},useReducer:function(l,t,a){var u=xl();if(a!==void 0){var e=a(t);if(Da){Qt(!0);try{a(t)}finally{Qt(!1)}}}else e=t;return u.memoizedState=u.baseState=e,l={pending:null,lanes:0,dispatch:null,lastRenderedReducer:l,lastRenderedState:e},u.queue=l,l=l.dispatch=O0.bind(null,X,l),[u.memoizedState,l]},useRef:function(l){var t=xl();return l={current:l},t.memoizedState=l},useState:function(l){l=Li(l);var t=l.queue,a=lo.bind(null,X,t);return t.dispatch=a,[l.memoizedState,a]},useDebugValue:Vi,useDeferredValue:function(l,t){var a=xl();return Ki(a,l,t)},useTransition:function(){var l=Li(!1);return l=Ws.bind(null,X,l.queue,!0,!1),xl().memoizedState=l,[!1,l]},useSyncExternalStore:function(l,t,a){var u=X,e=xl();if($){if(a===void 0)throw Error(m(407));a=a()}else{if(a=t(),nl===null)throw Error(m(349));(V&124)!==0||ps(u,t,a)}e.memoizedState=a;var n={value:a,getSnapshot:t};return e.queue=n,xs(Os.bind(null,u,n,l),[l]),u.flags|=2048,au(9,We(),zs.bind(null,u,n,a,t),null),a},useId:function(){var l=xl(),t=nl.identifierPrefix;if($){var a=Ut,u=Mt;a=(u&~(1<<32-kl(u)-1)).toString(32)+a,t="«"+t+"R"+a,a=Je++,0Y?(Tl=M,M=null):Tl=M.sibling;var k=h(d,M,r[Y],b);if(k===null){M===null&&(M=Tl);break}l&&M&&k.alternate===null&&t(d,M),o=n(k,o,Y),x===null?D=k:x.sibling=k,x=k,M=Tl}if(Y===r.length)return a(d,M),$&&Ea(d,Y),D;if(M===null){for(;YY?(Tl=M,M=null):Tl=M.sibling;var oa=h(d,M,k.value,b);if(oa===null){M===null&&(M=Tl);break}l&&M&&oa.alternate===null&&t(d,M),o=n(oa,o,Y),x===null?D=oa:x.sibling=oa,x=oa,M=Tl}if(k.done)return a(d,M),$&&Ea(d,Y),D;if(M===null){for(;!k.done;Y++,k=r.next())k=A(d,k.value,b),k!==null&&(o=n(k,o,Y),x===null?D=k:x.sibling=k,x=k);return $&&Ea(d,Y),D}for(M=u(M);!k.done;Y++,k=r.next())k=v(M,d,Y,k.value,b),k!==null&&(l&&k.alternate!==null&&M.delete(k.key===null?Y:k.key),o=n(k,o,Y),x===null?D=k:x.sibling=k,x=k);return l&&M.forEach(function(My){return t(d,My)}),$&&Ea(d,Y),D}function tl(d,o,r,b){if(typeof r=="object"&&r!==null&&r.type===ql&&r.key===null&&(r=r.props.children),typeof r=="object"&&r!==null){switch(r.$$typeof){case el:l:{for(var D=r.key;o!==null;){if(o.key===D){if(D=r.type,D===ql){if(o.tag===7){a(d,o.sibling),b=e(o,r.props.children),b.return=d,d=b;break l}}else if(o.elementType===D||typeof D=="object"&&D!==null&&D.$$typeof===Kl&&no(D)===o.type){a(d,o.sibling),b=e(o,r.props),ku(b,r),b.return=d,d=b;break l}a(d,o);break}else t(d,o);o=o.sibling}r.type===ql?(b=ba(r.props.children,d.mode,b,r.key),b.return=d,d=b):(b=Ce(r.type,r.key,r.props,null,d.mode,b),ku(b,r),b.return=d,d=b)}return i(d);case Bl:l:{for(D=r.key;o!==null;){if(o.key===D)if(o.tag===4&&o.stateNode.containerInfo===r.containerInfo&&o.stateNode.implementation===r.implementation){a(d,o.sibling),b=e(o,r.children||[]),b.return=d,d=b;break l}else{a(d,o);break}else t(d,o);o=o.sibling}b=mi(r,d.mode,b),b.return=d,d=b}return i(d);case Kl:return D=r._init,r=D(r._payload),tl(d,o,r,b)}if(Ul(r))return q(d,o,r,b);if(Ml(r)){if(D=Ml(r),typeof D!="function")throw Error(m(150));return r=D.call(r),N(d,o,r,b)}if(typeof r.then=="function")return tl(d,o,Ie(r),b);if(r.$$typeof===Dl)return tl(d,o,xe(d,r),b);ln(d,r)}return typeof r=="string"&&r!==""||typeof r=="number"||typeof r=="bigint"?(r=""+r,o!==null&&o.tag===6?(a(d,o.sibling),b=e(o,r),b.return=d,d=b):(a(d,o),b=vi(r,d.mode,b),b.return=d,d=b),i(d)):a(d,o)}return function(d,o,r,b){try{wu=0;var D=tl(d,o,r,b);return uu=null,D}catch(M){if(M===ju||M===Le)throw M;var x=$l(29,M,null,d.mode);return x.lanes=b,x.return=d,x}finally{}}}var eu=io(!0),co=io(!1),ft=E(null),bt=null;function Wt(l){var t=l.alternate;p(Sl,Sl.current&1),p(ft,l),bt===null&&(t===null||Ia.current!==null||t.memoizedState!==null)&&(bt=l)}function fo(l){if(l.tag===22){if(p(Sl,Sl.current),p(ft,l),bt===null){var t=l.alternate;t!==null&&t.memoizedState!==null&&(bt=l)}}else $t()}function $t(){p(Sl,Sl.current),p(ft,ft.current)}function Yt(l){O(ft),bt===l&&(bt=null),O(Sl)}var Sl=E(0);function tn(l){for(var t=l;t!==null;){if(t.tag===13){var a=t.memoizedState;if(a!==null&&(a=a.dehydrated,a===null||a.data==="$?"||jc(a)))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if((t.flags&128)!==0)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===l)break;for(;t.sibling===null;){if(t.return===null||t.return===l)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}function Wi(l,t,a,u){t=l.memoizedState,a=a(u,t),a=a==null?t:U({},t,a),l.memoizedState=a,l.lanes===0&&(l.updateQueue.baseState=a)}var $i={enqueueSetState:function(l,t,a){l=l._reactInternals;var u=lt(),e=Jt(u);e.payload=t,a!=null&&(e.callback=a),t=wt(l,e,u),t!==null&&(tt(t,l,u),xu(t,l,u))},enqueueReplaceState:function(l,t,a){l=l._reactInternals;var u=lt(),e=Jt(u);e.tag=1,e.payload=t,a!=null&&(e.callback=a),t=wt(l,e,u),t!==null&&(tt(t,l,u),xu(t,l,u))},enqueueForceUpdate:function(l,t){l=l._reactInternals;var a=lt(),u=Jt(a);u.tag=2,t!=null&&(u.callback=t),t=wt(l,u,a),t!==null&&(tt(t,l,a),xu(t,l,a))}};function so(l,t,a,u,e,n,i){return l=l.stateNode,typeof l.shouldComponentUpdate=="function"?l.shouldComponentUpdate(u,n,i):t.prototype&&t.prototype.isPureReactComponent?!Ru(a,u)||!Ru(e,n):!0}function oo(l,t,a,u){l=t.state,typeof t.componentWillReceiveProps=="function"&&t.componentWillReceiveProps(a,u),typeof t.UNSAFE_componentWillReceiveProps=="function"&&t.UNSAFE_componentWillReceiveProps(a,u),t.state!==l&&$i.enqueueReplaceState(t,t.state,null)}function Ma(l,t){var a=t;if("ref"in t){a={};for(var u in t)u!=="ref"&&(a[u]=t[u])}if(l=l.defaultProps){a===t&&(a=U({},a));for(var e in l)a[e]===void 0&&(a[e]=l[e])}return a}var an=typeof reportError=="function"?reportError:function(l){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof l=="object"&&l!==null&&typeof l.message=="string"?String(l.message):String(l),error:l});if(!window.dispatchEvent(t))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",l);return}console.error(l)};function ro(l){an(l)}function yo(l){console.error(l)}function ho(l){an(l)}function un(l,t){try{var a=l.onUncaughtError;a(t.value,{componentStack:t.stack})}catch(u){setTimeout(function(){throw u})}}function vo(l,t,a){try{var u=l.onCaughtError;u(a.value,{componentStack:a.stack,errorBoundary:t.tag===1?t.stateNode:null})}catch(e){setTimeout(function(){throw e})}}function Fi(l,t,a){return a=Jt(a),a.tag=3,a.payload={element:null},a.callback=function(){un(l,t)},a}function mo(l){return l=Jt(l),l.tag=3,l}function go(l,t,a,u){var e=a.type.getDerivedStateFromError;if(typeof e=="function"){var n=u.value;l.payload=function(){return e(n)},l.callback=function(){vo(t,a,u)}}var i=a.stateNode;i!==null&&typeof i.componentDidCatch=="function"&&(l.callback=function(){vo(t,a,u),typeof e!="function"&&(aa===null?aa=new Set([this]):aa.add(this));var c=u.stack;this.componentDidCatch(u.value,{componentStack:c!==null?c:""})})}function M0(l,t,a,u,e){if(a.flags|=32768,u!==null&&typeof u=="object"&&typeof u.then=="function"){if(t=a.alternate,t!==null&&qu(t,a,e,!0),a=ft.current,a!==null){switch(a.tag){case 13:return bt===null?Ec():a.alternate===null&&rl===0&&(rl=3),a.flags&=-257,a.flags|=65536,a.lanes=e,u===Oi?a.flags|=16384:(t=a.updateQueue,t===null?a.updateQueue=new Set([u]):t.add(u),_c(l,u,e)),!1;case 22:return a.flags|=65536,u===Oi?a.flags|=16384:(t=a.updateQueue,t===null?(t={transitions:null,markerInstances:null,retryQueue:new Set([u])},a.updateQueue=t):(a=t.retryQueue,a===null?t.retryQueue=new Set([u]):a.add(u)),_c(l,u,e)),!1}throw Error(m(435,a.tag))}return _c(l,u,e),Ec(),!1}if($)return t=ft.current,t!==null?((t.flags&65536)===0&&(t.flags|=256),t.flags|=65536,t.lanes=e,u!==bi&&(l=Error(m(422),{cause:u}),Bu(et(l,a)))):(u!==bi&&(t=Error(m(423),{cause:u}),Bu(et(t,a))),l=l.current.alternate,l.flags|=65536,e&=-e,l.lanes|=e,u=et(u,a),e=Fi(l.stateNode,u,e),Ui(l,e),rl!==4&&(rl=2)),!1;var n=Error(m(520),{cause:u});if(n=et(n,a),te===null?te=[n]:te.push(n),rl!==4&&(rl=2),t===null)return!0;u=et(u,a),a=t;do{switch(a.tag){case 3:return a.flags|=65536,l=e&-e,a.lanes|=l,l=Fi(a.stateNode,u,l),Ui(a,l),!1;case 1:if(t=a.type,n=a.stateNode,(a.flags&128)===0&&(typeof t.getDerivedStateFromError=="function"||n!==null&&typeof n.componentDidCatch=="function"&&(aa===null||!aa.has(n))))return a.flags|=65536,e&=-e,a.lanes|=e,e=mo(e),go(e,l,a,u),Ui(a,e),!1}a=a.return}while(a!==null);return!1}var So=Error(m(461)),Al=!1;function pl(l,t,a,u){t.child=l===null?co(t,null,a,u):eu(t,l.child,a,u)}function bo(l,t,a,u,e){a=a.render;var n=t.ref;if("ref"in u){var i={};for(var c in u)c!=="ref"&&(i[c]=u[c])}else i=u;return za(t),u=Bi(l,t,a,i,n,e),c=qi(),l!==null&&!Al?(Ci(l,t,e),Bt(l,t,e)):($&&c&&gi(t),t.flags|=1,pl(l,t,u,e),t.child)}function Ao(l,t,a,u,e){if(l===null){var n=a.type;return typeof n=="function"&&!hi(n)&&n.defaultProps===void 0&&a.compare===null?(t.tag=15,t.type=n,Eo(l,t,n,u,e)):(l=Ce(a.type,null,u,t,t.mode,e),l.ref=t.ref,l.return=t,t.child=l)}if(n=l.child,!nc(l,e)){var i=n.memoizedProps;if(a=a.compare,a=a!==null?a:Ru,a(i,u)&&l.ref===t.ref)return Bt(l,t,e)}return t.flags|=1,l=Dt(n,u),l.ref=t.ref,l.return=t,t.child=l}function Eo(l,t,a,u,e){if(l!==null){var n=l.memoizedProps;if(Ru(n,u)&&l.ref===t.ref)if(Al=!1,t.pendingProps=u=n,nc(l,e))(l.flags&131072)!==0&&(Al=!0);else return t.lanes=l.lanes,Bt(l,t,e)}return Pi(l,t,a,u,e)}function To(l,t,a){var u=t.pendingProps,e=u.children,n=l!==null?l.memoizedState:null;if(u.mode==="hidden"){if((t.flags&128)!==0){if(u=n!==null?n.baseLanes|a:a,l!==null){for(e=t.child=l.child,n=0;e!==null;)n=n|e.lanes|e.childLanes,e=e.sibling;t.childLanes=n&~u}else t.childLanes=0,t.child=null;return _o(l,t,u,a)}if((a&536870912)!==0)t.memoizedState={baseLanes:0,cachePool:null},l!==null&&Qe(t,n!==null?n.cachePool:null),n!==null?As(t,n):Hi(),fo(t);else return t.lanes=t.childLanes=536870912,_o(l,t,n!==null?n.baseLanes|a:a,a)}else n!==null?(Qe(t,n.cachePool),As(t,n),$t(),t.memoizedState=null):(l!==null&&Qe(t,null),Hi(),$t());return pl(l,t,e,a),t.child}function _o(l,t,a,u){var e=zi();return e=e===null?null:{parent:gl._currentValue,pool:e},t.memoizedState={baseLanes:a,cachePool:e},l!==null&&Qe(t,null),Hi(),fo(t),l!==null&&qu(l,t,u,!0),null}function en(l,t){var a=t.ref;if(a===null)l!==null&&l.ref!==null&&(t.flags|=4194816);else{if(typeof a!="function"&&typeof a!="object")throw Error(m(284));(l===null||l.ref!==a)&&(t.flags|=4194816)}}function Pi(l,t,a,u,e){return za(t),a=Bi(l,t,a,u,void 0,e),u=qi(),l!==null&&!Al?(Ci(l,t,e),Bt(l,t,e)):($&&u&&gi(t),t.flags|=1,pl(l,t,a,e),t.child)}function po(l,t,a,u,e,n){return za(t),t.updateQueue=null,a=Ts(t,u,a,e),Es(l),u=qi(),l!==null&&!Al?(Ci(l,t,n),Bt(l,t,n)):($&&u&&gi(t),t.flags|=1,pl(l,t,a,n),t.child)}function zo(l,t,a,u,e){if(za(t),t.stateNode===null){var n=ka,i=a.contextType;typeof i=="object"&&i!==null&&(n=Hl(i)),n=new a(u,n),t.memoizedState=n.state!==null&&n.state!==void 0?n.state:null,n.updater=$i,t.stateNode=n,n._reactInternals=t,n=t.stateNode,n.props=u,n.state=t.memoizedState,n.refs={},Di(t),i=a.contextType,n.context=typeof i=="object"&&i!==null?Hl(i):ka,n.state=t.memoizedState,i=a.getDerivedStateFromProps,typeof i=="function"&&(Wi(t,a,i,u),n.state=t.memoizedState),typeof a.getDerivedStateFromProps=="function"||typeof n.getSnapshotBeforeUpdate=="function"||typeof n.UNSAFE_componentWillMount!="function"&&typeof n.componentWillMount!="function"||(i=n.state,typeof n.componentWillMount=="function"&&n.componentWillMount(),typeof n.UNSAFE_componentWillMount=="function"&&n.UNSAFE_componentWillMount(),i!==n.state&&$i.enqueueReplaceState(n,n.state,null),Lu(t,u,n,e),Qu(),n.state=t.memoizedState),typeof n.componentDidMount=="function"&&(t.flags|=4194308),u=!0}else if(l===null){n=t.stateNode;var c=t.memoizedProps,f=Ma(a,c);n.props=f;var y=n.context,g=a.contextType;i=ka,typeof g=="object"&&g!==null&&(i=Hl(g));var A=a.getDerivedStateFromProps;g=typeof A=="function"||typeof n.getSnapshotBeforeUpdate=="function",c=t.pendingProps!==c,g||typeof n.UNSAFE_componentWillReceiveProps!="function"&&typeof n.componentWillReceiveProps!="function"||(c||y!==i)&&oo(t,n,u,i),Kt=!1;var h=t.memoizedState;n.state=h,Lu(t,u,n,e),Qu(),y=t.memoizedState,c||h!==y||Kt?(typeof A=="function"&&(Wi(t,a,A,u),y=t.memoizedState),(f=Kt||so(t,a,f,u,h,y,i))?(g||typeof n.UNSAFE_componentWillMount!="function"&&typeof n.componentWillMount!="function"||(typeof n.componentWillMount=="function"&&n.componentWillMount(),typeof n.UNSAFE_componentWillMount=="function"&&n.UNSAFE_componentWillMount()),typeof n.componentDidMount=="function"&&(t.flags|=4194308)):(typeof n.componentDidMount=="function"&&(t.flags|=4194308),t.memoizedProps=u,t.memoizedState=y),n.props=u,n.state=y,n.context=i,u=f):(typeof n.componentDidMount=="function"&&(t.flags|=4194308),u=!1)}else{n=t.stateNode,Mi(l,t),i=t.memoizedProps,g=Ma(a,i),n.props=g,A=t.pendingProps,h=n.context,y=a.contextType,f=ka,typeof y=="object"&&y!==null&&(f=Hl(y)),c=a.getDerivedStateFromProps,(y=typeof c=="function"||typeof n.getSnapshotBeforeUpdate=="function")||typeof n.UNSAFE_componentWillReceiveProps!="function"&&typeof n.componentWillReceiveProps!="function"||(i!==A||h!==f)&&oo(t,n,u,f),Kt=!1,h=t.memoizedState,n.state=h,Lu(t,u,n,e),Qu();var v=t.memoizedState;i!==A||h!==v||Kt||l!==null&&l.dependencies!==null&&Xe(l.dependencies)?(typeof c=="function"&&(Wi(t,a,c,u),v=t.memoizedState),(g=Kt||so(t,a,g,u,h,v,f)||l!==null&&l.dependencies!==null&&Xe(l.dependencies))?(y||typeof n.UNSAFE_componentWillUpdate!="function"&&typeof n.componentWillUpdate!="function"||(typeof n.componentWillUpdate=="function"&&n.componentWillUpdate(u,v,f),typeof n.UNSAFE_componentWillUpdate=="function"&&n.UNSAFE_componentWillUpdate(u,v,f)),typeof n.componentDidUpdate=="function"&&(t.flags|=4),typeof n.getSnapshotBeforeUpdate=="function"&&(t.flags|=1024)):(typeof n.componentDidUpdate!="function"||i===l.memoizedProps&&h===l.memoizedState||(t.flags|=4),typeof n.getSnapshotBeforeUpdate!="function"||i===l.memoizedProps&&h===l.memoizedState||(t.flags|=1024),t.memoizedProps=u,t.memoizedState=v),n.props=u,n.state=v,n.context=f,u=g):(typeof n.componentDidUpdate!="function"||i===l.memoizedProps&&h===l.memoizedState||(t.flags|=4),typeof n.getSnapshotBeforeUpdate!="function"||i===l.memoizedProps&&h===l.memoizedState||(t.flags|=1024),u=!1)}return n=u,en(l,t),u=(t.flags&128)!==0,n||u?(n=t.stateNode,a=u&&typeof a.getDerivedStateFromError!="function"?null:n.render(),t.flags|=1,l!==null&&u?(t.child=eu(t,l.child,null,e),t.child=eu(t,null,a,e)):pl(l,t,a,e),t.memoizedState=n.state,l=t.child):l=Bt(l,t,e),l}function Oo(l,t,a,u){return Yu(),t.flags|=256,pl(l,t,a,u),t.child}var Ii={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function lc(l){return{baseLanes:l,cachePool:rs()}}function tc(l,t,a){return l=l!==null?l.childLanes&~a:0,t&&(l|=st),l}function Do(l,t,a){var u=t.pendingProps,e=!1,n=(t.flags&128)!==0,i;if((i=n)||(i=l!==null&&l.memoizedState===null?!1:(Sl.current&2)!==0),i&&(e=!0,t.flags&=-129),i=(t.flags&32)!==0,t.flags&=-33,l===null){if($){if(e?Wt(t):$t(),$){var c=dl,f;if(f=c){l:{for(f=c,c=St;f.nodeType!==8;){if(!c){c=null;break l}if(f=vt(f.nextSibling),f===null){c=null;break l}}c=f}c!==null?(t.memoizedState={dehydrated:c,treeContext:Aa!==null?{id:Mt,overflow:Ut}:null,retryLane:536870912,hydrationErrors:null},f=$l(18,null,null,0),f.stateNode=c,f.return=t,t.child=f,Cl=t,dl=null,f=!0):f=!1}f||_a(t)}if(c=t.memoizedState,c!==null&&(c=c.dehydrated,c!==null))return jc(c)?t.lanes=32:t.lanes=536870912,null;Yt(t)}return c=u.children,u=u.fallback,e?($t(),e=t.mode,c=nn({mode:"hidden",children:c},e),u=ba(u,e,a,null),c.return=t,u.return=t,c.sibling=u,t.child=c,e=t.child,e.memoizedState=lc(a),e.childLanes=tc(l,i,a),t.memoizedState=Ii,u):(Wt(t),ac(t,c))}if(f=l.memoizedState,f!==null&&(c=f.dehydrated,c!==null)){if(n)t.flags&256?(Wt(t),t.flags&=-257,t=uc(l,t,a)):t.memoizedState!==null?($t(),t.child=l.child,t.flags|=128,t=null):($t(),e=u.fallback,c=t.mode,u=nn({mode:"visible",children:u.children},c),e=ba(e,c,a,null),e.flags|=2,u.return=t,e.return=t,u.sibling=e,t.child=u,eu(t,l.child,null,a),u=t.child,u.memoizedState=lc(a),u.childLanes=tc(l,i,a),t.memoizedState=Ii,t=e);else if(Wt(t),jc(c)){if(i=c.nextSibling&&c.nextSibling.dataset,i)var y=i.dgst;i=y,u=Error(m(419)),u.stack="",u.digest=i,Bu({value:u,source:null,stack:null}),t=uc(l,t,a)}else if(Al||qu(l,t,a,!1),i=(a&l.childLanes)!==0,Al||i){if(i=nl,i!==null&&(u=a&-a,u=(u&42)!==0?1:Xn(u),u=(u&(i.suspendedLanes|a))!==0?0:u,u!==0&&u!==f.retryLane))throw f.retryLane=u,wa(l,u),tt(i,l,u),So;c.data==="$?"||Ec(),t=uc(l,t,a)}else c.data==="$?"?(t.flags|=192,t.child=l.child,t=null):(l=f.treeContext,dl=vt(c.nextSibling),Cl=t,$=!0,Ta=null,St=!1,l!==null&&(it[ct++]=Mt,it[ct++]=Ut,it[ct++]=Aa,Mt=l.id,Ut=l.overflow,Aa=t),t=ac(t,u.children),t.flags|=4096);return t}return e?($t(),e=u.fallback,c=t.mode,f=l.child,y=f.sibling,u=Dt(f,{mode:"hidden",children:u.children}),u.subtreeFlags=f.subtreeFlags&65011712,y!==null?e=Dt(y,e):(e=ba(e,c,a,null),e.flags|=2),e.return=t,u.return=t,u.sibling=e,t.child=u,u=e,e=t.child,c=l.child.memoizedState,c===null?c=lc(a):(f=c.cachePool,f!==null?(y=gl._currentValue,f=f.parent!==y?{parent:y,pool:y}:f):f=rs(),c={baseLanes:c.baseLanes|a,cachePool:f}),e.memoizedState=c,e.childLanes=tc(l,i,a),t.memoizedState=Ii,u):(Wt(t),a=l.child,l=a.sibling,a=Dt(a,{mode:"visible",children:u.children}),a.return=t,a.sibling=null,l!==null&&(i=t.deletions,i===null?(t.deletions=[l],t.flags|=16):i.push(l)),t.child=a,t.memoizedState=null,a)}function ac(l,t){return t=nn({mode:"visible",children:t},l.mode),t.return=l,l.child=t}function nn(l,t){return l=$l(22,l,null,t),l.lanes=0,l.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null},l}function uc(l,t,a){return eu(t,l.child,null,a),l=ac(t,t.pendingProps.children),l.flags|=2,t.memoizedState=null,l}function Mo(l,t,a){l.lanes|=t;var u=l.alternate;u!==null&&(u.lanes|=t),Ei(l.return,t,a)}function ec(l,t,a,u,e){var n=l.memoizedState;n===null?l.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:u,tail:a,tailMode:e}:(n.isBackwards=t,n.rendering=null,n.renderingStartTime=0,n.last=u,n.tail=a,n.tailMode=e)}function Uo(l,t,a){var u=t.pendingProps,e=u.revealOrder,n=u.tail;if(pl(l,t,u.children,a),u=Sl.current,(u&2)!==0)u=u&1|2,t.flags|=128;else{if(l!==null&&(l.flags&128)!==0)l:for(l=t.child;l!==null;){if(l.tag===13)l.memoizedState!==null&&Mo(l,a,t);else if(l.tag===19)Mo(l,a,t);else if(l.child!==null){l.child.return=l,l=l.child;continue}if(l===t)break l;for(;l.sibling===null;){if(l.return===null||l.return===t)break l;l=l.return}l.sibling.return=l.return,l=l.sibling}u&=1}switch(p(Sl,u),e){case"forwards":for(a=t.child,e=null;a!==null;)l=a.alternate,l!==null&&tn(l)===null&&(e=a),a=a.sibling;a=e,a===null?(e=t.child,t.child=null):(e=a.sibling,a.sibling=null),ec(t,!1,e,a,n);break;case"backwards":for(a=null,e=t.child,t.child=null;e!==null;){if(l=e.alternate,l!==null&&tn(l)===null){t.child=e;break}l=e.sibling,e.sibling=a,a=e,e=l}ec(t,!0,a,null,n);break;case"together":ec(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function Bt(l,t,a){if(l!==null&&(t.dependencies=l.dependencies),ta|=t.lanes,(a&t.childLanes)===0)if(l!==null){if(qu(l,t,a,!1),(a&t.childLanes)===0)return null}else return null;if(l!==null&&t.child!==l.child)throw Error(m(153));if(t.child!==null){for(l=t.child,a=Dt(l,l.pendingProps),t.child=a,a.return=t;l.sibling!==null;)l=l.sibling,a=a.sibling=Dt(l,l.pendingProps),a.return=t;a.sibling=null}return t.child}function nc(l,t){return(l.lanes&t)!==0?!0:(l=l.dependencies,!!(l!==null&&Xe(l)))}function U0(l,t,a){switch(t.tag){case 3:cl(t,t.stateNode.containerInfo),Vt(t,gl,l.memoizedState.cache),Yu();break;case 27:case 5:Bn(t);break;case 4:cl(t,t.stateNode.containerInfo);break;case 10:Vt(t,t.type,t.memoizedProps.value);break;case 13:var u=t.memoizedState;if(u!==null)return u.dehydrated!==null?(Wt(t),t.flags|=128,null):(a&t.child.childLanes)!==0?Do(l,t,a):(Wt(t),l=Bt(l,t,a),l!==null?l.sibling:null);Wt(t);break;case 19:var e=(l.flags&128)!==0;if(u=(a&t.childLanes)!==0,u||(qu(l,t,a,!1),u=(a&t.childLanes)!==0),e){if(u)return Uo(l,t,a);t.flags|=128}if(e=t.memoizedState,e!==null&&(e.rendering=null,e.tail=null,e.lastEffect=null),p(Sl,Sl.current),u)break;return null;case 22:case 23:return t.lanes=0,To(l,t,a);case 24:Vt(t,gl,l.memoizedState.cache)}return Bt(l,t,a)}function Ro(l,t,a){if(l!==null)if(l.memoizedProps!==t.pendingProps)Al=!0;else{if(!nc(l,a)&&(t.flags&128)===0)return Al=!1,U0(l,t,a);Al=(l.flags&131072)!==0}else Al=!1,$&&(t.flags&1048576)!==0&&ns(t,je,t.index);switch(t.lanes=0,t.tag){case 16:l:{l=t.pendingProps;var u=t.elementType,e=u._init;if(u=e(u._payload),t.type=u,typeof u=="function")hi(u)?(l=Ma(u,l),t.tag=1,t=zo(null,t,u,l,a)):(t.tag=0,t=Pi(null,t,u,l,a));else{if(u!=null){if(e=u.$$typeof,e===rt){t.tag=11,t=bo(null,t,u,l,a);break l}else if(e===Vl){t.tag=14,t=Ao(null,t,u,l,a);break l}}throw t=ya(u)||u,Error(m(306,t,""))}}return t;case 0:return Pi(l,t,t.type,t.pendingProps,a);case 1:return u=t.type,e=Ma(u,t.pendingProps),zo(l,t,u,e,a);case 3:l:{if(cl(t,t.stateNode.containerInfo),l===null)throw Error(m(387));u=t.pendingProps;var n=t.memoizedState;e=n.element,Mi(l,t),Lu(t,u,null,a);var i=t.memoizedState;if(u=i.cache,Vt(t,gl,u),u!==n.cache&&Ti(t,[gl],a,!0),Qu(),u=i.element,n.isDehydrated)if(n={element:u,isDehydrated:!1,cache:i.cache},t.updateQueue.baseState=n,t.memoizedState=n,t.flags&256){t=Oo(l,t,u,a);break l}else if(u!==e){e=et(Error(m(424)),t),Bu(e),t=Oo(l,t,u,a);break l}else{switch(l=t.stateNode.containerInfo,l.nodeType){case 9:l=l.body;break;default:l=l.nodeName==="HTML"?l.ownerDocument.body:l}for(dl=vt(l.firstChild),Cl=t,$=!0,Ta=null,St=!0,a=co(t,null,u,a),t.child=a;a;)a.flags=a.flags&-3|4096,a=a.sibling}else{if(Yu(),u===e){t=Bt(l,t,a);break l}pl(l,t,u,a)}t=t.child}return t;case 26:return en(l,t),l===null?(a=Bd(t.type,null,t.pendingProps,null))?t.memoizedState=a:$||(a=t.type,l=t.pendingProps,u=An(G.current).createElement(a),u[Rl]=t,u[jl]=l,Ol(u,a,l),bl(u),t.stateNode=u):t.memoizedState=Bd(t.type,l.memoizedProps,t.pendingProps,l.memoizedState),null;case 27:return Bn(t),l===null&&$&&(u=t.stateNode=Hd(t.type,t.pendingProps,G.current),Cl=t,St=!0,e=dl,na(t.type)?(Xc=e,dl=vt(u.firstChild)):dl=e),pl(l,t,t.pendingProps.children,a),en(l,t),l===null&&(t.flags|=4194304),t.child;case 5:return l===null&&$&&((e=u=dl)&&(u=uy(u,t.type,t.pendingProps,St),u!==null?(t.stateNode=u,Cl=t,dl=vt(u.firstChild),St=!1,e=!0):e=!1),e||_a(t)),Bn(t),e=t.type,n=t.pendingProps,i=l!==null?l.memoizedProps:null,u=n.children,qc(e,n)?u=null:i!==null&&qc(e,i)&&(t.flags|=32),t.memoizedState!==null&&(e=Bi(l,t,E0,null,null,a),oe._currentValue=e),en(l,t),pl(l,t,u,a),t.child;case 6:return l===null&&$&&((l=a=dl)&&(a=ey(a,t.pendingProps,St),a!==null?(t.stateNode=a,Cl=t,dl=null,l=!0):l=!1),l||_a(t)),null;case 13:return Do(l,t,a);case 4:return cl(t,t.stateNode.containerInfo),u=t.pendingProps,l===null?t.child=eu(t,null,u,a):pl(l,t,u,a),t.child;case 11:return bo(l,t,t.type,t.pendingProps,a);case 7:return pl(l,t,t.pendingProps,a),t.child;case 8:return pl(l,t,t.pendingProps.children,a),t.child;case 12:return pl(l,t,t.pendingProps.children,a),t.child;case 10:return u=t.pendingProps,Vt(t,t.type,u.value),pl(l,t,u.children,a),t.child;case 9:return e=t.type._context,u=t.pendingProps.children,za(t),e=Hl(e),u=u(e),t.flags|=1,pl(l,t,u,a),t.child;case 14:return Ao(l,t,t.type,t.pendingProps,a);case 15:return Eo(l,t,t.type,t.pendingProps,a);case 19:return Uo(l,t,a);case 31:return u=t.pendingProps,a=t.mode,u={mode:u.mode,children:u.children},l===null?(a=nn(u,a),a.ref=t.ref,t.child=a,a.return=t,t=a):(a=Dt(l.child,u),a.ref=t.ref,t.child=a,a.return=t,t=a),t;case 22:return To(l,t,a);case 24:return za(t),u=Hl(gl),l===null?(e=zi(),e===null&&(e=nl,n=_i(),e.pooledCache=n,n.refCount++,n!==null&&(e.pooledCacheLanes|=a),e=n),t.memoizedState={parent:u,cache:e},Di(t),Vt(t,gl,e)):((l.lanes&a)!==0&&(Mi(l,t),Lu(t,null,null,a),Qu()),e=l.memoizedState,n=t.memoizedState,e.parent!==u?(e={parent:u,cache:u},t.memoizedState=e,t.lanes===0&&(t.memoizedState=t.updateQueue.baseState=e),Vt(t,gl,u)):(u=n.cache,Vt(t,gl,u),u!==e.cache&&Ti(t,[gl],a,!0))),pl(l,t,t.pendingProps.children,a),t.child;case 29:throw t.pendingProps}throw Error(m(156,t.tag))}function qt(l){l.flags|=4}function Ho(l,t){if(t.type!=="stylesheet"||(t.state.loading&4)!==0)l.flags&=-16777217;else if(l.flags|=16777216,!Xd(t)){if(t=ft.current,t!==null&&((V&4194048)===V?bt!==null:(V&62914560)!==V&&(V&536870912)===0||t!==bt))throw Xu=Oi,ys;l.flags|=8192}}function cn(l,t){t!==null&&(l.flags|=4),l.flags&16384&&(t=l.tag!==22?ff():536870912,l.lanes|=t,fu|=t)}function Wu(l,t){if(!$)switch(l.tailMode){case"hidden":t=l.tail;for(var a=null;t!==null;)t.alternate!==null&&(a=t),t=t.sibling;a===null?l.tail=null:a.sibling=null;break;case"collapsed":a=l.tail;for(var u=null;a!==null;)a.alternate!==null&&(u=a),a=a.sibling;u===null?t||l.tail===null?l.tail=null:l.tail.sibling=null:u.sibling=null}}function ol(l){var t=l.alternate!==null&&l.alternate.child===l.child,a=0,u=0;if(t)for(var e=l.child;e!==null;)a|=e.lanes|e.childLanes,u|=e.subtreeFlags&65011712,u|=e.flags&65011712,e.return=l,e=e.sibling;else for(e=l.child;e!==null;)a|=e.lanes|e.childLanes,u|=e.subtreeFlags,u|=e.flags,e.return=l,e=e.sibling;return l.subtreeFlags|=u,l.childLanes=a,t}function R0(l,t,a){var u=t.pendingProps;switch(Si(t),t.tag){case 31:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return ol(t),null;case 1:return ol(t),null;case 3:return a=t.stateNode,u=null,l!==null&&(u=l.memoizedState.cache),t.memoizedState.cache!==u&&(t.flags|=2048),Ht(gl),xt(),a.pendingContext&&(a.context=a.pendingContext,a.pendingContext=null),(l===null||l.child===null)&&(Nu(t)?qt(t):l===null||l.memoizedState.isDehydrated&&(t.flags&256)===0||(t.flags|=1024,fs())),ol(t),null;case 26:return a=t.memoizedState,l===null?(qt(t),a!==null?(ol(t),Ho(t,a)):(ol(t),t.flags&=-16777217)):a?a!==l.memoizedState?(qt(t),ol(t),Ho(t,a)):(ol(t),t.flags&=-16777217):(l.memoizedProps!==u&&qt(t),ol(t),t.flags&=-16777217),null;case 27:ge(t),a=G.current;var e=t.type;if(l!==null&&t.stateNode!=null)l.memoizedProps!==u&&qt(t);else{if(!u){if(t.stateNode===null)throw Error(m(166));return ol(t),null}l=H.current,Nu(t)?is(t):(l=Hd(e,u,a),t.stateNode=l,qt(t))}return ol(t),null;case 5:if(ge(t),a=t.type,l!==null&&t.stateNode!=null)l.memoizedProps!==u&&qt(t);else{if(!u){if(t.stateNode===null)throw Error(m(166));return ol(t),null}if(l=H.current,Nu(t))is(t);else{switch(e=An(G.current),l){case 1:l=e.createElementNS("http://www.w3.org/2000/svg",a);break;case 2:l=e.createElementNS("http://www.w3.org/1998/Math/MathML",a);break;default:switch(a){case"svg":l=e.createElementNS("http://www.w3.org/2000/svg",a);break;case"math":l=e.createElementNS("http://www.w3.org/1998/Math/MathML",a);break;case"script":l=e.createElement("div"),l.innerHTML=" + + + +
+ + diff --git a/week1/project/ecommerce/dist/vite.svg b/week1/project/ecommerce/dist/vite.svg new file mode 100644 index 0000000000..e7b8dfb1b2 --- /dev/null +++ b/week1/project/ecommerce/dist/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file From f871e5a136b1d4569c3c86c6e7585eabb0c8cdcb Mon Sep 17 00:00:00 2001 From: aleksandrstarshynov Date: Mon, 16 Jun 2025 16:07:41 +0200 Subject: [PATCH 3/3] production link added --- week1/project/README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/week1/project/README.md b/week1/project/README.md index ea70341f1a..6f714478e2 100644 --- a/week1/project/README.md +++ b/week1/project/README.md @@ -1,3 +1,9 @@ +Here is the link to the Production: +https://ecommerce-starshynov.netlify.app/ + + + + # Ecommerce Project I ## 1. Setup