From 4fbb925add06ff6cb90339aee49213e00ba129b6 Mon Sep 17 00:00:00 2001 From: Alireza Dorrani Date: Mon, 3 Mar 2025 14:10:14 +0330 Subject: [PATCH 1/9] [ADD] prisma --- .gitignore | 3 +- package-lock.json | 541 +++++++++++++++++++++++++++++++++++++++++++ package.json | 1 + prisma/schema.prisma | 14 ++ 4 files changed, 558 insertions(+), 1 deletion(-) create mode 100644 prisma/schema.prisma diff --git a/.gitignore b/.gitignore index c926378..561b3ed 100644 --- a/.gitignore +++ b/.gitignore @@ -147,4 +147,5 @@ fabric.properties # End of https://www.toptal.com/developers/gitignore/api/webstorm+all,visualstudiocode,nextjs .idea/ -.vscode/ \ No newline at end of file +.vscode/ +.env \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 923df7d..b2c9a1f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,6 +24,7 @@ "postcss": "^8.4.49", "postcss-nesting": "^13.0.1", "prettier": "^3.4.2", + "prisma": "^6.4.1", "typescript": "^5" } }, @@ -80,6 +81,406 @@ "tslib": "^2.4.0" } }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", + "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz", + "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", + "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz", + "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", + "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", + "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", + "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", + "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", + "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", + "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", + "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", + "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", + "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", + "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", + "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", + "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", + "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz", + "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", + "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz", + "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", + "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", + "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", + "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", + "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", + "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", @@ -763,6 +1164,51 @@ "node": ">=14" } }, + "node_modules/@prisma/debug": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-6.4.1.tgz", + "integrity": "sha512-Q9xk6yjEGIThjSD8zZegxd5tBRNHYd13GOIG0nLsanbTXATiPXCLyvlYEfvbR2ft6dlRsziQXfQGxAgv7zcMUA==", + "dev": true + }, + "node_modules/@prisma/engines": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-6.4.1.tgz", + "integrity": "sha512-KldENzMHtKYwsOSLThghOIdXOBEsfDuGSrxAZjMnimBiDKd3AE4JQ+Kv+gBD/x77WoV9xIPf25GXMWffXZ17BA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@prisma/debug": "6.4.1", + "@prisma/engines-version": "6.4.0-29.a9055b89e58b4b5bfb59600785423b1db3d0e75d", + "@prisma/fetch-engine": "6.4.1", + "@prisma/get-platform": "6.4.1" + } + }, + "node_modules/@prisma/engines-version": { + "version": "6.4.0-29.a9055b89e58b4b5bfb59600785423b1db3d0e75d", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-6.4.0-29.a9055b89e58b4b5bfb59600785423b1db3d0e75d.tgz", + "integrity": "sha512-Xq54qw55vaCGrGgIJqyDwOq0TtjZPJEWsbQAHugk99hpDf2jcEeQhUcF+yzEsSqegBaDNLA4IC8Nn34sXmkiTQ==", + "dev": true + }, + "node_modules/@prisma/fetch-engine": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-6.4.1.tgz", + "integrity": "sha512-uZ5hVeTmDspx7KcaRCNoXmcReOD+84nwlO2oFvQPRQh9xiFYnnUKDz7l9bLxp8t4+25CsaNlgrgilXKSQwrIGQ==", + "dev": true, + "dependencies": { + "@prisma/debug": "6.4.1", + "@prisma/engines-version": "6.4.0-29.a9055b89e58b4b5bfb59600785423b1db3d0e75d", + "@prisma/get-platform": "6.4.1" + } + }, + "node_modules/@prisma/get-platform": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-6.4.1.tgz", + "integrity": "sha512-gXqZaDI5scDkBF8oza7fOD3Q3QMD0e0rBynlzDDZdTWbWmzjuW58PRZtj+jkvKje2+ZigCWkH8SsWZAsH6q1Yw==", + "dev": true, + "dependencies": { + "@prisma/debug": "6.4.1" + } + }, "node_modules/@rtsao/scc": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", @@ -1869,6 +2315,58 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/esbuild": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", + "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.0", + "@esbuild/android-arm": "0.25.0", + "@esbuild/android-arm64": "0.25.0", + "@esbuild/android-x64": "0.25.0", + "@esbuild/darwin-arm64": "0.25.0", + "@esbuild/darwin-x64": "0.25.0", + "@esbuild/freebsd-arm64": "0.25.0", + "@esbuild/freebsd-x64": "0.25.0", + "@esbuild/linux-arm": "0.25.0", + "@esbuild/linux-arm64": "0.25.0", + "@esbuild/linux-ia32": "0.25.0", + "@esbuild/linux-loong64": "0.25.0", + "@esbuild/linux-mips64el": "0.25.0", + "@esbuild/linux-ppc64": "0.25.0", + "@esbuild/linux-riscv64": "0.25.0", + "@esbuild/linux-s390x": "0.25.0", + "@esbuild/linux-x64": "0.25.0", + "@esbuild/netbsd-arm64": "0.25.0", + "@esbuild/netbsd-x64": "0.25.0", + "@esbuild/openbsd-arm64": "0.25.0", + "@esbuild/openbsd-x64": "0.25.0", + "@esbuild/sunos-x64": "0.25.0", + "@esbuild/win32-arm64": "0.25.0", + "@esbuild/win32-ia32": "0.25.0", + "@esbuild/win32-x64": "0.25.0" + } + }, + "node_modules/esbuild-register": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.6.0.tgz", + "integrity": "sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==", + "dev": true, + "dependencies": { + "debug": "^4.3.4" + }, + "peerDependencies": { + "esbuild": ">=0.12 <1" + } + }, "node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -2452,6 +2950,20 @@ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -3891,6 +4403,35 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, + "node_modules/prisma": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-6.4.1.tgz", + "integrity": "sha512-q2uJkgXnua/jj66mk6P9bX/zgYJFI/jn4Yp0aS6SPRrjH/n6VyOV7RDe1vHD0DX8Aanx4MvgmUPPoYnR6MJnPg==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@prisma/engines": "6.4.1", + "esbuild": ">=0.12 <1", + "esbuild-register": "3.6.0" + }, + "bin": { + "prisma": "build/index.js" + }, + "engines": { + "node": ">=18.18" + }, + "optionalDependencies": { + "fsevents": "2.3.3" + }, + "peerDependencies": { + "typescript": ">=5.1.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", diff --git a/package.json b/package.json index 47af989..57482ab 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,7 @@ "postcss": "^8.4.49", "postcss-nesting": "^13.0.1", "prettier": "^3.4.2", + "prisma": "^6.4.1", "typescript": "^5" } } diff --git a/prisma/schema.prisma b/prisma/schema.prisma new file mode 100644 index 0000000..ee282c7 --- /dev/null +++ b/prisma/schema.prisma @@ -0,0 +1,14 @@ +// This is your Prisma schema file, +// learn more about it in the docs: https://pris.ly/d/prisma-schema + +// Looking for ways to speed up your queries, or scale easily with your serverless or edge functions? +// Try Prisma Accelerate: https://pris.ly/cli/accelerate-init + +generator client { + provider = "prisma-client-js" +} + +datasource db { + provider = "postgresql" + url = env("DATABASE_URL") +} From 9c8bff6950fd746868e6159fcc9e625c94694be9 Mon Sep 17 00:00:00 2001 From: Alireza Dorrani Date: Mon, 3 Mar 2025 14:44:19 +0330 Subject: [PATCH 2/9] [MIGRATON] [ADD] user model --- package-lock.json | 44 ++++++++++++++----- package.json | 1 + .../20250303110856_init/migration.sql | 16 +++++++ prisma/migrations/migration_lock.toml | 3 ++ prisma/schema.prisma | 8 ++++ 5 files changed, 61 insertions(+), 11 deletions(-) create mode 100644 prisma/migrations/20250303110856_init/migration.sql create mode 100644 prisma/migrations/migration_lock.toml diff --git a/package-lock.json b/package-lock.json index b2c9a1f..056ef59 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,7 @@ "name": "doctor-man", "version": "0.1.0", "dependencies": { + "@prisma/client": "^6.4.1", "clsx": "^2.1.1", "dompurify": "^3.2.4", "next": "14.2.20", @@ -1164,17 +1165,38 @@ "node": ">=14" } }, + "node_modules/@prisma/client": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/@prisma/client/-/client-6.4.1.tgz", + "integrity": "sha512-A7Mwx44+GVZVexT5e2GF/WcKkEkNNKbgr059xpr5mn+oUm2ZW1svhe+0TRNBwCdzhfIZ+q23jEgsNPvKD9u+6g==", + "hasInstallScript": true, + "engines": { + "node": ">=18.18" + }, + "peerDependencies": { + "prisma": "*", + "typescript": ">=5.1.0" + }, + "peerDependenciesMeta": { + "prisma": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, "node_modules/@prisma/debug": { "version": "6.4.1", "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-6.4.1.tgz", "integrity": "sha512-Q9xk6yjEGIThjSD8zZegxd5tBRNHYd13GOIG0nLsanbTXATiPXCLyvlYEfvbR2ft6dlRsziQXfQGxAgv7zcMUA==", - "dev": true + "devOptional": true }, "node_modules/@prisma/engines": { "version": "6.4.1", "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-6.4.1.tgz", "integrity": "sha512-KldENzMHtKYwsOSLThghOIdXOBEsfDuGSrxAZjMnimBiDKd3AE4JQ+Kv+gBD/x77WoV9xIPf25GXMWffXZ17BA==", - "dev": true, + "devOptional": true, "hasInstallScript": true, "dependencies": { "@prisma/debug": "6.4.1", @@ -1187,13 +1209,13 @@ "version": "6.4.0-29.a9055b89e58b4b5bfb59600785423b1db3d0e75d", "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-6.4.0-29.a9055b89e58b4b5bfb59600785423b1db3d0e75d.tgz", "integrity": "sha512-Xq54qw55vaCGrGgIJqyDwOq0TtjZPJEWsbQAHugk99hpDf2jcEeQhUcF+yzEsSqegBaDNLA4IC8Nn34sXmkiTQ==", - "dev": true + "devOptional": true }, "node_modules/@prisma/fetch-engine": { "version": "6.4.1", "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-6.4.1.tgz", "integrity": "sha512-uZ5hVeTmDspx7KcaRCNoXmcReOD+84nwlO2oFvQPRQh9xiFYnnUKDz7l9bLxp8t4+25CsaNlgrgilXKSQwrIGQ==", - "dev": true, + "devOptional": true, "dependencies": { "@prisma/debug": "6.4.1", "@prisma/engines-version": "6.4.0-29.a9055b89e58b4b5bfb59600785423b1db3d0e75d", @@ -1204,7 +1226,7 @@ "version": "6.4.1", "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-6.4.1.tgz", "integrity": "sha512-gXqZaDI5scDkBF8oza7fOD3Q3QMD0e0rBynlzDDZdTWbWmzjuW58PRZtj+jkvKje2+ZigCWkH8SsWZAsH6q1Yw==", - "dev": true, + "devOptional": true, "dependencies": { "@prisma/debug": "6.4.1" } @@ -2039,7 +2061,7 @@ "version": "4.4.0", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "dev": true, + "devOptional": true, "dependencies": { "ms": "^2.1.3" }, @@ -2319,7 +2341,7 @@ "version": "0.25.0", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", - "dev": true, + "devOptional": true, "hasInstallScript": true, "bin": { "esbuild": "bin/esbuild" @@ -2359,7 +2381,7 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.6.0.tgz", "integrity": "sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==", - "dev": true, + "devOptional": true, "dependencies": { "debug": "^4.3.4" }, @@ -3956,7 +3978,7 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "devOptional": true }, "node_modules/nanoid": { "version": "3.3.8", @@ -4407,7 +4429,7 @@ "version": "6.4.1", "resolved": "https://registry.npmjs.org/prisma/-/prisma-6.4.1.tgz", "integrity": "sha512-q2uJkgXnua/jj66mk6P9bX/zgYJFI/jn4Yp0aS6SPRrjH/n6VyOV7RDe1vHD0DX8Aanx4MvgmUPPoYnR6MJnPg==", - "dev": true, + "devOptional": true, "hasInstallScript": true, "dependencies": { "@prisma/engines": "6.4.1", @@ -5327,7 +5349,7 @@ "version": "5.7.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", - "dev": true, + "devOptional": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" diff --git a/package.json b/package.json index 57482ab..2a7c031 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "prettier:fix": "prettier . --write" }, "dependencies": { + "@prisma/client": "^6.4.1", "clsx": "^2.1.1", "dompurify": "^3.2.4", "next": "14.2.20", diff --git a/prisma/migrations/20250303110856_init/migration.sql b/prisma/migrations/20250303110856_init/migration.sql new file mode 100644 index 0000000..9c55391 --- /dev/null +++ b/prisma/migrations/20250303110856_init/migration.sql @@ -0,0 +1,16 @@ +-- CreateTable +CREATE TABLE "User" ( + "id" TEXT NOT NULL, + "name" TEXT NOT NULL, + "username" TEXT NOT NULL, + "email" TEXT NOT NULL, + "password" TEXT NOT NULL, + + CONSTRAINT "User_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "User_username_key" ON "User"("username"); + +-- CreateIndex +CREATE UNIQUE INDEX "User_email_key" ON "User"("email"); diff --git a/prisma/migrations/migration_lock.toml b/prisma/migrations/migration_lock.toml new file mode 100644 index 0000000..648c57f --- /dev/null +++ b/prisma/migrations/migration_lock.toml @@ -0,0 +1,3 @@ +# Please do not edit this file manually +# It should be added in your version-control system (e.g., Git) +provider = "postgresql" \ No newline at end of file diff --git a/prisma/schema.prisma b/prisma/schema.prisma index ee282c7..3dd0335 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -12,3 +12,11 @@ datasource db { provider = "postgresql" url = env("DATABASE_URL") } + +model User { + id String @id @default(uuid()) + name String + username String @unique + email String @unique + password String +} From a2e114780cb8c11a0b1e79c987c7ff6dfe8228ba Mon Sep 17 00:00:00 2001 From: Alireza Dorrani Date: Mon, 3 Mar 2025 15:07:27 +0330 Subject: [PATCH 3/9] [ADD] prisma clinet --- src/lib/prisma.ts | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 src/lib/prisma.ts diff --git a/src/lib/prisma.ts b/src/lib/prisma.ts new file mode 100644 index 0000000..2abd026 --- /dev/null +++ b/src/lib/prisma.ts @@ -0,0 +1,9 @@ +import { PrismaClient } from "@prisma/client"; + +const prisma = new PrismaClient(); + +const globalForPrisma = global as unknown as { prisma: typeof prisma }; + +if (process.env.NODE_ENV !== "production") globalForPrisma.prisma = prisma; + +export default prisma; \ No newline at end of file From ac8d385b4b750ec4c0c4cbc10814447c300a963c Mon Sep 17 00:00:00 2001 From: Alireza Dorrani Date: Mon, 3 Mar 2025 15:21:12 +0330 Subject: [PATCH 4/9] [ADD] seed --- package-lock.json | 20 ++++++++++++++++++++ package.json | 4 ++++ prisma/seed.ts | 20 ++++++++++++++++++++ 3 files changed, 44 insertions(+) create mode 100644 prisma/seed.ts diff --git a/package-lock.json b/package-lock.json index 056ef59..e788456 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26,6 +26,7 @@ "postcss-nesting": "^13.0.1", "prettier": "^3.4.2", "prisma": "^6.4.1", + "tsx": "^4.19.3", "typescript": "^5" } }, @@ -5247,6 +5248,25 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" }, + "node_modules/tsx": { + "version": "4.19.3", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.3.tgz", + "integrity": "sha512-4H8vUNGNjQ4V2EOoGw005+c+dGuPSnhpPBPHBtsZdGZBk/iJb4kguGlPWaZTZ3q5nMtFOEsY0nRDlh9PJyd6SQ==", + "dev": true, + "dependencies": { + "esbuild": "~0.25.0", + "get-tsconfig": "^4.7.5" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", diff --git a/package.json b/package.json index 2a7c031..1a2d696 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,9 @@ "prettier:check": "prettier . --check", "prettier:fix": "prettier . --write" }, + "prisma": { + "seed": "tsx prisma/seed.ts" + }, "dependencies": { "@prisma/client": "^6.4.1", "clsx": "^2.1.1", @@ -29,6 +32,7 @@ "postcss-nesting": "^13.0.1", "prettier": "^3.4.2", "prisma": "^6.4.1", + "tsx": "^4.19.3", "typescript": "^5" } } diff --git a/prisma/seed.ts b/prisma/seed.ts new file mode 100644 index 0000000..01d0ee5 --- /dev/null +++ b/prisma/seed.ts @@ -0,0 +1,20 @@ +import { Prisma, PrismaClient } from "@prisma/client"; + +const prisma = new PrismaClient; + +const users: Prisma.UserCreateInput[] = [ + { + name: "علیرضا درانی کریانی", + username: "alireza97d", + email: "alireza97d@gmail.com", + password: "admin" + }, +]; + +export async function main() { + for (const user of users) { + await prisma.user.create({ data: user }); + }; +}; + +main().then(() => console.log("Done!")); \ No newline at end of file From d242244d1c46b32955fd1f9797008fb376175e4b Mon Sep 17 00:00:00 2001 From: Alireza Dorrani Date: Mon, 3 Mar 2025 16:04:24 +0330 Subject: [PATCH 5/9] [ADD] auth pages --- .../sign-in-form/sign-in-form.component.tsx | 59 ++++++++++ .../sign-in-form/sign-in-form.module.css | 0 .../sign-up-form/sign-up-form.component.tsx | 75 +++++++++++++ .../sign-up-form/sign-up-form.module.css | 0 src/app/auth/sign-in/page.module.css | 6 + src/app/auth/sign-in/page.tsx | 13 +++ src/app/auth/sign-up/page.module.css | 6 + src/app/auth/sign-up/page.tsx | 15 +++ src/app/auth/styles/auth-form.module.css | 41 +++++++ src/assets/images/sign-in.webp | Bin 0 -> 11802 bytes src/assets/images/sign-up.webp | Bin 0 -> 13746 bytes src/components/button/button.component.tsx | 79 ++++++++++++++ src/components/button/button.module.css | 103 ++++++++++++++++++ src/components/header/header.component.tsx | 12 +- src/components/header/header.module.css | 16 --- .../normal-input/normal-input.component.tsx | 49 +++++++++ .../normal-input/normal-input.module.css | 49 +++++++++ .../password-input.component.tsx | 37 +++++++ .../password-input/password-input.module.css | 0 src/icons/MingcuteCalendarMonthLine.tsx | 22 ++++ src/icons/MingcuteEyeCloseLine.tsx | 23 ++++ src/icons/MingcuteIncognitoModeLine.tsx | 23 ++++ src/icons/MingcuteKey2Line.tsx | 23 ++++ src/icons/MingcuteMailLine.tsx | 23 ++++ src/icons/MingcuteUser3Line.tsx | 23 ++++ 25 files changed, 680 insertions(+), 17 deletions(-) create mode 100644 src/app/auth/components/sign-in-form/sign-in-form.component.tsx create mode 100644 src/app/auth/components/sign-in-form/sign-in-form.module.css create mode 100644 src/app/auth/components/sign-up-form/sign-up-form.component.tsx create mode 100644 src/app/auth/components/sign-up-form/sign-up-form.module.css create mode 100644 src/app/auth/sign-in/page.module.css create mode 100644 src/app/auth/sign-in/page.tsx create mode 100644 src/app/auth/sign-up/page.module.css create mode 100644 src/app/auth/sign-up/page.tsx create mode 100644 src/app/auth/styles/auth-form.module.css create mode 100644 src/assets/images/sign-in.webp create mode 100644 src/assets/images/sign-up.webp create mode 100644 src/components/button/button.component.tsx create mode 100644 src/components/button/button.module.css create mode 100644 src/components/normal-input/normal-input.component.tsx create mode 100644 src/components/normal-input/normal-input.module.css create mode 100644 src/components/password-input/password-input.component.tsx create mode 100644 src/components/password-input/password-input.module.css create mode 100644 src/icons/MingcuteCalendarMonthLine.tsx create mode 100644 src/icons/MingcuteEyeCloseLine.tsx create mode 100644 src/icons/MingcuteIncognitoModeLine.tsx create mode 100644 src/icons/MingcuteKey2Line.tsx create mode 100644 src/icons/MingcuteMailLine.tsx create mode 100644 src/icons/MingcuteUser3Line.tsx diff --git a/src/app/auth/components/sign-in-form/sign-in-form.component.tsx b/src/app/auth/components/sign-in-form/sign-in-form.component.tsx new file mode 100644 index 0000000..97fa8d6 --- /dev/null +++ b/src/app/auth/components/sign-in-form/sign-in-form.component.tsx @@ -0,0 +1,59 @@ +"use client"; + +import { FormEvent, ReactElement } from "react"; + +import Image from "next/image"; +import Link from "next/link"; + +import signInImage from "@/assets/images/sign-in.webp"; + +import { ButtonComponent } from "@/components/button/button.component"; +import CardComponent from "@/components/card/card.component"; +import NormalInputComponent from "@/components/normal-input/normal-input.component"; +import PasswordInputComponent from "@/components/password-input/password-input.component"; + +import MingcuteUser3Line from "@/icons/MingcuteUser3Line"; + +import styles from "@/app/auth/styles/auth-form.module.css"; + +export default function SignInFormComponent(): ReactElement { + const formSubmitHandler = async ( + e: FormEvent, + ): Promise => { + e.preventDefault(); + }; + + return ( +
+ +
+
+

