From 4789c56dfa56d2a5611d9e94e0b0a10edaf70757 Mon Sep 17 00:00:00 2001 From: caadiq Date: Sun, 19 Apr 2026 11:24:43 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B5=AC=EC=A1=B0=20=EA=B0=9C=ED=8E=B8=201?= =?UTF-8?q?=EB=8B=A8=EA=B3=84:=20components/=20=EB=A5=BC=20common/pc/mobil?= =?UTF-8?q?e/=EB=A1=9C=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - components/common/: Select, Tooltip, ConfirmDialog, DatePicker, Checkbox, LoginDialog, CharacterSuggestDropdown (device 독립) - components/pc/: Layout, Footer, NoticeWidget (PC 전용) - components/mobile/: (placeholder) - 모든 import path 업데이트 Co-Authored-By: Claude Opus 4.7 (1M context) --- frontend/src/App.jsx | 2 +- .../components/{ => common}/CharacterSuggestDropdown.jsx | 0 frontend/src/components/{ => common}/Checkbox.jsx | 0 frontend/src/components/{ => common}/ConfirmDialog.jsx | 0 frontend/src/components/{ => common}/DatePicker.jsx | 0 frontend/src/components/{ => common}/LoginDialog.jsx | 0 frontend/src/components/{ => common}/Select.jsx | 0 frontend/src/components/{ => common}/Tooltip.jsx | 0 frontend/src/components/{ => pc}/Footer.jsx | 0 frontend/src/components/{ => pc}/Layout.jsx | 0 frontend/src/components/{ => pc}/NoticeWidget.jsx | 0 frontend/src/features/admin/AdminImages.jsx | 2 +- frontend/src/features/admin/AdminMenuForm.jsx | 2 +- frontend/src/features/boss-crystal/BossCrystal.jsx | 2 +- frontend/src/features/boss-crystal/admin/BossForm.jsx | 6 +++--- frontend/src/features/boss-crystal/admin/BossList.jsx | 2 +- frontend/src/features/boss-crystal/user/BossSelector.jsx | 2 +- .../src/features/boss-crystal/user/CharacterPanel.jsx | 6 +++--- frontend/src/features/liberation/Liberation.jsx | 6 +++--- .../src/features/liberation/components/WeeklyDefault.jsx | 4 ++-- frontend/src/features/symbol/Symbol.jsx | 8 ++++---- frontend/src/features/symbol/admin/SymbolForm.jsx | 4 ++-- frontend/src/pages/Home.jsx | 2 +- 23 files changed, 24 insertions(+), 24 deletions(-) rename frontend/src/components/{ => common}/CharacterSuggestDropdown.jsx (100%) rename frontend/src/components/{ => common}/Checkbox.jsx (100%) rename frontend/src/components/{ => common}/ConfirmDialog.jsx (100%) rename frontend/src/components/{ => common}/DatePicker.jsx (100%) rename frontend/src/components/{ => common}/LoginDialog.jsx (100%) rename frontend/src/components/{ => common}/Select.jsx (100%) rename frontend/src/components/{ => common}/Tooltip.jsx (100%) rename frontend/src/components/{ => pc}/Footer.jsx (100%) rename frontend/src/components/{ => pc}/Layout.jsx (100%) rename frontend/src/components/{ => pc}/NoticeWidget.jsx (100%) diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index 348965a..34a03ca 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -1,5 +1,5 @@ import { Routes, Route } from 'react-router-dom' -import Layout from './components/Layout' +import Layout from './components/pc/Layout' import Home from './pages/Home' import FeaturePage from './features/FeaturePage' import AdminLayout from './features/admin/AdminLayout' diff --git a/frontend/src/components/CharacterSuggestDropdown.jsx b/frontend/src/components/common/CharacterSuggestDropdown.jsx similarity index 100% rename from frontend/src/components/CharacterSuggestDropdown.jsx rename to frontend/src/components/common/CharacterSuggestDropdown.jsx diff --git a/frontend/src/components/Checkbox.jsx b/frontend/src/components/common/Checkbox.jsx similarity index 100% rename from frontend/src/components/Checkbox.jsx rename to frontend/src/components/common/Checkbox.jsx diff --git a/frontend/src/components/ConfirmDialog.jsx b/frontend/src/components/common/ConfirmDialog.jsx similarity index 100% rename from frontend/src/components/ConfirmDialog.jsx rename to frontend/src/components/common/ConfirmDialog.jsx diff --git a/frontend/src/components/DatePicker.jsx b/frontend/src/components/common/DatePicker.jsx similarity index 100% rename from frontend/src/components/DatePicker.jsx rename to frontend/src/components/common/DatePicker.jsx diff --git a/frontend/src/components/LoginDialog.jsx b/frontend/src/components/common/LoginDialog.jsx similarity index 100% rename from frontend/src/components/LoginDialog.jsx rename to frontend/src/components/common/LoginDialog.jsx diff --git a/frontend/src/components/Select.jsx b/frontend/src/components/common/Select.jsx similarity index 100% rename from frontend/src/components/Select.jsx rename to frontend/src/components/common/Select.jsx diff --git a/frontend/src/components/Tooltip.jsx b/frontend/src/components/common/Tooltip.jsx similarity index 100% rename from frontend/src/components/Tooltip.jsx rename to frontend/src/components/common/Tooltip.jsx diff --git a/frontend/src/components/Footer.jsx b/frontend/src/components/pc/Footer.jsx similarity index 100% rename from frontend/src/components/Footer.jsx rename to frontend/src/components/pc/Footer.jsx diff --git a/frontend/src/components/Layout.jsx b/frontend/src/components/pc/Layout.jsx similarity index 100% rename from frontend/src/components/Layout.jsx rename to frontend/src/components/pc/Layout.jsx diff --git a/frontend/src/components/NoticeWidget.jsx b/frontend/src/components/pc/NoticeWidget.jsx similarity index 100% rename from frontend/src/components/NoticeWidget.jsx rename to frontend/src/components/pc/NoticeWidget.jsx diff --git a/frontend/src/features/admin/AdminImages.jsx b/frontend/src/features/admin/AdminImages.jsx index 5b35875..90f1002 100644 --- a/frontend/src/features/admin/AdminImages.jsx +++ b/frontend/src/features/admin/AdminImages.jsx @@ -1,7 +1,7 @@ import { useState, useEffect } from 'react' import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query' import { api } from '../../api/client' -import ConfirmDialog from '../../components/ConfirmDialog' +import ConfirmDialog from '../../components/common/ConfirmDialog' import { useAuthStore } from '../../stores/auth' /* ── 공용 모달 ── */ diff --git a/frontend/src/features/admin/AdminMenuForm.jsx b/frontend/src/features/admin/AdminMenuForm.jsx index 1b355cc..481181a 100644 --- a/frontend/src/features/admin/AdminMenuForm.jsx +++ b/frontend/src/features/admin/AdminMenuForm.jsx @@ -3,7 +3,7 @@ import { useNavigate, useParams } from 'react-router-dom' import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query' import { api } from '../../api/client' import ImagePicker from './components/ImagePicker' -import ConfirmDialog from '../../components/ConfirmDialog' +import ConfirmDialog from '../../components/common/ConfirmDialog' function Field({ label, hint, error, required, children }) { return ( diff --git a/frontend/src/features/boss-crystal/BossCrystal.jsx b/frontend/src/features/boss-crystal/BossCrystal.jsx index 94016e9..7b8185d 100644 --- a/frontend/src/features/boss-crystal/BossCrystal.jsx +++ b/frontend/src/features/boss-crystal/BossCrystal.jsx @@ -1,7 +1,7 @@ import { useEffect, useLayoutEffect } from 'react' import { useQuery, useQueries } from '@tanstack/react-query' import { api } from '../../api/client' -import { useLayout } from '../../components/Layout' +import { useLayout } from '../../components/pc/Layout' import CharacterPanel from './user/CharacterPanel' import BossSelector from './user/BossSelector' import { useBossStore } from './store' diff --git a/frontend/src/features/boss-crystal/admin/BossForm.jsx b/frontend/src/features/boss-crystal/admin/BossForm.jsx index c3a670c..861ac6c 100644 --- a/frontend/src/features/boss-crystal/admin/BossForm.jsx +++ b/frontend/src/features/boss-crystal/admin/BossForm.jsx @@ -2,9 +2,9 @@ import { useState, useEffect, useRef } from 'react' import { useNavigate, useParams } from 'react-router-dom' import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query' import { api } from '../../../api/client' -import ConfirmDialog from '../../../components/ConfirmDialog' -import Checkbox from '../../../components/Checkbox' -import Select from '../../../components/Select' +import ConfirmDialog from '../../../components/common/ConfirmDialog' +import Checkbox from '../../../components/common/Checkbox' +import Select from '../../../components/common/Select' import { useAuthStore } from '../../../stores/auth' import { DIFFICULTIES, formatMeso, getDifficultyImageUrl } from './constants' diff --git a/frontend/src/features/boss-crystal/admin/BossList.jsx b/frontend/src/features/boss-crystal/admin/BossList.jsx index dc82c96..438ab62 100644 --- a/frontend/src/features/boss-crystal/admin/BossList.jsx +++ b/frontend/src/features/boss-crystal/admin/BossList.jsx @@ -11,7 +11,7 @@ import { } from '@dnd-kit/sortable' import { CSS } from '@dnd-kit/utilities' import { api } from '../../../api/client' -import Tooltip from '../../../components/Tooltip' +import Tooltip from '../../../components/common/Tooltip' import { DIFFICULTIES, formatMeso, getDifficultyBadgeStyle } from './constants' function BossCardContent({ boss, dragging = false }) { diff --git a/frontend/src/features/boss-crystal/user/BossSelector.jsx b/frontend/src/features/boss-crystal/user/BossSelector.jsx index 4b5c47a..37c6b17 100644 --- a/frontend/src/features/boss-crystal/user/BossSelector.jsx +++ b/frontend/src/features/boss-crystal/user/BossSelector.jsx @@ -1,4 +1,4 @@ -import Select from '../../../components/Select' +import Select from '../../../components/common/Select' import { DIFFICULTIES, formatMeso } from '../admin/constants' const LABEL_EN = { easy: 'EASY', normal: 'NORMAL', hard: 'HARD', chaos: 'CHAOS', extreme: 'EXTREME' } diff --git a/frontend/src/features/boss-crystal/user/CharacterPanel.jsx b/frontend/src/features/boss-crystal/user/CharacterPanel.jsx index cf47d87..3aa36c7 100644 --- a/frontend/src/features/boss-crystal/user/CharacterPanel.jsx +++ b/frontend/src/features/boss-crystal/user/CharacterPanel.jsx @@ -3,9 +3,9 @@ import { useMutation } from '@tanstack/react-query' import { Reorder, useDragControls } from 'framer-motion' import { OverlayScrollbarsComponent } from 'overlayscrollbars-react' import { api } from '../../../api/client' -import ConfirmDialog from '../../../components/ConfirmDialog' -import Tooltip from '../../../components/Tooltip' -import CharacterSuggestDropdown from '../../../components/CharacterSuggestDropdown' +import ConfirmDialog from '../../../components/common/ConfirmDialog' +import Tooltip from '../../../components/common/Tooltip' +import CharacterSuggestDropdown from '../../../components/common/CharacterSuggestDropdown' import { useFitText } from '../../../hooks/useFitText' import { DIFFICULTIES, formatMeso, getDifficultyBadgeStyle } from '../admin/constants' diff --git a/frontend/src/features/liberation/Liberation.jsx b/frontend/src/features/liberation/Liberation.jsx index d0898ba..9de99b7 100644 --- a/frontend/src/features/liberation/Liberation.jsx +++ b/frontend/src/features/liberation/Liberation.jsx @@ -16,9 +16,9 @@ import QuestSelector from './components/QuestSelector' import PointsInput from './components/PointsInput' import ProgressBar from './components/ProgressBar' import WeeklyDefault from './components/WeeklyDefault' -import DatePicker from '../../components/DatePicker' -import ConfirmDialog from '../../components/ConfirmDialog' -import { useLayout } from '../../components/Layout' +import DatePicker from '../../components/common/DatePicker' +import ConfirmDialog from '../../components/common/ConfirmDialog' +import { useLayout } from '../../components/pc/Layout' function makeEmptyWeekly() { const bosses = {} diff --git a/frontend/src/features/liberation/components/WeeklyDefault.jsx b/frontend/src/features/liberation/components/WeeklyDefault.jsx index faca444..a9c04d1 100644 --- a/frontend/src/features/liberation/components/WeeklyDefault.jsx +++ b/frontend/src/features/liberation/components/WeeklyDefault.jsx @@ -1,5 +1,5 @@ -import Select from '../../../components/Select' -import Tooltip from '../../../components/Tooltip' +import Select from '../../../components/common/Select' +import Tooltip from '../../../components/common/Tooltip' import WeeklyScheduler from './WeeklyScheduler' import { WEEKLY_BOSSES, MONTHLY_BOSSES, LIBERATION_BOSS_IMAGE_BASE, calcPoints } from '../data' diff --git a/frontend/src/features/symbol/Symbol.jsx b/frontend/src/features/symbol/Symbol.jsx index d7368a8..ba43172 100644 --- a/frontend/src/features/symbol/Symbol.jsx +++ b/frontend/src/features/symbol/Symbol.jsx @@ -4,10 +4,10 @@ import dayjs from 'dayjs' import utc from 'dayjs/plugin/utc' import timezone from 'dayjs/plugin/timezone' import { api } from '../../api/client' -import { useLayout } from '../../components/Layout' -import Select from '../../components/Select' -import Tooltip from '../../components/Tooltip' -import CharacterSuggestDropdown from '../../components/CharacterSuggestDropdown' +import { useLayout } from '../../components/pc/Layout' +import Select from '../../components/common/Select' +import Tooltip from '../../components/common/Tooltip' +import CharacterSuggestDropdown from '../../components/common/CharacterSuggestDropdown' import { useSymbolStore } from './store' dayjs.extend(utc) diff --git a/frontend/src/features/symbol/admin/SymbolForm.jsx b/frontend/src/features/symbol/admin/SymbolForm.jsx index 8011deb..c3eb7fd 100644 --- a/frontend/src/features/symbol/admin/SymbolForm.jsx +++ b/frontend/src/features/symbol/admin/SymbolForm.jsx @@ -2,8 +2,8 @@ import { useState, useRef, useEffect } from 'react' import { useNavigate, useParams } from 'react-router-dom' import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query' import { api } from '../../../api/client' -import Select from '../../../components/Select' -import ConfirmDialog from '../../../components/ConfirmDialog' +import Select from '../../../components/common/Select' +import ConfirmDialog from '../../../components/common/ConfirmDialog' import { useAuthStore } from '../../../stores/auth' const TYPE_OPTIONS = [ diff --git a/frontend/src/pages/Home.jsx b/frontend/src/pages/Home.jsx index e894271..3b43edd 100644 --- a/frontend/src/pages/Home.jsx +++ b/frontend/src/pages/Home.jsx @@ -1,7 +1,7 @@ import { Link } from 'react-router-dom' import { useQuery } from '@tanstack/react-query' import { api } from '../api/client' -import NoticeWidget from '../components/NoticeWidget' +import NoticeWidget from '../components/pc/NoticeWidget' export default function Home() { const { data: menus = [], isLoading: loading } = useQuery({