diff --git a/src/assets/icon/alarm-icon.png b/src/assets/icon/alarm-icon.png deleted file mode 100644 index fb61af0..0000000 Binary files a/src/assets/icon/alarm-icon.png and /dev/null differ diff --git a/src/assets/icon/alarm-icon.svg b/src/assets/icon/alarm-icon.svg new file mode 100644 index 0000000..d67086a --- /dev/null +++ b/src/assets/icon/alarm-icon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/icon/clock.png b/src/assets/icon/clock.png deleted file mode 100644 index 3a51803..0000000 Binary files a/src/assets/icon/clock.png and /dev/null differ diff --git a/src/assets/icon/clock.svg b/src/assets/icon/clock.svg new file mode 100644 index 0000000..24d1085 --- /dev/null +++ b/src/assets/icon/clock.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icon/home-off.png b/src/assets/icon/home-off.png deleted file mode 100644 index 77f6f02..0000000 Binary files a/src/assets/icon/home-off.png and /dev/null differ diff --git a/src/assets/icon/home-off.svg b/src/assets/icon/home-off.svg new file mode 100644 index 0000000..9d7369f --- /dev/null +++ b/src/assets/icon/home-off.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icon/home-on.png b/src/assets/icon/home-on.png deleted file mode 100644 index 20dc68f..0000000 Binary files a/src/assets/icon/home-on.png and /dev/null differ diff --git a/src/assets/icon/home-on.svg b/src/assets/icon/home-on.svg new file mode 100644 index 0000000..b188f28 --- /dev/null +++ b/src/assets/icon/home-on.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icon/policy-off.png b/src/assets/icon/policy-off.png deleted file mode 100644 index 15f4338..0000000 Binary files a/src/assets/icon/policy-off.png and /dev/null differ diff --git a/src/assets/icon/policy-off.svg b/src/assets/icon/policy-off.svg new file mode 100644 index 0000000..c1b5a36 --- /dev/null +++ b/src/assets/icon/policy-off.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/icon/policy-on.png b/src/assets/icon/policy-on.png deleted file mode 100644 index 9a784ba..0000000 Binary files a/src/assets/icon/policy-on.png and /dev/null differ diff --git a/src/assets/icon/policy-on.svg b/src/assets/icon/policy-on.svg new file mode 100644 index 0000000..b147321 --- /dev/null +++ b/src/assets/icon/policy-on.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/icon/setting-icon.png b/src/assets/icon/setting-icon.png deleted file mode 100644 index db070c4..0000000 Binary files a/src/assets/icon/setting-icon.png and /dev/null differ diff --git a/src/assets/icon/setting-icon.svg b/src/assets/icon/setting-icon.svg new file mode 100644 index 0000000..6decf6e --- /dev/null +++ b/src/assets/icon/setting-icon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/icon/support-off.png b/src/assets/icon/support-off.png deleted file mode 100644 index f8cf13a..0000000 Binary files a/src/assets/icon/support-off.png and /dev/null differ diff --git a/src/assets/icon/support-off.svg b/src/assets/icon/support-off.svg new file mode 100644 index 0000000..f48e77e --- /dev/null +++ b/src/assets/icon/support-off.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/icon/support-on.png b/src/assets/icon/support-on.png deleted file mode 100644 index 0726a0c..0000000 Binary files a/src/assets/icon/support-on.png and /dev/null differ diff --git a/src/assets/icon/support-on.svg b/src/assets/icon/support-on.svg new file mode 100644 index 0000000..79382d0 --- /dev/null +++ b/src/assets/icon/support-on.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/components/BottomBar.tsx b/src/components/BottomBar.tsx index 0e9fbda..a56aedd 100644 --- a/src/components/BottomBar.tsx +++ b/src/components/BottomBar.tsx @@ -1,11 +1,11 @@ import { useLocation, useNavigate } from "react-router-dom"; import { useSettingStore } from "../store/settingStore"; -import homeOn from "../assets/icon/home-on.png"; -import homeOff from "../assets/icon/home-off.png"; -import supportOn from "../assets/icon/support-on.png"; -import supportOff from "../assets/icon/support-off.png"; -import policyOn from "../assets/icon/policy-on.png"; -import policyOff from "../assets/icon/policy-off.png"; +import homeOn from "../assets/icon/home-on.svg"; +import homeOff from "../assets/icon/home-off.svg"; +import supportOn from "../assets/icon/support-on.svg"; +import supportOff from "../assets/icon/support-off.svg"; +import policyOn from "../assets/icon/policy-on.svg"; +import policyOff from "../assets/icon/policy-off.svg"; const navItems = [ { diff --git a/src/components/Header.tsx b/src/components/Header.tsx index 79b89f7..380053a 100644 --- a/src/components/Header.tsx +++ b/src/components/Header.tsx @@ -2,8 +2,8 @@ import { useLocation, useNavigate } from "react-router-dom"; import { useSettingStore } from "../store/settingStore"; import { useUserStore } from "../store/userStore"; import logo from "../assets/img/logo.svg"; -import alarmIcon from "../assets/icon/alarm-icon.png"; -import settingIcon from "../assets/icon/setting-icon.png"; +import alarmIcon from "../assets/icon/alarm-icon.svg"; +import settingIcon from "../assets/icon/setting-icon.svg"; import { useQuery } from "@tanstack/react-query"; import { notificationService } from "@/api"; @@ -129,7 +129,9 @@ export default function Header({ navigate("/alarm")} > @@ -146,7 +148,9 @@ export default function Header({ navigate("/setting")} > diff --git a/src/components/common/GradientButton.tsx b/src/components/common/GradientButton.tsx index 0767618..7a99c11 100644 --- a/src/components/common/GradientButton.tsx +++ b/src/components/common/GradientButton.tsx @@ -31,17 +31,28 @@ export default function GradientButton({ }: Props) { return ( + input[type="range"]::-webkit-slider-thumb { + appearance: none; + width: 20px; + height: 20px; + border-radius: 50%; + background: rgba(217, 217, 217, 0.2); + border: 2px solid white; + cursor: pointer; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + transition: width 0.15s, height 0.15s, box-shadow 0.15s; + } + input[type="range"]::-webkit-slider-thumb:hover { + width: 26px; + height: 26px; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3); + } + input[type="range"]::-moz-range-thumb { + width: 20px; + height: 20px; + border-radius: 50%; + background: rgba(217, 217, 217, 0.2); + border: 2px solid white; + cursor: pointer; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + transition: width 0.15s, height 0.15s, box-shadow 0.15s; + } + input[type="range"]::-moz-range-thumb:hover { + width: 26px; + height: 26px; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3); + } + input[type="range"]:disabled::-webkit-slider-thumb { + background: #9CA3AF; + } + input[type="range"]:disabled::-moz-range-thumb { + background: #9CA3AF; + } +`} ); } diff --git a/src/page/Detail/DetailPage.tsx b/src/page/Detail/DetailPage.tsx index aae1db9..d4f4c9e 100644 --- a/src/page/Detail/DetailPage.tsx +++ b/src/page/Detail/DetailPage.tsx @@ -276,6 +276,10 @@ export default function Detail() { try { await familyService.updateVisibility({ lineId, isPublic: newValue }); setGlobalIsPublic(newValue); + showToast( + newValue ? "공개로 전환되었습니다." : "비공개로 전환되었습니다.", + "success", + ); // ← 추가 const yearMonth = formatYearMonth(currentDate); const appData = await fetchAppUsage(lineId, yearMonth, newValue); diff --git a/src/page/Login/LoginPage.tsx b/src/page/Login/LoginPage.tsx index b63a92c..d5bd04a 100644 --- a/src/page/Login/LoginPage.tsx +++ b/src/page/Login/LoginPage.tsx @@ -1,7 +1,6 @@ import { useState, useEffect } from "react"; import { motion, AnimatePresence } from "framer-motion"; import GradientButton from "../../components/common/GradientButton"; -import { useSettingStore } from "../../store/settingStore"; import logo from "../../assets/img/logo.svg"; import backgroundImg from "../../assets/img/background.png"; import loginBg1 from "../../assets/img/loginBg1.png"; @@ -22,8 +21,6 @@ export default function LoginPage() { const [password, setPassword] = useState(""); const [isLoading, setIsLoading] = useState(false); const [error, setError] = useState(""); - const darkMode = useSettingStore((state) => state.darkMode); - const largeTextMode = useSettingStore((state) => state.largeTextMode); const navigate = useNavigate(); const setUserInfo = useUserStore((state) => state.setUserInfo); const appType = getAppType(); @@ -93,12 +90,9 @@ export default function LoginPage() { }; return ( - // Layout과 동일한 래퍼 구조 - + {/* 슬라이딩 배경 */} @@ -116,7 +110,6 @@ export default function LoginPage() { {/* 콘텐츠 */} - {/* 로고 */} - {/* 입력 폼 */} - {/* 에러 메시지 */} {error && ( {error} @@ -171,7 +162,6 @@ export default function LoginPage() { )} - {/* 로그인 버튼 */} navigate("/policy-detail")} - className="w-full flex items-center gap-4 px-4 py-3 bg-white/60 rounded-2xl shadow-sm border border-gray-100" + className="w-full flex items-center gap-4 px-4 py-3 bg-white/60 rounded-2xl shadow-sm border border-gray-100 + transition-all duration-200 hover:bg-white/80 hover:shadow-md hover:scale-[1.02] active:scale-[0.98]" > @@ -208,7 +209,8 @@ export default function Policy() { > setIsTransferModalOpen(true)} - className="w-full flex items-center gap-4 px-4 py-3 bg-white/60 rounded-2xl shadow-sm border border-gray-100" + className="w-full flex items-center gap-4 px-4 py-3 bg-white/60 rounded-2xl shadow-sm border border-gray-100 + transition-all duration-200 hover:bg-white/80 hover:shadow-md hover:scale-[1.02] active:scale-[0.98]" > diff --git a/src/page/Policy/components/UserInfoCard.tsx b/src/page/Policy/components/UserInfoCard.tsx index 07824b3..a7d1073 100644 --- a/src/page/Policy/components/UserInfoCard.tsx +++ b/src/page/Policy/components/UserInfoCard.tsx @@ -1,6 +1,6 @@ import GradientButton from "@/components/common/GradientButton"; import GlassCard from "../../../components/common/GlassCard"; -import ClockIcon from "../../../assets/icon/clock.png"; +import ClockIcon from "../../../assets/icon/clock.svg"; import PlusIcon from "../../../assets/icon/plus.svg"; import { useNavigate } from "react-router-dom"; import Avatar from "@/components/common/Avatar";