From a021735784fe0ae6c93ec668ccb93a986778c03c Mon Sep 17 00:00:00 2001 From: gyoyeon Kim Date: Tue, 18 Mar 2025 15:42:51 +0900 Subject: [PATCH 001/542] =?UTF-8?q?chore=20:=20card,=20table=20=ED=8C=8C?= =?UTF-8?q?=EC=9D=BC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/commoon/table/TableMeber.tsx | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/components/commoon/table/TableMeber.tsx diff --git a/src/components/commoon/table/TableMeber.tsx b/src/components/commoon/table/TableMeber.tsx new file mode 100644 index 00000000..e69de29b From d3d8aba0e022fdc04bf9d00b81497e6c2f3ec526 Mon Sep 17 00:00:00 2001 From: gyoyeon Kim Date: Tue, 18 Mar 2025 17:19:21 +0900 Subject: [PATCH 002/542] =?UTF-8?q?feat:=20=EB=9E=9C=EB=8D=A4=ED=94=84?= =?UTF-8?q?=EB=A1=9C=ED=95=84,=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/commoon/table/MeberList.tsx | 7 +++++ .../commoon/table/RandomProfile.tsx | 29 +++++++++++++++++++ src/components/commoon/table/TableMeber.tsx | 0 src/pages/test.tsx | 14 +++++++++ 4 files changed, 50 insertions(+) create mode 100644 src/components/commoon/table/MeberList.tsx create mode 100644 src/components/commoon/table/RandomProfile.tsx delete mode 100644 src/components/commoon/table/TableMeber.tsx create mode 100644 src/pages/test.tsx diff --git a/src/components/commoon/table/MeberList.tsx b/src/components/commoon/table/MeberList.tsx new file mode 100644 index 00000000..db12fc73 --- /dev/null +++ b/src/components/commoon/table/MeberList.tsx @@ -0,0 +1,7 @@ +import { useState } from "react"; + +interface Member { + id: number; + name: string; + email: string; +} diff --git a/src/components/commoon/table/RandomProfile.tsx b/src/components/commoon/table/RandomProfile.tsx new file mode 100644 index 00000000..18701b42 --- /dev/null +++ b/src/components/commoon/table/RandomProfile.tsx @@ -0,0 +1,29 @@ +interface RandomProfileProps { + size: number; + name: string; +} + +// 이름 첫 글자에 따라 배경색 변경 +const selectColor = () => { + const colors = [ + "bg-red-500", + "bg-blue-400", + "bg-green-500", + "bg-yellow-400", + "bg-purple-500", + ]; + return colors[Math.floor(Math.random() * colors.length)]; +}; + +export default function RandomProfile({ name }: RandomProfileProps) { + const letter = name[0]; + const bgColor = selectColor(); + + return ( +
+ {letter} +
+ ); +} diff --git a/src/components/commoon/table/TableMeber.tsx b/src/components/commoon/table/TableMeber.tsx deleted file mode 100644 index e69de29b..00000000 diff --git a/src/pages/test.tsx b/src/pages/test.tsx new file mode 100644 index 00000000..eb7df695 --- /dev/null +++ b/src/pages/test.tsx @@ -0,0 +1,14 @@ +// 컴포넌트 test 파일 + +import RandomProfile from "../components/commoon/table/RandomProfile"; + +export default function TestPage() { + return ( +
+

RandomProfile 테스트

