구조 개편 1단계: components/ 를 common/pc/mobile/로 분리

- 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) <noreply@anthropic.com>
This commit is contained in:
caadiq 2026-04-19 11:24:43 +09:00
parent 45d325dfbe
commit 4789c56dfa
23 changed files with 24 additions and 24 deletions

View file

@ -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'

View file

@ -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'
/* ── 공용 모달 ── */

View file

@ -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 (

View file

@ -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'

View file

@ -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'

View file

@ -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 }) {

View file

@ -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' }

View file

@ -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'

View file

@ -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 = {}

View file

@ -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'

View file

@ -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)

View file

@ -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 = [

View file

@ -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({