diff --git a/.pnp.cjs b/.pnp.cjs index fd36039..868cf13 100755 --- a/.pnp.cjs +++ b/.pnp.cjs @@ -27,6 +27,7 @@ const RAW_RUNTIME_STATE = [null, {\ "packageLocation": "./",\ "packageDependencies": [\ + ["@hookform/resolvers", "virtual:fab99ab653819c31700118e3551051ec2498dddb808f51896150d7d12ac371c264b5fa46a662ab7fea4ee02c7e8cf37d0e46b047c0fd340fb8234dee7ca27815#npm:3.9.0"],\ ["@types/node", "npm:20.16.5"],\ ["@types/react", "npm:18.3.5"],\ ["@types/react-dom", "npm:18.3.0"],\ @@ -35,14 +36,16 @@ const RAW_RUNTIME_STATE = ["eslint-config-next", "virtual:fab99ab653819c31700118e3551051ec2498dddb808f51896150d7d12ac371c264b5fa46a662ab7fea4ee02c7e8cf37d0e46b047c0fd340fb8234dee7ca27815#npm:14.2.9"],\ ["eslint-config-prettier", "virtual:fab99ab653819c31700118e3551051ec2498dddb808f51896150d7d12ac371c264b5fa46a662ab7fea4ee02c7e8cf37d0e46b047c0fd340fb8234dee7ca27815#npm:9.1.0"],\ ["eslint-plugin-prettier", "virtual:fab99ab653819c31700118e3551051ec2498dddb808f51896150d7d12ac371c264b5fa46a662ab7fea4ee02c7e8cf37d0e46b047c0fd340fb8234dee7ca27815#npm:5.2.1"],\ - ["eslint-plugin-unused-imports", "virtual:fab99ab653819c31700118e3551051ec2498dddb808f51896150d7d12ac371c264b5fa46a662ab7fea4ee02c7e8cf37d0e46b047c0fd340fb8234dee7ca27815#npm:4.1.3"],\ + ["eslint-plugin-unused-imports", "virtual:fab99ab653819c31700118e3551051ec2498dddb808f51896150d7d12ac371c264b5fa46a662ab7fea4ee02c7e8cf37d0e46b047c0fd340fb8234dee7ca27815#npm:4.1.4"],\ ["next", "virtual:fab99ab653819c31700118e3551051ec2498dddb808f51896150d7d12ac371c264b5fa46a662ab7fea4ee02c7e8cf37d0e46b047c0fd340fb8234dee7ca27815#npm:14.2.9"],\ ["postcss", "npm:8.4.45"],\ ["prettier", "npm:3.3.3"],\ ["react", "npm:18.3.1"],\ ["react-dom", "virtual:fab99ab653819c31700118e3551051ec2498dddb808f51896150d7d12ac371c264b5fa46a662ab7fea4ee02c7e8cf37d0e46b047c0fd340fb8234dee7ca27815#npm:18.3.1"],\ + ["react-hook-form", "virtual:fab99ab653819c31700118e3551051ec2498dddb808f51896150d7d12ac371c264b5fa46a662ab7fea4ee02c7e8cf37d0e46b047c0fd340fb8234dee7ca27815#npm:7.53.0"],\ ["tailwindcss", "npm:3.4.10"],\ - ["typescript", "patch:typescript@npm%3A5.6.2#optional!builtin::version=5.6.2&hash=8c6c40"]\ + ["typescript", "patch:typescript@npm%3A5.6.2#optional!builtin::version=5.6.2&hash=8c6c40"],\ + ["zod", "npm:3.23.8"]\ ],\ "linkType": "SOFT"\ }]\ @@ -115,6 +118,28 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["@hookform/resolvers", [\ + ["npm:3.9.0", {\ + "packageLocation": "../../../../.yarn/berry/cache/@hookform-resolvers-npm-3.9.0-6238a72f77-10c0.zip/node_modules/@hookform/resolvers/",\ + "packageDependencies": [\ + ["@hookform/resolvers", "npm:3.9.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:fab99ab653819c31700118e3551051ec2498dddb808f51896150d7d12ac371c264b5fa46a662ab7fea4ee02c7e8cf37d0e46b047c0fd340fb8234dee7ca27815#npm:3.9.0", {\ + "packageLocation": "./.yarn/__virtual__/@hookform-resolvers-virtual-2e4818be47/5/.yarn/berry/cache/@hookform-resolvers-npm-3.9.0-6238a72f77-10c0.zip/node_modules/@hookform/resolvers/",\ + "packageDependencies": [\ + ["@hookform/resolvers", "virtual:fab99ab653819c31700118e3551051ec2498dddb808f51896150d7d12ac371c264b5fa46a662ab7fea4ee02c7e8cf37d0e46b047c0fd340fb8234dee7ca27815#npm:3.9.0"],\ + ["@types/react-hook-form", null],\ + ["react-hook-form", "virtual:fab99ab653819c31700118e3551051ec2498dddb808f51896150d7d12ac371c264b5fa46a662ab7fea4ee02c7e8cf37d0e46b047c0fd340fb8234dee7ca27815#npm:7.53.0"]\ + ],\ + "packagePeers": [\ + "@types/react-hook-form",\ + "react-hook-form"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["@humanwhocodes/config-array", [\ ["npm:0.11.14", {\ "packageLocation": "../../../../.yarn/berry/cache/@humanwhocodes-config-array-npm-0.11.14-94a02fcc87-10c0.zip/node_modules/@humanwhocodes/config-array/",\ @@ -1547,6 +1572,7 @@ const RAW_RUNTIME_STATE = "packageLocation": "./",\ "packageDependencies": [\ ["eqcm", "workspace:."],\ + ["@hookform/resolvers", "virtual:fab99ab653819c31700118e3551051ec2498dddb808f51896150d7d12ac371c264b5fa46a662ab7fea4ee02c7e8cf37d0e46b047c0fd340fb8234dee7ca27815#npm:3.9.0"],\ ["@types/node", "npm:20.16.5"],\ ["@types/react", "npm:18.3.5"],\ ["@types/react-dom", "npm:18.3.0"],\ @@ -1555,14 +1581,16 @@ const RAW_RUNTIME_STATE = ["eslint-config-next", "virtual:fab99ab653819c31700118e3551051ec2498dddb808f51896150d7d12ac371c264b5fa46a662ab7fea4ee02c7e8cf37d0e46b047c0fd340fb8234dee7ca27815#npm:14.2.9"],\ ["eslint-config-prettier", "virtual:fab99ab653819c31700118e3551051ec2498dddb808f51896150d7d12ac371c264b5fa46a662ab7fea4ee02c7e8cf37d0e46b047c0fd340fb8234dee7ca27815#npm:9.1.0"],\ ["eslint-plugin-prettier", "virtual:fab99ab653819c31700118e3551051ec2498dddb808f51896150d7d12ac371c264b5fa46a662ab7fea4ee02c7e8cf37d0e46b047c0fd340fb8234dee7ca27815#npm:5.2.1"],\ - ["eslint-plugin-unused-imports", "virtual:fab99ab653819c31700118e3551051ec2498dddb808f51896150d7d12ac371c264b5fa46a662ab7fea4ee02c7e8cf37d0e46b047c0fd340fb8234dee7ca27815#npm:4.1.3"],\ + ["eslint-plugin-unused-imports", "virtual:fab99ab653819c31700118e3551051ec2498dddb808f51896150d7d12ac371c264b5fa46a662ab7fea4ee02c7e8cf37d0e46b047c0fd340fb8234dee7ca27815#npm:4.1.4"],\ ["next", "virtual:fab99ab653819c31700118e3551051ec2498dddb808f51896150d7d12ac371c264b5fa46a662ab7fea4ee02c7e8cf37d0e46b047c0fd340fb8234dee7ca27815#npm:14.2.9"],\ ["postcss", "npm:8.4.45"],\ ["prettier", "npm:3.3.3"],\ ["react", "npm:18.3.1"],\ ["react-dom", "virtual:fab99ab653819c31700118e3551051ec2498dddb808f51896150d7d12ac371c264b5fa46a662ab7fea4ee02c7e8cf37d0e46b047c0fd340fb8234dee7ca27815#npm:18.3.1"],\ + ["react-hook-form", "virtual:fab99ab653819c31700118e3551051ec2498dddb808f51896150d7d12ac371c264b5fa46a662ab7fea4ee02c7e8cf37d0e46b047c0fd340fb8234dee7ca27815#npm:7.53.0"],\ ["tailwindcss", "npm:3.4.10"],\ - ["typescript", "patch:typescript@npm%3A5.6.2#optional!builtin::version=5.6.2&hash=8c6c40"]\ + ["typescript", "patch:typescript@npm%3A5.6.2#optional!builtin::version=5.6.2&hash=8c6c40"],\ + ["zod", "npm:3.23.8"]\ ],\ "linkType": "SOFT"\ }]\ @@ -1815,7 +1843,7 @@ const RAW_RUNTIME_STATE = ["eslint-plugin-import", "virtual:6720399f589d61cf7858f730ba89d24eef8a0a85f94fab6e5745eb40ae5678bb2c00e0488a0990627a8cb5bb1ad1097f203d444d79915406910eaa118accedac#npm:2.30.0"],\ ["eslint-plugin-jsx-a11y", "virtual:6720399f589d61cf7858f730ba89d24eef8a0a85f94fab6e5745eb40ae5678bb2c00e0488a0990627a8cb5bb1ad1097f203d444d79915406910eaa118accedac#npm:6.10.0"],\ ["eslint-plugin-react", "virtual:6720399f589d61cf7858f730ba89d24eef8a0a85f94fab6e5745eb40ae5678bb2c00e0488a0990627a8cb5bb1ad1097f203d444d79915406910eaa118accedac#npm:7.35.2"],\ - ["eslint-plugin-react-hooks", "virtual:6720399f589d61cf7858f730ba89d24eef8a0a85f94fab6e5745eb40ae5678bb2c00e0488a0990627a8cb5bb1ad1097f203d444d79915406910eaa118accedac#npm:5.0.0-canary-7118f5dd7-20230705"],\ + ["eslint-plugin-react-hooks", "virtual:6720399f589d61cf7858f730ba89d24eef8a0a85f94fab6e5745eb40ae5678bb2c00e0488a0990627a8cb5bb1ad1097f203d444d79915406910eaa118accedac#npm:4.6.2"],\ ["typescript", "patch:typescript@npm%3A5.6.2#optional!builtin::version=5.6.2&hash=8c6c40"]\ ],\ "packagePeers": [\ @@ -2123,17 +2151,17 @@ const RAW_RUNTIME_STATE = }]\ ]],\ ["eslint-plugin-react-hooks", [\ - ["npm:5.0.0-canary-7118f5dd7-20230705", {\ - "packageLocation": "../../../../.yarn/berry/cache/eslint-plugin-react-hooks-npm-5.0.0-canary-7118f5dd7-20230705-2292094517-10c0.zip/node_modules/eslint-plugin-react-hooks/",\ + ["npm:4.6.2", {\ + "packageLocation": "../../../../.yarn/berry/cache/eslint-plugin-react-hooks-npm-4.6.2-05bc129286-10c0.zip/node_modules/eslint-plugin-react-hooks/",\ "packageDependencies": [\ - ["eslint-plugin-react-hooks", "npm:5.0.0-canary-7118f5dd7-20230705"]\ + ["eslint-plugin-react-hooks", "npm:4.6.2"]\ ],\ "linkType": "SOFT"\ }],\ - ["virtual:6720399f589d61cf7858f730ba89d24eef8a0a85f94fab6e5745eb40ae5678bb2c00e0488a0990627a8cb5bb1ad1097f203d444d79915406910eaa118accedac#npm:5.0.0-canary-7118f5dd7-20230705", {\ - "packageLocation": "./.yarn/__virtual__/eslint-plugin-react-hooks-virtual-d40f27a7d5/5/.yarn/berry/cache/eslint-plugin-react-hooks-npm-5.0.0-canary-7118f5dd7-20230705-2292094517-10c0.zip/node_modules/eslint-plugin-react-hooks/",\ + ["virtual:6720399f589d61cf7858f730ba89d24eef8a0a85f94fab6e5745eb40ae5678bb2c00e0488a0990627a8cb5bb1ad1097f203d444d79915406910eaa118accedac#npm:4.6.2", {\ + "packageLocation": "./.yarn/__virtual__/eslint-plugin-react-hooks-virtual-998893418f/5/.yarn/berry/cache/eslint-plugin-react-hooks-npm-4.6.2-05bc129286-10c0.zip/node_modules/eslint-plugin-react-hooks/",\ "packageDependencies": [\ - ["eslint-plugin-react-hooks", "virtual:6720399f589d61cf7858f730ba89d24eef8a0a85f94fab6e5745eb40ae5678bb2c00e0488a0990627a8cb5bb1ad1097f203d444d79915406910eaa118accedac#npm:5.0.0-canary-7118f5dd7-20230705"],\ + ["eslint-plugin-react-hooks", "virtual:6720399f589d61cf7858f730ba89d24eef8a0a85f94fab6e5745eb40ae5678bb2c00e0488a0990627a8cb5bb1ad1097f203d444d79915406910eaa118accedac#npm:4.6.2"],\ ["@types/eslint", null],\ ["eslint", "npm:8.57.0"]\ ],\ @@ -2145,17 +2173,17 @@ const RAW_RUNTIME_STATE = }]\ ]],\ ["eslint-plugin-unused-imports", [\ - ["npm:4.1.3", {\ - "packageLocation": "../../../../.yarn/berry/cache/eslint-plugin-unused-imports-npm-4.1.3-3b1598ec95-10c0.zip/node_modules/eslint-plugin-unused-imports/",\ + ["npm:4.1.4", {\ + "packageLocation": "../../../../.yarn/berry/cache/eslint-plugin-unused-imports-npm-4.1.4-a7d7c7cdf3-10c0.zip/node_modules/eslint-plugin-unused-imports/",\ "packageDependencies": [\ - ["eslint-plugin-unused-imports", "npm:4.1.3"]\ + ["eslint-plugin-unused-imports", "npm:4.1.4"]\ ],\ "linkType": "SOFT"\ }],\ - ["virtual:fab99ab653819c31700118e3551051ec2498dddb808f51896150d7d12ac371c264b5fa46a662ab7fea4ee02c7e8cf37d0e46b047c0fd340fb8234dee7ca27815#npm:4.1.3", {\ - "packageLocation": "./.yarn/__virtual__/eslint-plugin-unused-imports-virtual-3a5749693b/5/.yarn/berry/cache/eslint-plugin-unused-imports-npm-4.1.3-3b1598ec95-10c0.zip/node_modules/eslint-plugin-unused-imports/",\ + ["virtual:fab99ab653819c31700118e3551051ec2498dddb808f51896150d7d12ac371c264b5fa46a662ab7fea4ee02c7e8cf37d0e46b047c0fd340fb8234dee7ca27815#npm:4.1.4", {\ + "packageLocation": "./.yarn/__virtual__/eslint-plugin-unused-imports-virtual-644214ac8d/5/.yarn/berry/cache/eslint-plugin-unused-imports-npm-4.1.4-a7d7c7cdf3-10c0.zip/node_modules/eslint-plugin-unused-imports/",\ "packageDependencies": [\ - ["eslint-plugin-unused-imports", "virtual:fab99ab653819c31700118e3551051ec2498dddb808f51896150d7d12ac371c264b5fa46a662ab7fea4ee02c7e8cf37d0e46b047c0fd340fb8234dee7ca27815#npm:4.1.3"],\ + ["eslint-plugin-unused-imports", "virtual:fab99ab653819c31700118e3551051ec2498dddb808f51896150d7d12ac371c264b5fa46a662ab7fea4ee02c7e8cf37d0e46b047c0fd340fb8234dee7ca27815#npm:4.1.4"],\ ["@types/eslint", null],\ ["@types/typescript-eslint__eslint-plugin", null],\ ["@typescript-eslint/eslint-plugin", null],\ @@ -3632,7 +3660,7 @@ const RAW_RUNTIME_STATE = ["node-gyp", "npm:10.2.0"],\ ["env-paths", "npm:2.2.1"],\ ["exponential-backoff", "npm:3.1.1"],\ - ["glob", "npm:10.4.5"],\ + ["glob", "npm:10.3.10"],\ ["graceful-fs", "npm:4.2.11"],\ ["make-fetch-happen", "npm:13.0.1"],\ ["nopt", "npm:7.2.1"],\ @@ -4200,6 +4228,28 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["react-hook-form", [\ + ["npm:7.53.0", {\ + "packageLocation": "../../../../.yarn/berry/cache/react-hook-form-npm-7.53.0-5b4dd89662-10c0.zip/node_modules/react-hook-form/",\ + "packageDependencies": [\ + ["react-hook-form", "npm:7.53.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:fab99ab653819c31700118e3551051ec2498dddb808f51896150d7d12ac371c264b5fa46a662ab7fea4ee02c7e8cf37d0e46b047c0fd340fb8234dee7ca27815#npm:7.53.0", {\ + "packageLocation": "./.yarn/__virtual__/react-hook-form-virtual-7c0bb7d552/5/.yarn/berry/cache/react-hook-form-npm-7.53.0-5b4dd89662-10c0.zip/node_modules/react-hook-form/",\ + "packageDependencies": [\ + ["react-hook-form", "virtual:fab99ab653819c31700118e3551051ec2498dddb808f51896150d7d12ac371c264b5fa46a662ab7fea4ee02c7e8cf37d0e46b047c0fd340fb8234dee7ca27815#npm:7.53.0"],\ + ["@types/react", "npm:18.3.5"],\ + ["react", "npm:18.3.1"]\ + ],\ + "packagePeers": [\ + "@types/react",\ + "react"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["react-is", [\ ["npm:16.13.1", {\ "packageLocation": "../../../../.yarn/berry/cache/react-is-npm-16.13.1-a9b9382b4f-10c0.zip/node_modules/react-is/",\ @@ -4729,7 +4779,7 @@ const RAW_RUNTIME_STATE = ["sucrase", "npm:3.35.0"],\ ["@jridgewell/gen-mapping", "npm:0.3.5"],\ ["commander", "npm:4.1.1"],\ - ["glob", "npm:10.4.5"],\ + ["glob", "npm:10.3.10"],\ ["lines-and-columns", "npm:1.2.4"],\ ["mz", "npm:2.7.0"],\ ["pirates", "npm:4.0.6"],\ @@ -5219,6 +5269,15 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "HARD"\ }]\ + ]],\ + ["zod", [\ + ["npm:3.23.8", {\ + "packageLocation": "../../../../.yarn/berry/cache/zod-npm-3.23.8-11c49c85b5-10c0.zip/node_modules/zod/",\ + "packageDependencies": [\ + ["zod", "npm:3.23.8"]\ + ],\ + "linkType": "HARD"\ + }]\ ]]\ ]\ }'; diff --git a/package-lock.json b/package-lock.json index de70d14..eb37093 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,9 +8,12 @@ "name": "eqcm", "version": "0.1.0", "dependencies": { + "@hookform/resolvers": "^3.9.0", + "classnames": "^2.5.1", "next": "14.2.9", "react": "^18", - "react-dom": "^18" + "react-dom": "^18", + "react-hook-form": "^7.53.0" }, "devDependencies": { "@types/node": "^20", @@ -18,7 +21,11 @@ "@types/react-dom": "^18", "eslint": "^8", "eslint-config-next": "14.2.9", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.2.1", + "eslint-plugin-unused-imports": "^4.1.3", "postcss": "^8", + "prettier": "^3.3.3", "tailwindcss": "^3.4.1", "typescript": "^5" } @@ -91,6 +98,14 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/@hookform/resolvers": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-3.9.0.tgz", + "integrity": "sha512-bU0Gr4EepJ/EQsH/IwEzYLsT/PEj5C0ynLQ4m+GSHS+xKH4TfSelhluTgOaoc4kA5s7eCsQbM4wvZLzELmWzUg==", + "peerDependencies": { + "react-hook-form": "^7.0.0" + } + }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.14", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", @@ -421,6 +436,18 @@ "node": ">=14" } }, + "node_modules/@pkgr/core": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", + "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, "node_modules/@rtsao/scc": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", @@ -1177,6 +1204,11 @@ "node": ">= 6" } }, + "node_modules/classnames": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", + "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==" + }, "node_modules/client-only": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", @@ -1726,6 +1758,18 @@ } } }, + "node_modules/eslint-config-prettier": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", + "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, "node_modules/eslint-import-resolver-node": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", @@ -1899,6 +1943,36 @@ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" } }, + "node_modules/eslint-plugin-prettier": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz", + "integrity": "sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.9.1" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": "*", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } + } + }, "node_modules/eslint-plugin-react": { "version": "7.35.2", "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.35.2.tgz", @@ -1981,6 +2055,21 @@ "semver": "bin/semver.js" } }, + "node_modules/eslint-plugin-unused-imports": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-4.1.4.tgz", + "integrity": "sha512-YptD6IzQjDardkl0POxnnRBhU1OEePMV0nd6siHaRBbd+lyh6NAhFEobiznKU7kTsSsDeSD62Pe7kAM1b7dAZQ==", + "dev": true, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0", + "eslint": "^9.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + } + } + }, "node_modules/eslint-scope": { "version": "7.2.2", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", @@ -2074,6 +2163,12 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true + }, "node_modules/fast-glob": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", @@ -3839,6 +3934,33 @@ "node": ">= 0.8.0" } }, + "node_modules/prettier": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", + "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", @@ -3902,6 +4024,21 @@ "react": "^18.3.1" } }, + "node_modules/react-hook-form": { + "version": "7.53.0", + "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.53.0.tgz", + "integrity": "sha512-M1n3HhqCww6S2hxLxciEXy2oISPnAzxY7gvwVPrtlczTM/1dDadXgUxDpHMrMTblDOcm/AXtXxHwZ3jpg1mqKQ==", + "engines": { + "node": ">=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/react-hook-form" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17 || ^18 || ^19" + } + }, "node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", @@ -4522,6 +4659,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/synckit": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.1.tgz", + "integrity": "sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==", + "dev": true, + "dependencies": { + "@pkgr/core": "^0.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, "node_modules/tailwindcss": { "version": "3.4.10", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.10.tgz", diff --git a/package.json b/package.json index 5686cdf..fdac1ae 100644 --- a/package.json +++ b/package.json @@ -9,10 +9,13 @@ "lint": "next lint" }, "dependencies": { + "@hookform/resolvers": "^3.9.0", "classnames": "^2.5.1", "next": "14.2.9", "react": "^18", - "react-dom": "^18" + "react-dom": "^18", + "react-hook-form": "^7.53.0", + "zod": "^3.23.8" }, "devDependencies": { "@types/node": "^20", diff --git a/src/app/globals.css b/src/app/globals.css index ec7c978..af078cc 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -18,3 +18,7 @@ body { text-wrap: balance; } } + +input { + outline: none; +} \ No newline at end of file diff --git a/src/app/layout.tsx b/src/app/layout.tsx index b4a6e14..23af847 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -3,6 +3,7 @@ import localFont from 'next/font/local'; import Header from '@/components/header'; import Footer from '@/components/footer'; +import BottomMenu from '@/components/bottomMenu'; import './globals.css'; @@ -62,10 +63,11 @@ export default function RootLayout({ }>) { return ( - +
{children}