From ea20f05b198e98cdbf0649f2c2be2e79a5c6a2f4 Mon Sep 17 00:00:00 2001 From: rrayy <72653431+rrayy-25809@users.noreply.github.com> Date: Sun, 12 Oct 2025 23:11:13 +0900 Subject: [PATCH 1/8] =?UTF-8?q?=EC=8A=A4=ED=94=BC=EB=94=94=20=ED=94=BC?= =?UTF-8?q?=EB=93=9C=EB=B0=B1=201:=20=ED=99=94=EB=A9=B4=EC=9D=B4=20?= =?UTF-8?q?=EC=A0=84=EC=B2=B4=EC=A0=81=EC=9C=BC=EB=A1=9C=20=EC=A4=91?= =?UTF-8?q?=EC=95=99=EC=97=90=20=EC=9C=84=EC=B9=98=ED=95=98=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EB=B3=80=EA=B2=BD=20=09modified:=20=20=20src/compo?= =?UTF-8?q?nents/componets.scss=20=09modified:=20=20=20src/components/song?= =?UTF-8?q?=5Fcard.tsx=20=09modified:=20=20=20src/pages/Home.tsx=20=09modi?= =?UTF-8?q?fied:=20=20=20src/pages/about.tsx=20=09modified:=20=20=20src/pa?= =?UTF-8?q?ges/pages.scss?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/componets.scss | 29 +++- src/components/song_card.tsx | 3 + src/pages/Home.tsx | 11 +- src/pages/about.tsx | 71 +++++----- src/pages/pages.scss | 260 +++++++++++++++------------------- 5 files changed, 189 insertions(+), 185 deletions(-) diff --git a/src/components/componets.scss b/src/components/componets.scss index cb71693..ebd28e3 100644 --- a/src/components/componets.scss +++ b/src/components/componets.scss @@ -2,7 +2,7 @@ cursor: pointer; width: 400px; - background: linear-gradient(135deg, rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0.01) 100%); + background: #1a1a1a; border: 1px solid rgba(255, 255, 255, 0.08); transition: all 0.4s ease; padding: 5px; @@ -31,3 +31,30 @@ letter-spacing: 1px; } } + +.text-card { + background: #2a2a2a; + border-radius: 12px; + padding: 20px; + margin-left: 20%; + margin-right: 20%; + margin-bottom: 15px; + margin-top: 15px; + box-shadow: 0 2px 8px rgba(0,0,0,0.3); + border: 1px solid #333; + animation: slideUp 0.8s ease-out; + + h2 { + font-size: 2em; + margin-top: 10px; + margin-bottom: 20px; + color: #fff; + border-bottom: 2px solid #444; + padding-bottom: 10px; + } + + @media (max-width: 768px) { + margin-left: 10px; + margin-right: 10px; + } +} diff --git a/src/components/song_card.tsx b/src/components/song_card.tsx index eea1ad6..bd1c97a 100644 --- a/src/components/song_card.tsx +++ b/src/components/song_card.tsx @@ -5,7 +5,10 @@ type Props = { Artist_Name: string; Cover_Art: string; }; + // TODO: 사클 API로 곡 데이터 만으로도 커버 아트 가져올 수 있게 바꾸기 +// 현재는 releases.json에서 커버 아트 URL을 직접 넣어주고 있음, 추후에 필요하다 생각되면 사클 API로 바꾸기 (아직 ㄴㄴ) + function Song_card({ Song_Name, Artist_Name, Cover_Art}: Props) { return (
diff --git a/src/pages/Home.tsx b/src/pages/Home.tsx index 5990a4d..5bf70d7 100644 --- a/src/pages/Home.tsx +++ b/src/pages/Home.tsx @@ -5,6 +5,7 @@ import 'swiper/swiper.css'; import "./pages.scss"; import { EffectCoverflow, Pagination } from 'swiper/modules'; import releases from '../releases.json'; +import Text_Card from "../components/text_card"; function HomePage(){ //API를 써서 리스트 가져오기? @@ -19,8 +20,7 @@ function HomePage(){

{t("sub_title")}

-
-

{t("releases")}

+ -
-
-

ID

+ + -
+ ); } diff --git a/src/pages/about.tsx b/src/pages/about.tsx index 1a93731..3344db4 100644 --- a/src/pages/about.tsx +++ b/src/pages/about.tsx @@ -1,54 +1,53 @@ import { useTranslation } from "react-i18next"; +import Card from "../components/text_card"; +import "./pages.scss"; function About() { const { t } = useTranslation(); return (
-
-

{t("about_island")}

+

ISLAND IDs{t("what_is_ISLAND")}

{t("support_other_genres")}

-
-
-

🎵 {t("what_we_do")}

-
-
-
{t("promotion")}
-
{t("promotion_desc")}
+ + +
+
+
{t("promotion")}
+
{t("promotion_desc")}
+
+
+
{t("support")}
+
{t("support_desc")}
+
+
+
{t("label")}
+
{t("label_desc")}
+
-
-
{t("support")}
-
{t("support_desc")}
+ + +
+
+
Owner
+ 🎧 rrayy +
+
+
A&R Team
+ 🎵 Speedy + 🎵 hexa.cat +
+
+
Development Team
+ 💻 Soundsmell +
-
-
{t("label")}
-
{t("label_desc")}
-
-
-
-
-

👥 {t("operators")}

-
-
-
Owner
- 🎧 rrayy -
-
-
A&R Team
- 🎵 Speedy - 🎵 hexa.cat -
-
-
Development Team
- 💻 Soundsmell -
-
-
+
); } diff --git a/src/pages/pages.scss b/src/pages/pages.scss index 7a05053..7ac5639 100644 --- a/src/pages/pages.scss +++ b/src/pages/pages.scss @@ -26,21 +26,15 @@ } } -section { - .section-title { - margin-left: 30px; - } - - .list{ - display: flex; - align-items: center; - padding: 10px; +.list{ + display: flex; + align-items: center; + padding: 10px; - .swiper-slide { - background-position: center; - background-size: cover; - width: 400px !important; - } + .swiper-slide { + background-position: center; + background-size: cover; + width: 400px !important; } } @@ -66,152 +60,134 @@ section { margin-top: 85px; padding: 20px; - .card { - background: #2a2a2a; - border-radius: 12px; - padding: 30px; - margin-bottom: 30px; - box-shadow: 0 2px 8px rgba(0,0,0,0.3); - border: 1px solid #333; - animation: slideUp 0.8s ease-out; - } + .intro-text { + line-height: 1.8; + font-size: 1.1em; + margin-bottom: 15px; + } - h2 { - font-size: 2em; - margin-bottom: 20px; - color: #fff; - border-bottom: 2px solid #444; - padding-bottom: 10px; - } + .services { + display: grid; + gap: 15px; + margin-top: 20px; + } - .intro-text { - line-height: 1.8; - font-size: 1.1em; - margin-bottom: 15px; - } + .service-item { + background: #333; + padding: 20px; + border-radius: 8px; + border-left: 3px solid #666; + transition: transform 0.3s ease, border-color 0.3s ease; + } - .services { - display: grid; - gap: 15px; - margin-top: 20px; - } + .service-item:hover { + transform: translateX(5px); + border-left-color: #fff; + } - .service-item { - background: #333; - padding: 20px; - border-radius: 8px; - border-left: 3px solid #666; - transition: transform 0.3s ease, border-color 0.3s ease; - } + .service-title { + font-weight: bold; + font-size: 1.2em; + margin-bottom: 8px; + color: #fff; + } - .service-item:hover { - transform: translateX(5px); - border-left-color: #fff; - } + .team-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); + gap: 20px; + margin-top: 20px; + } - .service-title { - font-weight: bold; - font-size: 1.2em; - margin-bottom: 8px; - color: #fff; - } + .team-section { + background: #333; + padding: 20px; + border-radius: 8px; + text-align: center; + } - .team-grid { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); - gap: 20px; - margin-top: 20px; - } + .team-role { + font-weight: bold; + font-size: 1.1em; + color: #fff; + margin-bottom: 15px; + } - .team-section { - background: #333; - padding: 20px; - border-radius: 8px; - text-align: center; - } + .team-member { + padding: 10px; + margin: 8px 0; + background: #3a3a3a; + border-radius: 6px; + transition: transform 0.2s ease; + color: #fff; + text-decoration-line: none; + display: block; + } - .team-role { - font-weight: bold; - font-size: 1.1em; - color: #fff; - margin-bottom: 15px; - } + .team-member:hover { + transform: scale(1.05); + background: #444; + } - .team-member { - padding: 10px; - margin: 8px 0; - background: #3a3a3a; - border-radius: 6px; - transition: transform 0.2s ease; - color: #fff; - text-decoration-line: none; - display: block; - } + .links { + text-align: center; + margin-top: 30px; + } - .team-member:hover { - transform: scale(1.05); - background: #444; - } + .link-btn { + display: inline-block; + padding: 12px 30px; + margin: 10px; + background: rgba(255, 255, 255, 0.2); + color: #fff; + text-decoration: none; + border-radius: 25px; + transition: all 0.3s ease; + border: 2px solid rgba(255, 255, 255, 0.3); + } - .links { - text-align: center; - margin-top: 30px; - } + .link-btn:hover { + background: rgba(255, 215, 0, 0.3); + border-color: #ffd700; + transform: translateY(-3px); + box-shadow: 0 5px 15px rgba(255, 215, 0, 0.4); + } - .link-btn { - display: inline-block; - padding: 12px 30px; - margin: 10px; - background: rgba(255, 255, 255, 0.2); - color: #fff; - text-decoration: none; - border-radius: 25px; - transition: all 0.3s ease; - border: 2px solid rgba(255, 255, 255, 0.3); - } + footer { + text-align: center; + padding: 30px; + font-style: italic; + font-size: 1.2em; + opacity: 0.9; + } - .link-btn:hover { - background: rgba(255, 215, 0, 0.3); - border-color: #ffd700; - transform: translateY(-3px); - box-shadow: 0 5px 15px rgba(255, 215, 0, 0.4); - } + @keyframes fadeIn { + from { opacity: 0; } + to { opacity: 1; } + } - footer { - text-align: center; - padding: 30px; - font-style: italic; - font-size: 1.2em; - opacity: 0.9; + @keyframes slideUp { + from { + opacity: 0; + transform: translateY(30px); } - - @keyframes fadeIn { - from { opacity: 0; } - to { opacity: 1; } + to { + opacity: 1; + transform: translateY(0); } + } - @keyframes slideUp { - from { - opacity: 0; - transform: translateY(30px); - } - to { - opacity: 1; - transform: translateY(0); - } + @media (max-width: 768px) { + h1 { + font-size: 2.5em; } - - @media (max-width: 768px) { - h1 { - font-size: 2.5em; - } - - .card { - padding: 20px; - } - - .team-grid { - grid-template-columns: 1fr; - } + + .card { + padding: 20px; } + + .team-grid { + grid-template-columns: 1fr; + } + } } \ No newline at end of file From cc4ff09022f146b58ff04efd4299f128a4016162 Mon Sep 17 00:00:00 2001 From: rrayy <72653431+rrayy-25809@users.noreply.github.com> Date: Sun, 12 Oct 2025 23:13:10 +0900 Subject: [PATCH 2/8] =?UTF-8?q?=EC=8A=A4=ED=94=BC=EB=94=94=20=ED=94=BC?= =?UTF-8?q?=EB=93=9C=EB=B0=B1=202:=20=EA=B8=B0=EB=B3=B8=20=EC=96=B8?= =?UTF-8?q?=EC=96=B4=20=EC=98=81=EC=96=B4=EB=A1=9C=20=EB=B3=80=EA=B2=BD=20?= =?UTF-8?q?=09modified:=20=20=20index.html=20=09new=20file:=20=20=20src/co?= =?UTF-8?q?mponents/text=5Fcard.tsx=20=09modified:=20=20=20src/language/tr?= =?UTF-8?q?anslate=5Fbutton.tsx?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.html | 2 +- src/components/text_card.tsx | 18 ++++++++++++++++++ src/language/translate_button.tsx | 2 +- 3 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 src/components/text_card.tsx diff --git a/index.html b/index.html index 5685176..6e9d9af 100644 --- a/index.html +++ b/index.html @@ -1,5 +1,5 @@ - + diff --git a/src/components/text_card.tsx b/src/components/text_card.tsx new file mode 100644 index 0000000..4e29cf5 --- /dev/null +++ b/src/components/text_card.tsx @@ -0,0 +1,18 @@ +import type { ReactNode } from 'react'; +import "./componets.scss"; + +type Props = { + title: string; + children: ReactNode; +} + +function Card({ title, children }: Props) { + return ( +
+

{title}

+ {children} +
+ ); +} + +export default Card; \ No newline at end of file diff --git a/src/language/translate_button.tsx b/src/language/translate_button.tsx index 828803e..20c357b 100644 --- a/src/language/translate_button.tsx +++ b/src/language/translate_button.tsx @@ -14,7 +14,7 @@ i18n translation: ko, }, }, - lng: "ko-KR", + lng: "en-US", fallbackLng: { "ko-KR": ["ko-KR"], default: ["en-US"], From 6967d0d13efb52d4e8935b88228975dc6de53d9d Mon Sep 17 00:00:00 2001 From: rrayy <72653431+rrayy-25809@users.noreply.github.com> Date: Sun, 12 Oct 2025 23:13:51 +0900 Subject: [PATCH 3/8] =?UTF-8?q?=EC=8A=A4=ED=94=BC=EB=94=94=20=ED=94=BC?= =?UTF-8?q?=EB=93=9C=EB=B0=B1=203:=20=EB=AA=A8=EB=B0=94=EC=9D=BC=EC=97=90?= =?UTF-8?q?=EC=84=9C=20=ED=97=A4=EB=8D=94=20=EC=9D=B4=EC=83=81=ED=95=98?= =?UTF-8?q?=EA=B2=8C=20=EB=B3=B4=EC=9D=B4=EB=8A=94=20=EB=AC=B8=EC=A0=9C=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20=09modified:=20=20=20src/App.tsx=20=09modi?= =?UTF-8?q?fied:=20=20=20src/style.scss?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.tsx | 24 ++++++++++++------ src/style.scss | 68 +++++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 80 insertions(+), 12 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index d45b8fb..beb290c 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,5 +1,6 @@ import { Outlet, Link, useLocation } from 'react-router-dom'; import { useTranslation } from "react-i18next"; +import { useState } from 'react'; import TranslateButton from './language/translate_button.tsx'; import './style.scss'; @@ -7,16 +8,26 @@ function App() { const location = useLocation(); const { t } = useTranslation(); const path = location.pathname; + const [isMenuOpen, setIsMenuOpen] = useState(false); + + const toggleMenu = () => { + setIsMenuOpen(!isMenuOpen); + }; return (
@@ -28,13 +39,10 @@ function App() {