From 0f56e1e7fb72d35c251fbfb0456757e7b7ff6bb9 Mon Sep 17 00:00:00 2001 From: Spencer Lochne Date: Tue, 10 Jun 2025 11:43:10 -0400 Subject: [PATCH] 11e Solution --- .../chatbot-project-ts/eslint.config.js | 1 + .../lesson-11/chatbot-project-ts/index.html | 2 - .../chatbot-project-ts/package-lock.json | 1980 ++++++++++++++++- .../lesson-11/chatbot-project-ts/package.json | 7 +- .../lesson-11/chatbot-project-ts/src/App.css | 49 +- .../lesson-11/chatbot-project-ts/src/App.tsx | 66 +- .../chatbot-project-ts/src/assets/robot.png | Bin 0 -> 17124 bytes .../chatbot-project-ts/src/assets/user.png | Bin 0 -> 13859 bytes .../src/components/ChatInput.css | 24 + .../src/components/ChatInput.jsx | 52 + .../src/components/ChatMessage.css | 24 + .../src/components/ChatMessage.jsx | 38 + .../src/components/ChatMessages.css | 7 + .../src/components/ChatMessages.jsx | 30 + .../chatbot-project-ts/src/index.css | 71 +- .../lesson-11/chatbot-project-ts/src/main.tsx | 4 +- .../chatbot-project-ts/vite.config.ts | 6 +- 17 files changed, 2205 insertions(+), 156 deletions(-) create mode 100644 2-copy-of-code/lesson-11/chatbot-project-ts/src/assets/robot.png create mode 100644 2-copy-of-code/lesson-11/chatbot-project-ts/src/assets/user.png create mode 100644 2-copy-of-code/lesson-11/chatbot-project-ts/src/components/ChatInput.css create mode 100644 2-copy-of-code/lesson-11/chatbot-project-ts/src/components/ChatInput.jsx create mode 100644 2-copy-of-code/lesson-11/chatbot-project-ts/src/components/ChatMessage.css create mode 100644 2-copy-of-code/lesson-11/chatbot-project-ts/src/components/ChatMessage.jsx create mode 100644 2-copy-of-code/lesson-11/chatbot-project-ts/src/components/ChatMessages.css create mode 100644 2-copy-of-code/lesson-11/chatbot-project-ts/src/components/ChatMessages.jsx diff --git a/2-copy-of-code/lesson-11/chatbot-project-ts/eslint.config.js b/2-copy-of-code/lesson-11/chatbot-project-ts/eslint.config.js index 092408a..10aacc3 100644 --- a/2-copy-of-code/lesson-11/chatbot-project-ts/eslint.config.js +++ b/2-copy-of-code/lesson-11/chatbot-project-ts/eslint.config.js @@ -23,6 +23,7 @@ export default tseslint.config( 'warn', { allowConstantExport: true }, ], + 'react/prop-types': 'off' }, }, ) diff --git a/2-copy-of-code/lesson-11/chatbot-project-ts/index.html b/2-copy-of-code/lesson-11/chatbot-project-ts/index.html index e4b78ea..84b7eb6 100644 --- a/2-copy-of-code/lesson-11/chatbot-project-ts/index.html +++ b/2-copy-of-code/lesson-11/chatbot-project-ts/index.html @@ -2,9 +2,7 @@ - - Vite + React + TS
diff --git a/2-copy-of-code/lesson-11/chatbot-project-ts/package-lock.json b/2-copy-of-code/lesson-11/chatbot-project-ts/package-lock.json index e4c72dc..64220e5 100644 --- a/2-copy-of-code/lesson-11/chatbot-project-ts/package-lock.json +++ b/2-copy-of-code/lesson-11/chatbot-project-ts/package-lock.json @@ -9,14 +9,17 @@ "version": "0.0.0", "dependencies": { "react": "^19.1.0", - "react-dom": "^19.1.0" + "react-dom": "^19.1.0", + "supersimpledev": "^8.6.2" }, "devDependencies": { "@eslint/js": "^9.25.0", "@types/react": "^19.1.2", "@types/react-dom": "^19.1.2", "@vitejs/plugin-react": "^4.4.1", + "babel-plugin-react-compiler": "^19.1.0-rc.2", "eslint": "^9.25.0", + "eslint-plugin-react": "^7.37.2", "eslint-plugin-react-hooks": "^5.2.0", "eslint-plugin-react-refresh": "^0.4.19", "globals": "^16.0.0", @@ -1777,6 +1780,180 @@ "dev": true, "license": "Python-2.0" }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", + "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.0", + "es-object-atoms": "^1.1.1", + "get-intrinsic": "^1.3.0", + "is-string": "^1.1.1", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/babel-plugin-react-compiler": { + "version": "19.1.0-rc.2", + "resolved": "https://registry.npmjs.org/babel-plugin-react-compiler/-/babel-plugin-react-compiler-19.1.0-rc.2.tgz", + "integrity": "sha512-kSNA//p5fMO6ypG8EkEVPIqAjwIXm5tMjfD1XRPL/sRjYSbJ6UsvORfaeolNWnZ9n310aM0xJP7peW26BuCVzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.26.0" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -1841,6 +2018,56 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -1945,6 +2172,60 @@ "dev": true, "license": "MIT" }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/debug": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", @@ -1970,6 +2251,70 @@ "dev": true, "license": "MIT" }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/electron-to-chromium": { "version": "1.5.166", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.166.tgz", @@ -1977,6 +2322,183 @@ "dev": true, "license": "ISC" }, + "node_modules/es-abstract": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", + "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.2.1", + "is-set": "^2.0.3", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.1", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.4", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.19" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", + "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.6", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "iterator.prototype": "^1.1.4", + "safe-array-concat": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/esbuild": { "version": "0.25.5", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.5.tgz", @@ -2102,6 +2624,39 @@ } } }, + "node_modules/eslint-plugin-react": { + "version": "7.37.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", + "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.3", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.2.1", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.9", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.1", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.12", + "string.prototype.repeat": "^1.0.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + } + }, "node_modules/eslint-plugin-react-hooks": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", @@ -2344,6 +2899,22 @@ "dev": true, "license": "ISC" }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -2359,9 +2930,50 @@ "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", + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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", @@ -2369,6 +2981,63 @@ "node": ">=6.9.0" } }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/glob-parent": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", @@ -2395,6 +3064,36 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", @@ -2402,6 +3101,19 @@ "dev": true, "license": "MIT" }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -2412,6 +3124,77 @@ "node": ">=8" } }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -2449,6 +3232,156 @@ "node": ">=0.8.19" } }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -2459,6 +3392,41 @@ "node": ">=0.10.0" } }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -2472,6 +3440,32 @@ "node": ">=0.10.0" } }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -2482,6 +3476,175 @@ "node": ">=0.12.0" } }, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -2489,6 +3652,24 @@ "dev": true, "license": "ISC" }, + "node_modules/iterator.prototype": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", + "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "get-proto": "^1.0.0", + "has-symbols": "^1.1.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -2556,6 +3737,22 @@ "node": ">=6" } }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", @@ -2603,6 +3800,19 @@ "dev": true, "license": "MIT" }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -2613,6 +3823,16 @@ "yallist": "^3.0.2" } }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -2690,6 +3910,114 @@ "dev": true, "license": "MIT" }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", + "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/optionator": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", @@ -2708,6 +4036,24 @@ "node": ">= 0.8.0" } }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -2773,6 +4119,13 @@ "node": ">=8" } }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -2793,6 +4146,16 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/postcss": { "version": "8.5.4", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.4.tgz", @@ -2832,6 +4195,18 @@ "node": ">= 0.8.0" } }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -2869,29 +4244,98 @@ "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", "license": "MIT", "engines": { - "node": ">=0.10.0" + "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-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true, + "license": "MIT" + }, + "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/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/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==", + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dev": true, "license": "MIT", "dependencies": { - "scheduler": "^0.26.0" + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" }, - "peerDependencies": { - "react": "^19.1.0" + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", "dev": true, "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/resolve-from": { @@ -2986,6 +4430,61 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/scheduler": { "version": "0.26.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", @@ -3002,6 +4501,55 @@ "semver": "bin/semver.js" } }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -3025,6 +4573,82 @@ "node": ">=8" } }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", @@ -3035,6 +4659,118 @@ "node": ">=0.10.0" } }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", + "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.3", + "set-function-name": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -3048,6 +4784,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/supersimpledev": { + "version": "8.6.2", + "resolved": "https://registry.npmjs.org/supersimpledev/-/supersimpledev-8.6.2.tgz", + "integrity": "sha512-UEY06zo4vpMn2i+b0WBLdTuwRBS0/xwlVOPLIIDZe3ERg5xDW5tqr16XRt4TMD3mooapsqIJY6VIv86aXfEqNw==", + "license": "MIT", + "bin": { + "supersimpledev": "bin/supersimpledev.js" + } + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -3061,6 +4806,19 @@ "node": ">=8" } }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/tinyglobby": { "version": "0.2.14", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", @@ -3145,6 +4903,84 @@ "node": ">= 0.8.0" } }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/typescript": { "version": "5.8.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", @@ -3182,6 +5018,25 @@ "typescript": ">=4.8.4 <5.9.0" } }, + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/update-browserslist-db": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", @@ -3342,6 +5197,95 @@ "node": ">= 8" } }, + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/word-wrap": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", diff --git a/2-copy-of-code/lesson-11/chatbot-project-ts/package.json b/2-copy-of-code/lesson-11/chatbot-project-ts/package.json index b72190e..dfd657f 100644 --- a/2-copy-of-code/lesson-11/chatbot-project-ts/package.json +++ b/2-copy-of-code/lesson-11/chatbot-project-ts/package.json @@ -11,7 +11,8 @@ }, "dependencies": { "react": "^19.1.0", - "react-dom": "^19.1.0" + "react-dom": "^19.1.0", + "supersimpledev": "^8.6.2" }, "devDependencies": { "@eslint/js": "^9.25.0", @@ -24,6 +25,8 @@ "globals": "^16.0.0", "typescript": "~5.8.3", "typescript-eslint": "^8.30.1", - "vite": "^6.3.5" + "vite": "^6.3.5", + "babel-plugin-react-compiler": "^19.1.0-rc.2", + "eslint-plugin-react": "^7.37.2" } } diff --git a/2-copy-of-code/lesson-11/chatbot-project-ts/src/App.css b/2-copy-of-code/lesson-11/chatbot-project-ts/src/App.css index b9d355d..142dcc2 100644 --- a/2-copy-of-code/lesson-11/chatbot-project-ts/src/App.css +++ b/2-copy-of-code/lesson-11/chatbot-project-ts/src/App.css @@ -1,42 +1,9 @@ -#root { - max-width: 1280px; - margin: 0 auto; - padding: 2rem; - text-align: center; -} - -.logo { - height: 6em; - padding: 1.5em; - will-change: filter; - transition: filter 300ms; -} -.logo:hover { - filter: drop-shadow(0 0 2em #646cffaa); -} -.logo.react:hover { - filter: drop-shadow(0 0 2em #61dafbaa); -} - -@keyframes logo-spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} - -@media (prefers-reduced-motion: no-preference) { - a:nth-of-type(2) .logo { - animation: logo-spin infinite 20s linear; - } -} - -.card { - padding: 2em; -} - -.read-the-docs { - color: #888; +.app-container { + max-width: 600px; + margin-left: auto; + margin-right: auto; + + height: 100vh; + display: flex; + flex-direction: column; } diff --git a/2-copy-of-code/lesson-11/chatbot-project-ts/src/App.tsx b/2-copy-of-code/lesson-11/chatbot-project-ts/src/App.tsx index 3d7ded3..bddda9f 100644 --- a/2-copy-of-code/lesson-11/chatbot-project-ts/src/App.tsx +++ b/2-copy-of-code/lesson-11/chatbot-project-ts/src/App.tsx @@ -1,35 +1,55 @@ import { useState } from 'react' -import reactLogo from './assets/react.svg' -import viteLogo from '/vite.svg' +import { ChatInput } from './components/ChatInput'; +import ChatMessages from './components/ChatMessages'; +import RobotProfileImage from './assets/robot.png'; import './App.css' function App() { - const [count, setCount] = useState(0) + const [chatMessages, setChatMessages] = useState([{ + message: 'hello chatbot', + sender: 'user', + id: 'id1' + }, { + message: 'Hello! How can I help you?', + sender: 'robot', + id: 'id2' + }, { + message: 'can you get me todays date?', + sender: 'user', + id: 'id3' + }, { + message: 'Today is September 27', + sender: 'robot', + id: 'id4' + }]); + // const [chatMessages, setChatMessages] = array; + // const chatMessages = array[0]; + // const setChatMessages = array[1]; + + // Note: in React, {chatMessages.length} Messages + // counts as putting 2 pieces of text in like this: + // <title>{chatMessages.length} {'Messages'} + // + // The element may not support this. That's why we + // save it in a variable first and insert it as 1 text. + const title = `${chatMessages.length} Messages`; return ( <> - <div> - <a href="https://vite.dev" target="_blank"> - <img src={viteLogo} className="logo" alt="Vite logo" /> - </a> - <a href="https://react.dev" target="_blank"> - <img src={reactLogo} className="logo react" alt="React logo" /> - </a> - </div> - <h1>Vite + React</h1> - <div className="card"> - <button onClick={() => setCount((count) => count + 1)}> - count is {count} - </button> - <p> - Edit <code>src/App.tsx</code> and save to test HMR - </p> + <title>{title} + + +
+ +
-

