diff --git a/package-lock.json b/package-lock.json
index 44b00e7..60c6b5f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11,10 +11,11 @@
"autoprefixer": "10.4.15",
"eslint": "8.49.0",
"eslint-config-next": "13.4.19",
- "next": "13.4.19",
+ "next": "^13.4.19",
"postcss": "8.4.29",
"react": "18.2.0",
"react-dom": "18.2.0",
+ "styled-components": "^6.1.1",
"tailwindcss": "3.3.3"
}
},
@@ -48,6 +49,24 @@
"node": ">=6.9.0"
}
},
+ "node_modules/@emotion/is-prop-valid": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz",
+ "integrity": "sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==",
+ "dependencies": {
+ "@emotion/memoize": "^0.8.1"
+ }
+ },
+ "node_modules/@emotion/memoize": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz",
+ "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA=="
+ },
+ "node_modules/@emotion/unitless": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz",
+ "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ=="
+ },
"node_modules/@eslint-community/eslint-utils": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
@@ -371,6 +390,11 @@
"resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
"integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ=="
},
+ "node_modules/@types/stylis": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/@types/stylis/-/stylis-4.2.3.tgz",
+ "integrity": "sha512-86XLCVEmWagiUEbr2AjSbeY4qHN9jMm3pgM3PuBYfLIbT0MpDSnA3GA/4W7KoH/C/eeK77kNaeIxZzjhKYIBgw=="
+ },
"node_modules/@typescript-eslint/parser": {
"version": "6.6.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.6.0.tgz",
@@ -860,6 +884,14 @@
"node": ">= 6"
}
},
+ "node_modules/camelize": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz",
+ "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/caniuse-lite": {
"version": "1.0.30001529",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001529.tgz",
@@ -978,6 +1010,24 @@
"node": ">= 8"
}
},
+ "node_modules/css-color-keywords": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz",
+ "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/css-to-react-native": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz",
+ "integrity": "sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==",
+ "dependencies": {
+ "camelize": "^1.0.0",
+ "css-color-keywords": "^1.0.0",
+ "postcss-value-parser": "^4.0.2"
+ }
+ },
"node_modules/cssesc": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
@@ -989,6 +1039,11 @@
"node": ">=4"
}
},
+ "node_modules/csstype": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
+ "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
+ },
"node_modules/damerau-levenshtein": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz",
@@ -3333,6 +3388,11 @@
"node": ">=10"
}
},
+ "node_modules/shallowequal": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz",
+ "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ=="
+ },
"node_modules/shebang-command": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
@@ -3479,6 +3539,60 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/styled-components": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.1.1.tgz",
+ "integrity": "sha512-cpZZP5RrKRIClBW5Eby4JM1wElLVP4NQrJbJ0h10TidTyJf4SIIwa3zLXOoPb4gJi8MsJ8mjq5mu2IrEhZIAcQ==",
+ "dependencies": {
+ "@emotion/is-prop-valid": "^1.2.1",
+ "@emotion/unitless": "^0.8.0",
+ "@types/stylis": "^4.0.2",
+ "css-to-react-native": "^3.2.0",
+ "csstype": "^3.1.2",
+ "postcss": "^8.4.31",
+ "shallowequal": "^1.1.0",
+ "stylis": "^4.3.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">= 16"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/styled-components"
+ },
+ "peerDependencies": {
+ "react": ">= 16.8.0",
+ "react-dom": ">= 16.8.0"
+ }
+ },
+ "node_modules/styled-components/node_modules/postcss": {
+ "version": "8.4.31",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
+ "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "nanoid": "^3.3.6",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.2"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
"node_modules/styled-jsx": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz",
@@ -3501,6 +3615,11 @@
}
}
},
+ "node_modules/stylis": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.0.tgz",
+ "integrity": "sha512-E87pIogpwUsUwXw7dNyU4QDjdgVMy52m+XEOPEKUn161cCzWjjhPSQhByfd1CcNvrOLnXQ6OnnZDwnJrz/Z4YQ=="
+ },
"node_modules/sucrase": {
"version": "3.34.0",
"resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz",
diff --git a/package.json b/package.json
index 9b2c45b..735dae9 100644
--- a/package.json
+++ b/package.json
@@ -10,16 +10,16 @@
},
"imports": {
"app/": "./src/app/*"
-},
+ },
"dependencies": {
"autoprefixer": "10.4.15",
"eslint": "8.49.0",
"eslint-config-next": "13.4.19",
- "next": "13.4.19",
+ "next": "^13.4.19",
"postcss": "8.4.29",
"react": "18.2.0",
"react-dom": "18.2.0",
+ "styled-components": "^6.1.1",
"tailwindcss": "3.3.3"
}
-
}
diff --git a/src/app/components/MyPage.jsx b/src/app/components/MyPage.jsx
new file mode 100644
index 0000000..a2ed60e
--- /dev/null
+++ b/src/app/components/MyPage.jsx
@@ -0,0 +1,123 @@
+"use client";
+import React from "react";
+import styled from "styled-components";
+// import calendarIcon from "../img/calendarIcon.png";
+// import heartIcon from "../img/heartIcon.png";
+// import alarmImg from "../img/alarm.png";
+
+export default function MyPage() {
+ return (
+
+
+
+ Profile
+ Settings
+
+
+
+
+ Hello, Linda
+
+
+
{/*

*/}
+
{/*

*/}
+
+
+
+
+
+ );
+}
+
+const MyPageWrap = styled.div`
+ width: 494px;
+
+ border-radius: 28px 0px 0px 28px;
+ background: #000;
+
+ padding: 56px 60px 26px 60px;
+ display: flex;
+ flex-direction: column;
+
+ .header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ .text-container {
+ color: #fff;
+ font-size: 15px;
+ font-style: normal;
+ font-weight: 700;
+ line-height: normal;
+
+ display: flex;
+ gap: 40px;
+ }
+ .profile-img {
+ width: 52px;
+ height: 52px;
+ border-radius: 20px;
+ background: #454545;
+ }
+ }
+
+ .hello {
+ color: #fff;
+ font-size: 40px;
+ font-style: normal;
+ font-weight: 700;
+ line-height: normal;
+
+ margin-top: 145px;
+ }
+
+ .btn-container {
+ display: flex;
+ gap: 10px;
+ margin-top: 45px;
+
+ div {
+ width: 158px;
+ height: 210px;
+ border-radius: 20px;
+ background: #454545;
+ }
+ }
+
+ .footer {
+ display: flex;
+ flex-direction: column;
+ gap: 26px;
+
+ margin-top: 59px;
+
+ h2 {
+ color: #fff;
+ font-size: 23px;
+ font-style: normal;
+ font-weight: 600;
+ line-height: normal;
+ }
+
+ .alarm-container {
+ display: flex;
+ flex-direction: column;
+ gap: 35px;
+
+ .alarm {
+ width: 231px;
+ height: 48px;
+ background-color: rgba(177, 177, 205, 1);
+ border-radius: 15px;
+ }
+ }
+ }
+`;
diff --git a/src/app/img/alarm.png b/src/app/img/alarm.png
new file mode 100644
index 0000000..b88eb98
Binary files /dev/null and b/src/app/img/alarm.png differ
diff --git a/src/app/img/calendarIcon.png b/src/app/img/calendarIcon.png
new file mode 100644
index 0000000..1c9fb61
Binary files /dev/null and b/src/app/img/calendarIcon.png differ
diff --git a/src/app/img/heartIcon.png b/src/app/img/heartIcon.png
new file mode 100644
index 0000000..8ccd9d5
Binary files /dev/null and b/src/app/img/heartIcon.png differ
diff --git a/src/app/page.js b/src/app/page.js
index 155a4f3..71e8816 100644
--- a/src/app/page.js
+++ b/src/app/page.js
@@ -1,113 +1,20 @@
-import Image from 'next/image'
+"use client";
+import MyPage from "./components/MyPage";
+
+const styles = {
+ fullScreen: {
+ width: "100vw", // 뷰포트 너비 전체
+ overflowY: "auto" /* 내용이 넘칠 때 수직 스크롤이 생기도록 설정합니다. */,
+ display: "flex", // 내부 요소들을 수평 또는 수직으로 배치하기 위해 사용합니다.
+ justifyContent: "center", // 수평 정렬을 가운데로 설정합니다.
+ alignItems: "center", // 수직 정렬을 가운데로 설정합니다.
+ },
+};
export default function Home() {
return (
-
-
-
- Get started by editing
- src/app/page.js
-
-
-
-
-
-
-
-
-
-
- )
+
+
+
+ );
}