ورود!

+
+ } + /> + + ورود + +
+ قبلاً ثبت‌نام نکردید؟ + {` `} + ثبت‌نام کنید. +
+
+
+ +
+
+
+
+ ); +} \ No newline at end of file diff --git a/src/app/auth/components/sign-in-form/sign-in-form.module.css b/src/app/auth/components/sign-in-form/sign-in-form.module.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/auth/components/sign-up-form/sign-up-form.component.tsx b/src/app/auth/components/sign-up-form/sign-up-form.component.tsx new file mode 100644 index 0000000..d99af99 --- /dev/null +++ b/src/app/auth/components/sign-up-form/sign-up-form.component.tsx @@ -0,0 +1,75 @@ +"use client"; + +import { ReactElement, FormEvent } from "react"; + +import Image from "next/image"; +import Link from "next/link"; + +import signUpImage from "@/assets/images/sign-up.webp"; + +import { ButtonComponent } from "@/components/button/button.component"; +import CardComponent from "@/components/card/card.component"; +import NormalInputComponent from "@/components/normal-input/normal-input.component"; +import PasswordInputComponent from "@/components/password-input/password-input.component"; + +import MingcuteIncognitoModeLine from "@/icons/MingcuteIncognitoModeLine"; +import MingcuteUser3Line from "@/icons/MingcuteUser3Line"; +import MingcuteMailLine from "@/icons/MingcuteMailLine"; + +import styles from "@/app/auth/styles/auth-form.module.css"; + +const SignUpFormComponent = (): ReactElement => { + const formSubmitHandler = async ( + e: FormEvent, + ): Promise => { + e.preventDefault(); + }; + + return ( +
+ +
+
+

ثبت‌نام!

+
+ } + /> + } + /> + } + /> + + ثبت‌نام + +
+ قبلاً ثبت‌نام کردید؟ + {` `} + وارد شوید. +
+
+
+ +
+
+
+
+ ); +} + +export default SignUpFormComponent; diff --git a/src/app/auth/components/sign-up-form/sign-up-form.module.css b/src/app/auth/components/sign-up-form/sign-up-form.module.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/auth/sign-in/page.module.css b/src/app/auth/sign-in/page.module.css new file mode 100644 index 0000000..dcf1ec3 --- /dev/null +++ b/src/app/auth/sign-in/page.module.css @@ -0,0 +1,6 @@ +.page { + display: grid; + justify-items: center; + + margin-block: 2rem; +} diff --git a/src/app/auth/sign-in/page.tsx b/src/app/auth/sign-in/page.tsx new file mode 100644 index 0000000..093590e --- /dev/null +++ b/src/app/auth/sign-in/page.tsx @@ -0,0 +1,13 @@ +import { ReactElement } from "react"; + +import SignInFormComponent from "@/app/auth/components/sign-in-form/sign-in-form.component"; + +import styles from "./page.module.css"; + +export default function Page(): ReactElement { + return ( +
+ +
+ ); +} \ No newline at end of file diff --git a/src/app/auth/sign-up/page.module.css b/src/app/auth/sign-up/page.module.css new file mode 100644 index 0000000..dcf1ec3 --- /dev/null +++ b/src/app/auth/sign-up/page.module.css @@ -0,0 +1,6 @@ +.page { + display: grid; + justify-items: center; + + margin-block: 2rem; +} diff --git a/src/app/auth/sign-up/page.tsx b/src/app/auth/sign-up/page.tsx new file mode 100644 index 0000000..b361d4d --- /dev/null +++ b/src/app/auth/sign-up/page.tsx @@ -0,0 +1,15 @@ +import { ReactElement } from "react"; + +import SignUpFormComponent from "../components/sign-up-form/sign-up-form.component"; + +import styles from "./page.module.css"; + +const Page = (): ReactElement => { + return ( +
+ +
+ ) +} + +export default Page; diff --git a/src/app/auth/styles/auth-form.module.css b/src/app/auth/styles/auth-form.module.css new file mode 100644 index 0000000..1c8f1e6 --- /dev/null +++ b/src/app/auth/styles/auth-form.module.css @@ -0,0 +1,41 @@ +.auth-form { + inline-size: min(50rem, 100%); + + .card-content { + display: grid; + grid-template-columns: 3fr 2fr; + gap: 1rem; + + .writings { + display: grid; + gap: 1rem; + + form { + display: grid; + gap: 1rem; + } + + .change-form { + a { + color: var(--color-primary); + + text-decoration: underline; + } + } + } + + .visuals { + min-block-size: 100%; + block-size: 0; + inline-size: 100%; + + img { + block-size: 100%; + inline-size: 100%; + object-fit: cover; + + border-radius: var(--border-radius); + } + } + } +} diff --git a/src/assets/images/sign-in.webp b/src/assets/images/sign-in.webp new file mode 100644 index 0000000000000000000000000000000000000000..5ae9ac2b576fbcff730ecd80b7e4ae6986fae2e4 GIT binary patch literal 11802 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 literal 0 HcmV?d00001 diff --git a/src/components/button/button.component.tsx b/src/components/button/button.component.tsx new file mode 100644 index 0000000..6c29a6b --- /dev/null +++ b/src/components/button/button.component.tsx @@ -0,0 +1,79 @@ +"use client"; + +import { ComponentProps, ReactElement } from "react"; + +import Link from "next/link"; + +import clsx from "clsx"; + +import styles from "./button.module.css"; + +export type ButtonVariant = "default" | "primary" | "danger"; +export type ButtonShape = "inherit" | "solid" | "outlined"; +export type ButtonSize = "medium" | "large"; +export type ButtonPosition = "default" | "inline"; + +type CommonProps = { + variant?: ButtonVariant; + shape?: ButtonShape; + size?: ButtonSize; + position?: ButtonPosition; +}; + +type ButtonComponentProps = ComponentProps<"button"> & CommonProps; + +type ButtonLinkComponentProps = ComponentProps & CommonProps; + +export function ButtonComponent({ + variant = "default", + shape = "solid", + size = "medium", + position = "default", + className, + children, + ...otherProps +}: ButtonComponentProps): ReactElement { + return ( + + ); +} + +export function ButtonLinkComponent({ + variant = "default", + shape = "solid", + size = "medium", + position = "default", + className, + href, + children, + ...otherProps +}: ButtonLinkComponentProps): ReactElement { + return ( + + {children} + + ); +} \ No newline at end of file diff --git a/src/components/button/button.module.css b/src/components/button/button.module.css new file mode 100644 index 0000000..855a7d9 --- /dev/null +++ b/src/components/button/button.module.css @@ -0,0 +1,103 @@ +.button { + background-color: transparent; + color: inherit; + + display: flex; + align-items: center; + justify-content: center; + gap: 0.5rem; + + border: none; + border-radius: var(--border-radius); + + font-size: 1rem; + font-weight: 700; + + cursor: pointer; + + transition: var(--animation-duration-fast) ease-in-out; + transition-property: background-color, color; + + &:not(.inherit) { + padding: 0.5rem 1rem; + + svg { + font-size: 1.5em; + } + } + + &.solid { + background-color: var(--background-color); + color: var(--color); + + &:hover { + background-color: var(--background-color-hover); + } + + &.default { + --background-color: var(--color-surface-700); + --background-color-hover: var(--color-surface-300); + --color: var(--color-text-400); + } + + &.primary { + --background-color: var(--color-primary); + --background-color-hover: var(--color-primary-darker); + --color: var(--color-primary-opposite); + } + + &.danger { + --background-color: var(--color-danger); + --background-color-hover: var(--color-danger-darker); + --color: var(--color-danger-opposite); + } + } + + &.outlined { + background-color: var(--background-color); + color: var(--color); + + border: 1px solid currentcolor; + border-radius: var(--border-radius); + + &:hover { + background-color: var(--background-color-hover); + color: var(--color-hover); + } + + &.default { + --background-color: var(--color-surface-700); + --background-color-hover: var(--color-text-400); + --color: var(--color-text-400); + --color-hover: var(--color-surface-700); + } + + &.primary { + --background-color: var(--color-primary-opposite); + --background-color-hover: var(--color-primary); + --color: var(--color-primary); + --color-hover: var(--color-primary-opposite); + } + + &.danger { + --background-color: var(--color-danger-opposite); + --background-color-hover: var(--color-danger); + --color: var(--color-danger); + --color-hover: var(--color-danger-opposite); + } + + &:hover { + background-color: var(--background-color-hover); + } + } + + &.large { + padding: 1rem 2rem; + } + + &.inline { + padding: 0.2rem 0.5rem; + + font-weight: 700; + } +} diff --git a/src/components/header/header.component.tsx b/src/components/header/header.component.tsx index 34802a9..d852de8 100644 --- a/src/components/header/header.component.tsx +++ b/src/components/header/header.component.tsx @@ -5,9 +5,12 @@ import { ReactElement } from "react"; import Link from "next/link"; import { usePathname } from "next/navigation"; +import { ButtonLinkComponent } from "../button/button.component"; + import clsx from "clsx"; import { menu, menuType } from "@/constant/header/menu"; + import styles from "./header.module.css"; export default function HeaderComponent(): ReactElement { @@ -33,7 +36,14 @@ export default function HeaderComponent(): ReactElement { })} - + + ورود | ثبت‌نام + ); } diff --git a/src/components/header/header.module.css b/src/components/header/header.module.css index 1b0283c..6ce83e5 100644 --- a/src/components/header/header.module.css +++ b/src/components/header/header.module.css @@ -24,22 +24,6 @@ } .cta { - background-color: transparent; - color: var(--color-primary); - margin-inline-start: auto; - padding: 0.5rem 1rem; - - border: 1px solid currentcolor; - border-radius: var(--border-radius); - - font-weight: 700; - - cursor: pointer; - - &:hover { - background-color: var(--color-primary); - color: var(--color-primary-opposite); - } } } diff --git a/src/components/normal-input/normal-input.component.tsx b/src/components/normal-input/normal-input.component.tsx new file mode 100644 index 0000000..4dfa977 --- /dev/null +++ b/src/components/normal-input/normal-input.component.tsx @@ -0,0 +1,49 @@ +import { ComponentProps, ReactElement, forwardRef, ForwardedRef } from "react"; + +import clsx from "clsx"; + +import { ButtonComponent } from "@/components/button/button.component"; + +import styles from "./normal-input.module.css"; + +type Props = ComponentProps<"input"> & { + label: string; + prefixIcon?: ReactElement; + suffixIcon?: ReactElement; + onSuffixClick?: ComponentProps["onClick"]; +}; + +function NormalInputComponent( + { + label, + prefixIcon, + suffixIcon, + onSuffixClick, + className, + ...otherProps + }: Props, + ref: ForwardedRef, +): ReactElement { + return ( + + ); +} + +export default forwardRef(NormalInputComponent); \ No newline at end of file diff --git a/src/components/normal-input/normal-input.module.css b/src/components/normal-input/normal-input.module.css new file mode 100644 index 0000000..b24ec32 --- /dev/null +++ b/src/components/normal-input/normal-input.module.css @@ -0,0 +1,49 @@ +.normal-input { + .label-text { + font-size: var(--fz-300); + } + + .box { + color: var(--color-border); + + display: flex; + align-items: center; + gap: 0.5rem; + + padding: 0.5rem; + + border: 1px solid currentcolor; + border-radius: var(--border-radius); + + input { + flex: 1 1 0; + + background-color: var(--color-surface-700); + color: inherit; + + block-size: 1em; + + border: none; + + font-size: 1rem; + line-height: 1; + + &:focus { + outline: none; + } + } + + .prefix-icon, + .suffix-icon { + display: grid; + + font-size: 1.25rem; + } + } + + &:focus-within { + .box { + color: var(--color-primary); + } + } +} diff --git a/src/components/password-input/password-input.component.tsx b/src/components/password-input/password-input.component.tsx new file mode 100644 index 0000000..2386ec2 --- /dev/null +++ b/src/components/password-input/password-input.component.tsx @@ -0,0 +1,37 @@ +"use client"; + +import { + ComponentProps, + ForwardedRef, + forwardRef, + ReactElement, + useState, +} from "react"; + +import NormalInputComponent from "@/components/normal-input/normal-input.component"; + +import MingcuteKey2Line from "@/icons/MingcuteKey2Line"; +import MingcuteEye2Line from "@/icons/MingcuteEye2Line"; +import MingcuteEyeCloseLine from "@/icons/MingcuteEyeCloseLine"; + +type Props = ComponentProps; + +function PasswordInputComponent( + { ...otherProps }: Props, + ref: ForwardedRef, +): ReactElement { + const [isVisible, setIsVisible] = useState(false); + + return ( + } + suffixIcon={isVisible ? : } + onSuffixClick={() => setIsVisible((old) => !old)} + {...otherProps} + /> + ); +} + +export default forwardRef(PasswordInputComponent); \ No newline at end of file diff --git a/src/components/password-input/password-input.module.css b/src/components/password-input/password-input.module.css new file mode 100644 index 0000000..e69de29 diff --git a/src/icons/MingcuteCalendarMonthLine.tsx b/src/icons/MingcuteCalendarMonthLine.tsx new file mode 100644 index 0000000..2563233 --- /dev/null +++ b/src/icons/MingcuteCalendarMonthLine.tsx @@ -0,0 +1,22 @@ +import React, { SVGProps } from "react"; + +export function MingcuteCalendarMonthLine(props: SVGProps) { + return ( + + + + + + + ); +} +export default MingcuteCalendarMonthLine; \ No newline at end of file diff --git a/src/icons/MingcuteEyeCloseLine.tsx b/src/icons/MingcuteEyeCloseLine.tsx new file mode 100644 index 0000000..3d95322 --- /dev/null +++ b/src/icons/MingcuteEyeCloseLine.tsx @@ -0,0 +1,23 @@ +import React, { SVGProps } from "react"; + +export function MingcuteEyeCloseLine(props: SVGProps) { + return ( + + + + + + + ); +} + +export default MingcuteEyeCloseLine; \ No newline at end of file diff --git a/src/icons/MingcuteIncognitoModeLine.tsx b/src/icons/MingcuteIncognitoModeLine.tsx new file mode 100644 index 0000000..19f091c --- /dev/null +++ b/src/icons/MingcuteIncognitoModeLine.tsx @@ -0,0 +1,23 @@ +import React, { SVGProps } from "react"; + +export function MingcuteIncognitoModeLine(props: SVGProps) { + return ( + + + + + + + ); +} + +export default MingcuteIncognitoModeLine; \ No newline at end of file diff --git a/src/icons/MingcuteKey2Line.tsx b/src/icons/MingcuteKey2Line.tsx new file mode 100644 index 0000000..81ec9f4 --- /dev/null +++ b/src/icons/MingcuteKey2Line.tsx @@ -0,0 +1,23 @@ +import React, { SVGProps } from "react"; + +export function MingcuteKey2Line(props: SVGProps) { + return ( + + + + + + + ); +} + +export default MingcuteKey2Line; \ No newline at end of file diff --git a/src/icons/MingcuteMailLine.tsx b/src/icons/MingcuteMailLine.tsx new file mode 100644 index 0000000..2be68e7 --- /dev/null +++ b/src/icons/MingcuteMailLine.tsx @@ -0,0 +1,23 @@ +import React, { SVGProps } from "react"; + +export function MingcuteMailLine(props: SVGProps) { + return ( + + + + + + + ); +} + +export default MingcuteMailLine; \ No newline at end of file diff --git a/src/icons/MingcuteUser3Line.tsx b/src/icons/MingcuteUser3Line.tsx new file mode 100644 index 0000000..f35fbbe --- /dev/null +++ b/src/icons/MingcuteUser3Line.tsx @@ -0,0 +1,23 @@ +import React, { SVGProps } from "react"; + +export function MingcuteUser3Line(props: SVGProps) { + return ( + + + + + + + ); +} + +export default MingcuteUser3Line; \ No newline at end of file From 854d3a79270a27de8faeb26b3b68e35fd097ffe0 Mon Sep 17 00:00:00 2001 From: Alireza Dorrani Date: Mon, 3 Mar 2025 21:50:58 +0330 Subject: [PATCH 6/9] [ADD] dashboard --- src/app/dashboard/page.module.css | 3 +++ src/app/dashboard/page.tsx | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 src/app/dashboard/page.module.css create mode 100644 src/app/dashboard/page.tsx diff --git a/src/app/dashboard/page.module.css b/src/app/dashboard/page.module.css new file mode 100644 index 0000000..f50f869 --- /dev/null +++ b/src/app/dashboard/page.module.css @@ -0,0 +1,3 @@ +.page { + margin-block: 2rem; +} diff --git a/src/app/dashboard/page.tsx b/src/app/dashboard/page.tsx new file mode 100644 index 0000000..9845282 --- /dev/null +++ b/src/app/dashboard/page.tsx @@ -0,0 +1,20 @@ +"use client"; + +import { ReactElement } from "react"; + +import { ButtonComponent } from "@/components/button/button.component"; + +import styles from "./page.module.css"; + +export default function Page(): ReactElement { + const signOutButtonClickHandler = async (): Promise => { }; + + return ( +
+

داشبورد

+ + خروج + +
+ ); +} \ No newline at end of file From eb572533b39e9ee21ae8a0e79e29917a6e5f44f4 Mon Sep 17 00:00:00 2001 From: Alireza Dorrani Date: Wed, 5 Mar 2025 21:48:02 +0330 Subject: [PATCH 7/9] [UPDATE] auth form --- src/app/auth/styles/auth-form.module.css | 21 ++++++++++++++++-- src/assets/images/sign-in.webp | Bin 11802 -> 44466 bytes src/assets/images/sign-up.webp | Bin 13746 -> 36704 bytes .../normal-input/normal-input.module.css | 1 + 4 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/app/auth/styles/auth-form.module.css b/src/app/auth/styles/auth-form.module.css index 1c8f1e6..94b764a 100644 --- a/src/app/auth/styles/auth-form.module.css +++ b/src/app/auth/styles/auth-form.module.css @@ -3,18 +3,31 @@ .card-content { display: grid; - grid-template-columns: 3fr 2fr; + grid-template-columns: 1fr 1fr; gap: 1rem; .writings { display: grid; gap: 1rem; + h1 { + margin-block-end: 1rem; + padding-inline-start: 0.5rem; + + border-inline-start: 2px dashed var(--color-border); + + /* font-size: var(--fz-500); */ + } + form { display: grid; gap: 1rem; } + form > button:last-of-type { + margin-block-start: 0.5rem; + } + .change-form { a { color: var(--color-primary); @@ -32,7 +45,11 @@ img { block-size: 100%; inline-size: 100%; - object-fit: cover; + object-fit: contain; + + padding: 0.5rem; + + background-color: var(--color-primary-fade); border-radius: var(--border-radius); } diff --git a/src/assets/images/sign-in.webp b/src/assets/images/sign-in.webp index 5ae9ac2b576fbcff730ecd80b7e4ae6986fae2e4..f34457d2b8b21cf34760bb0c27b82447e8c24c12 100644 GIT binary patch literal 44466 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ΝpIrp;m^wt0DhX0@8L`-)a_Yb9Y5l}ntW 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 XST(IPw0S2fu=0=-K*?so00000;Ho5P literal 11802 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 literal 13746 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 diff --git a/src/components/normal-input/normal-input.module.css b/src/components/normal-input/normal-input.module.css index b24ec32..4c92244 100644 --- a/src/components/normal-input/normal-input.module.css +++ b/src/components/normal-input/normal-input.module.css @@ -1,6 +1,7 @@ .normal-input { .label-text { font-size: var(--fz-300); + margin-block-end: 0.5rem; } .box { From bc97420e5f6eb6a744d3f67bd8d340f7978fd2e7 Mon Sep 17 00:00:00 2001 From: Alireza Dorrani Date: Wed, 5 Mar 2025 21:49:34 +0330 Subject: [PATCH 8/9] [PRETTIER] fixed format --- prisma/seed.ts | 24 ++--- .../sign-in-form/sign-in-form.component.tsx | 78 +++++++------- .../sign-up-form/sign-up-form.component.tsx | 100 ++++++++--------- src/app/auth/sign-in/page.tsx | 12 +-- src/app/auth/sign-up/page.tsx | 12 +-- src/app/dashboard/page.tsx | 20 ++-- src/components/button/button.component.tsx | 102 +++++++++--------- .../normal-input/normal-input.component.tsx | 68 ++++++------ .../password-input.component.tsx | 38 +++---- src/icons/MingcuteCalendarMonthLine.tsx | 36 +++---- src/icons/MingcuteEyeCloseLine.tsx | 36 +++---- src/icons/MingcuteIncognitoModeLine.tsx | 36 +++---- src/icons/MingcuteKey2Line.tsx | 36 +++---- src/icons/MingcuteMailLine.tsx | 36 +++---- src/icons/MingcuteUser3Line.tsx | 36 +++---- src/lib/prisma.ts | 2 +- 16 files changed, 336 insertions(+), 336 deletions(-) diff --git a/prisma/seed.ts b/prisma/seed.ts index 01d0ee5..7bd0020 100644 --- a/prisma/seed.ts +++ b/prisma/seed.ts @@ -1,20 +1,20 @@ import { Prisma, PrismaClient } from "@prisma/client"; -const prisma = new PrismaClient; +const prisma = new PrismaClient(); const users: Prisma.UserCreateInput[] = [ - { - name: "علیرضا درانی کریانی", - username: "alireza97d", - email: "alireza97d@gmail.com", - password: "admin" - }, + { + name: "علیرضا درانی کریانی", + username: "alireza97d", + email: "alireza97d@gmail.com", + password: "admin", + }, ]; export async function main() { - for (const user of users) { - await prisma.user.create({ data: user }); - }; -}; + for (const user of users) { + await prisma.user.create({ data: user }); + } +} -main().then(() => console.log("Done!")); \ No newline at end of file +main().then(() => console.log("Done!")); diff --git a/src/app/auth/components/sign-in-form/sign-in-form.component.tsx b/src/app/auth/components/sign-in-form/sign-in-form.component.tsx index 97fa8d6..00fd9df 100644 --- a/src/app/auth/components/sign-in-form/sign-in-form.component.tsx +++ b/src/app/auth/components/sign-in-form/sign-in-form.component.tsx @@ -17,43 +17,43 @@ import MingcuteUser3Line from "@/icons/MingcuteUser3Line"; import styles from "@/app/auth/styles/auth-form.module.css"; export default function SignInFormComponent(): ReactElement { - const formSubmitHandler = async ( - e: FormEvent, - ): Promise => { - e.preventDefault(); - }; - - return ( -
- -
-
-

ورود!

-
- } - /> - - ورود - -
- قبلاً ثبت‌نام نکردید؟ - {` `} - ثبت‌نام کنید. -
-
-
- -
-
-
+ const formSubmitHandler = async ( + e: FormEvent, + ): Promise => { + e.preventDefault(); + }; + + return ( +
+ +
+
+

ورود!

+
+ } + /> + + ورود + +
+ قبلاً ثبت‌نام نکردید؟ + {` `} + ثبت‌نام کنید. +
+
+
+ +
- ); -} \ No newline at end of file +
+
+ ); +} diff --git a/src/app/auth/components/sign-up-form/sign-up-form.component.tsx b/src/app/auth/components/sign-up-form/sign-up-form.component.tsx index d99af99..46681da 100644 --- a/src/app/auth/components/sign-up-form/sign-up-form.component.tsx +++ b/src/app/auth/components/sign-up-form/sign-up-form.component.tsx @@ -19,57 +19,57 @@ import MingcuteMailLine from "@/icons/MingcuteMailLine"; import styles from "@/app/auth/styles/auth-form.module.css"; const SignUpFormComponent = (): ReactElement => { - const formSubmitHandler = async ( - e: FormEvent, - ): Promise => { - e.preventDefault(); - }; + const formSubmitHandler = async ( + e: FormEvent, + ): Promise => { + e.preventDefault(); + }; - return ( -
- -
-
-

ثبت‌نام!

-
- } - /> - } - /> - } - /> - - ثبت‌نام - -
- قبلاً ثبت‌نام کردید؟ - {` `} - وارد شوید. -
-
-
- -
-
-
+ return ( +
+ +
+
+

ثبت‌نام!

+
+ } + /> + } + /> + } + /> + + ثبت‌نام + +
+ قبلاً ثبت‌نام کردید؟ + {` `} + وارد شوید. +
+
+
+ +
- ); -} +
+
+ ); +}; export default SignUpFormComponent; diff --git a/src/app/auth/sign-in/page.tsx b/src/app/auth/sign-in/page.tsx index 093590e..e34ac1c 100644 --- a/src/app/auth/sign-in/page.tsx +++ b/src/app/auth/sign-in/page.tsx @@ -5,9 +5,9 @@ import SignInFormComponent from "@/app/auth/components/sign-in-form/sign-in-form import styles from "./page.module.css"; export default function Page(): ReactElement { - return ( -
- -
- ); -} \ No newline at end of file + return ( +
+ +
+ ); +} diff --git a/src/app/auth/sign-up/page.tsx b/src/app/auth/sign-up/page.tsx index b361d4d..b9f721c 100644 --- a/src/app/auth/sign-up/page.tsx +++ b/src/app/auth/sign-up/page.tsx @@ -5,11 +5,11 @@ import SignUpFormComponent from "../components/sign-up-form/sign-up-form.compone import styles from "./page.module.css"; const Page = (): ReactElement => { - return ( -
- -
- ) -} + return ( +
+ +
+ ); +}; export default Page; diff --git a/src/app/dashboard/page.tsx b/src/app/dashboard/page.tsx index 9845282..f14262d 100644 --- a/src/app/dashboard/page.tsx +++ b/src/app/dashboard/page.tsx @@ -7,14 +7,14 @@ import { ButtonComponent } from "@/components/button/button.component"; import styles from "./page.module.css"; export default function Page(): ReactElement { - const signOutButtonClickHandler = async (): Promise => { }; + const signOutButtonClickHandler = async (): Promise => {}; - return ( -
-

داشبورد

- - خروج - -
- ); -} \ No newline at end of file + return ( +
+

داشبورد

+ + خروج + +
+ ); +} diff --git a/src/components/button/button.component.tsx b/src/components/button/button.component.tsx index 6c29a6b..31e2a9f 100644 --- a/src/components/button/button.component.tsx +++ b/src/components/button/button.component.tsx @@ -14,10 +14,10 @@ export type ButtonSize = "medium" | "large"; export type ButtonPosition = "default" | "inline"; type CommonProps = { - variant?: ButtonVariant; - shape?: ButtonShape; - size?: ButtonSize; - position?: ButtonPosition; + variant?: ButtonVariant; + shape?: ButtonShape; + size?: ButtonSize; + position?: ButtonPosition; }; type ButtonComponentProps = ComponentProps<"button"> & CommonProps; @@ -25,55 +25,55 @@ type ButtonComponentProps = ComponentProps<"button"> & CommonProps; type ButtonLinkComponentProps = ComponentProps & CommonProps; export function ButtonComponent({ - variant = "default", - shape = "solid", - size = "medium", - position = "default", - className, - children, - ...otherProps + variant = "default", + shape = "solid", + size = "medium", + position = "default", + className, + children, + ...otherProps }: ButtonComponentProps): ReactElement { - return ( - - ); + return ( + + ); } export function ButtonLinkComponent({ - variant = "default", - shape = "solid", - size = "medium", - position = "default", - className, - href, - children, - ...otherProps + variant = "default", + shape = "solid", + size = "medium", + position = "default", + className, + href, + children, + ...otherProps }: ButtonLinkComponentProps): ReactElement { - return ( - - {children} - - ); -} \ No newline at end of file + return ( + + {children} + + ); +} diff --git a/src/components/normal-input/normal-input.component.tsx b/src/components/normal-input/normal-input.component.tsx index 4dfa977..4ed7ad3 100644 --- a/src/components/normal-input/normal-input.component.tsx +++ b/src/components/normal-input/normal-input.component.tsx @@ -7,43 +7,43 @@ import { ButtonComponent } from "@/components/button/button.component"; import styles from "./normal-input.module.css"; type Props = ComponentProps<"input"> & { - label: string; - prefixIcon?: ReactElement; - suffixIcon?: ReactElement; - onSuffixClick?: ComponentProps["onClick"]; + label: string; + prefixIcon?: ReactElement; + suffixIcon?: ReactElement; + onSuffixClick?: ComponentProps["onClick"]; }; function NormalInputComponent( - { - label, - prefixIcon, - suffixIcon, - onSuffixClick, - className, - ...otherProps - }: Props, - ref: ForwardedRef, + { + label, + prefixIcon, + suffixIcon, + onSuffixClick, + className, + ...otherProps + }: Props, + ref: ForwardedRef, ): ReactElement { - return ( - - ); + return ( + + ); } -export default forwardRef(NormalInputComponent); \ No newline at end of file +export default forwardRef(NormalInputComponent); diff --git a/src/components/password-input/password-input.component.tsx b/src/components/password-input/password-input.component.tsx index 2386ec2..335a674 100644 --- a/src/components/password-input/password-input.component.tsx +++ b/src/components/password-input/password-input.component.tsx @@ -1,11 +1,11 @@ "use client"; import { - ComponentProps, - ForwardedRef, - forwardRef, - ReactElement, - useState, + ComponentProps, + ForwardedRef, + forwardRef, + ReactElement, + useState, } from "react"; import NormalInputComponent from "@/components/normal-input/normal-input.component"; @@ -17,21 +17,21 @@ import MingcuteEyeCloseLine from "@/icons/MingcuteEyeCloseLine"; type Props = ComponentProps; function PasswordInputComponent( - { ...otherProps }: Props, - ref: ForwardedRef, + { ...otherProps }: Props, + ref: ForwardedRef, ): ReactElement { - const [isVisible, setIsVisible] = useState(false); + const [isVisible, setIsVisible] = useState(false); - return ( - } - suffixIcon={isVisible ? : } - onSuffixClick={() => setIsVisible((old) => !old)} - {...otherProps} - /> - ); + return ( + } + suffixIcon={isVisible ? : } + onSuffixClick={() => setIsVisible((old) => !old)} + {...otherProps} + /> + ); } -export default forwardRef(PasswordInputComponent); \ No newline at end of file +export default forwardRef(PasswordInputComponent); diff --git a/src/icons/MingcuteCalendarMonthLine.tsx b/src/icons/MingcuteCalendarMonthLine.tsx index 2563233..864b4f8 100644 --- a/src/icons/MingcuteCalendarMonthLine.tsx +++ b/src/icons/MingcuteCalendarMonthLine.tsx @@ -1,22 +1,22 @@ import React, { SVGProps } from "react"; export function MingcuteCalendarMonthLine(props: SVGProps) { - return ( - - - - - - - ); + return ( + + + + + + + ); } -export default MingcuteCalendarMonthLine; \ No newline at end of file +export default MingcuteCalendarMonthLine; diff --git a/src/icons/MingcuteEyeCloseLine.tsx b/src/icons/MingcuteEyeCloseLine.tsx index 3d95322..f49afa9 100644 --- a/src/icons/MingcuteEyeCloseLine.tsx +++ b/src/icons/MingcuteEyeCloseLine.tsx @@ -1,23 +1,23 @@ import React, { SVGProps } from "react"; export function MingcuteEyeCloseLine(props: SVGProps) { - return ( - - - - - - - ); + return ( + + + + + + + ); } -export default MingcuteEyeCloseLine; \ No newline at end of file +export default MingcuteEyeCloseLine; diff --git a/src/icons/MingcuteIncognitoModeLine.tsx b/src/icons/MingcuteIncognitoModeLine.tsx index 19f091c..a008539 100644 --- a/src/icons/MingcuteIncognitoModeLine.tsx +++ b/src/icons/MingcuteIncognitoModeLine.tsx @@ -1,23 +1,23 @@ import React, { SVGProps } from "react"; export function MingcuteIncognitoModeLine(props: SVGProps) { - return ( - - - - - - - ); + return ( + + + + + + + ); } -export default MingcuteIncognitoModeLine; \ No newline at end of file +export default MingcuteIncognitoModeLine; diff --git a/src/icons/MingcuteKey2Line.tsx b/src/icons/MingcuteKey2Line.tsx index 81ec9f4..eb0affa 100644 --- a/src/icons/MingcuteKey2Line.tsx +++ b/src/icons/MingcuteKey2Line.tsx @@ -1,23 +1,23 @@ import React, { SVGProps } from "react"; export function MingcuteKey2Line(props: SVGProps) { - return ( - - - - - - - ); + return ( + + + + + + + ); } -export default MingcuteKey2Line; \ No newline at end of file +export default MingcuteKey2Line; diff --git a/src/icons/MingcuteMailLine.tsx b/src/icons/MingcuteMailLine.tsx index 2be68e7..1d196ea 100644 --- a/src/icons/MingcuteMailLine.tsx +++ b/src/icons/MingcuteMailLine.tsx @@ -1,23 +1,23 @@ import React, { SVGProps } from "react"; export function MingcuteMailLine(props: SVGProps) { - return ( - - - - - - - ); + return ( + + + + + + + ); } -export default MingcuteMailLine; \ No newline at end of file +export default MingcuteMailLine; diff --git a/src/icons/MingcuteUser3Line.tsx b/src/icons/MingcuteUser3Line.tsx index f35fbbe..8c580ab 100644 --- a/src/icons/MingcuteUser3Line.tsx +++ b/src/icons/MingcuteUser3Line.tsx @@ -1,23 +1,23 @@ import React, { SVGProps } from "react"; export function MingcuteUser3Line(props: SVGProps) { - return ( - - - - - - - ); + return ( + + + + + + + ); } -export default MingcuteUser3Line; \ No newline at end of file +export default MingcuteUser3Line; diff --git a/src/lib/prisma.ts b/src/lib/prisma.ts index 2abd026..8dce7b8 100644 --- a/src/lib/prisma.ts +++ b/src/lib/prisma.ts @@ -6,4 +6,4 @@ const globalForPrisma = global as unknown as { prisma: typeof prisma }; if (process.env.NODE_ENV !== "production") globalForPrisma.prisma = prisma; -export default prisma; \ No newline at end of file +export default prisma; From d0a0be748c3f533b0352ae9c143834fce7a43858 Mon Sep 17 00:00:00 2001 From: Alireza Dorrani Date: Wed, 12 Mar 2025 19:44:40 +0330 Subject: [PATCH 9/9] [UPDATE] auth form css file --- src/app/auth/styles/auth-form.module.css | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/app/auth/styles/auth-form.module.css b/src/app/auth/styles/auth-form.module.css index 94b764a..d103b27 100644 --- a/src/app/auth/styles/auth-form.module.css +++ b/src/app/auth/styles/auth-form.module.css @@ -15,8 +15,6 @@ padding-inline-start: 0.5rem; border-inline-start: 2px dashed var(--color-border); - - /* font-size: var(--fz-500); */ } form {