- Click on the Vite and React logos to learn more -

- ) + ); } export default App diff --git a/2-copy-of-code/lesson-11/chatbot-project-ts/src/assets/robot.png b/2-copy-of-code/lesson-11/chatbot-project-ts/src/assets/robot.png new file mode 100644 index 0000000000000000000000000000000000000000..e28f255ddbb9856bdef81c07fa5f07a3a0a3e769 GIT binary patch literal 17124 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 literal 0 HcmV?d00001 diff --git a/2-copy-of-code/lesson-11/chatbot-project-ts/src/assets/user.png b/2-copy-of-code/lesson-11/chatbot-project-ts/src/assets/user.png new file mode 100644 index 0000000000000000000000000000000000000000..15ec53461a3a2297acda76f0d15595c37f64bfbd GIT binary patch literal 13859 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 SBaw_fFgamikf-Mw_5T2|JtL3+ literal 0 HcmV?d00001 diff --git a/2-copy-of-code/lesson-11/chatbot-project-ts/src/components/ChatInput.css b/2-copy-of-code/lesson-11/chatbot-project-ts/src/components/ChatInput.css new file mode 100644 index 0000000..950031a --- /dev/null +++ b/2-copy-of-code/lesson-11/chatbot-project-ts/src/components/ChatInput.css @@ -0,0 +1,24 @@ +.send-button { + background-color: rgb(25, 135, 84); + color: white; + padding: 12px 20px; + margin-left: 10px; + border: none; + border-radius: 10px; + font-size: 15px; + cursor: pointer; +} + +.chat-input { + padding: 12px 15px; + border-radius: 10px; + border-width: 1px; + font-size: 15px; + + flex-grow: 1; +} + +.chat-input-container { + display: flex; + margin-bottom: 60px; +} \ No newline at end of file diff --git a/2-copy-of-code/lesson-11/chatbot-project-ts/src/components/ChatInput.jsx b/2-copy-of-code/lesson-11/chatbot-project-ts/src/components/ChatInput.jsx new file mode 100644 index 0000000..95829c6 --- /dev/null +++ b/2-copy-of-code/lesson-11/chatbot-project-ts/src/components/ChatInput.jsx @@ -0,0 +1,52 @@ +import { useState } from 'react' +import { Chatbot } from 'supersimpledev'; +import './ChatInput.css'; + +export function ChatInput({ chatMessages, setChatMessages }) { + const [inputText, setInputText] = useState(''); + + function saveInputText(event) { + setInputText(event.target.value); + } + + function sendMessage() { + const newChatMessages = [ + ...chatMessages, + { + message: inputText, + sender: 'user', + id: crypto.randomUUID() + } + ]; + + setChatMessages(newChatMessages); + + const response = Chatbot.getResponse(inputText); + setChatMessages([ + ...newChatMessages, + { + message: response, + sender: 'robot', + id: crypto.randomUUID() + } + ]); + + setInputText(''); + } + + return ( +
+ + +
+ ); +} \ No newline at end of file diff --git a/2-copy-of-code/lesson-11/chatbot-project-ts/src/components/ChatMessage.css b/2-copy-of-code/lesson-11/chatbot-project-ts/src/components/ChatMessage.css new file mode 100644 index 0000000..e1fa498 --- /dev/null +++ b/2-copy-of-code/lesson-11/chatbot-project-ts/src/components/ChatMessage.css @@ -0,0 +1,24 @@ +.chat-message-user { + display: flex; + justify-content: end; + align-items: start; +} + +.chat-message-robot { + display: flex; + align-items: start; +} + +.chat-message-text { + background-color: rgb(238, 238, 238); + padding: 15px 20px; + border-radius: 10px; + margin-right: 10px; + margin-left: 10px; + margin-bottom: 20px; + max-width: 300px; +} + +.chat-message-profile { + width: 45px; +} \ No newline at end of file diff --git a/2-copy-of-code/lesson-11/chatbot-project-ts/src/components/ChatMessage.jsx b/2-copy-of-code/lesson-11/chatbot-project-ts/src/components/ChatMessage.jsx new file mode 100644 index 0000000..d7c7415 --- /dev/null +++ b/2-copy-of-code/lesson-11/chatbot-project-ts/src/components/ChatMessage.jsx @@ -0,0 +1,38 @@ +import RobotProfileImage from '../assets/robot.png'; +import UserProfileImage from '../assets/user.png'; +import './ChatMessage.css'; + +export function ChatMessage({ message, sender }) { + // const message = props.message; + // const sender = props.sender; + // const { message, sender } = props; + + /* + if (sender === 'robot') { + return ( +
+ + {message} +
+ ); + } + */ + + return ( +
+ {sender === 'robot' && ( + + )} +
+ {message} +
+ {sender === 'user' && ( + + )} +
+ ); +} \ No newline at end of file diff --git a/2-copy-of-code/lesson-11/chatbot-project-ts/src/components/ChatMessages.css b/2-copy-of-code/lesson-11/chatbot-project-ts/src/components/ChatMessages.css new file mode 100644 index 0000000..a767ffa --- /dev/null +++ b/2-copy-of-code/lesson-11/chatbot-project-ts/src/components/ChatMessages.css @@ -0,0 +1,7 @@ +.chat-messages-container { + flex-grow: 1; + margin-top: 20px; + overflow: scroll; + scrollbar-width: none; + -ms-overflow-style: none; +} \ No newline at end of file diff --git a/2-copy-of-code/lesson-11/chatbot-project-ts/src/components/ChatMessages.jsx b/2-copy-of-code/lesson-11/chatbot-project-ts/src/components/ChatMessages.jsx new file mode 100644 index 0000000..389fd81 --- /dev/null +++ b/2-copy-of-code/lesson-11/chatbot-project-ts/src/components/ChatMessages.jsx @@ -0,0 +1,30 @@ +import { useRef, useEffect } from 'react' +import { ChatMessage } from './ChatMessage'; +import './ChatMessages.css'; + +function ChatMessages({ chatMessages }) { + const chatMessagesRef = useRef(null); + + useEffect(() => { + const containerElem = chatMessagesRef.current; + if (containerElem) { + containerElem.scrollTop = containerElem.scrollHeight; + } + }, [chatMessages]); + + return ( +
+ {chatMessages.map((chatMessage) => { + return ( + + ); + })} +
+ ); +} + +export default ChatMessages; \ No newline at end of file diff --git a/2-copy-of-code/lesson-11/chatbot-project-ts/src/index.css b/2-copy-of-code/lesson-11/chatbot-project-ts/src/index.css index 08a3ac9..ca4f022 100644 --- a/2-copy-of-code/lesson-11/chatbot-project-ts/src/index.css +++ b/2-copy-of-code/lesson-11/chatbot-project-ts/src/index.css @@ -1,68 +1,5 @@ -: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: #242424; - - font-synthesis: none; - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -a { - font-weight: 500; - color: #646cff; - text-decoration: inherit; -} -a:hover { - color: #535bf2; -} - body { - margin: 0; - display: flex; - place-items: center; - min-width: 320px; - min-height: 100vh; -} - -h1 { - font-size: 3.2em; - line-height: 1.1; -} - -button { - border-radius: 8px; - border: 1px solid transparent; - padding: 0.6em 1.2em; - font-size: 1em; - font-weight: 500; - font-family: inherit; - background-color: #1a1a1a; - cursor: pointer; - transition: border-color 0.25s; -} -button:hover { - border-color: #646cff; -} -button:focus, -button:focus-visible { - outline: 4px auto -webkit-focus-ring-color; -} - -@media (prefers-color-scheme: light) { - :root { - color: #213547; - background-color: #ffffff; - } - a:hover { - color: #747bff; - } - button { - background-color: #f9f9f9; - } -} + font-family: Arial; + margin-top: 0px; + margin-bottom: 0px; +} \ No newline at end of file diff --git a/2-copy-of-code/lesson-11/chatbot-project-ts/src/main.tsx b/2-copy-of-code/lesson-11/chatbot-project-ts/src/main.tsx index bef5202..b9a1a6d 100644 --- a/2-copy-of-code/lesson-11/chatbot-project-ts/src/main.tsx +++ b/2-copy-of-code/lesson-11/chatbot-project-ts/src/main.tsx @@ -1,9 +1,9 @@ import { StrictMode } from 'react' import { createRoot } from 'react-dom/client' import './index.css' -import App from './App.tsx' +import App from './App.jsx' -createRoot(document.getElementById('root')!).render( +createRoot(document.getElementById('root')).render( , diff --git a/2-copy-of-code/lesson-11/chatbot-project-ts/vite.config.ts b/2-copy-of-code/lesson-11/chatbot-project-ts/vite.config.ts index 8b0f57b..f093458 100644 --- a/2-copy-of-code/lesson-11/chatbot-project-ts/vite.config.ts +++ b/2-copy-of-code/lesson-11/chatbot-project-ts/vite.config.ts @@ -3,5 +3,9 @@ import react from '@vitejs/plugin-react' // https://vite.dev/config/ export default defineConfig({ - plugins: [react()], + plugins: [react({ + babel: { + plugins: [['babel-plugin-react-compiler', { target: '19' }]], + }, + })], })