+ + + +
+ ); +} From 24fd9ec9f577c9e342ce6e65a5610b760f160174 Mon Sep 17 00:00:00 2001 From: hyejin Date: Tue, 18 Mar 2025 19:28:32 +0900 Subject: [PATCH 003/542] =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- declares.d.ts | 1 + public/{images => svgs}/Taskify-white.svg | 0 public/{images => svgs}/Taskify.svg | 0 public/{images => svgs}/add-box copy.svg | 0 public/{images => svgs}/add-box-white.svg | 0 public/{images => svgs}/add-box.svg | 0 .../{images => svgs}/arrow-backward-black.svg | 0 .../{images => svgs}/arrow-backward-white.svg | 0 public/{images => svgs}/arrow-down-black.svg | 0 .../{images => svgs}/arrow-forward-black.svg | 0 .../{images => svgs}/arrow-forward-white.svg | 0 public/{images => svgs}/calendar.svg | 0 public/{images => svgs}/check.svg | 0 public/{images => svgs}/close.svg | 0 public/{images => svgs}/cross-button.svg | 0 public/{images => svgs}/crown.svg | 0 public/{images => svgs}/envelope.svg | 0 public/{images => svgs}/eye.svg | 0 public/{images => svgs}/facebook.svg | 0 public/{images => svgs}/instagram.svg | 0 public/{images => svgs}/kebab.svg | 0 public/{images => svgs}/logo-white.svg | 0 public/{images => svgs}/logo.svg | 0 public/{images => svgs}/none-eye.svg | 0 public/{images => svgs}/plus.svg | 0 public/{images => svgs}/purple-circle.svg | 0 public/{images => svgs}/search.svg | 0 public/{images => svgs}/setting.svg | 0 public/{images => svgs}/stroke.svg | 0 public/{images => svgs}/unsubscribe.svg | 0 public/{images => svgs}/x-button.svg | 0 public/{images => svgs}/x-button2.svg | 0 src/components/Button/Button.jsx | 32 +++++++++++++++++++ src/pages/_app.tsx | 13 ++++++++ src/pages/{document.tsx => _document.tsx} | 0 src/pages/app.tsx | 6 ---- src/pages/index.tsx | 12 ++++++- .../{globals.css => globals.module.css} | 0 tsconfig.json | 3 +- 39 files changed, 59 insertions(+), 8 deletions(-) create mode 100644 declares.d.ts rename public/{images => svgs}/Taskify-white.svg (100%) rename public/{images => svgs}/Taskify.svg (100%) rename public/{images => svgs}/add-box copy.svg (100%) rename public/{images => svgs}/add-box-white.svg (100%) rename public/{images => svgs}/add-box.svg (100%) rename public/{images => svgs}/arrow-backward-black.svg (100%) rename public/{images => svgs}/arrow-backward-white.svg (100%) rename public/{images => svgs}/arrow-down-black.svg (100%) rename public/{images => svgs}/arrow-forward-black.svg (100%) rename public/{images => svgs}/arrow-forward-white.svg (100%) rename public/{images => svgs}/calendar.svg (100%) rename public/{images => svgs}/check.svg (100%) rename public/{images => svgs}/close.svg (100%) rename public/{images => svgs}/cross-button.svg (100%) rename public/{images => svgs}/crown.svg (100%) rename public/{images => svgs}/envelope.svg (100%) rename public/{images => svgs}/eye.svg (100%) rename public/{images => svgs}/facebook.svg (100%) rename public/{images => svgs}/instagram.svg (100%) rename public/{images => svgs}/kebab.svg (100%) rename public/{images => svgs}/logo-white.svg (100%) rename public/{images => svgs}/logo.svg (100%) rename public/{images => svgs}/none-eye.svg (100%) rename public/{images => svgs}/plus.svg (100%) rename public/{images => svgs}/purple-circle.svg (100%) rename public/{images => svgs}/search.svg (100%) rename public/{images => svgs}/setting.svg (100%) rename public/{images => svgs}/stroke.svg (100%) rename public/{images => svgs}/unsubscribe.svg (100%) rename public/{images => svgs}/x-button.svg (100%) rename public/{images => svgs}/x-button2.svg (100%) create mode 100644 src/components/Button/Button.jsx create mode 100644 src/pages/_app.tsx rename src/pages/{document.tsx => _document.tsx} (100%) delete mode 100644 src/pages/app.tsx rename src/styles/{globals.css => globals.module.css} (100%) diff --git a/declares.d.ts b/declares.d.ts new file mode 100644 index 00000000..1eabbb42 --- /dev/null +++ b/declares.d.ts @@ -0,0 +1 @@ +declare module "*.module.css"; diff --git a/public/images/Taskify-white.svg b/public/svgs/Taskify-white.svg similarity index 100% rename from public/images/Taskify-white.svg rename to public/svgs/Taskify-white.svg diff --git a/public/images/Taskify.svg b/public/svgs/Taskify.svg similarity index 100% rename from public/images/Taskify.svg rename to public/svgs/Taskify.svg diff --git a/public/images/add-box copy.svg b/public/svgs/add-box copy.svg similarity index 100% rename from public/images/add-box copy.svg rename to public/svgs/add-box copy.svg diff --git a/public/images/add-box-white.svg b/public/svgs/add-box-white.svg similarity index 100% rename from public/images/add-box-white.svg rename to public/svgs/add-box-white.svg diff --git a/public/images/add-box.svg b/public/svgs/add-box.svg similarity index 100% rename from public/images/add-box.svg rename to public/svgs/add-box.svg diff --git a/public/images/arrow-backward-black.svg b/public/svgs/arrow-backward-black.svg similarity index 100% rename from public/images/arrow-backward-black.svg rename to public/svgs/arrow-backward-black.svg diff --git a/public/images/arrow-backward-white.svg b/public/svgs/arrow-backward-white.svg similarity index 100% rename from public/images/arrow-backward-white.svg rename to public/svgs/arrow-backward-white.svg diff --git a/public/images/arrow-down-black.svg b/public/svgs/arrow-down-black.svg similarity index 100% rename from public/images/arrow-down-black.svg rename to public/svgs/arrow-down-black.svg diff --git a/public/images/arrow-forward-black.svg b/public/svgs/arrow-forward-black.svg similarity index 100% rename from public/images/arrow-forward-black.svg rename to public/svgs/arrow-forward-black.svg diff --git a/public/images/arrow-forward-white.svg b/public/svgs/arrow-forward-white.svg similarity index 100% rename from public/images/arrow-forward-white.svg rename to public/svgs/arrow-forward-white.svg diff --git a/public/images/calendar.svg b/public/svgs/calendar.svg similarity index 100% rename from public/images/calendar.svg rename to public/svgs/calendar.svg diff --git a/public/images/check.svg b/public/svgs/check.svg similarity index 100% rename from public/images/check.svg rename to public/svgs/check.svg diff --git a/public/images/close.svg b/public/svgs/close.svg similarity index 100% rename from public/images/close.svg rename to public/svgs/close.svg diff --git a/public/images/cross-button.svg b/public/svgs/cross-button.svg similarity index 100% rename from public/images/cross-button.svg rename to public/svgs/cross-button.svg diff --git a/public/images/crown.svg b/public/svgs/crown.svg similarity index 100% rename from public/images/crown.svg rename to public/svgs/crown.svg diff --git a/public/images/envelope.svg b/public/svgs/envelope.svg similarity index 100% rename from public/images/envelope.svg rename to public/svgs/envelope.svg diff --git a/public/images/eye.svg b/public/svgs/eye.svg similarity index 100% rename from public/images/eye.svg rename to public/svgs/eye.svg diff --git a/public/images/facebook.svg b/public/svgs/facebook.svg similarity index 100% rename from public/images/facebook.svg rename to public/svgs/facebook.svg diff --git a/public/images/instagram.svg b/public/svgs/instagram.svg similarity index 100% rename from public/images/instagram.svg rename to public/svgs/instagram.svg diff --git a/public/images/kebab.svg b/public/svgs/kebab.svg similarity index 100% rename from public/images/kebab.svg rename to public/svgs/kebab.svg diff --git a/public/images/logo-white.svg b/public/svgs/logo-white.svg similarity index 100% rename from public/images/logo-white.svg rename to public/svgs/logo-white.svg diff --git a/public/images/logo.svg b/public/svgs/logo.svg similarity index 100% rename from public/images/logo.svg rename to public/svgs/logo.svg diff --git a/public/images/none-eye.svg b/public/svgs/none-eye.svg similarity index 100% rename from public/images/none-eye.svg rename to public/svgs/none-eye.svg diff --git a/public/images/plus.svg b/public/svgs/plus.svg similarity index 100% rename from public/images/plus.svg rename to public/svgs/plus.svg diff --git a/public/images/purple-circle.svg b/public/svgs/purple-circle.svg similarity index 100% rename from public/images/purple-circle.svg rename to public/svgs/purple-circle.svg diff --git a/public/images/search.svg b/public/svgs/search.svg similarity index 100% rename from public/images/search.svg rename to public/svgs/search.svg diff --git a/public/images/setting.svg b/public/svgs/setting.svg similarity index 100% rename from public/images/setting.svg rename to public/svgs/setting.svg diff --git a/public/images/stroke.svg b/public/svgs/stroke.svg similarity index 100% rename from public/images/stroke.svg rename to public/svgs/stroke.svg diff --git a/public/images/unsubscribe.svg b/public/svgs/unsubscribe.svg similarity index 100% rename from public/images/unsubscribe.svg rename to public/svgs/unsubscribe.svg diff --git a/public/images/x-button.svg b/public/svgs/x-button.svg similarity index 100% rename from public/images/x-button.svg rename to public/svgs/x-button.svg diff --git a/public/images/x-button2.svg b/public/svgs/x-button2.svg similarity index 100% rename from public/images/x-button2.svg rename to public/svgs/x-button2.svg diff --git a/src/components/Button/Button.jsx b/src/components/Button/Button.jsx new file mode 100644 index 00000000..ef7f1eef --- /dev/null +++ b/src/components/Button/Button.jsx @@ -0,0 +1,32 @@ +// Button.jsx +export const CustomButton = ({ + children, + variant = "primary", + size = "medium", + disabled = false, + ...props +}) => { + const baseStyle = + "flex justify-center items-center font-bold rounded-lg cursor-pointer transition"; + + const sizeStyles = { + small: "w-[84px] h-[32px] text-lg", + medium: "w-[128px] h-[48px] text-base", + large: "w-[351px] h-[50px] text-lg", + extraLarge: "w-[520px] h-[50px] text-lg", + }; + + const variantStyles = { + primary: "bg-[#5534DA] text-white", + outline: "border border-[#D9D9D9] text-[#5534DA] ", + disabled: "border border-[#D9D9D9] text-[#787486] ", + }; + + const finalStyle = `${baseStyle} ${sizeStyles[size]} ${disabled ? variantStyles.disabled : variantStyles[variant]}`; + + return ( + + ); +}; diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx new file mode 100644 index 00000000..7838b010 --- /dev/null +++ b/src/pages/_app.tsx @@ -0,0 +1,13 @@ +// import "../styles/globals.module.css"; +import type { AppProps } from "next/app"; + +export default function App({ Component, pageProps }: AppProps) { + console.log("hello"); + + return ( +
+ hello + +
+ ); +} diff --git a/src/pages/document.tsx b/src/pages/_document.tsx similarity index 100% rename from src/pages/document.tsx rename to src/pages/_document.tsx diff --git a/src/pages/app.tsx b/src/pages/app.tsx deleted file mode 100644 index a7a790fb..00000000 --- a/src/pages/app.tsx +++ /dev/null @@ -1,6 +0,0 @@ -import "@/styles/globals.css"; -import type { AppProps } from "next/app"; - -export default function App({ Component, pageProps }: AppProps) { - return ; -} diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 929bca90..1b5123fd 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -1,6 +1,16 @@ import React, { useState } from "react"; import Head from "next/head"; +import { CustomButton } from "../components/Button/Button"; export default function Document() { - return
Hello
; + return ( +
+ + 버튼 + + + 버튼 + +
+ ); } diff --git a/src/styles/globals.css b/src/styles/globals.module.css similarity index 100% rename from src/styles/globals.css rename to src/styles/globals.module.css diff --git a/tsconfig.json b/tsconfig.json index 572b7ad3..d7a0ca52 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -8,7 +8,8 @@ "noEmit": true, "esModuleInterop": true, "module": "esnext", - "moduleResolution": "bundler", + "moduleResolution": "node", + "types": ["node"], "resolveJsonModule": true, "isolatedModules": true, "jsx": "preserve", From 986f8b0681f7208d22a3aeb90a5e1b67dcd9beb7 Mon Sep 17 00:00:00 2001 From: gyoyeon Kim Date: Tue, 18 Mar 2025 20:11:06 +0900 Subject: [PATCH 004/542] =?UTF-8?q?fix=20:=20css=20=EC=A0=81=EC=9A=A9=20?= =?UTF-8?q?=EC=95=88=EB=90=A8=20=EB=AC=B8=EC=A0=9C=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- declares.d.ts | 1 + package-lock.json | 424 +++++++++--------- package.json | 4 +- postcss.config.mjs | 7 +- .../table/{MeberList.tsx => MemberList.tsx} | 0 .../commoon/table/RandomProfile.tsx | 10 +- src/pages/{app.tsx => _app.tsx} | 0 src/pages/{document.tsx => _document.tsx} | 0 tsconfig.json | 3 +- 9 files changed, 231 insertions(+), 218 deletions(-) create mode 100644 declares.d.ts rename src/components/commoon/table/{MeberList.tsx => MemberList.tsx} (100%) rename src/pages/{app.tsx => _app.tsx} (100%) rename src/pages/{document.tsx => _document.tsx} (100%) diff --git a/declares.d.ts b/declares.d.ts new file mode 100644 index 00000000..cbe652db --- /dev/null +++ b/declares.d.ts @@ -0,0 +1 @@ +declare module "*.css"; diff --git a/package-lock.json b/package-lock.json index 55f6c6a3..e246d6f1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,10 +9,8 @@ "version": "0.1.0", "dependencies": { "@tanstack/react-query": "^5.68.0", - "autoprefixer": "^10.4.21", "axios": "^1.8.3", "next": "15.2.2", - "postcss": "^8.5.3", "prettier-plugin-tailwindcss": "^0.6.11", "react": "^19.0.0", "react-dom": "^19.0.0", @@ -24,10 +22,12 @@ "@types/node": "^20", "@types/react": "^19", "@types/react-dom": "^19", + "autoprefixer": "^10.4.21", "eslint": "^9.22.0", "eslint-config-next": "^15.2.2", "eslint-config-prettier": "^10.1.1", "eslint-plugin-prettier": "^5.2.3", + "postcss": "^8.5.3", "prettier": "^3.5.3", "tailwindcss": "^4.0.14", "typescript": "^5" @@ -664,9 +664,9 @@ "license": "MIT" }, "node_modules/@next/eslint-plugin-next": { - "version": "15.2.2", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-15.2.2.tgz", - "integrity": "sha512-1+BzokFuFQIfLaRxUKf2u5In4xhPV7tUgKcK53ywvFl6+LXHWHpFkcV7VNeKlyQKUotwiq4fy/aDNF9EiUp4RQ==", + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-15.2.3.tgz", + "integrity": "sha512-eNSOIMJtjs+dp4Ms1tB1PPPJUQHP3uZK+OQ7iFY9qXpGO6ojT6imCL+KcUOqE/GXGidWbBZJzYdgAdPHqeCEPA==", "dev": true, "license": "MIT", "dependencies": { @@ -849,163 +849,6 @@ "node": ">=12.4.0" } }, - "node_modules/@oxc-resolver/binding-darwin-arm64": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-darwin-arm64/-/binding-darwin-arm64-5.0.0.tgz", - "integrity": "sha512-zwHAf+owoxSWTDD4dFuwW+FkpaDzbaL30H5Ltocb+RmLyg4WKuteusRLKh5Y8b/cyu7UzhxM0haIqQjyqA1iuA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@oxc-resolver/binding-darwin-x64": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-darwin-x64/-/binding-darwin-x64-5.0.0.tgz", - "integrity": "sha512-1lS3aBNVjVQKBvZdHm13+8tSjvu2Tl1Cv4FnUyMYxqx6+rsom2YaOylS5LhDUwfZu0zAgpLMwK6kGpF/UPncNg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@oxc-resolver/binding-freebsd-x64": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-freebsd-x64/-/binding-freebsd-x64-5.0.0.tgz", - "integrity": "sha512-q9sRd68wC1/AJ0eu6ClhxlklVfe8gH4wrUkSyEbIYTZ8zY5yjsLY3fpqqsaCvWJUx65nW+XtnAxCGCi5AXr1Mw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@oxc-resolver/binding-linux-arm-gnueabihf": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-5.0.0.tgz", - "integrity": "sha512-catYavWsvqViYnCveQjhrK6yVYDEPFvIOgGLxnz5r2dcgrjpmquzREoyss0L2QG/J5HTTbwqwZ1kk+g56hE/1A==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@oxc-resolver/binding-linux-arm64-gnu": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-5.0.0.tgz", - "integrity": "sha512-l/0pWoQM5kVmJLg4frQ1mKZOXgi0ex/hzvFt8E4WK2ifXr5JgKFUokxsb/oat7f5YzdJJh5r9p+qS/t3dA26Aw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@oxc-resolver/binding-linux-arm64-musl": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm64-musl/-/binding-linux-arm64-musl-5.0.0.tgz", - "integrity": "sha512-bx0oz/oaAW4FGYqpIIxJCnmgb906YfMhTEWCJvYkxjpEI8VKLJEL3PQevYiqDq36SA0yRLJ/sQK2fqry8AFBfA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@oxc-resolver/binding-linux-x64-gnu": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-x64-gnu/-/binding-linux-x64-gnu-5.0.0.tgz", - "integrity": "sha512-4PH++qbSIhlRsFYdN1P9neDov4OGhTGo5nbQ1D7AL6gWFLo3gdZTc00FM2y8JjeTcPWEXkViZuwpuc0w5i6qHg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@oxc-resolver/binding-linux-x64-musl": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-x64-musl/-/binding-linux-x64-musl-5.0.0.tgz", - "integrity": "sha512-mLfQFpX3/5y9oWi0b+9FbWDkL2hM0Y29653beCHiHxAdGyVgb2DsJbK74WkMTwtSz9by8vyBh8jGPZcg1yLZbQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@oxc-resolver/binding-wasm32-wasi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-wasm32-wasi/-/binding-wasm32-wasi-5.0.0.tgz", - "integrity": "sha512-uEhsAZSo65qsRi6+IfBTEUUFbjg7T2yruJeLYpFfEATpm3ory5Mgo5vx3L0c2/Cz1OUZXBgp3A8x6VMUB2jT2A==", - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@napi-rs/wasm-runtime": "^0.2.7" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@oxc-resolver/binding-win32-arm64-msvc": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-5.0.0.tgz", - "integrity": "sha512-8DbSso9Jp1ns8AYuZFXdRfAcdJrzZwkFm/RjPuvAPTENsm685dosBF8G6gTHQlHvULnk6o3sa9ygZaTGC/UoEw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@oxc-resolver/binding-win32-x64-msvc": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-x64-msvc/-/binding-win32-x64-msvc-5.0.0.tgz", - "integrity": "sha512-ylppfPEg63NuRXOPNsXFlgyl37JrtRn0QMO26X3K3Ytp5HtLrMreQMGVtgr30e1l2YmAWqhvmKlCryOqzGPD/g==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, "node_modules/@pkgr/core": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", @@ -1354,9 +1197,9 @@ } }, "node_modules/@types/react": { - "version": "19.0.10", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.0.10.tgz", - "integrity": "sha512-JuRQ9KXLEjaUNjTWpzuR231Z2WpIwczOkBEIvbHNCzQefFIT0L8IqE6NV6ULLyC1SI/i234JnDoMkfg+RjQj2g==", + "version": "19.0.11", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.0.11.tgz", + "integrity": "sha512-vrdxRZfo9ALXth6yPfV16PYTLZwsUWhVjjC+DkfE5t1suNSbBrWC9YqSuuxJZ8Ps6z1o2ycRpIqzZJIgklq4Tw==", "dev": true, "license": "MIT", "dependencies": { @@ -1609,6 +1452,163 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@unrs/rspack-resolver-binding-darwin-arm64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@unrs/rspack-resolver-binding-darwin-arm64/-/rspack-resolver-binding-darwin-arm64-1.1.2.tgz", + "integrity": "sha512-bQx2L40UF5XxsXwkD26PzuspqUbUswWVbmclmUC+c83Cv/EFrFJ1JaZj5Q5jyYglKGOtyIWY/hXTCdWRN9vT0Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/rspack-resolver-binding-darwin-x64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@unrs/rspack-resolver-binding-darwin-x64/-/rspack-resolver-binding-darwin-x64-1.1.2.tgz", + "integrity": "sha512-dMi9a7//BsuPTnhWEDxmdKZ6wxQlPnAob8VSjefGbKX/a+pHfTaX1pm/jv2VPdarP96IIjCKPatJS/TtLQeGQA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/rspack-resolver-binding-freebsd-x64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@unrs/rspack-resolver-binding-freebsd-x64/-/rspack-resolver-binding-freebsd-x64-1.1.2.tgz", + "integrity": "sha512-RiBZQ+LSORQObfhV1yH7jGz+4sN3SDYtV53jgc8tUVvqdqVDaUm1KA3zHLffmoiYNGrYkE3sSreGC+FVpsB4Vg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@unrs/rspack-resolver-binding-linux-arm-gnueabihf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@unrs/rspack-resolver-binding-linux-arm-gnueabihf/-/rspack-resolver-binding-linux-arm-gnueabihf-1.1.2.tgz", + "integrity": "sha512-IyKIFBtOvuPCJt1WPx9e9ovTGhZzrIbW11vWzw4aPmx3VShE+YcMpAldqQubdCep0UVKZyFt+2hQDQZwFiJ4jg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/rspack-resolver-binding-linux-arm64-gnu": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@unrs/rspack-resolver-binding-linux-arm64-gnu/-/rspack-resolver-binding-linux-arm64-gnu-1.1.2.tgz", + "integrity": "sha512-RfYtlCtJrv5i6TO4dSlpbyOJX9Zbhmkqrr9hjDfr6YyE5KD0ywLRzw8UjXsohxG1XWgRpb2tvPuRYtURJwbqWg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/rspack-resolver-binding-linux-arm64-musl": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@unrs/rspack-resolver-binding-linux-arm64-musl/-/rspack-resolver-binding-linux-arm64-musl-1.1.2.tgz", + "integrity": "sha512-MaITzkoqsn1Rm3+YnplubgAQEfOt+2jHfFvuFhXseUfcfbxe8Zyc3TM7LKwgv7mRVjIl+/yYN5JqL0cjbnhAnQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/rspack-resolver-binding-linux-x64-gnu": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@unrs/rspack-resolver-binding-linux-x64-gnu/-/rspack-resolver-binding-linux-x64-gnu-1.1.2.tgz", + "integrity": "sha512-Nu981XmzQqis/uB3j4Gi3p5BYCd/zReU5zbJmjMrEH7IIRH0dxZpdOmS/+KwEk6ao7Xd8P2D2gDHpHD/QTp0aQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/rspack-resolver-binding-linux-x64-musl": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@unrs/rspack-resolver-binding-linux-x64-musl/-/rspack-resolver-binding-linux-x64-musl-1.1.2.tgz", + "integrity": "sha512-xJupeDvaRpV0ADMuG1dY9jkOjhUzTqtykvchiU2NldSD+nafSUcMWnoqzNUx7HGiqbTMOw9d9xT8ZiFs+6ZFyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/rspack-resolver-binding-wasm32-wasi": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@unrs/rspack-resolver-binding-wasm32-wasi/-/rspack-resolver-binding-wasm32-wasi-1.1.2.tgz", + "integrity": "sha512-un6X/xInks+KEgGpIHFV8BdoODHRohaDRvOwtjq+FXuoI4Ga0P6sLRvf4rPSZDvoMnqUhZtVNG0jG9oxOnrrLQ==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^0.2.7" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@unrs/rspack-resolver-binding-win32-arm64-msvc": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@unrs/rspack-resolver-binding-win32-arm64-msvc/-/rspack-resolver-binding-win32-arm64-msvc-1.1.2.tgz", + "integrity": "sha512-2lCFkeT1HYUb/OOStBS1m67aZOf9BQxRA+Wf/xs94CGgzmoQt7H4V/BrkB/GSGKsudXjkiwt2oHNkHiowAS90A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/rspack-resolver-binding-win32-x64-msvc": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@unrs/rspack-resolver-binding-win32-x64-msvc/-/rspack-resolver-binding-win32-x64-msvc-1.1.2.tgz", + "integrity": "sha512-EYfya5HCQ/8Yfy7rvAAX2rGytu81+d/CIhNCbZfNKLQ690/qFsdEeTXRsMQW1afHoluMM50PsjPYu8ndy8fSQg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/acorn": { "version": "8.14.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", @@ -1867,6 +1867,7 @@ "version": "10.4.21", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==", + "dev": true, "funding": [ { "type": "opencollective", @@ -1982,6 +1983,7 @@ "version": "4.24.4", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", + "dev": true, "funding": [ { "type": "opencollective", @@ -2081,9 +2083,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001704", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001704.tgz", - "integrity": "sha512-+L2IgBbV6gXB4ETf0keSvLr7JUrRVbIaB/lrQ1+z8mRcQiisG5k+lG6O4n6Y5q6f5EuNfaYXKgymucphlEXQew==", + "version": "1.0.30001706", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001706.tgz", + "integrity": "sha512-3ZczoTApMAZwPKYWmwVbQMFpXBDds3/0VciVoUwPUbldlYyVLmRVuRs/PcUZtHpbLRpzzDvrvnFuREsGt6lUug==", "funding": [ { "type": "opencollective", @@ -2378,9 +2380,10 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.119", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.119.tgz", - "integrity": "sha512-Ku4NMzUjz3e3Vweh7PhApPrZSS4fyiCIbcIrG9eKrriYVLmbMepETR/v6SU7xPm98QTqMSYiCwfO89QNjXLkbQ==", + "version": "1.5.120", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.120.tgz", + "integrity": "sha512-oTUp3gfX1gZI+xfD2djr2rzQdHCwHzPQrrK0CD7WpTdF0nPdQ/INcRVjWgLdCT4a9W3jFObR9DAfsuyFQnI8CQ==", + "dev": true, "license": "ISC" }, "node_modules/emoji-regex": { @@ -2578,6 +2581,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -2658,13 +2662,13 @@ } }, "node_modules/eslint-config-next": { - "version": "15.2.2", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-15.2.2.tgz", - "integrity": "sha512-g34RI7RFS4HybYFwGa/okj+8WZM+/fy+pEM+aqRQoVvM4gQhKrd4wIEddKmlZfWD75j8LTwB5zwkmNv3DceH1A==", + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-15.2.3.tgz", + "integrity": "sha512-VDQwbajhNMFmrhLWVyUXCqsGPN+zz5G8Ys/QwFubfsxTIrkqdx3N3x3QPW+pERz8bzGPP0IgEm8cNbZcd8PFRQ==", "dev": true, "license": "MIT", "dependencies": { - "@next/eslint-plugin-next": "15.2.2", + "@next/eslint-plugin-next": "15.2.3", "@rushstack/eslint-patch": "^1.10.3", "@typescript-eslint/eslint-plugin": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", @@ -2721,17 +2725,17 @@ } }, "node_modules/eslint-import-resolver-typescript": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.9.0.tgz", - "integrity": "sha512-EUcFmaz0zAa6P2C9jAb5XDymRld8S6TURvWcIW7y+czOW+K8hrjgQgbhBsNE0J/dDZ6HLfcn70LqnIil9W+ICw==", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.9.1.tgz", + "integrity": "sha512-euxa5rTGqHeqVxmOHT25hpk58PxkQ4mNoX6Yun4ooGaCHAxOCojJYNvjmyeOQxj/LyW+3fulH0+xtk+p2kPPTw==", "dev": true, "license": "ISC", "dependencies": { "@nolyfill/is-core-module": "1.0.39", - "debug": "^4.3.7", + "debug": "^4.4.0", "get-tsconfig": "^4.10.0", - "is-bun-module": "^1.0.2", - "oxc-resolver": "^5.0.0", + "is-bun-module": "^1.3.0", + "rspack-resolver": "^1.1.0", "stable-hash": "^0.0.5", "tinyglobby": "^0.2.12" }, @@ -3253,6 +3257,7 @@ "version": "4.3.7", "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "dev": true, "license": "MIT", "engines": { "node": "*" @@ -4493,9 +4498,9 @@ "license": "MIT" }, "node_modules/nanoid": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.9.tgz", - "integrity": "sha512-SppoicMGpZvbF1l3z4x7No3OlIjP7QJvC9XR7AhZr1kL133KHnKPztkKDc+Ir4aJ/1VhTySrtKhrsycmrMQfvg==", + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.10.tgz", + "integrity": "sha512-vSJJTG+t/dIKAUhUDw/dLdZ9s//5OxcHqLaDWWrW4Cdq7o6tdLIczUkMXt2MBNmk6sJRZBZRXVixs7URY1CmIg==", "funding": [ { "type": "github", @@ -4603,12 +4608,14 @@ "version": "2.0.19", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "dev": true, "license": "MIT" }, "node_modules/normalize-range": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -4773,29 +4780,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/oxc-resolver": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/oxc-resolver/-/oxc-resolver-5.0.0.tgz", - "integrity": "sha512-66fopyAqCN8Mx4tzNiBXWbk8asCSuxUWN62gwTc3yfRs7JfWhX/eVJCf+fUrfbNOdQVOWn+o8pAKllp76ysMXA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/Boshen" - }, - "optionalDependencies": { - "@oxc-resolver/binding-darwin-arm64": "5.0.0", - "@oxc-resolver/binding-darwin-x64": "5.0.0", - "@oxc-resolver/binding-freebsd-x64": "5.0.0", - "@oxc-resolver/binding-linux-arm-gnueabihf": "5.0.0", - "@oxc-resolver/binding-linux-arm64-gnu": "5.0.0", - "@oxc-resolver/binding-linux-arm64-musl": "5.0.0", - "@oxc-resolver/binding-linux-x64-gnu": "5.0.0", - "@oxc-resolver/binding-linux-x64-musl": "5.0.0", - "@oxc-resolver/binding-wasm32-wasi": "5.0.0", - "@oxc-resolver/binding-win32-arm64-msvc": "5.0.0", - "@oxc-resolver/binding-win32-x64-msvc": "5.0.0" - } - }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -4901,6 +4885,7 @@ "version": "8.5.3", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", + "dev": true, "funding": [ { "type": "opencollective", @@ -4929,6 +4914,7 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true, "license": "MIT" }, "node_modules/prelude-ls": { @@ -5236,6 +5222,29 @@ "node": ">=0.10.0" } }, + "node_modules/rspack-resolver": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/rspack-resolver/-/rspack-resolver-1.1.2.tgz", + "integrity": "sha512-eHhz+9JWHFdbl/CVVqEP6kviLFZqw1s0MWxLdsGMtUKUspSO3SERptPohmrUIC9jT1bGV9Bd3+r8AmWbdfNAzQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/JounQin" + }, + "optionalDependencies": { + "@unrs/rspack-resolver-binding-darwin-arm64": "1.1.2", + "@unrs/rspack-resolver-binding-darwin-x64": "1.1.2", + "@unrs/rspack-resolver-binding-freebsd-x64": "1.1.2", + "@unrs/rspack-resolver-binding-linux-arm-gnueabihf": "1.1.2", + "@unrs/rspack-resolver-binding-linux-arm64-gnu": "1.1.2", + "@unrs/rspack-resolver-binding-linux-arm64-musl": "1.1.2", + "@unrs/rspack-resolver-binding-linux-x64-gnu": "1.1.2", + "@unrs/rspack-resolver-binding-linux-x64-musl": "1.1.2", + "@unrs/rspack-resolver-binding-wasm32-wasi": "1.1.2", + "@unrs/rspack-resolver-binding-win32-arm64-msvc": "1.1.2", + "@unrs/rspack-resolver-binding-win32-x64-msvc": "1.1.2" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -6000,6 +6009,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "dev": true, "funding": [ { "type": "opencollective", diff --git a/package.json b/package.json index 7fc7ab29..89c2c5ec 100644 --- a/package.json +++ b/package.json @@ -10,10 +10,8 @@ }, "dependencies": { "@tanstack/react-query": "^5.68.0", - "autoprefixer": "^10.4.21", "axios": "^1.8.3", "next": "15.2.2", - "postcss": "^8.5.3", "prettier-plugin-tailwindcss": "^0.6.11", "react": "^19.0.0", "react-dom": "^19.0.0", @@ -25,10 +23,12 @@ "@types/node": "^20", "@types/react": "^19", "@types/react-dom": "^19", + "autoprefixer": "^10.4.21", "eslint": "^9.22.0", "eslint-config-next": "^15.2.2", "eslint-config-prettier": "^10.1.1", "eslint-plugin-prettier": "^5.2.3", + "postcss": "^8.5.3", "prettier": "^3.5.3", "tailwindcss": "^4.0.14", "typescript": "^5" diff --git a/postcss.config.mjs b/postcss.config.mjs index 12a703d9..d0c138fb 100644 --- a/postcss.config.mjs +++ b/postcss.config.mjs @@ -1,6 +1,7 @@ -module.exports = { +/** @type {import('tailwindcss').Config} */ + +export default { plugins: { - tailwindcss: {}, - autoprefixer: {}, + "@tailwindcss/postcss": {}, }, }; diff --git a/src/components/commoon/table/MeberList.tsx b/src/components/commoon/table/MemberList.tsx similarity index 100% rename from src/components/commoon/table/MeberList.tsx rename to src/components/commoon/table/MemberList.tsx diff --git a/src/components/commoon/table/RandomProfile.tsx b/src/components/commoon/table/RandomProfile.tsx index 18701b42..62069911 100644 --- a/src/components/commoon/table/RandomProfile.tsx +++ b/src/components/commoon/table/RandomProfile.tsx @@ -6,11 +6,11 @@ interface RandomProfileProps { // 이름 첫 글자에 따라 배경색 변경 const selectColor = () => { const colors = [ - "bg-red-500", - "bg-blue-400", - "bg-green-500", - "bg-yellow-400", - "bg-purple-500", + "bg-[#C4B1A2]", + "bg-[#9DD7ED]", + "bg-[#FDD446]", + "bg-[#FFC85A]", + "bg-[#A3C4A2]", ]; return colors[Math.floor(Math.random() * colors.length)]; }; diff --git a/src/pages/app.tsx b/src/pages/_app.tsx similarity index 100% rename from src/pages/app.tsx rename to src/pages/_app.tsx diff --git a/src/pages/document.tsx b/src/pages/_document.tsx similarity index 100% rename from src/pages/document.tsx rename to src/pages/_document.tsx diff --git a/tsconfig.json b/tsconfig.json index 572b7ad3..d7a0ca52 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -8,7 +8,8 @@ "noEmit": true, "esModuleInterop": true, "module": "esnext", - "moduleResolution": "bundler", + "moduleResolution": "node", + "types": ["node"], "resolveJsonModule": true, "isolatedModules": true, "jsx": "preserve", From 399aa8b4819c6f04e0a465462afa86ffedf0865d Mon Sep 17 00:00:00 2001 From: gyoyeon Kim Date: Tue, 18 Mar 2025 20:17:29 +0900 Subject: [PATCH 005/542] =?UTF-8?q?feat=20:=20=EB=9E=9C=EB=8D=A4=20?= =?UTF-8?q?=ED=94=84=EB=A1=9C=ED=95=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../commoon/table/RandomProfile.tsx | 30 ++++++++++++------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/src/components/commoon/table/RandomProfile.tsx b/src/components/commoon/table/RandomProfile.tsx index 62069911..82383011 100644 --- a/src/components/commoon/table/RandomProfile.tsx +++ b/src/components/commoon/table/RandomProfile.tsx @@ -3,21 +3,29 @@ interface RandomProfileProps { name: string; } -// 이름 첫 글자에 따라 배경색 변경 -const selectColor = () => { - const colors = [ - "bg-[#C4B1A2]", - "bg-[#9DD7ED]", - "bg-[#FDD446]", - "bg-[#FFC85A]", - "bg-[#A3C4A2]", - ]; - return colors[Math.floor(Math.random() * colors.length)]; +// 색상 배열을 섞는 함수 > Fisher-Yates 알고리즘 +const shuffleColors = (colors: string[]) => { + let shuffled = [...colors]; // 원본 배열 복사 + for (let i = shuffled.length - 1; i > 0; i--) { + const j = Math.floor(Math.random() * (i + 1)); + [shuffled[i], shuffled[j]] = [shuffled[j], shuffled[i]]; + } + return shuffled; }; +const shuffledColors = shuffleColors([ + "bg-[#C4B1A2]", + "bg-[#9DD7ED]", + "bg-[#FDD446]", + "bg-[#FFC85A]", + "bg-[#A3C4A2]", +]); + export default function RandomProfile({ name }: RandomProfileProps) { + // 프로필 개수에 따라 색상 다르게 설정 + const bgColor = + shuffledColors[Math.floor(Math.random() * shuffledColors.length)]; const letter = name[0]; - const bgColor = selectColor(); return (
Date: Tue, 18 Mar 2025 21:05:14 +0900 Subject: [PATCH 006/542] =?UTF-8?q?Feat:=20MemberList=20=ED=94=84=EB=A1=9C?= =?UTF-8?q?=ED=95=84,=20=EC=9D=B4=EB=A6=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/commoon/table/MemberList.tsx | 50 +++++++++++++++++-- .../commoon/table/RandomProfile.tsx | 1 - src/pages/test.tsx | 8 ++- 3 files changed, 48 insertions(+), 11 deletions(-) diff --git a/src/components/commoon/table/MemberList.tsx b/src/components/commoon/table/MemberList.tsx index db12fc73..6aaaf82b 100644 --- a/src/components/commoon/table/MemberList.tsx +++ b/src/components/commoon/table/MemberList.tsx @@ -1,7 +1,47 @@ import { useState } from "react"; -interface Member { - id: number; - name: string; - email: string; -} +import RandomProfile from "./RandomProfile"; + +const MemberList = () => { + const [members, setMembers] = useState([ + // 예시 데이터 추후 api 데이터로 변경 + { name: "정만철", initial: "J" }, + { name: "김태순", initial: "K" }, + { name: "최주협", initial: "C" }, + { name: "윤지현", initial: "Y" }, + ]); + + const handleDelete = (name: string) => { + setMembers(members.filter((member) => member.name !== name)); + }; + + return ( +
+

구성원

+

이름

+
    + {members.map((member, index) => ( +
  • +
    + +

    + {member.name} +

    +
    + +
  • + ))} +
+
+ ); +}; + +export default MemberList; diff --git a/src/components/commoon/table/RandomProfile.tsx b/src/components/commoon/table/RandomProfile.tsx index 82383011..d1b8bdfd 100644 --- a/src/components/commoon/table/RandomProfile.tsx +++ b/src/components/commoon/table/RandomProfile.tsx @@ -1,5 +1,4 @@ interface RandomProfileProps { - size: number; name: string; } diff --git a/src/pages/test.tsx b/src/pages/test.tsx index eb7df695..454c3691 100644 --- a/src/pages/test.tsx +++ b/src/pages/test.tsx @@ -1,14 +1,12 @@ // 컴포넌트 test 파일 -import RandomProfile from "../components/commoon/table/RandomProfile"; +import MemberList from "@/components/commoon/table/MemberList"; export default function TestPage() { return (
-

RandomProfile 테스트

- - - +

Profile 테스트

+
); } From bcc4070dee03dbe345c0ed33652844288cd8b886 Mon Sep 17 00:00:00 2001 From: gyoyeon Kim Date: Wed, 19 Mar 2025 00:40:34 +0900 Subject: [PATCH 007/542] =?UTF-8?q?style:=20=EA=B5=AC=EC=84=B1=EC=9B=90=20?= =?UTF-8?q?=ED=85=8C=EC=9D=B4=EB=B8=94=20css=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/commoon/table/MemberList.tsx | 24 ++++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/components/commoon/table/MemberList.tsx b/src/components/commoon/table/MemberList.tsx index 6aaaf82b..87f3d5f6 100644 --- a/src/components/commoon/table/MemberList.tsx +++ b/src/components/commoon/table/MemberList.tsx @@ -1,5 +1,4 @@ import { useState } from "react"; - import RandomProfile from "./RandomProfile"; const MemberList = () => { @@ -16,24 +15,33 @@ const MemberList = () => { }; return ( -
-

구성원

-

이름

+
+
+

구성원

+
+

1 페이지 중 1

+
+
+ +

이름

+
    {members.map((member, index) => (
  • -
    +
    -

    +

    {member.name}

    From 59cf43e08584349571008b6f2b9ea979816e3705 Mon Sep 17 00:00:00 2001 From: gyoyeon Kim Date: Wed, 19 Mar 2025 01:20:55 +0900 Subject: [PATCH 008/542] =?UTF-8?q?feat=20:=20memberlist=20=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=EB=84=A4=EC=9D=B4=EC=85=98=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/commoon/table/MemberList.tsx | 85 ++++++++++++++++--- .../commoon/table/RandomProfile.tsx | 30 ++----- 2 files changed, 80 insertions(+), 35 deletions(-) diff --git a/src/components/commoon/table/MemberList.tsx b/src/components/commoon/table/MemberList.tsx index 87f3d5f6..ccd2ea55 100644 --- a/src/components/commoon/table/MemberList.tsx +++ b/src/components/commoon/table/MemberList.tsx @@ -3,45 +3,106 @@ import RandomProfile from "./RandomProfile"; const MemberList = () => { const [members, setMembers] = useState([ - // 예시 데이터 추후 api 데이터로 변경 - { name: "정만철", initial: "J" }, - { name: "김태순", initial: "K" }, - { name: "최주협", initial: "C" }, - { name: "윤지현", initial: "Y" }, + // 나중에 api 데이터로 변경 + { name: "정만철" }, + { name: "김태순" }, + { name: "최주협" }, + { name: "윤지현" }, + { name: "박영수" }, + { name: "이민정" }, ]); + const [currentPage, setCurrentPage] = useState(1); + const itemsPerPage = 4; // 한 페이지당 2명씩 표시 + const totalPages = Math.ceil(members.length / itemsPerPage); + + // 현재 페이지에 해당하는 데이터만 가져오기 + const paginatedMembers = members.slice( + (currentPage - 1) * itemsPerPage, + currentPage * itemsPerPage + ); + + /* 삭제 기능 */ const handleDelete = (name: string) => { setMembers(members.filter((member) => member.name !== name)); }; + // 페이지 이동 + const handlePrevPage = () => { + if (currentPage > 1) setCurrentPage(currentPage - 1); + }; + + const handleNextPage = () => { + if (currentPage < totalPages) setCurrentPage(currentPage + 1); + }; + return (

    구성원

    -
    -

    1 페이지 중 1

    + + {/* 페이지 정보 표시 */} +
    +

    + {currentPage} 페이지 중 {totalPages} +

    +
    + {/* 왼쪽 버튼 (첫 페이지면 비활성화) */} + + + {/* 오른쪽 버튼 (마지막 페이지면 비활성화) */} + +

    이름

      - {members.map((member, index) => ( + {paginatedMembers.map((member, index) => (
    • - +

      {member.name}

      diff --git a/src/components/commoon/table/RandomProfile.tsx b/src/components/commoon/table/RandomProfile.tsx index d1b8bdfd..e6957382 100644 --- a/src/components/commoon/table/RandomProfile.tsx +++ b/src/components/commoon/table/RandomProfile.tsx @@ -1,36 +1,20 @@ interface RandomProfileProps { name: string; + index: number; // 몇 번째 요소인지 받음 } -// 색상 배열을 섞는 함수 > Fisher-Yates 알고리즘 -const shuffleColors = (colors: string[]) => { - let shuffled = [...colors]; // 원본 배열 복사 - for (let i = shuffled.length - 1; i > 0; i--) { - const j = Math.floor(Math.random() * (i + 1)); - [shuffled[i], shuffled[j]] = [shuffled[j], shuffled[i]]; - } - return shuffled; -}; +// 4개의 고정된 색상 배열 +const colors = ["bg-[#C4B1A2]", "bg-[#9DD7ED]", "bg-[#FDD446]", "bg-[#FFC85A]"]; -const shuffledColors = shuffleColors([ - "bg-[#C4B1A2]", - "bg-[#9DD7ED]", - "bg-[#FDD446]", - "bg-[#FFC85A]", - "bg-[#A3C4A2]", -]); - -export default function RandomProfile({ name }: RandomProfileProps) { - // 프로필 개수에 따라 색상 다르게 설정 - const bgColor = - shuffledColors[Math.floor(Math.random() * shuffledColors.length)]; - const letter = name[0]; +export default function RandomProfile({ name, index }: RandomProfileProps) { + // 4개의 요소에 대해 순서대로 색상을 할당 + const bgColor = colors[index % colors.length]; return (
      - {letter} + {name[0]}
      ); } From 7f91fc441622b551fe33af0eb2f6268fd1b81f39 Mon Sep 17 00:00:00 2001 From: gyoyeon Kim Date: Wed, 19 Mar 2025 01:32:56 +0900 Subject: [PATCH 009/542] =?UTF-8?q?feat:=20memberlist=20=EB=B0=98=EC=9D=91?= =?UTF-8?q?=ED=98=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/commoon/table/MemberList.tsx | 31 +++++++++------------ 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/src/components/commoon/table/MemberList.tsx b/src/components/commoon/table/MemberList.tsx index ccd2ea55..c7c5ac82 100644 --- a/src/components/commoon/table/MemberList.tsx +++ b/src/components/commoon/table/MemberList.tsx @@ -13,21 +13,18 @@ const MemberList = () => { ]); const [currentPage, setCurrentPage] = useState(1); - const itemsPerPage = 4; // 한 페이지당 2명씩 표시 + const itemsPerPage = 4; const totalPages = Math.ceil(members.length / itemsPerPage); - // 현재 페이지에 해당하는 데이터만 가져오기 const paginatedMembers = members.slice( (currentPage - 1) * itemsPerPage, currentPage * itemsPerPage ); - /* 삭제 기능 */ const handleDelete = (name: string) => { setMembers(members.filter((member) => member.name !== name)); }; - // 페이지 이동 const handlePrevPage = () => { if (currentPage > 1) setCurrentPage(currentPage - 1); }; @@ -37,21 +34,21 @@ const MemberList = () => { }; return ( -
      +
      + {/* 헤더 */}
      -

      구성원

      +

      구성원

      - {/* 페이지 정보 표시 */} + {/* 페이지네이션 */}
      -

      +

      {currentPage} 페이지 중 {totalPages}

      - {/* 왼쪽 버튼 (첫 페이지면 비활성화) */} - {/* 오른쪽 버튼 (마지막 페이지면 비활성화) */}
      -

      이름

      + {/* 구성원 리스트 */} +

      이름

        {paginatedMembers.map((member, index) => ( @@ -90,19 +87,17 @@ const MemberList = () => { key={index} className={`flex items-center justify-between p-4 ${ index !== paginatedMembers.length - 1 - ? "border-b border-[#EEEEEE]" + ? "border-b border-gray-200" : "" }`} >
        -

        - {member.name} -

        +

        {member.name}

        From 2b5278e9737d7e59785d8e64f78da7b55b814fe9 Mon Sep 17 00:00:00 2001 From: gyoyeon Kim Date: Wed, 19 Mar 2025 12:50:25 +0900 Subject: [PATCH 010/542] =?UTF-8?q?refactor:=20=ED=8E=98=EC=9D=B4=EC=A7=80?= =?UTF-8?q?=EB=84=A4=EC=9D=B4=EC=85=98=20=EC=BB=B4=ED=8F=AC=EB=84=8C?= =?UTF-8?q?=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/commoon/Pagination.tsx | 52 +++++++++++++++++++ .../commoon/table/InviteRecords.tsx | 13 +++++ src/components/commoon/table/MemberList.tsx | 47 ++++------------- 3 files changed, 75 insertions(+), 37 deletions(-) create mode 100644 src/components/commoon/Pagination.tsx create mode 100644 src/components/commoon/table/InviteRecords.tsx diff --git a/src/components/commoon/Pagination.tsx b/src/components/commoon/Pagination.tsx new file mode 100644 index 00000000..6ee53ac9 --- /dev/null +++ b/src/components/commoon/Pagination.tsx @@ -0,0 +1,52 @@ +import React from "react"; + +interface PaginationProps { + currentPage: number; + totalPages: number; + onPrev: () => void; + onNext: () => void; +} + +const Pagination: React.FC = ({ + currentPage, + totalPages, + onPrev, + onNext, +}) => { + return ( +
        +

        + {currentPage} 페이지 중 {totalPages} +

        +
        + + + +
        +
        + ); +}; + +export default Pagination; diff --git a/src/components/commoon/table/InviteRecords.tsx b/src/components/commoon/table/InviteRecords.tsx new file mode 100644 index 00000000..1ee59b0a --- /dev/null +++ b/src/components/commoon/table/InviteRecords.tsx @@ -0,0 +1,13 @@ +import { useState } from "react"; + +const InviteList = () => { + const [invitelog, setInvitelog] = useState([ + // 나중에 api 데이터로 변경 + { email: "codeit1@codeit.com" }, + { email: "codeit2@codeit.com" }, + { email: "codeit3@codeit.com" }, + { email: "codeit4@codeit.com" }, + { email: "codeit5@codeit.com" }, + { email: "codeit6@codeit.com" }, + ]); +}; diff --git a/src/components/commoon/table/MemberList.tsx b/src/components/commoon/table/MemberList.tsx index c7c5ac82..853abd0a 100644 --- a/src/components/commoon/table/MemberList.tsx +++ b/src/components/commoon/table/MemberList.tsx @@ -1,4 +1,5 @@ import { useState } from "react"; +import Pagination from "../Pagination"; import RandomProfile from "./RandomProfile"; const MemberList = () => { @@ -12,6 +13,7 @@ const MemberList = () => { { name: "이민정" }, ]); + /* 페이지네이션 */ const [currentPage, setCurrentPage] = useState(1); const itemsPerPage = 4; const totalPages = Math.ceil(members.length / itemsPerPage); @@ -21,6 +23,7 @@ const MemberList = () => { currentPage * itemsPerPage ); + /*버튼(삭제, 이전, 다음)*/ const handleDelete = (name: string) => { setMembers(members.filter((member) => member.name !== name)); }; @@ -40,42 +43,12 @@ const MemberList = () => {

        구성원

        {/* 페이지네이션 */} -
        -

        - {currentPage} 페이지 중 {totalPages} -

        -
        - - - -
        -
        +
      {/* 구성원 리스트 */} @@ -97,7 +70,7 @@ const MemberList = () => {
      From 7ceb543b90af804ff5d0abc1792c5080bb6af305 Mon Sep 17 00:00:00 2001 From: gyoyeon Kim Date: Wed, 19 Mar 2025 13:00:41 +0900 Subject: [PATCH 011/542] =?UTF-8?q?Feat:=20=EC=B4=88=EB=8C=80=EB=82=B4?= =?UTF-8?q?=EC=97=AD=20=ED=85=8C=EC=9D=B4=EB=B8=94=20=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../commoon/table/InviteRecords.tsx | 25 +++++++++++++++++++ src/components/commoon/table/MemberList.tsx | 3 --- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/src/components/commoon/table/InviteRecords.tsx b/src/components/commoon/table/InviteRecords.tsx index 1ee59b0a..a8f99a41 100644 --- a/src/components/commoon/table/InviteRecords.tsx +++ b/src/components/commoon/table/InviteRecords.tsx @@ -1,4 +1,5 @@ import { useState } from "react"; +import Pagination from "../Pagination"; const InviteList = () => { const [invitelog, setInvitelog] = useState([ @@ -10,4 +11,28 @@ const InviteList = () => { { email: "codeit5@codeit.com" }, { email: "codeit6@codeit.com" }, ]); + + const [currentPage, setCurrentPage] = useState(1); + const itemsPerPage = 5; + const totalPages = Math.ceil(invitelog.length / itemsPerPage); + + const paginatedMembers = invitelog.slice( + (currentPage - 1) * itemsPerPage, + currentPage * itemsPerPage + ); + + /*버튼(삭제, 이전, 다음)*/ + const handleDelete = (email: string) => { + setInvitelog(invitelog.filter((invitelog) => invitelog.email !== email)); + }; + + const handlePrevPage = () => { + if (currentPage > 1) setCurrentPage(currentPage - 1); + }; + + const handleNextPage = () => { + if (currentPage < totalPages) setCurrentPage(currentPage + 1); + }; + + return
      ; }; diff --git a/src/components/commoon/table/MemberList.tsx b/src/components/commoon/table/MemberList.tsx index 853abd0a..9393efdb 100644 --- a/src/components/commoon/table/MemberList.tsx +++ b/src/components/commoon/table/MemberList.tsx @@ -38,11 +38,8 @@ const MemberList = () => { return (
      - {/* 헤더 */}

      구성원

      - - {/* 페이지네이션 */} Date: Wed, 19 Mar 2025 13:12:01 +0900 Subject: [PATCH 012/542] =?UTF-8?q?Feat:=20InviteRecords=20>=20=EC=9D=B4?= =?UTF-8?q?=EB=A9=94=EC=9D=BC,=EC=B7=A8=EC=86=8C=20=EB=B2=84=ED=8A=BC=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../commoon/table/InviteRecords.tsx | 44 +++++++++++++++++-- src/pages/test.tsx | 4 ++ 2 files changed, 45 insertions(+), 3 deletions(-) diff --git a/src/components/commoon/table/InviteRecords.tsx b/src/components/commoon/table/InviteRecords.tsx index a8f99a41..998be5e6 100644 --- a/src/components/commoon/table/InviteRecords.tsx +++ b/src/components/commoon/table/InviteRecords.tsx @@ -1,7 +1,7 @@ import { useState } from "react"; import Pagination from "../Pagination"; -const InviteList = () => { +const InviteRecords = () => { const [invitelog, setInvitelog] = useState([ // 나중에 api 데이터로 변경 { email: "codeit1@codeit.com" }, @@ -16,7 +16,7 @@ const InviteList = () => { const itemsPerPage = 5; const totalPages = Math.ceil(invitelog.length / itemsPerPage); - const paginatedMembers = invitelog.slice( + const paginatedInvitation = invitelog.slice( (currentPage - 1) * itemsPerPage, currentPage * itemsPerPage ); @@ -34,5 +34,43 @@ const InviteList = () => { if (currentPage < totalPages) setCurrentPage(currentPage + 1); }; - return
      ; + return ( +
      +
      +

      초대 내역

      + +
      + {/* 구성원 리스트 */} +

      이메일

      +
        + {paginatedInvitation.map((invitelog, index) => ( +
      • +
        +

        {invitelog.email}

        +
        + +
      • + ))} +
      +
      + ); }; + +export default InviteRecords; diff --git a/src/pages/test.tsx b/src/pages/test.tsx index 454c3691..cc391fea 100644 --- a/src/pages/test.tsx +++ b/src/pages/test.tsx @@ -1,12 +1,16 @@ // 컴포넌트 test 파일 import MemberList from "@/components/commoon/table/MemberList"; +import InviteRecords from "@/components/commoon/table/InviteRecords"; export default function TestPage() { return (

      Profile 테스트

      +
      +

      초대 테이블 테스트

      +
      ); } From cb1ad480621c8010617f16b5e75c65e22533190b Mon Sep 17 00:00:00 2001 From: gyoyeon Kim Date: Wed, 19 Mar 2025 20:58:01 +0900 Subject: [PATCH 013/542] =?UTF-8?q?merge:=20main#10=20=ED=9B=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/svgs/arrow_backward_white.svg | 3 +++ public/svgs/arrow_forward_white.svg | 3 +++ src/components/commoon/Pagination.tsx | 4 ++-- src/components/commoon/table/MemberList.tsx | 6 ++++-- src/styles/globals.css | 3 ++- .../arrow_forward_ios_FILL0_wght300_GRAD0_opsz24 5.svg | 3 +++ tailwind.config.ts | 8 ++++---- 7 files changed, 21 insertions(+), 9 deletions(-) create mode 100644 public/svgs/arrow_backward_white.svg create mode 100644 public/svgs/arrow_forward_white.svg create mode 100644 table/button/arrow_forward_ios_FILL0_wght300_GRAD0_opsz24 5.svg diff --git a/public/svgs/arrow_backward_white.svg b/public/svgs/arrow_backward_white.svg new file mode 100644 index 00000000..2007391c --- /dev/null +++ b/public/svgs/arrow_backward_white.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/svgs/arrow_forward_white.svg b/public/svgs/arrow_forward_white.svg new file mode 100644 index 00000000..d9aeb599 --- /dev/null +++ b/public/svgs/arrow_forward_white.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/commoon/Pagination.tsx b/src/components/commoon/Pagination.tsx index 6ee53ac9..da208350 100644 --- a/src/components/commoon/Pagination.tsx +++ b/src/components/commoon/Pagination.tsx @@ -26,7 +26,7 @@ const Pagination: React.FC = ({ ${currentPage === 1 ? "opacity-50 cursor-not-allowed" : "cursor-pointer"}`} > 왼쪽 @@ -39,7 +39,7 @@ const Pagination: React.FC = ({ ${currentPage === totalPages ? "opacity-50 cursor-not-allowed" : "cursor-pointer"}`} > 오른쪽 diff --git a/src/components/commoon/table/MemberList.tsx b/src/components/commoon/table/MemberList.tsx index 9393efdb..d39a25e4 100644 --- a/src/components/commoon/table/MemberList.tsx +++ b/src/components/commoon/table/MemberList.tsx @@ -37,7 +37,7 @@ const MemberList = () => { }; return ( -
      +

      구성원

      {
      + +

      test

    • ))}
    diff --git a/src/styles/globals.css b/src/styles/globals.css index a2dc41ec..b29add76 100644 --- a/src/styles/globals.css +++ b/src/styles/globals.css @@ -3,6 +3,7 @@ :root { --background: #ffffff; --foreground: #171717; + --font-sans: "Pretendard"; } @theme inline { @@ -20,7 +21,7 @@ } body { + font-family: var(--font-sans); background: var(--background); color: var(--foreground); - font-family: Arial, Helvetica, sans-serif; } diff --git a/table/button/arrow_forward_ios_FILL0_wght300_GRAD0_opsz24 5.svg b/table/button/arrow_forward_ios_FILL0_wght300_GRAD0_opsz24 5.svg new file mode 100644 index 00000000..d9aeb599 --- /dev/null +++ b/table/button/arrow_forward_ios_FILL0_wght300_GRAD0_opsz24 5.svg @@ -0,0 +1,3 @@ + + + diff --git a/tailwind.config.ts b/tailwind.config.ts index 90adbfe7..cdcb2e68 100644 --- a/tailwind.config.ts +++ b/tailwind.config.ts @@ -1,4 +1,4 @@ -import type { Config } from "tailwindcss"; +import { defineConfig } from "tailwindcss"; export default { content: [ @@ -49,14 +49,14 @@ export default { orange: "#FFA500", blue: "#76A5EA", pink: "#E876EA", - wihte: "#FFFFFF", + white: "#FFFFFF", black: { 1000: "#000000", 900: "#171717", 800: "#333236", 700: "#4B4B4B", }, - glay: { + grey: { 1000: "#787486", 900: "#9FA6B2", 800: "#D9D9D9", @@ -67,4 +67,4 @@ export default { }, }, plugins: [], -} satisfies Config; +}; From 592fc4ce503b324b4b77066f1f511168c398b434 Mon Sep 17 00:00:00 2001 From: rover1523 Date: Wed, 19 Mar 2025 21:06:21 +0900 Subject: [PATCH 014/542] =?UTF-8?q?Feat:=20API=20=EB=AA=A8=EB=93=88?= =?UTF-8?q?=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/api/axios.ts | 110 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 src/pages/api/axios.ts diff --git a/src/pages/api/axios.ts b/src/pages/api/axios.ts new file mode 100644 index 00000000..9ff910eb --- /dev/null +++ b/src/pages/api/axios.ts @@ -0,0 +1,110 @@ +import axios from "axios"; + +const TEAM_ID = 4; + +// 카드 데이터 +interface CardData { + title: string; + description: string; + tags?: string[]; + assignee?: string; + dueDate?: string; + columnId: number; +} + +// 카드 응답 +interface CardResponse extends CardData { + id: number; + createdAt: string; + updatedAt: string; +} + +// 컬럼 데이터 +interface ColumnData { + name: string; + order: number; +} + +// 컬럼 응답 +interface ColumnResponse extends ColumnData { + id: number; + createdAt: string; + updatedAt: string; +} + +// axios 인스턴스 생성 +export const apiClient = axios.create({ + baseURL: "https://sp-taskify-api.vercel.app/api", + headers: { + "Content-Type": "application/json", + }, +}); + +// API 엔드포인트 경로 정의 +const apiRoutes = { + cards: () => `/teams/${TEAM_ID}/cards`, + cardDetail: (cardId: number) => `/teams/${TEAM_ID}/cards/${cardId}`, + columnDetail: (columnId: number) => `/teams/${TEAM_ID}/columns/${columnId}`, + columns: () => `/teams/${TEAM_ID}/columns`, + columnCardImage: (columnId: number) => + `/teams/${TEAM_ID}/columns/${columnId}/card-image`, +}; + +const api = { + // 카드 관련 API + cards: { + // 카드 생성 (POST) + create: (cardData: CardData) => + apiClient.post(apiRoutes.cards(), cardData), + + // 카드 목록 조회 (GET) + getAll: () => apiClient.get(apiRoutes.cards()), + + // 카드 상세 조회 (GET) + getById: (cardId: number) => + apiClient.get(apiRoutes.cardDetail(cardId)), + + // 카드 수정 (PUT) + update: (cardId: number, cardData: Partial) => + apiClient.put(apiRoutes.cardDetail(cardId), cardData), + + // 카드 삭제 (DELETE) + delete: (cardId: number) => apiClient.delete(apiRoutes.cardDetail(cardId)), + }, + + // 컬럼 관련 API + columns: { + // 컬럼 생성 (POST) + create: (columnData: ColumnData) => + apiClient.post(apiRoutes.columns(), columnData), + + // 컬럼 목록 조회 (GET) + getAll: () => apiClient.get(apiRoutes.columns()), + + // 컬럼 수정 (PUT) + update: (columnId: number, columnData: Partial) => + apiClient.put( + apiRoutes.columnDetail(columnId), + columnData + ), + + // 컬럼 삭제 (DELETE) + delete: (columnId: number) => + apiClient.delete(apiRoutes.columnDetail(columnId)), + + // 카드 이미지 업로드 (POST) + uploadCardImage: (columnId: number, imageData: { image: File }) => { + const formData = new FormData(); + formData.append("image", imageData.image); + + // headers를 변경한 요청 전송 + return apiClient.post(apiRoutes.columnCardImage(columnId), formData, { + headers: { + "Content-Type": "multipart/form-data", + }, + }); + }, + }, +}; + +export default api; From 7f76e468e83ce0ed0a29fac1fdb01b8da3ab526a Mon Sep 17 00:00:00 2001 From: gyoyeon Kim Date: Wed, 19 Mar 2025 21:24:30 +0900 Subject: [PATCH 015/542] =?UTF-8?q?feat:=20inviteRecords=20>=20=EC=B4=88?= =?UTF-8?q?=EB=8C=80=ED=95=98=EA=B8=B0=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80(add=5Fwhite=5Fbox.svg)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/svgs/add_white_box.svg | 3 +++ src/components/commoon/table/InviteRecords.tsx | 18 ++++++++++++------ src/components/commoon/table/MemberList.tsx | 2 -- 3 files changed, 15 insertions(+), 8 deletions(-) create mode 100644 public/svgs/add_white_box.svg diff --git a/public/svgs/add_white_box.svg b/public/svgs/add_white_box.svg new file mode 100644 index 00000000..444bf059 --- /dev/null +++ b/public/svgs/add_white_box.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/commoon/table/InviteRecords.tsx b/src/components/commoon/table/InviteRecords.tsx index 998be5e6..0f08eb51 100644 --- a/src/components/commoon/table/InviteRecords.tsx +++ b/src/components/commoon/table/InviteRecords.tsx @@ -38,12 +38,18 @@ const InviteRecords = () => {

    초대 내역

    - +
    + +
    +
    {/* 구성원 리스트 */}

    이메일

    diff --git a/src/components/commoon/table/MemberList.tsx b/src/components/commoon/table/MemberList.tsx index d39a25e4..a89788c0 100644 --- a/src/components/commoon/table/MemberList.tsx +++ b/src/components/commoon/table/MemberList.tsx @@ -71,8 +71,6 @@ const MemberList = () => { > 삭제 - -

    test

  • ))}
From 51b96a40e4f9649d770a76beee3523c1b25eec46 Mon Sep 17 00:00:00 2001 From: gyoyeon Kim Date: Wed, 19 Mar 2025 22:07:20 +0900 Subject: [PATCH 016/542] =?UTF-8?q?Feat:=20=EC=B4=88=EB=8C=80=EB=82=B4?= =?UTF-8?q?=EC=97=AD=20table=20=EB=B0=98=EC=9D=91=ED=98=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/commoon/Pagination.tsx | 8 +++--- .../commoon/table/InviteRecords.tsx | 27 ++++++++++++------- 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/src/components/commoon/Pagination.tsx b/src/components/commoon/Pagination.tsx index da208350..e4120601 100644 --- a/src/components/commoon/Pagination.tsx +++ b/src/components/commoon/Pagination.tsx @@ -15,15 +15,15 @@ const Pagination: React.FC = ({ }) => { return (
-

+

{currentPage} 페이지 중 {totalPages}

-
+ {/* 구성원 리스트 */} -

이메일

+

이메일

    {paginatedInvitation.map((invitelog, index) => (
  • { }`} >
    -

    {invitelog.email}

    +

    {invitelog.email}

    From 7774eecb20c5c0c0c3d223fe3478e3e75c323083 Mon Sep 17 00:00:00 2001 From: gyoyeon Kim Date: Wed, 19 Mar 2025 22:10:39 +0900 Subject: [PATCH 017/542] =?UTF-8?q?refactor:=20=EA=B5=AC=EC=84=B1=EC=9B=90?= =?UTF-8?q?=20=ED=85=8C=EC=9D=B4=EB=B8=94=20=EB=B0=98=EC=9D=91=ED=98=95=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/commoon/table/MemberList.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/commoon/table/MemberList.tsx b/src/components/commoon/table/MemberList.tsx index a89788c0..ea2f1b05 100644 --- a/src/components/commoon/table/MemberList.tsx +++ b/src/components/commoon/table/MemberList.tsx @@ -39,7 +39,7 @@ const MemberList = () => { return (
    -

    구성원

    +

    구성원

    Date: Wed, 19 Mar 2025 22:50:04 +0900 Subject: [PATCH 018/542] =?UTF-8?q?rename:=20Meber=20=ED=8F=B4=EB=8D=94=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/commoon/table/InvitedDashBoard.tsx | 0 src/components/commoon/table/{ => Member}/MemberList.tsx | 2 +- src/components/commoon/table/{ => Member}/RandomProfile.tsx | 0 src/pages/test.tsx | 4 ++-- 4 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 src/components/commoon/table/InvitedDashBoard.tsx rename src/components/commoon/table/{ => Member}/MemberList.tsx (98%) rename src/components/commoon/table/{ => Member}/RandomProfile.tsx (100%) diff --git a/src/components/commoon/table/InvitedDashBoard.tsx b/src/components/commoon/table/InvitedDashBoard.tsx new file mode 100644 index 00000000..e69de29b diff --git a/src/components/commoon/table/MemberList.tsx b/src/components/commoon/table/Member/MemberList.tsx similarity index 98% rename from src/components/commoon/table/MemberList.tsx rename to src/components/commoon/table/Member/MemberList.tsx index ea2f1b05..5db0befa 100644 --- a/src/components/commoon/table/MemberList.tsx +++ b/src/components/commoon/table/Member/MemberList.tsx @@ -1,5 +1,5 @@ import { useState } from "react"; -import Pagination from "../Pagination"; +import Pagination from "../../Pagination"; import RandomProfile from "./RandomProfile"; const MemberList = () => { diff --git a/src/components/commoon/table/RandomProfile.tsx b/src/components/commoon/table/Member/RandomProfile.tsx similarity index 100% rename from src/components/commoon/table/RandomProfile.tsx rename to src/components/commoon/table/Member/RandomProfile.tsx diff --git a/src/pages/test.tsx b/src/pages/test.tsx index cc391fea..88137b43 100644 --- a/src/pages/test.tsx +++ b/src/pages/test.tsx @@ -1,12 +1,12 @@ // 컴포넌트 test 파일 -import MemberList from "@/components/commoon/table/MemberList"; +import MemberList from "@/components/commoon/table/Member/MemberList"; import InviteRecords from "@/components/commoon/table/InviteRecords"; export default function TestPage() { return (
    -

    Profile 테스트

    +

    구성원 테이블 테스트


    초대 테이블 테스트

    From 803127e8557161fbd4bc6dba914883cc34272d75 Mon Sep 17 00:00:00 2001 From: gyoyeon Kim Date: Thu, 20 Mar 2025 00:15:47 +0900 Subject: [PATCH 019/542] =?UTF-8?q?feat:=20EmptyInvitations=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/main.yml | 15 -------- .../commoon/table/InvitedDashBoard.tsx | 37 +++++++++++++++++++ .../commoon/table/Member/MemberList.tsx | 2 +- src/pages/test.tsx | 4 ++ 4 files changed, 42 insertions(+), 16 deletions(-) delete mode 100644 .github/workflows/main.yml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml deleted file mode 100644 index 3f5d29bc..00000000 --- a/.github/workflows/main.yml +++ /dev/null @@ -1,15 +0,0 @@ -name: Review Assign - -on: - pull_request: - types: [opened, ready_for_review] - -jobs: - assign: - runs-on: ubuntu-latest - steps: - - uses: hkusu/review-assign-action@v1 - with: - github-token: ${{ secrets.PERSONAL_ACCESS_TOKEN }} - assignees: ${{ github.actor }} # PR 작성자 자동 지정 - reviewers: gyoyeon-kim, hhjin1, MINJI121, ozen0718, rover1523 # 리뷰어 리스트 diff --git a/src/components/commoon/table/InvitedDashBoard.tsx b/src/components/commoon/table/InvitedDashBoard.tsx index e69de29b..6bf955b8 100644 --- a/src/components/commoon/table/InvitedDashBoard.tsx +++ b/src/components/commoon/table/InvitedDashBoard.tsx @@ -0,0 +1,37 @@ +import { useState, useEffect } from "react"; +import Image from "next/image"; + +function EmptyInvitations() { + return ( +
    +
    +

    초대받은 대시보드

    +
    + +
    + 초대받은 대시보드가 없을 때 아이콘 이미지 +

    + 아직 초대받은 대시보드가 없어요 +

    +
    +
    + ); +} + +function InvitedList() { + return ( +
    +
    +

    초대받은 대시보드

    +
    +
    + ); +} + +export default function InvitedDashBoard() { + return ; +} diff --git a/src/components/commoon/table/Member/MemberList.tsx b/src/components/commoon/table/Member/MemberList.tsx index 5db0befa..3feee30a 100644 --- a/src/components/commoon/table/Member/MemberList.tsx +++ b/src/components/commoon/table/Member/MemberList.tsx @@ -37,7 +37,7 @@ const MemberList = () => { }; return ( -
    +

    구성원

    초대 테이블 테스트

    +
    +

    초대받은 테이블 테스트

    +
    ); } From 6b3885c3937766683a0eeb882958e55b715561c3 Mon Sep 17 00:00:00 2001 From: gyoyeon Kim Date: Thu, 20 Mar 2025 00:38:46 +0900 Subject: [PATCH 020/542] =?UTF-8?q?feat:=20=EC=B4=88=EB=8C=80=EB=B0=9B?= =?UTF-8?q?=EC=9D=80=20=EB=8C=80=EC=8B=9C=EB=B3=B4=EB=93=9C=20=EB=B0=98?= =?UTF-8?q?=EC=9D=91=ED=98=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/commoon/table/InviteRecords.tsx | 2 +- src/components/commoon/table/InvitedDashBoard.tsx | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/components/commoon/table/InviteRecords.tsx b/src/components/commoon/table/InviteRecords.tsx index e463cbf5..477272d3 100644 --- a/src/components/commoon/table/InviteRecords.tsx +++ b/src/components/commoon/table/InviteRecords.tsx @@ -35,7 +35,7 @@ const InviteRecords = () => { }; return ( -
    +
    {/* 제목 */}

    초대 내역

    diff --git a/src/components/commoon/table/InvitedDashBoard.tsx b/src/components/commoon/table/InvitedDashBoard.tsx index 6bf955b8..c5005e7a 100644 --- a/src/components/commoon/table/InvitedDashBoard.tsx +++ b/src/components/commoon/table/InvitedDashBoard.tsx @@ -3,18 +3,18 @@ import Image from "next/image"; function EmptyInvitations() { return ( -
    -
    -

    초대받은 대시보드

    +
    +
    +

    초대받은 대시보드

    -
    +
    초대받은 대시보드가 없을 때 아이콘 이미지 -

    +

    아직 초대받은 대시보드가 없어요

    From b2f043795f1f391f8c4d13d6483a0e0229b032a2 Mon Sep 17 00:00:00 2001 From: MinJi Cho Date: Thu, 20 Mar 2025 01:15:50 +0900 Subject: [PATCH 021/542] =?UTF-8?q?GlobalStyle=20=EB=B8=8C=EB=9E=9C?= =?UTF-8?q?=EC=B9=98=20=EC=82=AD=EC=A0=9C=20=ED=9B=84=20=EC=9E=AC=EC=83=9D?= =?UTF-8?q?=EC=84=B1,=20=EA=B3=B5=ED=86=B5=20font=EC=99=80=20color=20?= =?UTF-8?q?=EC=A0=95=EC=9D=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- declares.d.ts | 1 + postcss.config.mjs | 6 +- src/pages/{app.tsx => _app.tsx} | 0 src/pages/{document.tsx => _document.tsx} | 0 src/styles/globals.css | 216 ++++++++++++++++++++-- tailwind.config.ts | 70 ------- 6 files changed, 204 insertions(+), 89 deletions(-) create mode 100644 declares.d.ts rename src/pages/{app.tsx => _app.tsx} (100%) rename src/pages/{document.tsx => _document.tsx} (100%) diff --git a/declares.d.ts b/declares.d.ts new file mode 100644 index 00000000..cbe652db --- /dev/null +++ b/declares.d.ts @@ -0,0 +1 @@ +declare module "*.css"; diff --git a/postcss.config.mjs b/postcss.config.mjs index 12a703d9..df2cc950 100644 --- a/postcss.config.mjs +++ b/postcss.config.mjs @@ -1,6 +1,6 @@ -module.exports = { +/** @type {import('tailwindcss').Config} */ +export default { plugins: { - tailwindcss: {}, - autoprefixer: {}, + "@tailwindcss/postcss": {}, }, }; diff --git a/src/pages/app.tsx b/src/pages/_app.tsx similarity index 100% rename from src/pages/app.tsx rename to src/pages/_app.tsx diff --git a/src/pages/document.tsx b/src/pages/_document.tsx similarity index 100% rename from src/pages/document.tsx rename to src/pages/_document.tsx diff --git a/src/styles/globals.css b/src/styles/globals.css index a2dc41ec..d6d831e9 100644 --- a/src/styles/globals.css +++ b/src/styles/globals.css @@ -1,26 +1,210 @@ @import "tailwindcss"; -:root { - --background: #ffffff; - --foreground: #171717; +@layer { + body { + font-family: "Pretendard", sans-serif; + } } -@theme inline { - --color-background: var(--background); - --color-foreground: var(--foreground); - --font-sans: var(--font-geist-sans); - --font-mono: var(--font-geist-mono); +@theme { + --primary: #5534da; + --p-text: #333236; + --color-violet8: #f1effd; + --color-red: #d6173a; + --color-green: #7ac555; + --color-purple: #760dde; + --color-orange: #ffa500; + --color-blue: #76a5ea; + --color-pink: #e876ea; + --color-white: #ffffff; + --color-black: #000000; + --color-4b4b4b: #4b4b4b; + --color-171717: #171717; + --color-FAFAFA: #fafafa; + --color-EEEEEE: #eeeeee; + --color-D9D9D9: #d9d9d9; + --color-9FA6b2: #9fa6b2; + --color-787486: #787486; } -@media (prefers-color-scheme: dark) { - :root { - --background: #0a0a0a; - --foreground: #ededed; +@layer components { + .font-32b { + font-size: 32px; + line-height: 42px; + font-weight: 700; + } + .font-32sb { + font-size: 32px; + line-height: 42px; + font-weight: 600; + } + .font-24b { + font-size: 24px; + line-height: 32px; + font-weight: 700; + } + .font-24sb { + font-size: 24px; + line-height: 32px; + font-weight: 600; + } + .font-24m { + font-size: 24px; + line-height: 32px; + font-weight: 500; + } + .font-24r { + font-size: 24px; + line-height: 32px; + font-weight: 400; + } + .font-20b { + font-size: 20px; + line-height: 32px; + font-weight: 700; + } + .font-20sb { + font-size: 20px; + line-height: 32px; + font-weight: 600; + } + .font-20m { + font-size: 20px; + line-height: 32px; + font-weight: 500; + } + .font-20r { + font-size: 20px; + line-height: 32px; + font-weight: 400; + } + .font-18b { + font-size: 18px; + line-height: 26px; + font-weight: 700; + } + .font-18sb { + font-size: 18px; + line-height: 26px; + font-weight: 600; + } + .font-18m { + font-size: 18px; + line-height: 26px; + font-weight: 500; + } + .font-18r { + font-size: 18px; + line-height: 26px; + font-weight: 400; + } + .font-16b { + font-size: 16px; + line-height: 26px; + font-weight: 700; + } + .font-16sb { + font-size: 16px; + line-height: 26px; + font-weight: 600; + } + .font-16m { + font-size: 16px; + line-height: 26px; + font-weight: 500; } + .font-16r { + font-size: 16px; + line-height: 26px; + font-weight: 400; + } + .font-14b { + font-size: 14px; + line-height: 24px; + font-weight: 700; + } + .font-14sb { + font-size: 14px; + line-height: 24px; + font-weight: 600; + } + .font-14m { + font-size: 14px; + line-height: 24px; + font-weight: 500; + } + .font-14r { + font-size: 14px; + line-height: 24px; + font-weight: 400; + } + .font-13sb { + font-size: 13px; + line-height: 22px; + font-weight: 600; + } + .font-13m { + font-size: 13px; + line-height: 22px; + font-weight: 500; + } + .font-12sb { + font-size: 12px; + line-height: 20px; + font-weight: 600; + } + .font-12m { + font-size: 12px; + line-height: 18px; + font-weight: 500; + } + .font-12r { + font-size: 12px; + line-height: 18px; + font-weight: 400; + } +} + +@font-face { + font-family: "Pretendard"; + src: url("https://fastly.jsdelivr.net/gh/Project-Noonnu/noonfonts_2107@1.1/Pretendard-Regular.woff2") + format("woff2"); + src: url("https://fastly.jsdelivr.net/gh/Project-Noonnu/noonfonts_2107@1.1/Pretendard-Regular.woff") + format("woff"); + font-weight: 400; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: "Pretendard"; + src: url("https://fastly.jsdelivr.net/gh/Project-Noonnu/noonfonts_2107@1.1/Pretendard-Medium.woff2") + format("woff2"); + src: url("https://fastly.jsdelivr.net/gh/Project-Noonnu/noonfonts_2107@1.1/Pretendard-Medium.woff") + format("woff"); + font-weight: 500; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: "Pretendard"; + src: url("https://fastly.jsdelivr.net/gh/Project-Noonnu/noonfonts_2107@1.1/Pretendard-SemiBold.woff2") + format("woff2"); + src: url("https://fastly.jsdelivr.net/gh/Project-Noonnu/noonfonts_2107@1.1/Pretendard-SemiBold.woff") + format("woff"); + font-weight: 600; + font-style: normal; + font-display: swap; } -body { - background: var(--background); - color: var(--foreground); - font-family: Arial, Helvetica, sans-serif; +@font-face { + font-family: "Pretendard"; + src: url("https://fastly.jsdelivr.net/gh/Project-Noonnu/noonfonts_2107@1.1/Pretendard-Bold.woff2") + format("woff2"); + src: url("https://fastly.jsdelivr.net/gh/Project-Noonnu/noonfonts_2107@1.1/Pretendard-Bold.woff") + format("woff"); + font-weight: 700; + font-style: normal; + font-display: swap; } diff --git a/tailwind.config.ts b/tailwind.config.ts index 90adbfe7..e69de29b 100644 --- a/tailwind.config.ts +++ b/tailwind.config.ts @@ -1,70 +0,0 @@ -import type { Config } from "tailwindcss"; - -export default { - content: [ - "./src/pages/**/*.{js,ts,jsx,tsx,mdx}", - "./src/components/**/*.{js,ts,jsx,tsx,mdx}", - "./src/containers/**/*.{js,ts,jsx,tsx,mdx}", - ], - theme: { - extend: { - fontFamily: { - pretendard: ["Pretendard"], - }, - fontSize: { - "3xl-Bold": ["32px", { lineHeight: "42px", fontWeight: "700" }], - "3xl-Semibold": ["32px", { lineHeight: "42px", fontWeight: "600" }], - "2xl-Bold": ["24px", { lineHeight: "32px", fontWeight: "700" }], - "2xl-Semibold": ["24px", { lineHeight: "32px", fontWeight: "600" }], - "2xl-Medium": ["24px", { lineHeight: "32px", fontWeight: "500" }], - "2xl-Regular": ["24px", { lineHeight: "32px", fontWeight: "400" }], - "xl-Bold": ["20px", { lineHeight: "32px", fontWeight: "700" }], - "xl-Semibold": ["20px", { lineHeight: "32px", fontWeight: "600" }], - "xl-Medium": ["20px", { lineHeight: "32px", fontWeight: "500" }], - "xl-Regular": ["20px", { lineHeight: "32px", fontWeight: "400" }], - "2lg-Bold": ["18px", { lineHeight: "26px", fontWeight: "700" }], - "2lg-Semibold": ["18px", { lineHeight: "26px", fontWeight: "600" }], - "2lg-Medium": ["18px", { lineHeight: "26px", fontWeight: "500" }], - "2lg-Regular": ["18px", { lineHeight: "26px", fontWeight: "400" }], - "lg-Bold": ["16px", { lineHeight: "26px", fontWeight: "700" }], - "lg-Semibold": ["16px", { lineHeight: "26px", fontWeight: "600" }], - "lg-Medium": ["16px", { lineHeight: "26px", fontWeight: "500" }], - "lg-Regular": ["16px", { lineHeight: "26px", fontWeight: "400" }], - "md-Bold": ["14px", { lineHeight: "24px", fontWeight: "700" }], - "md-Semibold": ["14px", { lineHeight: "24px", fontWeight: "600" }], - "md-Medium": ["14px", { lineHeight: "24px", fontWeight: "500" }], - "md-Regular": ["14px", { lineHeight: "24px", fontWeight: "400" }], - "sm-Semibold": ["13px", { lineHeight: "22px", fontWeight: "600" }], - "sm-Medium": ["13px", { lineHeight: "22px", fontWeight: "500" }], - "xs-Semibold": ["12px", { lineHeight: "20px", fontWeight: "600" }], - "xs-Medium": ["12px", { lineHeight: "18px", fontWeight: "500" }], - "xs-Regular": ["12px", { lineHeight: "18px", fontWeight: "400" }], - }, - colors: { - primary: "#5534DA", - secondary: "#F1EFFD", - red: "#D6173A", - green: "#7AC555", - purple: "#760DDF", - orange: "#FFA500", - blue: "#76A5EA", - pink: "#E876EA", - wihte: "#FFFFFF", - black: { - 1000: "#000000", - 900: "#171717", - 800: "#333236", - 700: "#4B4B4B", - }, - glay: { - 1000: "#787486", - 900: "#9FA6B2", - 800: "#D9D9D9", - 700: "#EEEEEE", - 600: "#FAFAFA", - }, - }, - }, - }, - plugins: [], -} satisfies Config; From ba66a71852145a5a3222bc56a856bebb3693d90e Mon Sep 17 00:00:00 2001 From: MinJi Cho Date: Thu, 20 Mar 2025 01:38:00 +0900 Subject: [PATCH 022/542] =?UTF-8?q?=EC=98=A4=ED=83=80=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/styles/globals.css | 143 +++++++++++++++-------------------------- 1 file changed, 52 insertions(+), 91 deletions(-) diff --git a/src/styles/globals.css b/src/styles/globals.css index d6d831e9..8b187f3c 100644 --- a/src/styles/globals.css +++ b/src/styles/globals.css @@ -8,7 +8,6 @@ @theme { --primary: #5534da; - --p-text: #333236; --color-violet8: #f1effd; --color-red: #d6173a; --color-green: #7ac555; @@ -16,152 +15,114 @@ --color-orange: #ffa500; --color-blue: #76a5ea; --color-pink: #e876ea; - --color-white: #ffffff; --color-black: #000000; - --color-4b4b4b: #4b4b4b; - --color-171717: #171717; - --color-FAFAFA: #fafafa; - --color-EEEEEE: #eeeeee; - --color-D9D9D9: #d9d9d9; - --color-9FA6b2: #9fa6b2; - --color-787486: #787486; + --color-black2: #171717; + --color-black3: #333236; + --color-black4: #4b4b4b; + --color-gray1: #787486; + --color-gray2: #9fa6b2; + --color-gray3: #d9d9d9; + --color-gray4: #eeeeee; + --color-gray5: #fafafa; + --color-white: #ffffff; + --sortTextBgGreen: #e7f7db; + --sortTextBgPink: #f7dbf0; + --sortTextBgBlue: #dbe6f7; + --sortTextBgOrange: #f9eee3; + --sortTextGreen: #86d549; + --sortTextPink: #d549b6; + --sortTextBlue: #4981d5; + --sortTextOrange: #d58d49; } -@layer components { +@layer utilities { .font-32b { - font-size: 32px; - line-height: 42px; - font-weight: 700; + @apply text-[32px] leading-[42px] font-bold; } .font-32sb { - font-size: 32px; - line-height: 42px; - font-weight: 600; + @apply text-[32px] leading-[42px] font-semibold; } + .font-24b { - font-size: 24px; - line-height: 32px; - font-weight: 700; + @apply text-[24px] leading-[32px] font-bold; } .font-24sb { - font-size: 24px; - line-height: 32px; - font-weight: 600; + @apply text-[24px] leading-[32px] font-semibold; } .font-24m { - font-size: 24px; - line-height: 32px; - font-weight: 500; + @apply text-[24px] leading-[32px] font-medium; } .font-24r { - font-size: 24px; - line-height: 32px; - font-weight: 400; + @apply text-[24px] leading-[32px] font-normal; } + .font-20b { - font-size: 20px; - line-height: 32px; - font-weight: 700; + @apply text-[20px] leading-[32px] font-bold; } .font-20sb { - font-size: 20px; - line-height: 32px; - font-weight: 600; + @apply text-[20px] leading-[32px] font-semibold; } .font-20m { - font-size: 20px; - line-height: 32px; - font-weight: 500; + @apply text-[20px] leading-[32px] font-medium; } .font-20r { - font-size: 20px; - line-height: 32px; - font-weight: 400; + @apply text-[20px] leading-[32px] font-normal; } + .font-18b { - font-size: 18px; - line-height: 26px; - font-weight: 700; + @apply text-[18px] leading-[26px] font-bold; } .font-18sb { - font-size: 18px; - line-height: 26px; - font-weight: 600; + @apply text-[18px] leading-[26px] font-semibold; } .font-18m { - font-size: 18px; - line-height: 26px; - font-weight: 500; + @apply text-[18px] leading-[26px] font-medium; } .font-18r { - font-size: 18px; - line-height: 26px; - font-weight: 400; + @apply text-[18px] leading-[26px] font-normal; } + .font-16b { - font-size: 16px; - line-height: 26px; - font-weight: 700; + @apply text-[16px] leading-[26px] font-bold; } .font-16sb { - font-size: 16px; - line-height: 26px; - font-weight: 600; + @apply text-[16px] leading-[26px] font-semibold; } .font-16m { - font-size: 16px; - line-height: 26px; - font-weight: 500; + @apply text-[16px] leading-[26px] font-medium; } .font-16r { - font-size: 16px; - line-height: 26px; - font-weight: 400; + @apply text-[16px] leading-[26px] font-normal; } + .font-14b { - font-size: 14px; - line-height: 24px; - font-weight: 700; + @apply text-[14px] leading-[24px] font-bold; } .font-14sb { - font-size: 14px; - line-height: 24px; - font-weight: 600; + @apply text-[14px] leading-[24px] font-semibold; } .font-14m { - font-size: 14px; - line-height: 24px; - font-weight: 500; + @apply text-[14px] leading-[24px] font-medium; } .font-14r { - font-size: 14px; - line-height: 24px; - font-weight: 400; + @apply text-[14px] leading-[24px] font-normal; } + .font-13sb { - font-size: 13px; - line-height: 22px; - font-weight: 600; + @apply text-[13px] leading-[22px] font-semibold; } .font-13m { - font-size: 13px; - line-height: 22px; - font-weight: 500; + @apply text-[13px] leading-[22px] font-medium; } + .font-12sb { - font-size: 12px; - line-height: 20px; - font-weight: 600; + @apply text-[12px] leading-[20px] font-semibold; } .font-12m { - font-size: 12px; - line-height: 18px; - font-weight: 500; + @apply text-[12px] leading-[18px] font-medium; } .font-12r { - font-size: 12px; - line-height: 18px; - font-weight: 400; + @apply text-[12px] leading-[18px] font-normal; } } From a2f242f26b999830c4690d142ab9b388b049b234 Mon Sep 17 00:00:00 2001 From: gyoyeon Kim Date: Thu, 20 Mar 2025 09:56:52 +0900 Subject: [PATCH 023/542] =?UTF-8?q?rename:=20=EB=B8=8C=EB=9E=9C=EC=B9=98?= =?UTF-8?q?=20=EC=9D=B4=EB=A6=84=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/commoon/table/InvitedDashBoard.tsx | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/components/commoon/table/InvitedDashBoard.tsx b/src/components/commoon/table/InvitedDashBoard.tsx index c5005e7a..afe07d2a 100644 --- a/src/components/commoon/table/InvitedDashBoard.tsx +++ b/src/components/commoon/table/InvitedDashBoard.tsx @@ -24,7 +24,7 @@ function EmptyInvitations() { function InvitedList() { return ( -
    +

    초대받은 대시보드

    @@ -33,5 +33,9 @@ function InvitedList() { } export default function InvitedDashBoard() { - return ; + return ( +
    +
    {" "} +
    + ); } From 6168954972b492c95a78ad4e8536826213f5fb40 Mon Sep 17 00:00:00 2001 From: rover1523 Date: Thu, 20 Mar 2025 13:26:19 +0900 Subject: [PATCH 024/542] =?UTF-8?q?[fix]=20team=5Fid=EB=B3=80=EA=B2=BD?= =?UTF-8?q?=EB=B0=8F=20api=EA=B2=BD=EB=A1=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/api/axios.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/pages/api/axios.ts b/src/pages/api/axios.ts index 9ff910eb..2742f1e8 100644 --- a/src/pages/api/axios.ts +++ b/src/pages/api/axios.ts @@ -1,6 +1,6 @@ import axios from "axios"; -const TEAM_ID = 4; +const TEAM_ID = "13-4"; // 카드 데이터 interface CardData { @@ -42,12 +42,12 @@ export const apiClient = axios.create({ // API 엔드포인트 경로 정의 const apiRoutes = { - cards: () => `/teams/${TEAM_ID}/cards`, - cardDetail: (cardId: number) => `/teams/${TEAM_ID}/cards/${cardId}`, - columnDetail: (columnId: number) => `/teams/${TEAM_ID}/columns/${columnId}`, - columns: () => `/teams/${TEAM_ID}/columns`, + cards: () => `/${TEAM_ID}/cards`, + cardDetail: (cardId: number) => `/${TEAM_ID}/cards/${cardId}`, + columnDetail: (columnId: number) => `/${TEAM_ID}/columns/${columnId}`, + columns: () => `/${TEAM_ID}/columns`, columnCardImage: (columnId: number) => - `/teams/${TEAM_ID}/columns/${columnId}/card-image`, + `/${TEAM_ID}/columns/${columnId}/card-image`, }; const api = { From 973e8707d547c700be901eb22dfa6505722f3285 Mon Sep 17 00:00:00 2001 From: MinJi Cho Date: Thu, 20 Mar 2025 13:32:37 +0900 Subject: [PATCH 025/542] =?UTF-8?q?[fix]=20=EA=B8=B0=EB=8A=A5=20=EA=B0=9C?= =?UTF-8?q?=EC=84=A0=EC=9D=84=20=EC=9C=84=ED=95=9C=20=EC=BB=AC=EB=9F=AC=20?= =?UTF-8?q?=EC=A0=95=EC=9D=98=20=EB=B0=A9=EC=8B=9D=20=EB=B3=80=EA=B2=BD(@t?= =?UTF-8?q?heme=20->=20:root)=20&=20=EC=9E=98=EB=AA=BB=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1=ED=95=9C=20=ED=8F=B4=EB=8D=94=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/components/Gnb.tsx | 0 src/styles/globals.css | 56 +++++++++++++++++++----------------- 2 files changed, 29 insertions(+), 27 deletions(-) delete mode 100644 src/pages/components/Gnb.tsx diff --git a/src/pages/components/Gnb.tsx b/src/pages/components/Gnb.tsx deleted file mode 100644 index e69de29b..00000000 diff --git a/src/styles/globals.css b/src/styles/globals.css index 8b187f3c..57a1c3c2 100644 --- a/src/styles/globals.css +++ b/src/styles/globals.css @@ -6,33 +6,35 @@ } } -@theme { - --primary: #5534da; - --color-violet8: #f1effd; - --color-red: #d6173a; - --color-green: #7ac555; - --color-purple: #760dde; - --color-orange: #ffa500; - --color-blue: #76a5ea; - --color-pink: #e876ea; - --color-black: #000000; - --color-black2: #171717; - --color-black3: #333236; - --color-black4: #4b4b4b; - --color-gray1: #787486; - --color-gray2: #9fa6b2; - --color-gray3: #d9d9d9; - --color-gray4: #eeeeee; - --color-gray5: #fafafa; - --color-white: #ffffff; - --sortTextBgGreen: #e7f7db; - --sortTextBgPink: #f7dbf0; - --sortTextBgBlue: #dbe6f7; - --sortTextBgOrange: #f9eee3; - --sortTextGreen: #86d549; - --sortTextPink: #d549b6; - --sortTextBlue: #4981d5; - --sortTextOrange: #d58d49; +@layer base { + :root { + --primary: #5534da; + --color-violet8: #f1effd; + --color-red: #d6173a; + --color-green: #7ac555; + --color-purple: #760dde; + --color-orange: #ffa500; + --color-blue: #76a5ea; + --color-pink: #e876ea; + --color-black: #000000; + --color-black2: #171717; + --color-black3: #333236; + --color-black4: #4b4b4b; + --color-gray1: #787486; + --color-gray2: #9fa6b2; + --color-gray3: #d9d9d9; + --color-gray4: #eeeeee; + --color-gray5: #fafafa; + --color-white: #ffffff; + --sortTextBgGreen: #e7f7db; + --sortTextBgPink: #f7dbf0; + --sortTextBgBlue: #dbe6f7; + --sortTextBgOrange: #f9eee3; + --sortTextGreen: #86d549; + --sortTextPink: #d549b6; + --sortTextBlue: #4981d5; + --sortTextOrange: #d58d49; + } } @layer utilities { From fe175e04ad99ee62cee9cf5d7b0b427786634ecb Mon Sep 17 00:00:00 2001 From: MinJi Cho Date: Thu, 20 Mar 2025 14:16:36 +0900 Subject: [PATCH 026/542] =?UTF-8?q?[fix]=20=EC=98=A4=ED=83=80=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/styles/globals.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/styles/globals.css b/src/styles/globals.css index 57a1c3c2..72da472b 100644 --- a/src/styles/globals.css +++ b/src/styles/globals.css @@ -1,6 +1,6 @@ @import "tailwindcss"; -@layer { +@layer base { body { font-family: "Pretendard", sans-serif; } From 486f18bd48f43c216631cc89d656d4a1d0eca2bf Mon Sep 17 00:00:00 2001 From: gyoyeon Kim Date: Thu, 20 Mar 2025 14:55:28 +0900 Subject: [PATCH 027/542] =?UTF-8?q?[Feat]=20global.css=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../commoon/table/InvitedDashBoard.tsx | 45 ++++- src/styles/globals.css | 180 ++++++++++++++++-- 2 files changed, 202 insertions(+), 23 deletions(-) diff --git a/src/components/commoon/table/InvitedDashBoard.tsx b/src/components/commoon/table/InvitedDashBoard.tsx index afe07d2a..4808640a 100644 --- a/src/components/commoon/table/InvitedDashBoard.tsx +++ b/src/components/commoon/table/InvitedDashBoard.tsx @@ -1,4 +1,4 @@ -import { useState, useEffect } from "react"; +import { useState, ChangeEvent, useEffect } from "react"; import Image from "next/image"; function EmptyInvitations() { @@ -12,7 +12,7 @@ function EmptyInvitations() { 초대받은 대시보드가 없을 때 아이콘 이미지

    아직 초대받은 대시보드가 없어요 @@ -24,18 +24,51 @@ function EmptyInvitations() { function InvitedList() { return ( -

    -
    -

    초대받은 대시보드

    +
    +
    +

    이름

    +

    초대자

    +

    수락여부

    ); } export default function InvitedDashBoard() { + const [searchTitle, setSearchTitle] = useState(""); + + /* 검색창 input */ + const handleSearchInputChange = (event: ChangeEvent) => { + setSearchTitle(event.target.value); + // 추후 삭제 + console.log("search input 값: ", event.target.value); + }; + return (
    -
    {" "} +
    +
    +
    +

    초대받은 대시보드

    +
    +
    + + 검색 아이콘 +
    + +
    +
    ); } diff --git a/src/styles/globals.css b/src/styles/globals.css index b29add76..72da472b 100644 --- a/src/styles/globals.css +++ b/src/styles/globals.css @@ -1,27 +1,173 @@ @import "tailwindcss"; -:root { - --background: #ffffff; - --foreground: #171717; - --font-sans: "Pretendard"; +@layer base { + body { + font-family: "Pretendard", sans-serif; + } } -@theme inline { - --color-background: var(--background); - --color-foreground: var(--foreground); - --font-sans: var(--font-geist-sans); - --font-mono: var(--font-geist-mono); +@layer base { + :root { + --primary: #5534da; + --color-violet8: #f1effd; + --color-red: #d6173a; + --color-green: #7ac555; + --color-purple: #760dde; + --color-orange: #ffa500; + --color-blue: #76a5ea; + --color-pink: #e876ea; + --color-black: #000000; + --color-black2: #171717; + --color-black3: #333236; + --color-black4: #4b4b4b; + --color-gray1: #787486; + --color-gray2: #9fa6b2; + --color-gray3: #d9d9d9; + --color-gray4: #eeeeee; + --color-gray5: #fafafa; + --color-white: #ffffff; + --sortTextBgGreen: #e7f7db; + --sortTextBgPink: #f7dbf0; + --sortTextBgBlue: #dbe6f7; + --sortTextBgOrange: #f9eee3; + --sortTextGreen: #86d549; + --sortTextPink: #d549b6; + --sortTextBlue: #4981d5; + --sortTextOrange: #d58d49; + } } -@media (prefers-color-scheme: dark) { - :root { - --background: #0a0a0a; - --foreground: #ededed; +@layer utilities { + .font-32b { + @apply text-[32px] leading-[42px] font-bold; + } + .font-32sb { + @apply text-[32px] leading-[42px] font-semibold; + } + + .font-24b { + @apply text-[24px] leading-[32px] font-bold; + } + .font-24sb { + @apply text-[24px] leading-[32px] font-semibold; + } + .font-24m { + @apply text-[24px] leading-[32px] font-medium; + } + .font-24r { + @apply text-[24px] leading-[32px] font-normal; + } + + .font-20b { + @apply text-[20px] leading-[32px] font-bold; + } + .font-20sb { + @apply text-[20px] leading-[32px] font-semibold; + } + .font-20m { + @apply text-[20px] leading-[32px] font-medium; + } + .font-20r { + @apply text-[20px] leading-[32px] font-normal; + } + + .font-18b { + @apply text-[18px] leading-[26px] font-bold; + } + .font-18sb { + @apply text-[18px] leading-[26px] font-semibold; + } + .font-18m { + @apply text-[18px] leading-[26px] font-medium; + } + .font-18r { + @apply text-[18px] leading-[26px] font-normal; + } + + .font-16b { + @apply text-[16px] leading-[26px] font-bold; } + .font-16sb { + @apply text-[16px] leading-[26px] font-semibold; + } + .font-16m { + @apply text-[16px] leading-[26px] font-medium; + } + .font-16r { + @apply text-[16px] leading-[26px] font-normal; + } + + .font-14b { + @apply text-[14px] leading-[24px] font-bold; + } + .font-14sb { + @apply text-[14px] leading-[24px] font-semibold; + } + .font-14m { + @apply text-[14px] leading-[24px] font-medium; + } + .font-14r { + @apply text-[14px] leading-[24px] font-normal; + } + + .font-13sb { + @apply text-[13px] leading-[22px] font-semibold; + } + .font-13m { + @apply text-[13px] leading-[22px] font-medium; + } + + .font-12sb { + @apply text-[12px] leading-[20px] font-semibold; + } + .font-12m { + @apply text-[12px] leading-[18px] font-medium; + } + .font-12r { + @apply text-[12px] leading-[18px] font-normal; + } +} + +@font-face { + font-family: "Pretendard"; + src: url("https://fastly.jsdelivr.net/gh/Project-Noonnu/noonfonts_2107@1.1/Pretendard-Regular.woff2") + format("woff2"); + src: url("https://fastly.jsdelivr.net/gh/Project-Noonnu/noonfonts_2107@1.1/Pretendard-Regular.woff") + format("woff"); + font-weight: 400; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: "Pretendard"; + src: url("https://fastly.jsdelivr.net/gh/Project-Noonnu/noonfonts_2107@1.1/Pretendard-Medium.woff2") + format("woff2"); + src: url("https://fastly.jsdelivr.net/gh/Project-Noonnu/noonfonts_2107@1.1/Pretendard-Medium.woff") + format("woff"); + font-weight: 500; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: "Pretendard"; + src: url("https://fastly.jsdelivr.net/gh/Project-Noonnu/noonfonts_2107@1.1/Pretendard-SemiBold.woff2") + format("woff2"); + src: url("https://fastly.jsdelivr.net/gh/Project-Noonnu/noonfonts_2107@1.1/Pretendard-SemiBold.woff") + format("woff"); + font-weight: 600; + font-style: normal; + font-display: swap; } -body { - font-family: var(--font-sans); - background: var(--background); - color: var(--foreground); +@font-face { + font-family: "Pretendard"; + src: url("https://fastly.jsdelivr.net/gh/Project-Noonnu/noonfonts_2107@1.1/Pretendard-Bold.woff2") + format("woff2"); + src: url("https://fastly.jsdelivr.net/gh/Project-Noonnu/noonfonts_2107@1.1/Pretendard-Bold.woff") + format("woff"); + font-weight: 700; + font-style: normal; + font-display: swap; } From 2851ac2a03eb781bcf90d6ff6cc0c99514c1e3fd Mon Sep 17 00:00:00 2001 From: gyoyeon Kim Date: Thu, 20 Mar 2025 15:07:56 +0900 Subject: [PATCH 028/542] =?UTF-8?q?[Delete]=20tailwind.config=20=EB=82=B4?= =?UTF-8?q?=EC=9A=A9=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tailwind.config.ts | 70 ---------------------------------------------- 1 file changed, 70 deletions(-) diff --git a/tailwind.config.ts b/tailwind.config.ts index cdcb2e68..e69de29b 100644 --- a/tailwind.config.ts +++ b/tailwind.config.ts @@ -1,70 +0,0 @@ -import { defineConfig } from "tailwindcss"; - -export default { - content: [ - "./src/pages/**/*.{js,ts,jsx,tsx,mdx}", - "./src/components/**/*.{js,ts,jsx,tsx,mdx}", - "./src/containers/**/*.{js,ts,jsx,tsx,mdx}", - ], - theme: { - extend: { - fontFamily: { - pretendard: ["Pretendard"], - }, - fontSize: { - "3xl-Bold": ["32px", { lineHeight: "42px", fontWeight: "700" }], - "3xl-Semibold": ["32px", { lineHeight: "42px", fontWeight: "600" }], - "2xl-Bold": ["24px", { lineHeight: "32px", fontWeight: "700" }], - "2xl-Semibold": ["24px", { lineHeight: "32px", fontWeight: "600" }], - "2xl-Medium": ["24px", { lineHeight: "32px", fontWeight: "500" }], - "2xl-Regular": ["24px", { lineHeight: "32px", fontWeight: "400" }], - "xl-Bold": ["20px", { lineHeight: "32px", fontWeight: "700" }], - "xl-Semibold": ["20px", { lineHeight: "32px", fontWeight: "600" }], - "xl-Medium": ["20px", { lineHeight: "32px", fontWeight: "500" }], - "xl-Regular": ["20px", { lineHeight: "32px", fontWeight: "400" }], - "2lg-Bold": ["18px", { lineHeight: "26px", fontWeight: "700" }], - "2lg-Semibold": ["18px", { lineHeight: "26px", fontWeight: "600" }], - "2lg-Medium": ["18px", { lineHeight: "26px", fontWeight: "500" }], - "2lg-Regular": ["18px", { lineHeight: "26px", fontWeight: "400" }], - "lg-Bold": ["16px", { lineHeight: "26px", fontWeight: "700" }], - "lg-Semibold": ["16px", { lineHeight: "26px", fontWeight: "600" }], - "lg-Medium": ["16px", { lineHeight: "26px", fontWeight: "500" }], - "lg-Regular": ["16px", { lineHeight: "26px", fontWeight: "400" }], - "md-Bold": ["14px", { lineHeight: "24px", fontWeight: "700" }], - "md-Semibold": ["14px", { lineHeight: "24px", fontWeight: "600" }], - "md-Medium": ["14px", { lineHeight: "24px", fontWeight: "500" }], - "md-Regular": ["14px", { lineHeight: "24px", fontWeight: "400" }], - "sm-Semibold": ["13px", { lineHeight: "22px", fontWeight: "600" }], - "sm-Medium": ["13px", { lineHeight: "22px", fontWeight: "500" }], - "xs-Semibold": ["12px", { lineHeight: "20px", fontWeight: "600" }], - "xs-Medium": ["12px", { lineHeight: "18px", fontWeight: "500" }], - "xs-Regular": ["12px", { lineHeight: "18px", fontWeight: "400" }], - }, - colors: { - primary: "#5534DA", - secondary: "#F1EFFD", - red: "#D6173A", - green: "#7AC555", - purple: "#760DDF", - orange: "#FFA500", - blue: "#76A5EA", - pink: "#E876EA", - white: "#FFFFFF", - black: { - 1000: "#000000", - 900: "#171717", - 800: "#333236", - 700: "#4B4B4B", - }, - grey: { - 1000: "#787486", - 900: "#9FA6B2", - 800: "#D9D9D9", - 700: "#EEEEEE", - 600: "#FAFAFA", - }, - }, - }, - }, - plugins: [], -}; From 11e67650c31e4fc247b95e226243d2e214805030 Mon Sep 17 00:00:00 2001 From: MinJi Cho Date: Thu, 20 Mar 2025 15:16:17 +0900 Subject: [PATCH 029/542] =?UTF-8?q?[Feat]=20Gnb=20=ED=8F=B4=EB=8D=94=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/components/Gnb/Header_default.tsx | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 src/pages/components/Gnb/Header_default.tsx diff --git a/src/pages/components/Gnb/Header_default.tsx b/src/pages/components/Gnb/Header_default.tsx new file mode 100644 index 00000000..e74d0aee --- /dev/null +++ b/src/pages/components/Gnb/Header_default.tsx @@ -0,0 +1,3 @@ +import React from "react"; + +const HeaderDefault = () => {}; From e53e05f50d8e58bf7efb82caa8a31620cae0e27f Mon Sep 17 00:00:00 2001 From: gyoyeon Kim Date: Thu, 20 Mar 2025 15:22:29 +0900 Subject: [PATCH 030/542] =?UTF-8?q?[Design]=20InvitedDashBoard=20global.cs?= =?UTF-8?q?s=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/commoon/table/InvitedDashBoard.tsx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/components/commoon/table/InvitedDashBoard.tsx b/src/components/commoon/table/InvitedDashBoard.tsx index 4808640a..4f2dfe76 100644 --- a/src/components/commoon/table/InvitedDashBoard.tsx +++ b/src/components/commoon/table/InvitedDashBoard.tsx @@ -14,7 +14,7 @@ function EmptyInvitations() { src="/svgs/unsubscribe.svg" alt="대시보드 없을때 아이콘" /> -

    +

    아직 초대받은 대시보드가 없어요

    @@ -25,10 +25,10 @@ function EmptyInvitations() { function InvitedList() { return (
    -
    -

    이름

    -

    초대자

    -

    수락여부

    +
    +

    이름

    +

    초대자

    +

    수락여부

    ); @@ -58,7 +58,7 @@ export default function InvitedDashBoard() { type="text" value={searchTitle} onChange={handleSearchInputChange} - className="text-[#9FA6B2] w-full h-[40px] px-[40px] py-[6px] border border-[#D9D9D9] bg-white rounded-[6px] placeholder-gray-400 outline-none" + className="text-[var(--color-gray2)] w-full h-[40px] px-[40px] py-[6px] border border-[#D9D9D9] bg-white rounded-[6px] placeholder-gray-400 outline-none" /> Date: Thu, 20 Mar 2025 16:07:34 +0900 Subject: [PATCH 031/542] =?UTF-8?q?[Feat]=20InvitedDashBoard=20>=20?= =?UTF-8?q?=EA=B2=80=EC=83=89=EA=B2=B0=EA=B3=BC=20=EC=97=86=EC=9D=84=20?= =?UTF-8?q?=EB=95=8C=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../commoon/table/InvitedDashBoard.tsx | 93 ++++++++++++++----- 1 file changed, 72 insertions(+), 21 deletions(-) diff --git a/src/components/commoon/table/InvitedDashBoard.tsx b/src/components/commoon/table/InvitedDashBoard.tsx index 4f2dfe76..8b038689 100644 --- a/src/components/commoon/table/InvitedDashBoard.tsx +++ b/src/components/commoon/table/InvitedDashBoard.tsx @@ -1,19 +1,18 @@ -import { useState, ChangeEvent, useEffect } from "react"; +import { useState, ChangeEvent } from "react"; import Image from "next/image"; function EmptyInvitations() { return ( -
    -
    -

    초대받은 대시보드

    -
    - +
    - 대시보드 없을때 아이콘 +

    아직 초대받은 대시보드가 없어요

    @@ -22,13 +21,64 @@ function EmptyInvitations() { ); } -function InvitedList() { +function InvitedList({ searchTitle }: { searchTitle: string }) { + const invitedData = [ + { title: "프로덕트 디자인", nickname: "손동희" }, + { title: "새로운 기획 문서", nickname: "안귀영" }, + { title: "유닛 A", nickname: "장혁" }, + { title: "유닛 B", nickname: "강나무" }, + { title: "유닛 C", nickname: "김태현" }, + { title: "유닛 D", nickname: "김태현" }, + ]; + + const filteredData = invitedData.filter((invite) => + (invite.title || invite.nickname) + .toLowerCase() + .includes(searchTitle.toLowerCase()) + ); + return ( -
    -
    -

    이름

    -

    초대자

    -

    수락여부

    +
    + {filteredData.length > 0 && ( +
    +

    이름

    +

    초대자

    +

    수락여부

    +
    + )} + +
    + {filteredData.length > 0 ? ( + filteredData.map((invite, index) => ( +
    +

    {invite.title || invite.title}

    +

    {invite.nickname || invite.nickname}

    +
    + + +
    +
    + )) + ) : ( +
    + 대시보드 없을때 아이콘 + +

    + 검색결과가 없습니다. +

    +
    + )}
    ); @@ -40,33 +90,34 @@ export default function InvitedDashBoard() { /* 검색창 input */ const handleSearchInputChange = (event: ChangeEvent) => { setSearchTitle(event.target.value); - // 추후 삭제 console.log("search input 값: ", event.target.value); }; return (
    -
    +

    초대받은 대시보드

    -
    +
    - 검색 아이콘
    - +
    From 6c4b20c439ee5c278115661ef4b0d63606fe1f77 Mon Sep 17 00:00:00 2001 From: MinJi Cho Date: Thu, 20 Mar 2025 16:37:03 +0900 Subject: [PATCH 032/542] =?UTF-8?q?[Feat]=20Header=5Fdefault=20=EA=B8=B0?= =?UTF-8?q?=EC=B4=88=20=EC=9E=91=EC=97=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Gnb/Header_default.tsx | 23 +++++++++++++++++++++ src/pages/_app.tsx | 9 +++++++- src/pages/components/Gnb/Header_default.tsx | 3 --- 3 files changed, 31 insertions(+), 4 deletions(-) create mode 100644 src/components/Gnb/Header_default.tsx delete mode 100644 src/pages/components/Gnb/Header_default.tsx diff --git a/src/components/Gnb/Header_default.tsx b/src/components/Gnb/Header_default.tsx new file mode 100644 index 00000000..09e65a36 --- /dev/null +++ b/src/components/Gnb/Header_default.tsx @@ -0,0 +1,23 @@ +import React from "react"; + +const HeaderDefault = () => { + return ( +
    +
    +
    + Taskify Logo +
    +
    + + +
    +
    +
    + ); +}; + +export default HeaderDefault; diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx index a7a790fb..20300c29 100644 --- a/src/pages/_app.tsx +++ b/src/pages/_app.tsx @@ -1,6 +1,13 @@ import "@/styles/globals.css"; import type { AppProps } from "next/app"; +import "@/components/Gnb/Header_default"; +import HeaderDefault from "@/components/Gnb/Header_default"; export default function App({ Component, pageProps }: AppProps) { - return ; + return ( + <> + + + + ); } diff --git a/src/pages/components/Gnb/Header_default.tsx b/src/pages/components/Gnb/Header_default.tsx deleted file mode 100644 index e74d0aee..00000000 --- a/src/pages/components/Gnb/Header_default.tsx +++ /dev/null @@ -1,3 +0,0 @@ -import React from "react"; - -const HeaderDefault = () => {}; From a40d75cf21adffc45c9ee73afa9ea2b2f5a716aa Mon Sep 17 00:00:00 2001 From: gyoyeon Kim Date: Thu, 20 Mar 2025 16:38:20 +0900 Subject: [PATCH 033/542] =?UTF-8?q?[Feat]=20=EA=B2=80=EC=83=89=EA=B2=B0?= =?UTF-8?q?=EA=B3=BC=EA=B0=80=20=EC=97=86=EC=9D=84=20=EA=B2=BD=EC=9A=B0=20?= =?UTF-8?q?ui?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../commoon/table/InvitedDashBoard.tsx | 30 +++++++++++-------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/src/components/commoon/table/InvitedDashBoard.tsx b/src/components/commoon/table/InvitedDashBoard.tsx index 8b038689..502e8da5 100644 --- a/src/components/commoon/table/InvitedDashBoard.tsx +++ b/src/components/commoon/table/InvitedDashBoard.tsx @@ -7,7 +7,7 @@ function EmptyInvitations() {
    대시보드 없을때 아이콘 - (invite.title || invite.nickname) - .toLowerCase() - .includes(searchTitle.toLowerCase()) + /* 검색 */ + const filteredData = invitedData.filter( + (invite) => + (invite.title && + invite.title.toLowerCase().includes(searchTitle.toLowerCase())) || + (invite.nickname && + invite.nickname.toLowerCase().includes(searchTitle.toLowerCase())) ); return (
    {filteredData.length > 0 && ( -
    +

    이름

    초대자

    수락여부

    @@ -52,10 +55,10 @@ function InvitedList({ searchTitle }: { searchTitle: string }) { filteredData.map((invite, index) => (
    -

    {invite.title || invite.title}

    -

    {invite.nickname || invite.nickname}

    +

    {invite.title}

    +

    {invite.nickname}

    - - + +
    From 83081929cf0fd419e30e9644dddad19b38013a9b Mon Sep 17 00:00:00 2001 From: MinJi Cho Date: Thu, 20 Mar 2025 16:57:24 +0900 Subject: [PATCH 035/542] =?UTF-8?q?[Fix]=20text=20color=EB=A5=BC=20@layer?= =?UTF-8?q?=20utilities=EB=A1=9C=20=EC=A0=95=EC=9D=98=ED=95=B4=20=EC=82=AC?= =?UTF-8?q?=EC=9A=A9=EC=84=B1=20=ED=96=A5=EC=83=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/styles/globals.css | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/styles/globals.css b/src/styles/globals.css index 72da472b..6fb3aeb9 100644 --- a/src/styles/globals.css +++ b/src/styles/globals.css @@ -37,6 +37,33 @@ } } +@layer utilities { + .text-black2 { + color: var(--color-black2); + } + .text-black3 { + color: var(--color-black3); + } + .text-black4 { + color: var(--color-black4); + } + .text-gray1 { + color: var(--color-gray1); + } + .text-gray2 { + color: var(--color-gray2); + } + .text-gray3 { + color: var(--color-gray3); + } + .text-gray4 { + color: var(--color-gray4); + } + .text-gray5 { + color: var(--color-gray5); + } +} + @layer utilities { .font-32b { @apply text-[32px] leading-[42px] font-bold; From 3d4a248c5cdc661963ee7f8329df3fa18a032446 Mon Sep 17 00:00:00 2001 From: gyoyeon Kim Date: Thu, 20 Mar 2025 17:25:02 +0900 Subject: [PATCH 036/542] =?UTF-8?q?[Design]=20=EC=B4=88=EB=8C=80=EB=B0=9B?= =?UTF-8?q?=EC=9D=80=20=EB=8C=80=EC=8B=9C=EB=B3=B4=EB=93=9C=20ui=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../commoon/table/InvitedDashBoard.tsx | 36 ++++++++++--------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/src/components/commoon/table/InvitedDashBoard.tsx b/src/components/commoon/table/InvitedDashBoard.tsx index 502e8da5..20e3afd7 100644 --- a/src/components/commoon/table/InvitedDashBoard.tsx +++ b/src/components/commoon/table/InvitedDashBoard.tsx @@ -41,12 +41,14 @@ function InvitedList({ searchTitle }: { searchTitle: string }) { ); return ( -
    +
    {filteredData.length > 0 && ( -
    -

    이름

    -

    초대자

    -

    수락여부

    +
    +

    이름

    +

    초대자

    +

    + 수락여부 +

    )} @@ -55,15 +57,17 @@ function InvitedList({ searchTitle }: { searchTitle: string }) { filteredData.map((invite, index) => (
    -

    {invite.title}

    -

    {invite.nickname}

    -
    - - +
    )) @@ -78,9 +82,7 @@ function InvitedList({ searchTitle }: { searchTitle: string }) { />

    - - {searchTitle} - + {searchTitle} 대시보드가 없습니다.

    @@ -101,8 +103,8 @@ export default function InvitedDashBoard() { return (
    -
    -
    +
    +

    초대받은 대시보드

    @@ -123,8 +125,8 @@ export default function InvitedDashBoard() { className="absolute left-[12px] top-1/2 transform -translate-y-1/2" />
    -
    +
    ); From b601b1f1a2035e79a4fb46665dc78a2689100607 Mon Sep 17 00:00:00 2001 From: MinJi Cho Date: Thu, 20 Mar 2025 17:25:43 +0900 Subject: [PATCH 037/542] =?UTF-8?q?[Fix]=20font=20style=20=EC=84=A0?= =?UTF-8?q?=EC=96=B8=20=EB=B0=A9=EC=8B=9D=20=EB=B3=80=EA=B2=BD=20(@apply?= =?UTF-8?q?=20=EC=A0=9C=EA=B1=B0)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/styles/globals.css | 108 ++++++++++++++++++++++++++++++----------- 1 file changed, 81 insertions(+), 27 deletions(-) diff --git a/src/styles/globals.css b/src/styles/globals.css index 6fb3aeb9..49cbb777 100644 --- a/src/styles/globals.css +++ b/src/styles/globals.css @@ -66,92 +66,146 @@ @layer utilities { .font-32b { - @apply text-[32px] leading-[42px] font-bold; + font-size: 32px; + line-height: 42px; + font-weight: 700; } .font-32sb { - @apply text-[32px] leading-[42px] font-semibold; + font-size: 32px; + line-height: 42px; + font-weight: 600; } .font-24b { - @apply text-[24px] leading-[32px] font-bold; + font-size: 24px; + line-height: 32px; + font-weight: 700; } .font-24sb { - @apply text-[24px] leading-[32px] font-semibold; + font-size: 24px; + line-height: 32px; + font-weight: 600; } .font-24m { - @apply text-[24px] leading-[32px] font-medium; + font-size: 24px; + line-height: 32px; + font-weight: 500; } .font-24r { - @apply text-[24px] leading-[32px] font-normal; + font-size: 24px; + line-height: 32px; + font-weight: 400; } .font-20b { - @apply text-[20px] leading-[32px] font-bold; + font-size: 20px; + line-height: 32px; + font-weight: 700; } .font-20sb { - @apply text-[20px] leading-[32px] font-semibold; + font-size: 20px; + line-height: 32px; + font-weight: 600; } .font-20m { - @apply text-[20px] leading-[32px] font-medium; + font-size: 20px; + line-height: 32px; + font-weight: 500; } .font-20r { - @apply text-[20px] leading-[32px] font-normal; + font-size: 20px; + line-height: 32px; + font-weight: 400; } .font-18b { - @apply text-[18px] leading-[26px] font-bold; + font-size: 18px; + line-height: 26px; + font-weight: 700; } .font-18sb { - @apply text-[18px] leading-[26px] font-semibold; + font-size: 18px; + line-height: 26px; + font-weight: 600; } .font-18m { - @apply text-[18px] leading-[26px] font-medium; + font-size: 18px; + line-height: 26px; + font-weight: 500; } .font-18r { - @apply text-[18px] leading-[26px] font-normal; + font-size: 18px; + line-height: 26px; + font-weight: 400; } .font-16b { - @apply text-[16px] leading-[26px] font-bold; + font-size: 16px; + line-height: 26px; + font-weight: 700; } .font-16sb { - @apply text-[16px] leading-[26px] font-semibold; + font-size: 16px; + line-height: 26px; + font-weight: 600; } .font-16m { - @apply text-[16px] leading-[26px] font-medium; + font-size: 16px; + line-height: 26px; + font-weight: 500; } .font-16r { - @apply text-[16px] leading-[26px] font-normal; + font-size: 16px; + line-height: 26px; + font-weight: 400; } .font-14b { - @apply text-[14px] leading-[24px] font-bold; + font-size: 14px; + line-height: 24px; + font-weight: 700; } .font-14sb { - @apply text-[14px] leading-[24px] font-semibold; + font-size: 14px; + line-height: 24px; + font-weight: 600; } .font-14m { - @apply text-[14px] leading-[24px] font-medium; + font-size: 14px; + line-height: 24px; + font-weight: 500; } .font-14r { - @apply text-[14px] leading-[24px] font-normal; + font-size: 14px; + line-height: 24px; + font-weight: 400; } .font-13sb { - @apply text-[13px] leading-[22px] font-semibold; + font-size: 13px; + line-height: 22px; + font-weight: 600; } .font-13m { - @apply text-[13px] leading-[22px] font-medium; + font-size: 13px; + line-height: 22px; + font-weight: 500; } .font-12sb { - @apply text-[12px] leading-[20px] font-semibold; + font-size: 12px; + line-height: 20px; + font-weight: 600; } .font-12m { - @apply text-[12px] leading-[18px] font-medium; + font-size: 12px; + line-height: 18px; + font-weight: 500; } .font-12r { - @apply text-[12px] leading-[18px] font-normal; + font-size: 12px; + line-height: 18px; + font-weight: 400; } } From bb2ffca18aa74f38637bbe8ca9a5f200ae521a4d Mon Sep 17 00:00:00 2001 From: gyoyeon Kim Date: Thu, 20 Mar 2025 20:44:04 +0900 Subject: [PATCH 038/542] =?UTF-8?q?[Feat]=20=EC=B4=88=EB=8C=80=EB=B0=9B?= =?UTF-8?q?=EC=9D=80=20=EB=8C=80=EC=8B=9C=EB=B3=B4=EB=93=9C-=EB=8D=B0?= =?UTF-8?q?=EC=9D=B4=ED=84=B0=20=EA=B0=92=EC=97=90=20=EB=94=B0=EB=A5=B8=20?= =?UTF-8?q?=ED=95=A8=EC=88=98=20=EB=B3=80=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/main.yml | 15 +++ .../commoon/table/InvitedDashBoard.tsx | 100 +++++++++++------- 2 files changed, 74 insertions(+), 41 deletions(-) create mode 100644 .github/workflows/main.yml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 00000000..3f5d29bc --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,15 @@ +name: Review Assign + +on: + pull_request: + types: [opened, ready_for_review] + +jobs: + assign: + runs-on: ubuntu-latest + steps: + - uses: hkusu/review-assign-action@v1 + with: + github-token: ${{ secrets.PERSONAL_ACCESS_TOKEN }} + assignees: ${{ github.actor }} # PR 작성자 자동 지정 + reviewers: gyoyeon-kim, hhjin1, MINJI121, ozen0718, rover1523 # 리뷰어 리스트 diff --git a/src/components/commoon/table/InvitedDashBoard.tsx b/src/components/commoon/table/InvitedDashBoard.tsx index 20e3afd7..b84ef78b 100644 --- a/src/components/commoon/table/InvitedDashBoard.tsx +++ b/src/components/commoon/table/InvitedDashBoard.tsx @@ -1,18 +1,34 @@ -import { useState, ChangeEvent } from "react"; +import { useState, ChangeEvent, useEffect } from "react"; import Image from "next/image"; +interface Invite { + title: string; + nickname: string; +} + +const invitedData = [ + { title: "프로덕트 디자인", nickname: "손동희" }, + { title: "새로운 기획 문서", nickname: "안귀영" }, + { title: "유닛 A", nickname: "장혁" }, + { title: "유닛 B", nickname: "강나무" }, + { title: "유닛 C", nickname: "김태현" }, + { title: "유닛 D", nickname: "김태현" }, +]; + +/* 초대 받은 대시보드가 없을 경우 */ function EmptyInvitations() { return ( -
    +
    +
    +

    초대받은 대시보드

    +
    +
    - 초대받은 대시보드 없을때 아이콘 -

    아직 초대받은 대시보드가 없어요

    @@ -21,16 +37,8 @@ function EmptyInvitations() { ); } +/* 초대 받은 대시보드 리스트 */ function InvitedList({ searchTitle }: { searchTitle: string }) { - const invitedData = [ - { title: "프로덕트 디자인", nickname: "손동희" }, - { title: "새로운 기획 문서", nickname: "안귀영" }, - { title: "유닛 A", nickname: "장혁" }, - { title: "유닛 B", nickname: "강나무" }, - { title: "유닛 C", nickname: "김태현" }, - { title: "유닛 D", nickname: "김태현" }, - ]; - /* 검색 */ const filteredData = invitedData.filter( (invite) => @@ -41,7 +49,7 @@ function InvitedList({ searchTitle }: { searchTitle: string }) { ); return ( -
    +
    {filteredData.length > 0 && (

    이름

    @@ -72,6 +80,7 @@ function InvitedList({ searchTitle }: { searchTitle: string }) {
    )) ) : ( + /* 검색결과가 없을 때 */
    + invite.title.toLowerCase().includes(searchTitle.toLowerCase()) || + invite.nickname.toLowerCase().includes(searchTitle.toLowerCase()) + ); + + if (invitedData.length === 0) { + return ; + } + return ( -
    -
    -
    -
    -

    초대받은 대시보드

    -
    -
    - - 검색 아이콘 -
    +
    +
    +
    +

    초대받은 대시보드

    +
    +
    + + 검색 아이콘
    From 118f8bb56d23968ff0a01f3484b130e7e3a0f402 Mon Sep 17 00:00:00 2001 From: gyoyeon Kim Date: Thu, 20 Mar 2025 22:03:31 +0900 Subject: [PATCH 039/542] =?UTF-8?q?[Feat]=20=EC=B4=88=EB=8C=80=EB=B0=9B?= =?UTF-8?q?=EC=9D=80=20=EB=8C=80=EC=8B=9C=EB=B3=B4=EB=93=9C=20ui=20?= =?UTF-8?q?=EC=9B=B9=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../commoon/table/InvitedDashBoard.tsx | 72 ++++++++----------- 1 file changed, 31 insertions(+), 41 deletions(-) diff --git a/src/components/commoon/table/InvitedDashBoard.tsx b/src/components/commoon/table/InvitedDashBoard.tsx index b84ef78b..72a8322c 100644 --- a/src/components/commoon/table/InvitedDashBoard.tsx +++ b/src/components/commoon/table/InvitedDashBoard.tsx @@ -18,17 +18,16 @@ const invitedData = [ /* 초대 받은 대시보드가 없을 경우 */ function EmptyInvitations() { return ( -
    -
    -

    초대받은 대시보드

    -
    - +
    - 대시보드 없을때 아이콘 +

    아직 초대받은 대시보드가 없어요

    @@ -49,7 +48,7 @@ function InvitedList({ searchTitle }: { searchTitle: string }) { ); return ( -
    +
    {filteredData.length > 0 && (

    이름

    @@ -110,39 +109,30 @@ export default function InvitedDashBoard() { console.log("search input 값: ", event.target.value); }; - /* 검색된 데이터 필터링 */ - const filteredData = invitedData.filter( - (invite) => - invite.title.toLowerCase().includes(searchTitle.toLowerCase()) || - invite.nickname.toLowerCase().includes(searchTitle.toLowerCase()) - ); - - if (invitedData.length === 0) { - return ; - } - return ( -
    -
    -
    -

    초대받은 대시보드

    -
    -
    - - 검색 아이콘 +
    +
    +
    +
    +

    초대받은 대시보드

    +
    +
    + + 검색 아이콘 +
    From 4d5adfc93033c4823b1530e0590b27599cf91b27 Mon Sep 17 00:00:00 2001 From: gyoyeon Kim Date: Thu, 20 Mar 2025 22:08:44 +0900 Subject: [PATCH 040/542] =?UTF-8?q?[Fix]=20=EC=B4=88=EB=8C=80=EB=B0=9B?= =?UTF-8?q?=EC=9D=80=20=EB=8C=80=EC=8B=9C=EB=B3=B4=EB=93=9C=20=EC=9B=B9=20?= =?UTF-8?q?ui=20=EA=B8=80=EC=9E=90=20=EC=9C=84=EC=B9=98=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../commoon/table/InvitedDashBoard.tsx | 26 ++++++++++++++----- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/src/components/commoon/table/InvitedDashBoard.tsx b/src/components/commoon/table/InvitedDashBoard.tsx index 72a8322c..9d286ee4 100644 --- a/src/components/commoon/table/InvitedDashBoard.tsx +++ b/src/components/commoon/table/InvitedDashBoard.tsx @@ -18,16 +18,17 @@ const invitedData = [ /* 초대 받은 대시보드가 없을 경우 */ function EmptyInvitations() { return ( -
    +
    +
    +

    초대받은 대시보드

    +
    +
    - 초대받은 대시보드 없을때 아이콘 -

    아직 초대받은 대시보드가 없어요

    @@ -109,6 +110,17 @@ export default function InvitedDashBoard() { console.log("search input 값: ", event.target.value); }; + /* 검색된 데이터 필터링 */ + const filteredData = invitedData.filter( + (invite) => + invite.title.toLowerCase().includes(searchTitle.toLowerCase()) || + invite.nickname.toLowerCase().includes(searchTitle.toLowerCase()) + ); + + if (invitedData.length === 0) { + return ; + } + return (
    From 36bceb8aca520d9ab369e52b15bf5462537649d3 Mon Sep 17 00:00:00 2001 From: rover1523 Date: Fri, 21 Mar 2025 00:59:44 +0900 Subject: [PATCH 041/542] =?UTF-8?q?[feat]=20=EB=B2=84=ED=8A=BC=EC=BB=B4?= =?UTF-8?q?=ED=8F=AC=EB=84=8C=ED=8A=B8=20=EA=B0=9C=EB=B0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 1456 ++++------------- package.json | 1 + src/pages/api/axios.ts | 110 -- src/pages/components/button/CardButton.tsx | 41 + src/pages/components/button/ColumnsButton.tsx | 41 + .../components/button/DashboardAddButton.tsx | 42 + .../button/DashboardDeleteButton.tsx | 34 + src/pages/components/button/TodoButton.tsx | 41 + src/pages/index.tsx | 22 +- 9 files changed, 497 insertions(+), 1291 deletions(-) delete mode 100644 src/pages/api/axios.ts create mode 100644 src/pages/components/button/CardButton.tsx create mode 100644 src/pages/components/button/ColumnsButton.tsx create mode 100644 src/pages/components/button/DashboardAddButton.tsx create mode 100644 src/pages/components/button/DashboardDeleteButton.tsx create mode 100644 src/pages/components/button/TodoButton.tsx diff --git a/package-lock.json b/package-lock.json index 55f6c6a3..8caf0ac3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "@tanstack/react-query": "^5.68.0", "autoprefixer": "^10.4.21", "axios": "^1.8.3", + "clsx": "^2.1.1", "next": "15.2.2", "postcss": "^8.5.3", "prettier-plugin-tailwindcss": "^0.6.11", @@ -46,39 +47,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@emnapi/core": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.3.1.tgz", - "integrity": "sha512-pVGjBIt1Y6gg3EJN8jTcfpP/+uuRksIo055oE/OBkDNcjZqVbfkWCksG1Jp4yZnj3iKWyWX8fdG/j6UDYPbFog==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/wasi-threads": "1.0.1", - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/runtime": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.3.1.tgz", - "integrity": "sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==", - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/wasi-threads": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.1.tgz", - "integrity": "sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, "node_modules/@eslint-community/eslint-utils": { "version": "4.5.1", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.5.1.tgz", @@ -283,740 +251,221 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@img/sharp-darwin-arm64": { + "node_modules/@img/sharp-win32-x64": { "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz", - "integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz", + "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==", "cpu": [ - "arm64" + "x64" ], - "license": "Apache-2.0", + "license": "Apache-2.0 AND LGPL-3.0-or-later", "optional": true, "os": [ - "darwin" + "win32" ], "engines": { "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-arm64": "1.0.4" } }, - "node_modules/@img/sharp-darwin-x64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz", - "integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-x64": "1.0.4" + "node_modules/@next/env": { + "version": "15.2.2", + "resolved": "https://registry.npmjs.org/@next/env/-/env-15.2.2.tgz", + "integrity": "sha512-yWgopCfA9XDR8ZH3taB5nRKtKJ1Q5fYsTOuYkzIIoS8TJ0UAUKAGF73JnGszbjk2ufAQDj6mDdgsJAFx5CLtYQ==", + "license": "MIT" + }, + "node_modules/@next/eslint-plugin-next": { + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-15.2.3.tgz", + "integrity": "sha512-eNSOIMJtjs+dp4Ms1tB1PPPJUQHP3uZK+OQ7iFY9qXpGO6ojT6imCL+KcUOqE/GXGidWbBZJzYdgAdPHqeCEPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-glob": "3.3.1" } }, - "node_modules/@img/sharp-libvips-darwin-arm64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz", - "integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==", + "node_modules/@next/swc-darwin-arm64": { + "version": "15.2.2", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.2.2.tgz", + "integrity": "sha512-HNBRnz+bkZ+KfyOExpUxTMR0Ow8nkkcE6IlsdEa9W/rI7gefud19+Sn1xYKwB9pdCdxIP1lPru/ZfjfA+iT8pw==", "cpu": [ "arm64" ], - "license": "LGPL-3.0-or-later", "optional": true, "os": [ "darwin" ], - "funding": { - "url": "https://opencollective.com/libvips" + "engines": { + "node": ">= 10" } }, - "node_modules/@img/sharp-libvips-darwin-x64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz", - "integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==", + "node_modules/@next/swc-darwin-x64": { + "version": "15.2.2", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.2.2.tgz", + "integrity": "sha512-mJOUwp7al63tDpLpEFpKwwg5jwvtL1lhRW2fI1Aog0nYCPAhxbJsaZKdoVyPZCy8MYf/iQVNDuk/+i29iLCzIA==", "cpu": [ "x64" ], - "license": "LGPL-3.0-or-later", "optional": true, "os": [ "darwin" ], - "funding": { - "url": "https://opencollective.com/libvips" + "engines": { + "node": ">= 10" } }, - "node_modules/@img/sharp-libvips-linux-arm": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz", - "integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==", + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "15.2.2", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.2.2.tgz", + "integrity": "sha512-5ZZ0Zwy3SgMr7MfWtRE7cQWVssfOvxYfD9O7XHM7KM4nrf5EOeqwq67ZXDgo86LVmffgsu5tPO57EeFKRnrfSQ==", "cpu": [ - "arm" + "arm64" ], - "license": "LGPL-3.0-or-later", "optional": true, "os": [ "linux" ], - "funding": { - "url": "https://opencollective.com/libvips" + "engines": { + "node": ">= 10" } }, - "node_modules/@img/sharp-libvips-linux-arm64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz", - "integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==", + "node_modules/@next/swc-linux-arm64-musl": { + "version": "15.2.2", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.2.2.tgz", + "integrity": "sha512-cgKWBuFMLlJ4TWcFHl1KOaVVUAF8vy4qEvX5KsNd0Yj5mhu989QFCq1WjuaEbv/tO1ZpsQI6h/0YR8bLwEi+nA==", "cpu": [ "arm64" ], - "license": "LGPL-3.0-or-later", "optional": true, "os": [ "linux" ], - "funding": { - "url": "https://opencollective.com/libvips" + "engines": { + "node": ">= 10" } }, - "node_modules/@img/sharp-libvips-linux-s390x": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz", - "integrity": "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==", + "node_modules/@next/swc-linux-x64-gnu": { + "version": "15.2.2", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.2.2.tgz", + "integrity": "sha512-c3kWSOSsVL8rcNBBfOq1+/j2PKs2nsMwJUV4icUxRgGBwUOfppeh7YhN5s79enBQFU+8xRgVatFkhHU1QW7yUA==", "cpu": [ - "s390x" + "x64" ], - "license": "LGPL-3.0-or-later", "optional": true, "os": [ "linux" ], - "funding": { - "url": "https://opencollective.com/libvips" + "engines": { + "node": ">= 10" } }, - "node_modules/@img/sharp-libvips-linux-x64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz", - "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==", + "node_modules/@next/swc-linux-x64-musl": { + "version": "15.2.2", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.2.2.tgz", + "integrity": "sha512-PXTW9PLTxdNlVYgPJ0equojcq1kNu5NtwcNjRjHAB+/sdoKZ+X8FBu70fdJFadkxFIGekQTyRvPMFF+SOJaQjw==", "cpu": [ "x64" ], - "license": "LGPL-3.0-or-later", "optional": true, "os": [ "linux" ], - "funding": { - "url": "https://opencollective.com/libvips" + "engines": { + "node": ">= 10" } }, - "node_modules/@img/sharp-libvips-linuxmusl-arm64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz", - "integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==", + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "15.2.2", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.2.2.tgz", + "integrity": "sha512-nG644Es5llSGEcTaXhnGWR/aThM/hIaz0jx4MDg4gWC8GfTCp8eDBWZ77CVuv2ha/uL9Ce+nPTfYkSLG67/sHg==", "cpu": [ "arm64" ], - "license": "LGPL-3.0-or-later", "optional": true, "os": [ - "linux" + "win32" ], - "funding": { - "url": "https://opencollective.com/libvips" + "engines": { + "node": ">= 10" } }, - "node_modules/@img/sharp-libvips-linuxmusl-x64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz", - "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==", + "node_modules/@next/swc-win32-x64-msvc": { + "version": "15.2.2", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.2.2.tgz", + "integrity": "sha512-52nWy65S/R6/kejz3jpvHAjZDPKIbEQu4x9jDBzmB9jJfuOy5rspjKu4u77+fI4M/WzLXrrQd57hlFGzz1ubcQ==", "cpu": [ "x64" ], - "license": "LGPL-3.0-or-later", + "license": "MIT", "optional": true, "os": [ - "linux" + "win32" ], - "funding": { - "url": "https://opencollective.com/libvips" + "engines": { + "node": ">= 10" } }, - "node_modules/@img/sharp-linux-arm": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz", - "integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==", - "cpu": [ - "arm" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm": "1.0.5" + "engines": { + "node": ">= 8" } }, - "node_modules/@img/sharp-linux-arm64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz", - "integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm64": "1.0.4" + "node": ">= 8" } }, - "node_modules/@img/sharp-linux-s390x": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz", - "integrity": "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==", - "cpu": [ - "s390x" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" }, - "optionalDependencies": { - "@img/sharp-libvips-linux-s390x": "1.0.4" + "engines": { + "node": ">= 8" } }, - "node_modules/@img/sharp-linux-x64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz", - "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], + "node_modules/@nolyfill/is-core-module": { + "version": "1.0.39", + "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", + "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", + "dev": true, + "license": "MIT", "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-x64": "1.0.4" + "node": ">=12.4.0" } }, - "node_modules/@img/sharp-linuxmusl-arm64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz", - "integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], + "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, + "license": "MIT", "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" - } - }, - "node_modules/@img/sharp-linuxmusl-x64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz", - "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-x64": "1.0.4" - } - }, - "node_modules/@img/sharp-wasm32": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz", - "integrity": "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==", - "cpu": [ - "wasm32" - ], - "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", - "optional": true, - "dependencies": { - "@emnapi/runtime": "^1.2.0" - }, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-win32-ia32": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz", - "integrity": "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==", - "cpu": [ - "ia32" - ], - "license": "Apache-2.0 AND LGPL-3.0-or-later", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-win32-x64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz", - "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0 AND LGPL-3.0-or-later", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.7.tgz", - "integrity": "sha512-5yximcFK5FNompXfJFoWanu5l8v1hNGqNHh9du1xETp9HWk/B/PzvchX55WYOPaIeNglG8++68AAiauBAtbnzw==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "^1.3.1", - "@emnapi/runtime": "^1.3.1", - "@tybys/wasm-util": "^0.9.0" - } - }, - "node_modules/@next/env": { - "version": "15.2.2", - "resolved": "https://registry.npmjs.org/@next/env/-/env-15.2.2.tgz", - "integrity": "sha512-yWgopCfA9XDR8ZH3taB5nRKtKJ1Q5fYsTOuYkzIIoS8TJ0UAUKAGF73JnGszbjk2ufAQDj6mDdgsJAFx5CLtYQ==", - "license": "MIT" - }, - "node_modules/@next/eslint-plugin-next": { - "version": "15.2.2", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-15.2.2.tgz", - "integrity": "sha512-1+BzokFuFQIfLaRxUKf2u5In4xhPV7tUgKcK53ywvFl6+LXHWHpFkcV7VNeKlyQKUotwiq4fy/aDNF9EiUp4RQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-glob": "3.3.1" - } - }, - "node_modules/@next/swc-darwin-arm64": { - "version": "15.2.2", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.2.2.tgz", - "integrity": "sha512-HNBRnz+bkZ+KfyOExpUxTMR0Ow8nkkcE6IlsdEa9W/rI7gefud19+Sn1xYKwB9pdCdxIP1lPru/ZfjfA+iT8pw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-darwin-x64": { - "version": "15.2.2", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.2.2.tgz", - "integrity": "sha512-mJOUwp7al63tDpLpEFpKwwg5jwvtL1lhRW2fI1Aog0nYCPAhxbJsaZKdoVyPZCy8MYf/iQVNDuk/+i29iLCzIA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm64-gnu": { - "version": "15.2.2", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.2.2.tgz", - "integrity": "sha512-5ZZ0Zwy3SgMr7MfWtRE7cQWVssfOvxYfD9O7XHM7KM4nrf5EOeqwq67ZXDgo86LVmffgsu5tPO57EeFKRnrfSQ==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm64-musl": { - "version": "15.2.2", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.2.2.tgz", - "integrity": "sha512-cgKWBuFMLlJ4TWcFHl1KOaVVUAF8vy4qEvX5KsNd0Yj5mhu989QFCq1WjuaEbv/tO1ZpsQI6h/0YR8bLwEi+nA==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-gnu": { - "version": "15.2.2", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.2.2.tgz", - "integrity": "sha512-c3kWSOSsVL8rcNBBfOq1+/j2PKs2nsMwJUV4icUxRgGBwUOfppeh7YhN5s79enBQFU+8xRgVatFkhHU1QW7yUA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-musl": { - "version": "15.2.2", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.2.2.tgz", - "integrity": "sha512-PXTW9PLTxdNlVYgPJ0equojcq1kNu5NtwcNjRjHAB+/sdoKZ+X8FBu70fdJFadkxFIGekQTyRvPMFF+SOJaQjw==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-arm64-msvc": { - "version": "15.2.2", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.2.2.tgz", - "integrity": "sha512-nG644Es5llSGEcTaXhnGWR/aThM/hIaz0jx4MDg4gWC8GfTCp8eDBWZ77CVuv2ha/uL9Ce+nPTfYkSLG67/sHg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-x64-msvc": { - "version": "15.2.2", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.2.2.tgz", - "integrity": "sha512-52nWy65S/R6/kejz3jpvHAjZDPKIbEQu4x9jDBzmB9jJfuOy5rspjKu4u77+fI4M/WzLXrrQd57hlFGzz1ubcQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nolyfill/is-core-module": { - "version": "1.0.39", - "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", - "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.4.0" - } - }, - "node_modules/@oxc-resolver/binding-darwin-arm64": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-darwin-arm64/-/binding-darwin-arm64-5.0.0.tgz", - "integrity": "sha512-zwHAf+owoxSWTDD4dFuwW+FkpaDzbaL30H5Ltocb+RmLyg4WKuteusRLKh5Y8b/cyu7UzhxM0haIqQjyqA1iuA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@oxc-resolver/binding-darwin-x64": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-darwin-x64/-/binding-darwin-x64-5.0.0.tgz", - "integrity": "sha512-1lS3aBNVjVQKBvZdHm13+8tSjvu2Tl1Cv4FnUyMYxqx6+rsom2YaOylS5LhDUwfZu0zAgpLMwK6kGpF/UPncNg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@oxc-resolver/binding-freebsd-x64": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-freebsd-x64/-/binding-freebsd-x64-5.0.0.tgz", - "integrity": "sha512-q9sRd68wC1/AJ0eu6ClhxlklVfe8gH4wrUkSyEbIYTZ8zY5yjsLY3fpqqsaCvWJUx65nW+XtnAxCGCi5AXr1Mw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@oxc-resolver/binding-linux-arm-gnueabihf": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-5.0.0.tgz", - "integrity": "sha512-catYavWsvqViYnCveQjhrK6yVYDEPFvIOgGLxnz5r2dcgrjpmquzREoyss0L2QG/J5HTTbwqwZ1kk+g56hE/1A==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@oxc-resolver/binding-linux-arm64-gnu": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-5.0.0.tgz", - "integrity": "sha512-l/0pWoQM5kVmJLg4frQ1mKZOXgi0ex/hzvFt8E4WK2ifXr5JgKFUokxsb/oat7f5YzdJJh5r9p+qS/t3dA26Aw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@oxc-resolver/binding-linux-arm64-musl": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm64-musl/-/binding-linux-arm64-musl-5.0.0.tgz", - "integrity": "sha512-bx0oz/oaAW4FGYqpIIxJCnmgb906YfMhTEWCJvYkxjpEI8VKLJEL3PQevYiqDq36SA0yRLJ/sQK2fqry8AFBfA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@oxc-resolver/binding-linux-x64-gnu": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-x64-gnu/-/binding-linux-x64-gnu-5.0.0.tgz", - "integrity": "sha512-4PH++qbSIhlRsFYdN1P9neDov4OGhTGo5nbQ1D7AL6gWFLo3gdZTc00FM2y8JjeTcPWEXkViZuwpuc0w5i6qHg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@oxc-resolver/binding-linux-x64-musl": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-x64-musl/-/binding-linux-x64-musl-5.0.0.tgz", - "integrity": "sha512-mLfQFpX3/5y9oWi0b+9FbWDkL2hM0Y29653beCHiHxAdGyVgb2DsJbK74WkMTwtSz9by8vyBh8jGPZcg1yLZbQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@oxc-resolver/binding-wasm32-wasi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-wasm32-wasi/-/binding-wasm32-wasi-5.0.0.tgz", - "integrity": "sha512-uEhsAZSo65qsRi6+IfBTEUUFbjg7T2yruJeLYpFfEATpm3ory5Mgo5vx3L0c2/Cz1OUZXBgp3A8x6VMUB2jT2A==", - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@napi-rs/wasm-runtime": "^0.2.7" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@oxc-resolver/binding-win32-arm64-msvc": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-5.0.0.tgz", - "integrity": "sha512-8DbSso9Jp1ns8AYuZFXdRfAcdJrzZwkFm/RjPuvAPTENsm685dosBF8G6gTHQlHvULnk6o3sa9ygZaTGC/UoEw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@oxc-resolver/binding-win32-x64-msvc": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-x64-msvc/-/binding-win32-x64-msvc-5.0.0.tgz", - "integrity": "sha512-ylppfPEg63NuRXOPNsXFlgyl37JrtRn0QMO26X3K3Ytp5HtLrMreQMGVtgr30e1l2YmAWqhvmKlCryOqzGPD/g==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "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, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts" + "url": "https://opencollective.com/unts" } }, "node_modules/@rtsao/scc": { @@ -1031,226 +480,56 @@ "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.11.0.tgz", "integrity": "sha512-zxnHvoMQVqewTJr/W4pKjF0bMGiKJv1WX7bSrkl46Hg0QjESbzBROWK0Wg4RphzSOS5Jiy7eFimmM3UgMrMZbQ==", "dev": true, - "license": "MIT" - }, - "node_modules/@swc/counter": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", - "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", - "license": "Apache-2.0" - }, - "node_modules/@swc/helpers": { - "version": "0.5.15", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", - "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.8.0" - } - }, - "node_modules/@tailwindcss/node": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.0.14.tgz", - "integrity": "sha512-Ux9NbFkKWYE4rfUFz6M5JFLs/GEYP6ysxT8uSyPn6aTbh2K3xDE1zz++eVK4Vwx799fzMF8CID9sdHn4j/Ab8w==", - "dev": true, - "license": "MIT", - "dependencies": { - "enhanced-resolve": "^5.18.1", - "jiti": "^2.4.2", - "tailwindcss": "4.0.14" - } - }, - "node_modules/@tailwindcss/oxide": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.0.14.tgz", - "integrity": "sha512-M8VCNyO/NBi5vJ2cRcI9u8w7Si+i76a7o1vveoGtbbjpEYJZYiyc7f2VGps/DqawO56l3tImIbq2OT/533jcrA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10" - }, - "optionalDependencies": { - "@tailwindcss/oxide-android-arm64": "4.0.14", - "@tailwindcss/oxide-darwin-arm64": "4.0.14", - "@tailwindcss/oxide-darwin-x64": "4.0.14", - "@tailwindcss/oxide-freebsd-x64": "4.0.14", - "@tailwindcss/oxide-linux-arm-gnueabihf": "4.0.14", - "@tailwindcss/oxide-linux-arm64-gnu": "4.0.14", - "@tailwindcss/oxide-linux-arm64-musl": "4.0.14", - "@tailwindcss/oxide-linux-x64-gnu": "4.0.14", - "@tailwindcss/oxide-linux-x64-musl": "4.0.14", - "@tailwindcss/oxide-win32-arm64-msvc": "4.0.14", - "@tailwindcss/oxide-win32-x64-msvc": "4.0.14" - } - }, - "node_modules/@tailwindcss/oxide-android-arm64": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.0.14.tgz", - "integrity": "sha512-VBFKC2rFyfJ5J8lRwjy6ub3rgpY186kAcYgiUr8ArR8BAZzMruyeKJ6mlsD22Zp5ZLcPW/FXMasJiJBx0WsdQg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-darwin-arm64": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.0.14.tgz", - "integrity": "sha512-U3XOwLrefGr2YQZ9DXasDSNWGPZBCh8F62+AExBEDMLDfvLLgI/HDzY8Oq8p/JtqkAY38sWPOaNnRwEGKU5Zmg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-darwin-x64": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.0.14.tgz", - "integrity": "sha512-V5AjFuc3ndWGnOi1d379UsODb0TzAS2DYIP/lwEbfvafUaD2aNZIcbwJtYu2DQqO2+s/XBvDVA+w4yUyaewRwg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-freebsd-x64": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.0.14.tgz", - "integrity": "sha512-tXvtxbaZfcPfqBwW3f53lTcyH6EDT+1eT7yabwcfcxTs+8yTPqxsDUhrqe9MrnEzpNkd+R/QAjJapfd4tjWdLg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.0.14.tgz", - "integrity": "sha512-cSeLNWWqIWeSTmBntQvyY2/2gcLX8rkPFfDDTQVF8qbRcRMVPLxBvFVJyfSAYRNch6ZyVH2GI6dtgALOBDpdNA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.0.14.tgz", - "integrity": "sha512-bwDWLBalXFMDItcSXzFk6y7QKvj6oFlaY9vM+agTlwFL1n1OhDHYLZkSjaYsh6KCeG0VB0r7H8PUJVOM1LRZyg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-arm64-musl": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.0.14.tgz", - "integrity": "sha512-gVkJdnR/L6iIcGYXx64HGJRmlme2FGr/aZH0W6u4A3RgPMAb+6ELRLi+UBiH83RXBm9vwCfkIC/q8T51h8vUJQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-x64-gnu": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.0.14.tgz", - "integrity": "sha512-EE+EQ+c6tTpzsg+LGO1uuusjXxYx0Q00JE5ubcIGfsogSKth8n8i2BcS2wYTQe4jXGs+BQs35l78BIPzgwLddw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" + "license": "MIT" + }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", + "license": "Apache-2.0" + }, + "node_modules/@swc/helpers": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", + "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" } }, - "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "node_modules/@tailwindcss/node": { "version": "4.0.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.0.14.tgz", - "integrity": "sha512-KCCOzo+L6XPT0oUp2Jwh233ETRQ/F6cwUnMnR0FvMUCbkDAzHbcyOgpfuAtRa5HD0WbTbH4pVD+S0pn1EhNfbw==", - "cpu": [ - "x64" - ], + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.0.14.tgz", + "integrity": "sha512-Ux9NbFkKWYE4rfUFz6M5JFLs/GEYP6ysxT8uSyPn6aTbh2K3xDE1zz++eVK4Vwx799fzMF8CID9sdHn4j/Ab8w==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" + "dependencies": { + "enhanced-resolve": "^5.18.1", + "jiti": "^2.4.2", + "tailwindcss": "4.0.14" } }, - "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "node_modules/@tailwindcss/oxide": { "version": "4.0.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.0.14.tgz", - "integrity": "sha512-AHObFiFL9lNYcm3tZSPqa/cHGpM5wOrNmM2uOMoKppp+0Hom5uuyRh0QkOp7jftsHZdrZUpmoz0Mp6vhh2XtUg==", - "cpu": [ - "arm64" - ], + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.0.14.tgz", + "integrity": "sha512-M8VCNyO/NBi5vJ2cRcI9u8w7Si+i76a7o1vveoGtbbjpEYJZYiyc7f2VGps/DqawO56l3tImIbq2OT/533jcrA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ], "engines": { "node": ">= 10" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.0.14", + "@tailwindcss/oxide-darwin-arm64": "4.0.14", + "@tailwindcss/oxide-darwin-x64": "4.0.14", + "@tailwindcss/oxide-freebsd-x64": "4.0.14", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.0.14", + "@tailwindcss/oxide-linux-arm64-gnu": "4.0.14", + "@tailwindcss/oxide-linux-arm64-musl": "4.0.14", + "@tailwindcss/oxide-linux-x64-gnu": "4.0.14", + "@tailwindcss/oxide-linux-x64-musl": "4.0.14", + "@tailwindcss/oxide-win32-arm64-msvc": "4.0.14", + "@tailwindcss/oxide-win32-x64-msvc": "4.0.14" } }, "node_modules/@tailwindcss/oxide-win32-x64-msvc": { @@ -1286,9 +565,9 @@ } }, "node_modules/@tanstack/query-core": { - "version": "5.68.0", - "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.68.0.tgz", - "integrity": "sha512-r8rFYYo8/sY/LNaOqX84h12w7EQev4abFXDWy4UoDVUJzJ5d9Fbmb8ayTi7ScG+V0ap44SF3vNs/45mkzDGyGw==", + "version": "5.69.0", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.69.0.tgz", + "integrity": "sha512-Kn410jq6vs1P8Nm+ZsRj9H+U3C0kjuEkYLxbiCyn3MDEiYor1j2DGVULqAz62SLZtUZ/e9Xt6xMXiJ3NJ65WyQ==", "license": "MIT", "funding": { "type": "github", @@ -1296,12 +575,12 @@ } }, "node_modules/@tanstack/react-query": { - "version": "5.68.0", - "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.68.0.tgz", - "integrity": "sha512-mMOdGDKlwTP/WV72QqSNf4PAMeoBp/DqBHQ222wBfb51Looi8QUqnCnb9O98ZgvNISmy6fzxRGBJdZ+9IBvX2Q==", + "version": "5.69.0", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.69.0.tgz", + "integrity": "sha512-Ift3IUNQqTcaFa1AiIQ7WCb/PPy8aexZdq9pZWLXhfLcLxH0+PZqJ2xFImxCpdDZrFRZhLJrh76geevS5xjRhA==", "license": "MIT", "dependencies": { - "@tanstack/query-core": "5.68.0" + "@tanstack/query-core": "5.69.0" }, "funding": { "type": "github", @@ -1311,17 +590,6 @@ "react": "^18 || ^19" } }, - "node_modules/@tybys/wasm-util": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz", - "integrity": "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, "node_modules/@types/estree": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", @@ -1354,9 +622,9 @@ } }, "node_modules/@types/react": { - "version": "19.0.10", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.0.10.tgz", - "integrity": "sha512-JuRQ9KXLEjaUNjTWpzuR231Z2WpIwczOkBEIvbHNCzQefFIT0L8IqE6NV6ULLyC1SI/i234JnDoMkfg+RjQj2g==", + "version": "19.0.12", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.0.12.tgz", + "integrity": "sha512-V6Ar115dBDrjbtXSrS+/Oruobc+qVbbUxDFC1RSbRqLt5SYvxxyIDrSC85RWml54g+jfNeEMZhEj7wW07ONQhA==", "dev": true, "license": "MIT", "dependencies": { @@ -1374,17 +642,17 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.26.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.26.1.tgz", - "integrity": "sha512-2X3mwqsj9Bd3Ciz508ZUtoQQYpOhU/kWoUqIf49H8Z0+Vbh6UF/y0OEYp0Q0axOGzaBGs7QxRwq0knSQ8khQNA==", + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.27.0.tgz", + "integrity": "sha512-4henw4zkePi5p252c8ncBLzLce52SEUz2Ebj8faDnuUXz2UuHEONYcJ+G0oaCF+bYCWVZtrGzq3FD7YXetmnSA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.26.1", - "@typescript-eslint/type-utils": "8.26.1", - "@typescript-eslint/utils": "8.26.1", - "@typescript-eslint/visitor-keys": "8.26.1", + "@typescript-eslint/scope-manager": "8.27.0", + "@typescript-eslint/type-utils": "8.27.0", + "@typescript-eslint/utils": "8.27.0", + "@typescript-eslint/visitor-keys": "8.27.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -1404,16 +672,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.26.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.26.1.tgz", - "integrity": "sha512-w6HZUV4NWxqd8BdeFf81t07d7/YV9s7TCWrQQbG5uhuvGUAW+fq1usZ1Hmz9UPNLniFnD8GLSsDpjP0hm1S4lQ==", + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.27.0.tgz", + "integrity": "sha512-XGwIabPallYipmcOk45DpsBSgLC64A0yvdAkrwEzwZ2viqGqRUJ8eEYoPz0CWnutgAFbNMPdsGGvzjSmcWVlEA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.26.1", - "@typescript-eslint/types": "8.26.1", - "@typescript-eslint/typescript-estree": "8.26.1", - "@typescript-eslint/visitor-keys": "8.26.1", + "@typescript-eslint/scope-manager": "8.27.0", + "@typescript-eslint/types": "8.27.0", + "@typescript-eslint/typescript-estree": "8.27.0", + "@typescript-eslint/visitor-keys": "8.27.0", "debug": "^4.3.4" }, "engines": { @@ -1429,14 +697,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.26.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.26.1.tgz", - "integrity": "sha512-6EIvbE5cNER8sqBu6V7+KeMZIC1664d2Yjt+B9EWUXrsyWpxx4lEZrmvxgSKRC6gX+efDL/UY9OpPZ267io3mg==", + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.27.0.tgz", + "integrity": "sha512-8oI9GwPMQmBryaaxG1tOZdxXVeMDte6NyJA4i7/TWa4fBwgnAXYlIQP+uYOeqAaLJ2JRxlG9CAyL+C+YE9Xknw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.26.1", - "@typescript-eslint/visitor-keys": "8.26.1" + "@typescript-eslint/types": "8.27.0", + "@typescript-eslint/visitor-keys": "8.27.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1447,14 +715,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.26.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.26.1.tgz", - "integrity": "sha512-Kcj/TagJLwoY/5w9JGEFV0dclQdyqw9+VMndxOJKtoFSjfZhLXhYjzsQEeyza03rwHx2vFEGvrJWJBXKleRvZg==", + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.27.0.tgz", + "integrity": "sha512-wVArTVcz1oJOIEJxui/nRhV0TXzD/zMSOYi/ggCfNq78EIszddXcJb7r4RCp/oBrjt8n9A0BSxRMKxHftpDxDA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.26.1", - "@typescript-eslint/utils": "8.26.1", + "@typescript-eslint/typescript-estree": "8.27.0", + "@typescript-eslint/utils": "8.27.0", "debug": "^4.3.4", "ts-api-utils": "^2.0.1" }, @@ -1471,9 +739,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.26.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.26.1.tgz", - "integrity": "sha512-n4THUQW27VmQMx+3P+B0Yptl7ydfceUj4ON/AQILAASwgYdZ/2dhfymRMh5egRUrvK5lSmaOm77Ry+lmXPOgBQ==", + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.27.0.tgz", + "integrity": "sha512-/6cp9yL72yUHAYq9g6DsAU+vVfvQmd1a8KyA81uvfDE21O2DwQ/qxlM4AR8TSdAu+kJLBDrEHKC5/W2/nxsY0A==", "dev": true, "license": "MIT", "engines": { @@ -1485,14 +753,14 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.26.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.26.1.tgz", - "integrity": "sha512-yUwPpUHDgdrv1QJ7YQal3cMVBGWfnuCdKbXw1yyjArax3353rEJP1ZA+4F8nOlQ3RfS2hUN/wze3nlY+ZOhvoA==", + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.27.0.tgz", + "integrity": "sha512-BnKq8cqPVoMw71O38a1tEb6iebEgGA80icSxW7g+kndx0o6ot6696HjG7NdgfuAVmVEtwXUr3L8R9ZuVjoQL6A==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.26.1", - "@typescript-eslint/visitor-keys": "8.26.1", + "@typescript-eslint/types": "8.27.0", + "@typescript-eslint/visitor-keys": "8.27.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -1568,16 +836,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.26.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.26.1.tgz", - "integrity": "sha512-V4Urxa/XtSUroUrnI7q6yUTD3hDtfJ2jzVfeT3VK0ciizfK2q/zGC0iDh1lFMUZR8cImRrep6/q0xd/1ZGPQpg==", + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.27.0.tgz", + "integrity": "sha512-njkodcwH1yvmo31YWgRHNb/x1Xhhq4/m81PhtvmRngD8iHPehxffz1SNCO+kwaePhATC+kOa/ggmvPoPza5i0Q==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.26.1", - "@typescript-eslint/types": "8.26.1", - "@typescript-eslint/typescript-estree": "8.26.1" + "@typescript-eslint/scope-manager": "8.27.0", + "@typescript-eslint/types": "8.27.0", + "@typescript-eslint/typescript-estree": "8.27.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1592,13 +860,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.26.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.26.1.tgz", - "integrity": "sha512-AjOC3zfnxd6S4Eiy3jwktJPclqhFHNyd8L6Gycf9WUPoKZpgM5PjkxY1X7uSy61xVpiJDhhk7XT2NVsN3ALTWg==", + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.27.0.tgz", + "integrity": "sha512-WsXQwMkILJvffP6z4U3FYJPlbf/j07HIxmDjZpbNvBJkMfvwXj5ACRkkHwBDvLBbDbtX5TdU64/rcvKJ/vuInQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.26.1", + "@typescript-eslint/types": "8.27.0", "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -1609,6 +877,20 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@unrs/rspack-resolver-binding-win32-x64-msvc": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@unrs/rspack-resolver-binding-win32-x64-msvc/-/rspack-resolver-binding-win32-x64-msvc-1.2.2.tgz", + "integrity": "sha512-hewo/UMGP1a7O6FG/ThcPzSJdm/WwrYDNkdGgWl6M18H6K6MSitklomWpT9MUtT5KGj++QJb06va/14QBC4pvw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/acorn": { "version": "8.14.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", @@ -1927,9 +1209,9 @@ } }, "node_modules/axios": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.3.tgz", - "integrity": "sha512-iP4DebzoNlP/YN2dpwCgb8zoCmhtkajzS48JvwmkSkXvPI3DHc7m+XYL5tGnSlJtR6nImXZmdCuN5aP8dh1d8A==", + "version": "1.8.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.4.tgz", + "integrity": "sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==", "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", @@ -2081,9 +1363,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001704", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001704.tgz", - "integrity": "sha512-+L2IgBbV6gXB4ETf0keSvLr7JUrRVbIaB/lrQ1+z8mRcQiisG5k+lG6O4n6Y5q6f5EuNfaYXKgymucphlEXQew==", + "version": "1.0.30001706", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001706.tgz", + "integrity": "sha512-3ZczoTApMAZwPKYWmwVbQMFpXBDds3/0VciVoUwPUbldlYyVLmRVuRs/PcUZtHpbLRpzzDvrvnFuREsGt6lUug==", "funding": [ { "type": "opencollective", @@ -2123,6 +1405,15 @@ "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", "license": "MIT" }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/color": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", @@ -2378,9 +1669,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.119", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.119.tgz", - "integrity": "sha512-Ku4NMzUjz3e3Vweh7PhApPrZSS4fyiCIbcIrG9eKrriYVLmbMepETR/v6SU7xPm98QTqMSYiCwfO89QNjXLkbQ==", + "version": "1.5.122", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.122.tgz", + "integrity": "sha512-EML1wnwkY5MFh/xUnCvY8FrhUuKzdYhowuZExZOfwJo+Zu9OsNCI23Cgl5y7awy7HrUHSwB1Z8pZX5TI34lsUg==", "license": "ISC" }, "node_modules/emoji-regex": { @@ -2658,13 +1949,13 @@ } }, "node_modules/eslint-config-next": { - "version": "15.2.2", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-15.2.2.tgz", - "integrity": "sha512-g34RI7RFS4HybYFwGa/okj+8WZM+/fy+pEM+aqRQoVvM4gQhKrd4wIEddKmlZfWD75j8LTwB5zwkmNv3DceH1A==", + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-15.2.3.tgz", + "integrity": "sha512-VDQwbajhNMFmrhLWVyUXCqsGPN+zz5G8Ys/QwFubfsxTIrkqdx3N3x3QPW+pERz8bzGPP0IgEm8cNbZcd8PFRQ==", "dev": true, "license": "MIT", "dependencies": { - "@next/eslint-plugin-next": "15.2.2", + "@next/eslint-plugin-next": "15.2.3", "@rushstack/eslint-patch": "^1.10.3", "@typescript-eslint/eslint-plugin": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", @@ -2721,17 +2012,17 @@ } }, "node_modules/eslint-import-resolver-typescript": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.9.0.tgz", - "integrity": "sha512-EUcFmaz0zAa6P2C9jAb5XDymRld8S6TURvWcIW7y+czOW+K8hrjgQgbhBsNE0J/dDZ6HLfcn70LqnIil9W+ICw==", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.9.1.tgz", + "integrity": "sha512-euxa5rTGqHeqVxmOHT25hpk58PxkQ4mNoX6Yun4ooGaCHAxOCojJYNvjmyeOQxj/LyW+3fulH0+xtk+p2kPPTw==", "dev": true, "license": "ISC", "dependencies": { "@nolyfill/is-core-module": "1.0.39", - "debug": "^4.3.7", + "debug": "^4.4.0", "get-tsconfig": "^4.10.0", - "is-bun-module": "^1.0.2", - "oxc-resolver": "^5.0.0", + "is-bun-module": "^1.3.0", + "rspack-resolver": "^1.1.0", "stable-hash": "^0.0.5", "tinyglobby": "^0.2.12" }, @@ -4162,195 +3453,6 @@ "lightningcss-win32-x64-msvc": "1.29.2" } }, - "node_modules/lightningcss-darwin-arm64": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.29.2.tgz", - "integrity": "sha512-cK/eMabSViKn/PG8U/a7aCorpeKLMlK0bQeNHmdb7qUnBkNPnL+oV5DjJUo0kqWsJUapZsM4jCfYItbqBDvlcA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-darwin-x64": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.29.2.tgz", - "integrity": "sha512-j5qYxamyQw4kDXX5hnnCKMf3mLlHvG44f24Qyi2965/Ycz829MYqjrVg2H8BidybHBp9kom4D7DR5VqCKDXS0w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-freebsd-x64": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.29.2.tgz", - "integrity": "sha512-wDk7M2tM78Ii8ek9YjnY8MjV5f5JN2qNVO+/0BAGZRvXKtQrBC4/cn4ssQIpKIPP44YXw6gFdpUF+Ps+RGsCwg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.29.2.tgz", - "integrity": "sha512-IRUrOrAF2Z+KExdExe3Rz7NSTuuJ2HvCGlMKoquK5pjvo2JY4Rybr+NrKnq0U0hZnx5AnGsuFHjGnNT14w26sg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.29.2.tgz", - "integrity": "sha512-KKCpOlmhdjvUTX/mBuaKemp0oeDIBBLFiU5Fnqxh1/DZ4JPZi4evEH7TKoSBFOSOV3J7iEmmBaw/8dpiUvRKlQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.29.2.tgz", - "integrity": "sha512-Q64eM1bPlOOUgxFmoPUefqzY1yV3ctFPE6d/Vt7WzLW4rKTv7MyYNky+FWxRpLkNASTnKQUaiMJ87zNODIrrKQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.29.2.tgz", - "integrity": "sha512-0v6idDCPG6epLXtBH/RPkHvYx74CVziHo6TMYga8O2EiQApnUPZsbR9nFNrg2cgBzk1AYqEd95TlrsL7nYABQg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-musl": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.29.2.tgz", - "integrity": "sha512-rMpz2yawkgGT8RULc5S4WiZopVMOFWjiItBT7aSfDX4NQav6M44rhn5hjtkKzB+wMTRlLLqxkeYEtQ3dd9696w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.29.2.tgz", - "integrity": "sha512-nL7zRW6evGQqYVu/bKGK+zShyz8OVzsCotFgc7judbt6wnB2KbiKKJwBE4SGoDBQ1O94RjW4asrCjQL4i8Fhbw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, "node_modules/lightningcss-win32-x64-msvc": { "version": "1.29.2", "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.29.2.tgz", @@ -4493,9 +3595,9 @@ "license": "MIT" }, "node_modules/nanoid": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.9.tgz", - "integrity": "sha512-SppoicMGpZvbF1l3z4x7No3OlIjP7QJvC9XR7AhZr1kL133KHnKPztkKDc+Ir4aJ/1VhTySrtKhrsycmrMQfvg==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", "funding": [ { "type": "github", @@ -4773,29 +3875,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/oxc-resolver": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/oxc-resolver/-/oxc-resolver-5.0.0.tgz", - "integrity": "sha512-66fopyAqCN8Mx4tzNiBXWbk8asCSuxUWN62gwTc3yfRs7JfWhX/eVJCf+fUrfbNOdQVOWn+o8pAKllp76ysMXA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/Boshen" - }, - "optionalDependencies": { - "@oxc-resolver/binding-darwin-arm64": "5.0.0", - "@oxc-resolver/binding-darwin-x64": "5.0.0", - "@oxc-resolver/binding-freebsd-x64": "5.0.0", - "@oxc-resolver/binding-linux-arm-gnueabihf": "5.0.0", - "@oxc-resolver/binding-linux-arm64-gnu": "5.0.0", - "@oxc-resolver/binding-linux-arm64-musl": "5.0.0", - "@oxc-resolver/binding-linux-x64-gnu": "5.0.0", - "@oxc-resolver/binding-linux-x64-musl": "5.0.0", - "@oxc-resolver/binding-wasm32-wasi": "5.0.0", - "@oxc-resolver/binding-win32-arm64-msvc": "5.0.0", - "@oxc-resolver/binding-win32-x64-msvc": "5.0.0" - } - }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -5236,6 +4315,29 @@ "node": ">=0.10.0" } }, + "node_modules/rspack-resolver": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/rspack-resolver/-/rspack-resolver-1.2.2.tgz", + "integrity": "sha512-Fwc19jMBA3g+fxDJH2B4WxwZjE0VaaOL7OX/A4Wn5Zv7bOD/vyPZhzXfaO73Xc2GAlfi96g5fGUa378WbIGfFw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/JounQin" + }, + "optionalDependencies": { + "@unrs/rspack-resolver-binding-darwin-arm64": "1.2.2", + "@unrs/rspack-resolver-binding-darwin-x64": "1.2.2", + "@unrs/rspack-resolver-binding-freebsd-x64": "1.2.2", + "@unrs/rspack-resolver-binding-linux-arm-gnueabihf": "1.2.2", + "@unrs/rspack-resolver-binding-linux-arm64-gnu": "1.2.2", + "@unrs/rspack-resolver-binding-linux-arm64-musl": "1.2.2", + "@unrs/rspack-resolver-binding-linux-x64-gnu": "1.2.2", + "@unrs/rspack-resolver-binding-linux-x64-musl": "1.2.2", + "@unrs/rspack-resolver-binding-wasm32-wasi": "1.2.2", + "@unrs/rspack-resolver-binding-win32-arm64-msvc": "1.2.2", + "@unrs/rspack-resolver-binding-win32-x64-msvc": "1.2.2" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -5834,9 +4936,9 @@ } }, "node_modules/ts-api-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.1.tgz", - "integrity": "sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", "dev": true, "license": "MIT", "engines": { diff --git a/package.json b/package.json index 7fc7ab29..9976db61 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "@tanstack/react-query": "^5.68.0", "autoprefixer": "^10.4.21", "axios": "^1.8.3", + "clsx": "^2.1.1", "next": "15.2.2", "postcss": "^8.5.3", "prettier-plugin-tailwindcss": "^0.6.11", diff --git a/src/pages/api/axios.ts b/src/pages/api/axios.ts deleted file mode 100644 index 2742f1e8..00000000 --- a/src/pages/api/axios.ts +++ /dev/null @@ -1,110 +0,0 @@ -import axios from "axios"; - -const TEAM_ID = "13-4"; - -// 카드 데이터 -interface CardData { - title: string; - description: string; - tags?: string[]; - assignee?: string; - dueDate?: string; - columnId: number; -} - -// 카드 응답 -interface CardResponse extends CardData { - id: number; - createdAt: string; - updatedAt: string; -} - -// 컬럼 데이터 -interface ColumnData { - name: string; - order: number; -} - -// 컬럼 응답 -interface ColumnResponse extends ColumnData { - id: number; - createdAt: string; - updatedAt: string; -} - -// axios 인스턴스 생성 -export const apiClient = axios.create({ - baseURL: "https://sp-taskify-api.vercel.app/api", - headers: { - "Content-Type": "application/json", - }, -}); - -// API 엔드포인트 경로 정의 -const apiRoutes = { - cards: () => `/${TEAM_ID}/cards`, - cardDetail: (cardId: number) => `/${TEAM_ID}/cards/${cardId}`, - columnDetail: (columnId: number) => `/${TEAM_ID}/columns/${columnId}`, - columns: () => `/${TEAM_ID}/columns`, - columnCardImage: (columnId: number) => - `/${TEAM_ID}/columns/${columnId}/card-image`, -}; - -const api = { - // 카드 관련 API - cards: { - // 카드 생성 (POST) - create: (cardData: CardData) => - apiClient.post(apiRoutes.cards(), cardData), - - // 카드 목록 조회 (GET) - getAll: () => apiClient.get(apiRoutes.cards()), - - // 카드 상세 조회 (GET) - getById: (cardId: number) => - apiClient.get(apiRoutes.cardDetail(cardId)), - - // 카드 수정 (PUT) - update: (cardId: number, cardData: Partial) => - apiClient.put(apiRoutes.cardDetail(cardId), cardData), - - // 카드 삭제 (DELETE) - delete: (cardId: number) => apiClient.delete(apiRoutes.cardDetail(cardId)), - }, - - // 컬럼 관련 API - columns: { - // 컬럼 생성 (POST) - create: (columnData: ColumnData) => - apiClient.post(apiRoutes.columns(), columnData), - - // 컬럼 목록 조회 (GET) - getAll: () => apiClient.get(apiRoutes.columns()), - - // 컬럼 수정 (PUT) - update: (columnId: number, columnData: Partial) => - apiClient.put( - apiRoutes.columnDetail(columnId), - columnData - ), - - // 컬럼 삭제 (DELETE) - delete: (columnId: number) => - apiClient.delete(apiRoutes.columnDetail(columnId)), - - // 카드 이미지 업로드 (POST) - uploadCardImage: (columnId: number, imageData: { image: File }) => { - const formData = new FormData(); - formData.append("image", imageData.image); - - // headers를 변경한 요청 전송 - return apiClient.post(apiRoutes.columnCardImage(columnId), formData, { - headers: { - "Content-Type": "multipart/form-data", - }, - }); - }, - }, -}; - -export default api; diff --git a/src/pages/components/button/CardButton.tsx b/src/pages/components/button/CardButton.tsx new file mode 100644 index 00000000..f4c28298 --- /dev/null +++ b/src/pages/components/button/CardButton.tsx @@ -0,0 +1,41 @@ +import React from "react"; +import clsx from "clsx"; +import Image from "next/image"; + +interface ButtonProps extends React.ButtonHTMLAttributes { + fullWidth?: boolean; +} + +const CardButton: React.FC = ({ + fullWidth, + className, + children = "비브리지", + ...props +}) => { + return ( + + ); +}; + +export default CardButton; diff --git a/src/pages/components/button/ColumnsButton.tsx b/src/pages/components/button/ColumnsButton.tsx new file mode 100644 index 00000000..a54fb82c --- /dev/null +++ b/src/pages/components/button/ColumnsButton.tsx @@ -0,0 +1,41 @@ +import React from "react"; +import clsx from "clsx"; +import Image from "next/image"; + +interface ButtonProps extends React.ButtonHTMLAttributes { + fullWidth?: boolean; +} + +const ColumnsButton: React.FC = ({ + fullWidth, + className, + children = "새로운 컬럼 추가하기", + ...props +}) => { + return ( + + ); +}; + +export default ColumnsButton; diff --git a/src/pages/components/button/DashboardAddButton.tsx b/src/pages/components/button/DashboardAddButton.tsx new file mode 100644 index 00000000..7aecbf91 --- /dev/null +++ b/src/pages/components/button/DashboardAddButton.tsx @@ -0,0 +1,42 @@ +import React from "react"; +import clsx from "clsx"; +import Image from "next/image"; + +interface DashboardAddButtonProps + extends React.ButtonHTMLAttributes { + fullWidth?: boolean; +} + +const DashboardAddButton: React.FC = ({ + fullWidth = false, + className, + children = "새로운 대시보드", + ...props +}) => { + return ( + + ); +}; + +export default DashboardAddButton; diff --git a/src/pages/components/button/DashboardDeleteButton.tsx b/src/pages/components/button/DashboardDeleteButton.tsx new file mode 100644 index 00000000..3cf411b9 --- /dev/null +++ b/src/pages/components/button/DashboardDeleteButton.tsx @@ -0,0 +1,34 @@ +import React from "react"; +import clsx from "clsx"; + +interface ButtonProps extends React.ButtonHTMLAttributes { + fullWidth?: boolean; + iconSrc?: string; +} + +const DashboardDeleteButton: React.FC = ({ + fullWidth = false, + className, + children = "대시보드 삭제하기", + ...props +}) => { + return ( + + ); +}; + +export default DashboardDeleteButton; diff --git a/src/pages/components/button/TodoButton.tsx b/src/pages/components/button/TodoButton.tsx new file mode 100644 index 00000000..839b3014 --- /dev/null +++ b/src/pages/components/button/TodoButton.tsx @@ -0,0 +1,41 @@ +import React from "react"; +import clsx from "clsx"; +import Image from "next/image"; + +interface ButtonProps extends React.ButtonHTMLAttributes { + fullWidth?: boolean; +} + +const TodoButton: React.FC = ({ + fullWidth = false, + className, + children, + ...props +}) => { + return ( + + ); +}; + +export default TodoButton; diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 929bca90..83da0bb4 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -1,6 +1,20 @@ -import React, { useState } from "react"; -import Head from "next/head"; +import CardButton from "./components/button/CardButton"; +import ColumnsButton from "./components/button/ColumnsButton"; +import DashboardAddButton from "./components/button/DashboardAddButton"; +import DashboardDeleteButton from "./components/button/DashboardDeleteButton"; +import TodoButton from "./components/button/TodoButton"; -export default function Document() { - return
    Hello
    ; +export default function Home() { + return ( +
    +

    반응형 버튼

    + + {/* 컬럼 추가 버튼 */} + 새로운 컬럼 추가하기 + + + + +
    + ); } From d17a87548ca34dd4bcf151b9e3fa14903fc60320 Mon Sep 17 00:00:00 2001 From: gyoyeon Kim Date: Fri, 21 Mar 2025 01:15:54 +0900 Subject: [PATCH 042/542] =?UTF-8?q?[Feat]=20=EC=B4=88=EB=8C=80=EB=B0=9B?= =?UTF-8?q?=EC=9D=80=20=EB=8C=80=EC=8B=9C=EB=B3=B4=EB=93=9C=5F=EB=AC=B4?= =?UTF-8?q?=ED=95=9C=EC=8A=A4=ED=81=AC=EB=A1=A4=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../commoon/table/InviteRecords.tsx | 2 +- .../commoon/table/InvitedDashBoard.tsx | 173 ++++++++++-------- 2 files changed, 96 insertions(+), 79 deletions(-) diff --git a/src/components/commoon/table/InviteRecords.tsx b/src/components/commoon/table/InviteRecords.tsx index 477272d3..17e6d89e 100644 --- a/src/components/commoon/table/InviteRecords.tsx +++ b/src/components/commoon/table/InviteRecords.tsx @@ -59,7 +59,7 @@ const InviteRecords = () => {
    {/* 구성원 리스트 */} -

    이메일

    +

    이메일

      {paginatedInvitation.map((invitelog, index) => (
    • -
      -

      초대받은 대시보드

      -
      - -
      - 대시보드 없을때 아이콘 -

      - 아직 초대받은 대시보드가 없어요 -

      -
      -
    - ); -} +const ITEMS_PER_PAGE = 6; // 🔥 한 번에 보여줄 개수 -/* 초대 받은 대시보드 리스트 */ function InvitedList({ searchTitle }: { searchTitle: string }) { - /* 검색 */ - const filteredData = invitedData.filter( + const [displayedData, setDisplayedData] = useState([]); + const [page, setPage] = useState(1); + const observerRef = useRef(null); + const hasMore = displayedData.length < invitedData.length; // 🔥 남은 데이터가 있는지 확인 + + useEffect(() => { + loadMoreData(); // 초기 데이터 로드 + }, []); + + useEffect(() => { + const observer = new IntersectionObserver( + (entries) => { + if (entries[0].isIntersecting && hasMore) { + loadMoreData(); + } + }, + { threshold: 1.0 } + ); + + if (observerRef.current) { + observer.observe(observerRef.current); + } + + return () => { + if (observerRef.current) { + observer.unobserve(observerRef.current); + } + }; + }, [displayedData, hasMore]); + + // 새로운 데이터 로드 (기존 데이터에서 6개씩 추가) + const loadMoreData = () => { + setDisplayedData((prevData) => { + const nextData = invitedData.slice(0, prevData.length + ITEMS_PER_PAGE); + return nextData; + }); + setPage((prevPage) => prevPage + 1); + }; + + // 검색 기능 + const filteredData = displayedData.filter( (invite) => - (invite.title && - invite.title.toLowerCase().includes(searchTitle.toLowerCase())) || - (invite.nickname && - invite.nickname.toLowerCase().includes(searchTitle.toLowerCase())) + invite.title.toLowerCase().includes(searchTitle.toLowerCase()) || + invite.nickname.toLowerCase().includes(searchTitle.toLowerCase()) ); return ( -
    +
    {filteredData.length > 0 && (

    이름

    @@ -59,43 +79,53 @@ function InvitedList({ searchTitle }: { searchTitle: string }) {

    )} - -
    - {filteredData.length > 0 ? ( - filteredData.map((invite, index) => ( -
    -

    {invite.title}

    -

    {invite.nickname}

    -
    - - +
    + {filteredData.length > 0 + ? filteredData.map((invite, index) => ( +
    +

    {invite.title}

    +

    {invite.nickname}

    +
    + + +
    -
    - )) - ) : ( - /* 검색결과가 없을 때 */ -
    - 검색 결과 없을때 아이콘 + )) + : // 🔥 "대시보드가 없습니다." 메시지는 데이터가 아예 없을 때만 표시 + !hasMore && ( +
    + 검색 결과 없을때 아이콘 +

    + + {searchTitle} + + 대시보드가 없습니다. +

    +
    + )} -

    - {searchTitle} - 대시보드가 없습니다. -

    -
    + {/* 🔥 "더 이상 초대 목록이 없습니다." 메시지는 데이터가 있을 때만 표시 */} + {filteredData.length > 0 && !hasMore && ( +

    + 더 이상 초대 목록이 없습니다. +

    )} + + {/* 🔥 Intersection Observer 감지 요소 */} + {hasMore &&
    }
    ); @@ -104,23 +134,10 @@ function InvitedList({ searchTitle }: { searchTitle: string }) { export default function InvitedDashBoard() { const [searchTitle, setSearchTitle] = useState(""); - /* 검색창 input */ const handleSearchInputChange = (event: ChangeEvent) => { setSearchTitle(event.target.value); - console.log("search input 값: ", event.target.value); }; - /* 검색된 데이터 필터링 */ - const filteredData = invitedData.filter( - (invite) => - invite.title.toLowerCase().includes(searchTitle.toLowerCase()) || - invite.nickname.toLowerCase().includes(searchTitle.toLowerCase()) - ); - - if (invitedData.length === 0) { - return ; - } - return (
    From 4feceddab59812c933dd37c26493b48ad355386c Mon Sep 17 00:00:00 2001 From: MinJi Cho Date: Fri, 21 Mar 2025 01:22:59 +0900 Subject: [PATCH 043/542] =?UTF-8?q?[Feat]=20=EA=B8=B0=EB=B3=B8=20=ED=97=A4?= =?UTF-8?q?=EB=8D=94=20=EB=B0=98=EC=9D=91=ED=98=95=20=EB=94=94=EC=9E=90?= =?UTF-8?q?=EC=9D=B8=20=EC=B6=94=EA=B0=80=20&=20=5Fapp.tsx=ED=8C=8C?= =?UTF-8?q?=EC=9D=BC=EC=97=90=20=EC=8B=A4=ED=97=98=20=20=EC=BD=94=EB=93=9C?= =?UTF-8?q?=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Gnb/Header_default.tsx | 15 ++++++++++----- src/pages/_app.tsx | 1 - 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/components/Gnb/Header_default.tsx b/src/components/Gnb/Header_default.tsx index 722ea61c..5ce506c1 100644 --- a/src/components/Gnb/Header_default.tsx +++ b/src/components/Gnb/Header_default.tsx @@ -2,16 +2,21 @@ import React from "react"; const HeaderDefault = () => { return ( -
    -
    -
    +
    +
    +
    Taskify Logo + Taskify Mobile Logo
    -
    +
    diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx index 20300c29..26f15a0f 100644 --- a/src/pages/_app.tsx +++ b/src/pages/_app.tsx @@ -1,6 +1,5 @@ import "@/styles/globals.css"; import type { AppProps } from "next/app"; -import "@/components/Gnb/Header_default"; import HeaderDefault from "@/components/Gnb/Header_default"; export default function App({ Component, pageProps }: AppProps) { From 0cdbe1cbef0580d5c935b6d6eb65f19c2263e37b Mon Sep 17 00:00:00 2001 From: gyoyeon Kim Date: Fri, 21 Mar 2025 01:25:32 +0900 Subject: [PATCH 044/542] =?UTF-8?q?[Refactor]=20InvitedList=20=EC=8A=A4?= =?UTF-8?q?=ED=81=AC=EB=A1=A4=20=EC=97=86=EC=95=A0=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/commoon/table/InvitedDashBoard.tsx | 12 ++++++------ src/styles/globals.css | 10 ++++++++++ 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/components/commoon/table/InvitedDashBoard.tsx b/src/components/commoon/table/InvitedDashBoard.tsx index d7d3bc05..75f45496 100644 --- a/src/components/commoon/table/InvitedDashBoard.tsx +++ b/src/components/commoon/table/InvitedDashBoard.tsx @@ -19,13 +19,13 @@ const invitedData: Invite[] = [ { title: "유닛 H", nickname: "배지훈" }, ]; -const ITEMS_PER_PAGE = 6; // 🔥 한 번에 보여줄 개수 +const ITEMS_PER_PAGE = 6; // 한 번에 보여줄 개수 function InvitedList({ searchTitle }: { searchTitle: string }) { const [displayedData, setDisplayedData] = useState([]); const [page, setPage] = useState(1); const observerRef = useRef(null); - const hasMore = displayedData.length < invitedData.length; // 🔥 남은 데이터가 있는지 확인 + const hasMore = displayedData.length < invitedData.length; // 남은 데이터가 있는지 확인 useEffect(() => { loadMoreData(); // 초기 데이터 로드 @@ -79,7 +79,7 @@ function InvitedList({ searchTitle }: { searchTitle: string }) {

    )} -
    +
    {filteredData.length > 0 ? filteredData.map((invite, index) => (
    )) - : // 🔥 "대시보드가 없습니다." 메시지는 데이터가 아예 없을 때만 표시 + : // "대시보드가 없습니다." 메시지는 데이터가 아예 없을 때만 표시 !hasMore && (
    )} - {/* 🔥 "더 이상 초대 목록이 없습니다." 메시지는 데이터가 있을 때만 표시 */} + {/* "더 이상 초대 목록이 없습니다." 메시지는 데이터가 있을 때만 표시 */} {filteredData.length > 0 && !hasMore && (

    더 이상 초대 목록이 없습니다.

    )} - {/* 🔥 Intersection Observer 감지 요소 */} + {/* Intersection Observer 감지 요소 */} {hasMore &&
    }
    diff --git a/src/styles/globals.css b/src/styles/globals.css index 72da472b..1788e329 100644 --- a/src/styles/globals.css +++ b/src/styles/globals.css @@ -6,6 +6,16 @@ } } +/* InvitedDashBoard.tsx에서 스크롤바 숨기는 css */ +.scroll-area::-webkit-scrollbar { + display: none; +} + +.scroll-area { + -ms-overflow-style: none; + scrollbar-width: none; +} + @layer base { :root { --primary: #5534da; From d6e8397aefb40a5d02651dbd5ad9703d47821240 Mon Sep 17 00:00:00 2001 From: gyoyeon Kim Date: Fri, 21 Mar 2025 01:43:58 +0900 Subject: [PATCH 045/542] =?UTF-8?q?[Refactor]=20NoDashboardMessage=20?= =?UTF-8?q?=EC=BB=B4=ED=8F=AC=EB=84=8C=ED=8A=B8=20=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../commoon/table/InvitedDashBoard.tsx | 19 ++--------------- .../commoon/table/NoDashboardMessage.tsx | 21 +++++++++++++++++++ 2 files changed, 23 insertions(+), 17 deletions(-) create mode 100644 src/components/commoon/table/NoDashboardMessage.tsx diff --git a/src/components/commoon/table/InvitedDashBoard.tsx b/src/components/commoon/table/InvitedDashBoard.tsx index 75f45496..00f2fdd4 100644 --- a/src/components/commoon/table/InvitedDashBoard.tsx +++ b/src/components/commoon/table/InvitedDashBoard.tsx @@ -1,5 +1,6 @@ import { useState, useEffect, useRef, ChangeEvent } from "react"; import Image from "next/image"; +import NoDashboardMessage from "./NoDashboardMessage"; interface Invite { title: string; @@ -99,23 +100,7 @@ function InvitedList({ searchTitle }: { searchTitle: string }) {
    )) : // "대시보드가 없습니다." 메시지는 데이터가 아예 없을 때만 표시 - !hasMore && ( -
    - 검색 결과 없을때 아이콘 -

    - - {searchTitle} - - 대시보드가 없습니다. -

    -
    - )} + !hasMore && } {/* "더 이상 초대 목록이 없습니다." 메시지는 데이터가 있을 때만 표시 */} {filteredData.length > 0 && !hasMore && ( diff --git a/src/components/commoon/table/NoDashboardMessage.tsx b/src/components/commoon/table/NoDashboardMessage.tsx new file mode 100644 index 00000000..ab2ec720 --- /dev/null +++ b/src/components/commoon/table/NoDashboardMessage.tsx @@ -0,0 +1,21 @@ +import Image from "next/image"; + +function NoDashboardMessage({ searchTitle }: { searchTitle: string }) { + return ( +
    + 검색 결과 없을때 아이콘 +

    + {searchTitle} + 대시보드가 없습니다. +

    +
    + ); +} + +export default NoDashboardMessage; From aea5cddef937626bd75c0c8109821b064b3e57c4 Mon Sep 17 00:00:00 2001 From: MinJi Cho Date: Fri, 21 Mar 2025 02:08:17 +0900 Subject: [PATCH 046/542] =?UTF-8?q?[Feat]=20=EA=B8=B0=EB=B3=B8=20=ED=97=A4?= =?UTF-8?q?=EB=8D=94=20=EB=B8=94=EB=9E=99=20=EB=B2=84=EC=A0=84=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20&=20=5Fapp.tsx=20=ED=8C=8C=EC=9D=BC=EC=97=90=20?= =?UTF-8?q?=EC=8B=A4=ED=97=98=20=EC=BD=94=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Gnb/Header_default.tsx | 12 ++++++--- src/components/Gnb/Header_default_bk.tsx | 32 ++++++++++++++++++++++++ src/pages/_app.tsx | 2 ++ 3 files changed, 42 insertions(+), 4 deletions(-) create mode 100644 src/components/Gnb/Header_default_bk.tsx diff --git a/src/components/Gnb/Header_default.tsx b/src/components/Gnb/Header_default.tsx index 5ce506c1..62b65d49 100644 --- a/src/components/Gnb/Header_default.tsx +++ b/src/components/Gnb/Header_default.tsx @@ -2,8 +2,8 @@ import React from "react"; const HeaderDefault = () => { return ( -
    -
    +
    +
    { />
    - - + +
    diff --git a/src/components/Gnb/Header_default_bk.tsx b/src/components/Gnb/Header_default_bk.tsx new file mode 100644 index 00000000..d6bbc6af --- /dev/null +++ b/src/components/Gnb/Header_default_bk.tsx @@ -0,0 +1,32 @@ +import React from "react"; + +const HeaderDefaultBk = () => { + return ( +
    +
    +
    + Taskify Logo + Taskify Mobile Logo +
    +
    + + +
    +
    +
    + ); +}; + +export default HeaderDefaultBk; diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx index 26f15a0f..a35fcad3 100644 --- a/src/pages/_app.tsx +++ b/src/pages/_app.tsx @@ -1,11 +1,13 @@ import "@/styles/globals.css"; import type { AppProps } from "next/app"; import HeaderDefault from "@/components/Gnb/Header_default"; +import HeaderDefaultBk from "@/components/Gnb/Header_default_bk"; export default function App({ Component, pageProps }: AppProps) { return ( <> + ); From 610e0e23331c823aa041a5753816b545af62956f Mon Sep 17 00:00:00 2001 From: gyoyeon Kim Date: Fri, 21 Mar 2025 02:09:48 +0900 Subject: [PATCH 047/542] =?UTF-8?q?[Refactor]=20=EA=B2=80=EC=83=89?= =?UTF-8?q?=EA=B2=B0=EA=B3=BC=20=EC=97=86=EB=8A=94,=20=EB=8D=B0=EC=9D=B4?= =?UTF-8?q?=ED=84=B0=20=EC=97=86=EB=8A=94=20=ED=95=A8=EC=88=98=20>=20?= =?UTF-8?q?=EC=BB=B4=ED=8F=AC=EB=84=8C=ED=8A=B8=EB=A1=9C=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../commoon/table/EmptyInvitations.tsx | 22 +++++++++++++++++++ .../commoon/table/InvitedDashBoard.tsx | 8 ++++++- ...boardMessage.tsx => NoResultDashBoard.tsx} | 4 ++-- 3 files changed, 31 insertions(+), 3 deletions(-) create mode 100644 src/components/commoon/table/EmptyInvitations.tsx rename src/components/commoon/table/{NoDashboardMessage.tsx => NoResultDashBoard.tsx} (85%) diff --git a/src/components/commoon/table/EmptyInvitations.tsx b/src/components/commoon/table/EmptyInvitations.tsx new file mode 100644 index 00000000..1ab58389 --- /dev/null +++ b/src/components/commoon/table/EmptyInvitations.tsx @@ -0,0 +1,22 @@ +function EmptyInvitations() { + return ( +
    +
    +

    초대받은 대시보드

    +
    + +
    + 초대받은 대시보드가 없을 때 아이콘 이미지 +

    + 아직 초대받은 대시보드가 없어요 +

    +
    +
    + ); +} + +export default EmptyInvitations; diff --git a/src/components/commoon/table/InvitedDashBoard.tsx b/src/components/commoon/table/InvitedDashBoard.tsx index 00f2fdd4..076103fe 100644 --- a/src/components/commoon/table/InvitedDashBoard.tsx +++ b/src/components/commoon/table/InvitedDashBoard.tsx @@ -1,6 +1,7 @@ import { useState, useEffect, useRef, ChangeEvent } from "react"; import Image from "next/image"; -import NoDashboardMessage from "./NoDashboardMessage"; +import NoDashboardMessage from "./NoResultDashBoard"; +import EmptyInvitations from "./EmptyInvitations"; interface Invite { title: string; @@ -123,6 +124,11 @@ export default function InvitedDashBoard() { setSearchTitle(event.target.value); }; + // invitedData가 비어 있으면 EmptyInvitations만 렌더링 + if (invitedData.length === 0) { + return ; + } + return (
    diff --git a/src/components/commoon/table/NoDashboardMessage.tsx b/src/components/commoon/table/NoResultDashBoard.tsx similarity index 85% rename from src/components/commoon/table/NoDashboardMessage.tsx rename to src/components/commoon/table/NoResultDashBoard.tsx index ab2ec720..17366b6c 100644 --- a/src/components/commoon/table/NoDashboardMessage.tsx +++ b/src/components/commoon/table/NoResultDashBoard.tsx @@ -1,6 +1,6 @@ import Image from "next/image"; -function NoDashboardMessage({ searchTitle }: { searchTitle: string }) { +function NoResultDashBoard({ searchTitle }: { searchTitle: string }) { return (
    Date: Fri, 21 Mar 2025 02:12:52 +0900 Subject: [PATCH 048/542] =?UTF-8?q?[Refactor]=20=EC=B4=88=EB=8C=80?= =?UTF-8?q?=EB=B0=9B=EC=9D=80=20=EB=8C=80=EC=8B=9C=EB=B3=B4=EB=93=9C?= =?UTF-8?q?=EC=9A=A9=20Invited=20=ED=8F=B4=EB=8D=94=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/commoon/table/{ => Invited}/EmptyInvitations.tsx | 0 src/components/commoon/table/{ => Invited}/InvitedDashBoard.tsx | 0 .../commoon/table/{ => Invited}/NoResultDashBoard.tsx | 0 src/pages/test.tsx | 2 +- 4 files changed, 1 insertion(+), 1 deletion(-) rename src/components/commoon/table/{ => Invited}/EmptyInvitations.tsx (100%) rename src/components/commoon/table/{ => Invited}/InvitedDashBoard.tsx (100%) rename src/components/commoon/table/{ => Invited}/NoResultDashBoard.tsx (100%) diff --git a/src/components/commoon/table/EmptyInvitations.tsx b/src/components/commoon/table/Invited/EmptyInvitations.tsx similarity index 100% rename from src/components/commoon/table/EmptyInvitations.tsx rename to src/components/commoon/table/Invited/EmptyInvitations.tsx diff --git a/src/components/commoon/table/InvitedDashBoard.tsx b/src/components/commoon/table/Invited/InvitedDashBoard.tsx similarity index 100% rename from src/components/commoon/table/InvitedDashBoard.tsx rename to src/components/commoon/table/Invited/InvitedDashBoard.tsx diff --git a/src/components/commoon/table/NoResultDashBoard.tsx b/src/components/commoon/table/Invited/NoResultDashBoard.tsx similarity index 100% rename from src/components/commoon/table/NoResultDashBoard.tsx rename to src/components/commoon/table/Invited/NoResultDashBoard.tsx diff --git a/src/pages/test.tsx b/src/pages/test.tsx index a5a77b2c..421fda7c 100644 --- a/src/pages/test.tsx +++ b/src/pages/test.tsx @@ -2,7 +2,7 @@ import MemberList from "@/components/commoon/table/Member/MemberList"; import InviteRecords from "@/components/commoon/table/InviteRecords"; -import InvitedDashBoard from "@/components/commoon/table/InvitedDashBoard"; +import InvitedDashBoard from "@/components/commoon/table/Invited/InvitedDashBoard"; export default function TestPage() { return ( From dd65efaf502ee26434b64ea1220f9f9104071e54 Mon Sep 17 00:00:00 2001 From: hyejin Date: Fri, 21 Mar 2025 10:32:15 +0900 Subject: [PATCH 049/542] Create PULL_REQUEST_TEMPLATE.md --- .github/PULL_REQUEST_TEMPLATE.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 .github/PULL_REQUEST_TEMPLATE.md diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 00000000..fe94675f --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,12 @@ +close #ISSUE_NUMBER + +## 확인 사항 +- merge dev로 향하는지 확인 +- assigness, labels도 추가해주세요 + +## 작업 내용 +- 작업 내용 적어주세요 +- 스크린샷도 좋아요👍🏻 + +## 주의 사항 +- ex) npm i 하세요 From 733ad45175838054db3f001d6e9cb50bdc037f38 Mon Sep 17 00:00:00 2001 From: hyejin Date: Wed, 19 Mar 2025 21:16:18 +0900 Subject: [PATCH 050/542] =?UTF-8?q?[Feat]=20=EA=B3=B5=EC=9A=A9=20=EC=BB=B4?= =?UTF-8?q?=ED=8F=AC=EB=84=8C=ED=8A=B8=20=EB=AA=A8=EB=8B=AC=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Modal/Modal.tsx | 58 +++++++++++++++++++++++++ src/components/Modal/OneButtonModal.tsx | 0 2 files changed, 58 insertions(+) create mode 100644 src/components/Modal/Modal.tsx create mode 100644 src/components/Modal/OneButtonModal.tsx diff --git a/src/components/Modal/Modal.tsx b/src/components/Modal/Modal.tsx new file mode 100644 index 00000000..a21bee95 --- /dev/null +++ b/src/components/Modal/Modal.tsx @@ -0,0 +1,58 @@ +"use client"; + +import { createPortal } from "react-dom"; + +interface ButtonProps { + label: string; + onClick: () => void; + variant?: "primary" | "outline"; +} + +interface ModalProps { + isOpen: boolean; + onClose: () => void; + title?: string; + children: React.ReactNode; + buttons?: ButtonProps[]; +} + +export function Modal({ + isOpen, + onClose, + title, + children, + buttons, +}: ModalProps) { + if (!isOpen) return null; + + return createPortal( +
    +
    e.stopPropagation()} // 내부 클릭 시 닫히지 않도록 설정 + > + {title &&

    {title}

    } +
    {children}
    +
    + {buttons?.map((button, index) => ( + + ))} +
    +
    +
    , + document.body + ); +} diff --git a/src/components/Modal/OneButtonModal.tsx b/src/components/Modal/OneButtonModal.tsx new file mode 100644 index 00000000..e69de29b From c831ff44232631ec8a3ac404408dfedf546f1150 Mon Sep 17 00:00:00 2001 From: hyejin Date: Wed, 19 Mar 2025 21:56:36 +0900 Subject: [PATCH 051/542] =?UTF-8?q?[Feat]one-button=20modal=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Modal/Modal.tsx | 18 +++++++++++---- src/components/Modal/OneButtonModal.tsx | 29 +++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 4 deletions(-) diff --git a/src/components/Modal/Modal.tsx b/src/components/Modal/Modal.tsx index a21bee95..75d8ed31 100644 --- a/src/components/Modal/Modal.tsx +++ b/src/components/Modal/Modal.tsx @@ -6,6 +6,7 @@ interface ButtonProps { label: string; onClick: () => void; variant?: "primary" | "outline"; + className?: string; // 버튼 스타일을 외부에서 지정 가능 } interface ModalProps { @@ -14,14 +15,21 @@ interface ModalProps { title?: string; children: React.ReactNode; buttons?: ButtonProps[]; + className?: string; // 모달 컨테이너 스타일을 외부에서 지정 가능 + contentClassName?: string; // 모달 내부 컨텐츠 영역 스타일 + buttonContainerClassName?: string; // 버튼 컨테이너 스타일 } export function Modal({ + //혜진Todo isOpen, onClose, title, children, buttons, + className = "", + contentClassName = "", + buttonContainerClassName = "", }: ModalProps) { if (!isOpen) return null; @@ -31,12 +39,14 @@ export function Modal({ onClick={onClose} >
    e.stopPropagation()} // 내부 클릭 시 닫히지 않도록 설정 > {title &&

    {title}

    } -
    {children}
    -
    +
    {children}
    +
    {buttons?.map((button, index) => ( + +
    +
    +
    + ); +}; + +export default HeaderDashboard; diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx index a35fcad3..23811f2e 100644 --- a/src/pages/_app.tsx +++ b/src/pages/_app.tsx @@ -2,12 +2,14 @@ import "@/styles/globals.css"; import type { AppProps } from "next/app"; import HeaderDefault from "@/components/Gnb/Header_default"; import HeaderDefaultBk from "@/components/Gnb/Header_default_bk"; +import HeaderDashboard from "@/components/Gnb/Header_dashboard"; export default function App({ Component, pageProps }: AppProps) { return ( <> + ); From 33f008a72a309c26e0ac69d8fa650f28c644a8ff Mon Sep 17 00:00:00 2001 From: MinJi Cho Date: Fri, 21 Mar 2025 13:05:31 +0900 Subject: [PATCH 057/542] =?UTF-8?q?[Fix]=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20CSS=20=EA=B0=92=20=EC=82=AD=EC=A0=9C,=20=EC=9D=B4?= =?UTF-8?q?=EB=AF=B8=EC=A7=80=20=ED=8C=8C=EC=9D=BC=20=EC=88=98=EC=A0=95=20?= =?UTF-8?q?=EC=A0=84=20=EC=BB=A4=EB=B0=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Gnb/Header_dashboard.tsx | 20 +++++++++++++++----- src/components/Gnb/Header_default.tsx | 10 +++------- src/components/Gnb/Header_default_bk.tsx | 10 +++------- 3 files changed, 21 insertions(+), 19 deletions(-) diff --git a/src/components/Gnb/Header_dashboard.tsx b/src/components/Gnb/Header_dashboard.tsx index ca539814..a49fed80 100644 --- a/src/components/Gnb/Header_dashboard.tsx +++ b/src/components/Gnb/Header_dashboard.tsx @@ -7,12 +7,22 @@ const HeaderDashboard = () => {

    내 대시보드

    -
    - -
    diff --git a/src/components/Gnb/Header_default.tsx b/src/components/Gnb/Header_default.tsx index 62b65d49..38cb5934 100644 --- a/src/components/Gnb/Header_default.tsx +++ b/src/components/Gnb/Header_default.tsx @@ -16,13 +16,9 @@ const HeaderDefault = () => { className="h-[27px] block md:hidden" />
    -
    - - +
    + +
    diff --git a/src/components/Gnb/Header_default_bk.tsx b/src/components/Gnb/Header_default_bk.tsx index d6bbc6af..85b4bf24 100644 --- a/src/components/Gnb/Header_default_bk.tsx +++ b/src/components/Gnb/Header_default_bk.tsx @@ -16,13 +16,9 @@ const HeaderDefaultBk = () => { className="h-[27px] block md:hidden" />
    -
    - - +
    + +
    From 7b8f08419617b54eed7bc1495d46f5579a4163a7 Mon Sep 17 00:00:00 2001 From: MinJi Cho Date: Fri, 21 Mar 2025 13:26:13 +0900 Subject: [PATCH 058/542] =?UTF-8?q?[Fix]=20svgs=20=ED=8F=B4=EB=8D=94?= =?UTF-8?q?=EC=9D=98=20=EC=9E=98=EB=AA=BB=EB=90=9C=20=20=EC=9D=B4=EB=AF=B8?= =?UTF-8?q?=EC=A7=80=20=ED=8C=8C=EC=9D=BC=20=EC=82=AD=EC=A0=9C=20=ED=9B=84?= =?UTF-8?q?=20=EC=9E=AC=EC=97=85=EB=A1=9C=EB=93=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/svgs/add-box.svg | 2 +- public/svgs/logo-large-white.svg | 18 ++++++++++++++++ public/svgs/logo-large.svg | 27 +++++++++++++++--------- public/svgs/logo-small-white.svg | 4 ++++ src/components/Gnb/Header_default.tsx | 2 +- src/components/Gnb/Header_default_bk.tsx | 4 ++-- 6 files changed, 43 insertions(+), 14 deletions(-) create mode 100644 public/svgs/logo-large-white.svg create mode 100644 public/svgs/logo-small-white.svg diff --git a/public/svgs/add-box.svg b/public/svgs/add-box.svg index e7930fb6..2851ea76 100644 --- a/public/svgs/add-box.svg +++ b/public/svgs/add-box.svg @@ -1,3 +1,3 @@ - + diff --git a/public/svgs/logo-large-white.svg b/public/svgs/logo-large-white.svg new file mode 100644 index 00000000..28a66417 --- /dev/null +++ b/public/svgs/logo-large-white.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/public/svgs/logo-large.svg b/public/svgs/logo-large.svg index 0f0a8104..d980528c 100644 --- a/public/svgs/logo-large.svg +++ b/public/svgs/logo-large.svg @@ -1,11 +1,18 @@ - - - - - - - - - - + + + + + + + + + + + + + + + + + diff --git a/public/svgs/logo-small-white.svg b/public/svgs/logo-small-white.svg new file mode 100644 index 00000000..65e04c1e --- /dev/null +++ b/public/svgs/logo-small-white.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/components/Gnb/Header_default.tsx b/src/components/Gnb/Header_default.tsx index 38cb5934..84addf04 100644 --- a/src/components/Gnb/Header_default.tsx +++ b/src/components/Gnb/Header_default.tsx @@ -6,7 +6,7 @@ const HeaderDefault = () => {
    Taskify Logo diff --git a/src/components/Gnb/Header_default_bk.tsx b/src/components/Gnb/Header_default_bk.tsx index 85b4bf24..688d0769 100644 --- a/src/components/Gnb/Header_default_bk.tsx +++ b/src/components/Gnb/Header_default_bk.tsx @@ -6,12 +6,12 @@ const HeaderDefaultBk = () => {
    Taskify Logo Taskify Mobile Logo From 571de5103cc403c955e9617657e1a5efb2ceff78 Mon Sep 17 00:00:00 2001 From: gyoyeon Kim Date: Fri, 21 Mar 2025 14:38:12 +0900 Subject: [PATCH 059/542] =?UTF-8?q?[Refactor]=20Pagination.tsx=20=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=EC=95=88=EB=82=B4=20p=20=ED=83=9C?= =?UTF-8?q?=EA=B7=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/commoon/Pagination.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/commoon/Pagination.tsx b/src/components/commoon/Pagination.tsx index e4120601..7e76a0e5 100644 --- a/src/components/commoon/Pagination.tsx +++ b/src/components/commoon/Pagination.tsx @@ -16,7 +16,7 @@ const Pagination: React.FC = ({ return (

    - {currentPage} 페이지 중 {totalPages} + {totalPages} 페이지 중 {currentPage}

    +
    +
    +
    + ); +} diff --git a/src/components/commoon/table/InviteRecords.tsx b/src/components/commoon/table/InviteRecords.tsx index 17e6d89e..fdb8c374 100644 --- a/src/components/commoon/table/InviteRecords.tsx +++ b/src/components/commoon/table/InviteRecords.tsx @@ -1,5 +1,5 @@ import { useState } from "react"; -import Pagination from "../Pagination"; +import Pagination from "./TablePagination"; const InviteRecords = () => { const [invitelog, setInvitelog] = useState([ diff --git a/src/components/commoon/table/Member/MemberList.tsx b/src/components/commoon/table/Member/MemberList.tsx index 3feee30a..64f34631 100644 --- a/src/components/commoon/table/Member/MemberList.tsx +++ b/src/components/commoon/table/Member/MemberList.tsx @@ -1,5 +1,5 @@ import { useState } from "react"; -import Pagination from "../../Pagination"; +import Pagination from "../TablePagination"; import RandomProfile from "./RandomProfile"; const MemberList = () => { diff --git a/src/components/commoon/Pagination.tsx b/src/components/commoon/table/TablePagination.tsx similarity index 100% rename from src/components/commoon/Pagination.tsx rename to src/components/commoon/table/TablePagination.tsx diff --git a/src/pages/test.tsx b/src/pages/test.tsx index 421fda7c..b5134326 100644 --- a/src/pages/test.tsx +++ b/src/pages/test.tsx @@ -1,8 +1,9 @@ // 컴포넌트 test 파일 -import MemberList from "@/components/commoon/table/Member/MemberList"; +import MemberList from "@/components/commoon/table/member/MemberList"; import InviteRecords from "@/components/commoon/table/InviteRecords"; -import InvitedDashBoard from "@/components/commoon/table/Invited/InvitedDashBoard"; +import InvitedDashBoard from "@/components/commoon/table/invited/InvitedDashBoard"; +import Profile from "@/components/commoon/card/Profile"; export default function TestPage() { return ( @@ -15,6 +16,9 @@ export default function TestPage() {

    초대받은 테이블 테스트

    +
    +

    프로필 카드 테스트

    +
    ); } From 706952fd4d4287dabe9e515b4be94db37ee15c97 Mon Sep 17 00:00:00 2001 From: gyoyeon Kim Date: Fri, 21 Mar 2025 15:29:19 +0900 Subject: [PATCH 062/542] =?UTF-8?q?[Refactor]=20=ED=94=84=EB=A1=9C?= =?UTF-8?q?=ED=95=84=20=EC=B9=B4=EB=93=9C=20=EC=9E=85=EB=A0=A5=20=ED=8F=BC?= =?UTF-8?q?=20=EC=9C=84=EC=B9=98=20=EC=A1=B0=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/commoon/card/Profile.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/commoon/card/Profile.tsx b/src/components/commoon/card/Profile.tsx index bfb90776..2dddc069 100644 --- a/src/components/commoon/card/Profile.tsx +++ b/src/components/commoon/card/Profile.tsx @@ -16,7 +16,7 @@ export default function ProfileCard() { }; return ( -
    +
    {/* 프로필 제목 */}

    프로필

    @@ -24,7 +24,7 @@ export default function ProfileCard() {
    {/* 프로필 이미지 업로드 영역 */}
    -
    +