Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,34 @@
crossorigin
href="https://cdn.jsdelivr.net/gh/orioncactus/[email protected]/dist/web/variable/pretendardvariable.min.css"
/>
<link
rel="preload"
href="https://fastly.jsdelivr.net/gh/projectnoonnu/[email protected]/KyoboHandwriting2020A.woff"
as="font"
type="font/woff"
crossorigin="anonymous"
/>
<link
rel="preload"
href="https://fastly.jsdelivr.net/gh/projectnoonnu/[email protected]/iceHimchan-Rg.woff2"
as="font"
type="font/woff2"
crossorigin="anonymous"
/>
<link
rel="preload"
href="https://fastly.jsdelivr.net/gh/projectnoonnu/[email protected]/Batang_Regular.woff"
as="font"
type="font/woff"
crossorigin="anonymous"
/>
<link
rel="preload"
href="https://fastly.jsdelivr.net/gh/projectnoonnu/[email protected]/HancomMalangMalang-Bold.woff2"
as="font"
type="font/woff2"
crossorigin="anonymous"
/>
</head>
<body>
<div id="root"></div>
Expand Down
2 changes: 0 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,6 @@
},
"dependencies": {
"@egjs/react-infinitegrid": "^4.12.0",
"@emotion/react": "^11.14.0",
"@emotion/styled": "^11.14.0",
"@mui/icons-material": "^6.4.4",
"@mui/material": "^6.4.4",
"@tailwindcss/vite": "^4.0.6",
Expand Down
29 changes: 18 additions & 11 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

104 changes: 68 additions & 36 deletions src/App.tsx
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { Suspense } from 'react';
import { Route, Routes } from 'react-router';

import useViewport from './hooks/useViewport';
Expand Down Expand Up @@ -29,6 +30,35 @@ import WritePage from './pages/Write';
import ShareApprovalPage from './pages/Share';
import useThemeStore from './stores/themeStore';

// const Layout = lazy(() => import('./layouts/Layout'));
// const MobileLayout = lazy(() => import('./layouts/MobileLayout'));
// const PrivateRoute = lazy(() => import('./layouts/PrivateRoute'));
// const AuthCallbackPage = lazy(() => import('./pages/Auth'));

// const AdminPage = lazy(() => import('./pages/Admin'));
// const FilteringManage = lazy(() => import('./pages/Admin/Filtering'));
// const ReportManage = lazy(() => import('./pages/Admin/Report'));
// const AdminRollingPaper = lazy(() => import('./pages/Admin/RollingPaper'));
// const AdminRoute = lazy(() => import('./layouts/AdminRoute'));
// const Home = lazy(() => import('./pages/Home'));
// const Landing = lazy(() => import('./pages/Landing'));
// const LetterBoardPage = lazy(() => import('./pages/LetterBoard'));
// const LetterBoardDetailPage = lazy(() => import('./pages/LetterBoardDetail'));
// const LetterBoxPage = lazy(() => import('./pages/LetterBox'));
// const LetterBoxDetailPage = lazy(() => import('./pages/LetterBoxDetail'));
// const LetterDetailPage = lazy(() => import('./pages/LetterDetail'));
// const LoginPage = lazy(() => import('./pages/Login'));
// const MyPage = lazy(() => import('./pages/MyPage'));
// const MyBoardPage = lazy(() => import('./pages/MyPage/components/MyBoardPage'));
// const NotFoundPage = lazy(() => import('./pages/NotFound'));
// const NotificationsPage = lazy(() => import('./pages/Notifications'));
// const OnboardingPage = lazy(() => import('./pages/Onboarding'));
// const RandomLettersPage = lazy(() => import('./pages/RandomLetters'));
// const RollingPaperPage = lazy(() => import('./pages/RollingPaper'));
// const WritePage = lazy(() => import('./pages/Write'));
// const ShareApprovalPage = lazy(() => import('./pages/Share'));
// const useThemeStore = lazy(() => import('./stores/themeStore'));

const App = () => {
const theme = useThemeStore((state) => state.theme);
useViewport();
Expand All @@ -44,49 +74,51 @@ const App = () => {
initializeTheme();

return (
<Routes>
<Route element={<MobileLayout />}>
<Route path="login" element={<LoginPage />} />
<Route path="landing" element={<Landing />} />
<Route path="*" element={<NotFoundPage />} />
<Route path="auth-callback" element={<AuthCallbackPage />} />
<Route path="onboarding" element={<OnboardingPage />} />
<Suspense fallback={<div>로딩중</div>}>
<Routes>
<Route element={<MobileLayout />}>
<Route path="login" element={<LoginPage />} />
<Route path="landing" element={<Landing />} />
<Route path="*" element={<NotFoundPage />} />
<Route path="auth-callback" element={<AuthCallbackPage />} />
<Route path="onboarding" element={<OnboardingPage />} />

<Route element={<PrivateRoute />}>
<Route index element={<Home />} />
<Route path="letter">
<Route element={<Layout />}>
<Route path="random" element={<RandomLettersPage />} />
<Route path="box" element={<LetterBoxPage />} />
<Route path="box/:id" element={<LetterBoxDetailPage />} />
<Route element={<PrivateRoute />}>
<Route index element={<Home />} />
<Route path="letter">
<Route element={<Layout />}>
<Route path="random" element={<RandomLettersPage />} />
<Route path="box" element={<LetterBoxPage />} />
<Route path="box/:id" element={<LetterBoxDetailPage />} />
</Route>
<Route path="write" element={<WritePage />} />
<Route path=":id" element={<LetterDetailPage />} />
</Route>
<Route path="write" element={<WritePage />} />
<Route path=":id" element={<LetterDetailPage />} />
</Route>
<Route path="board">
<Route element={<Layout />}>
<Route path="rolling/:id" element={<RollingPaperPage />} />
<Route path="letter" element={<LetterBoardPage />} />
<Route path="board">
<Route element={<Layout />}>
<Route path="rolling/:id" element={<RollingPaperPage />} />
<Route path="letter" element={<LetterBoardPage />} />
</Route>
<Route path="letter/:id" element={<LetterBoardDetailPage />} />
<Route path="share/:shareProposalId" element={<ShareApprovalPage />} />
</Route>
<Route path="mypage" element={<Layout />}>
<Route index element={<MyPage />} />
<Route path="board" element={<MyBoardPage />} />
<Route path="notifications" element={<NotificationsPage />} />
</Route>
<Route path="letter/:id" element={<LetterBoardDetailPage />} />
<Route path="share/:shareProposalId" element={<ShareApprovalPage />} />
</Route>
<Route path="mypage" element={<Layout />}>
<Route index element={<MyPage />} />
<Route path="board" element={<MyBoardPage />} />
<Route path="notifications" element={<NotificationsPage />} />
</Route>
</Route>
</Route>

<Route element={<AdminRoute />}>
<Route path="admin" element={<AdminPage />}>
<Route path="report" element={<ReportManage />} />
<Route path="badwords" element={<FilteringManage />} />
<Route path="rolling-paper" element={<AdminRollingPaper />} />
<Route element={<AdminRoute />}>
<Route path="admin" element={<AdminPage />}>
<Route path="report" element={<ReportManage />} />
<Route path="badwords" element={<FilteringManage />} />
<Route path="rolling-paper" element={<AdminRollingPaper />} />
</Route>
</Route>
</Route>
</Routes>
</Routes>
</Suspense>
);
};

Expand Down
Binary file removed src/assets/images/basic-theme.png
Binary file not shown.
Binary file added src/assets/images/basic-theme.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed src/assets/images/celebration-stamp.png
Binary file not shown.
Binary file added src/assets/images/celebration-stamp.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed src/assets/images/celebration-theme-asset-bottom.png
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이거 webp 형식 파일도 추가 되어있나용?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

추가 완료했습니다!

Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed src/assets/images/celebration-theme-asset-side.png
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed src/assets/images/celebration.png
Binary file not shown.
Binary file added src/assets/images/celebration.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed src/assets/images/closed-letter.png
Binary file not shown.
Binary file added src/assets/images/closed-letter.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed src/assets/images/congrat-theme.png
Binary file not shown.
Binary file added src/assets/images/congrat-theme.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed src/assets/images/consolation-stamp.png
Binary file not shown.
Binary file added src/assets/images/consolation-stamp.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed src/assets/images/consolation.png
Binary file not shown.
Binary file added src/assets/images/consolation.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed src/assets/images/consult-stamp.png
Binary file not shown.
Binary file added src/assets/images/consult-stamp.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed src/assets/images/consult.png
Binary file not shown.
Binary file added src/assets/images/consult.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed src/assets/images/etc-stamp.png
Binary file not shown.
Binary file added src/assets/images/etc-stamp.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed src/assets/images/etc.png
Binary file not shown.
Binary file added src/assets/images/etc.webp
Binary file removed src/assets/images/field-4-dark.png
Diff not rendered.
Binary file removed src/assets/images/field-theme-asset-bird-dark.png
Diff not rendered.
Binary file removed src/assets/images/field-theme-asset-bottom.png
Diff not rendered.
Binary file removed src/assets/images/field-theme.png
Diff not rendered.
Binary file added src/assets/images/field-theme.webp
Binary file removed src/assets/images/opened-letter-front.png
Diff not rendered.
Binary file added src/assets/images/opened-letter-front.webp
Binary file removed src/assets/images/opened-letter.png
Diff not rendered.
Binary file added src/assets/images/opened-letter.webp
Binary file removed src/assets/images/respondent-stamp.png
Diff not rendered.
Binary file added src/assets/images/respondent-stamp.webp
Binary file removed src/assets/images/sky-theme-asset-clouds.png
Diff not rendered.
Binary file added src/assets/images/sky-theme-asset-clouds.webp
Binary file removed src/assets/images/sky-theme.png
Diff not rendered.
Binary file added src/assets/images/sky-theme.webp
Binary file removed src/assets/images/vintage-theme-asset-bg.png
Diff not rendered.
Binary file added src/assets/images/vintage-theme-asset-bg.webp
Binary file removed src/assets/images/vintage-theme.png
Diff not rendered.
Binary file added src/assets/images/vintage-theme.webp
2 changes: 1 addition & 1 deletion src/components/BackgroundBottom.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import BgItem from '@/assets/images/field-4.png';
import BgItem from '@/assets/images/field-theme-asset-bottom.webp';
import BgItemDark from '@/assets/images/field-4-dark.webp';

import BackgroundImageWrapper from './BackgroundImageWrapper';
Expand Down
4 changes: 3 additions & 1 deletion src/components/ResultLetter.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,14 @@ export default function ResultLetter({
categoryName = 'CONSOLATION',
title,
zipCode = 'ERROR',
createdAt,
}: {
categoryName: Category;
title: string;
zipCode: string;
createdAt?: Date;
}) {
const date = new Date();
const date = createdAt ? new Date(createdAt) : new Date();
const today = `${date.getFullYear()}년 ${date.getMonth() + 1}월 ${date.getDate()}일`;

return (
Expand Down
1 change: 0 additions & 1 deletion src/layouts/PrivateRoute.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import { useServerSentEvents } from '@/hooks/useServerSentEvents';
import Toast from '@/components/Toast';

export default function PrivateRoute() {
// useServerSentEvents();
const isLoggedIn = useAuthStore((state) => state.isLoggedIn);
const navigate = useNavigate();

Expand Down
53 changes: 29 additions & 24 deletions src/pages/Admin/Report.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import WrapperTitle from './components/WrapperTitle';
export default function ReportManage() {
const [detailModalOpen, setDetailModalOpen] = useState<boolean>(false);
const [handleModalOpen, setHandleModalOpen] = useState<boolean>(false);
const [reports, setReports] = useState<Report[]>([]);
const [reports, setReports] = useState<Report[] | null>(null);
const [reportPages, setReportPages] = useState<ReportPages>({
currentPage: '1',
totalPages: '0',
Expand Down Expand Up @@ -71,31 +71,36 @@ export default function ReportManage() {
<option value="REJECTED">거절됨</option>
</select>
</div>
{reports ? (
<section className="mt-5 flex flex-col">
<ListHeaderFrame>
<span className="admin-list-set basis-1/10 overflow-ellipsis">ID</span>
<span className="admin-list-set basis-2/10">제보자 이메일</span>
<span className="admin-list-set basis-2/10">작성자 이메일</span>
<span className="admin-list-set basis-2/10">제보 일자</span>
<span className="admin-list-set basis-3/10">제보 사유</span>
</ListHeaderFrame>
{reports.map((data, idx) => (
<ReportListItem
key={idx}
report={data}
setDetailModalOpen={setDetailModalOpen}
setSelectedReportId={setSelectedReportId}
setHandleModalOpen={setHandleModalOpen}
setSelectReport={setSelectReport}
/>
))}

<section className="mt-5 flex flex-col">
<ListHeaderFrame>
<span className="admin-list-set basis-1/10 overflow-ellipsis">ID</span>
<span className="admin-list-set basis-2/10">제보자 이메일</span>
<span className="admin-list-set basis-2/10">작성자 이메일</span>
<span className="admin-list-set basis-2/10">제보 일자</span>
<span className="admin-list-set basis-3/10">제보 사유</span>
</ListHeaderFrame>
{reports?.map((data, idx) => (
<ReportListItem
key={idx}
report={data}
setDetailModalOpen={setDetailModalOpen}
setSelectedReportId={setSelectedReportId}
setHandleModalOpen={setHandleModalOpen}
setSelectReport={setSelectReport}
<PagenationNavigation
totalPage={Number(reportPages.totalPages)}
buttonLength={3}
handlePageNumberButtonClick={handleNowPage}
/>
))}
<PagenationNavigation
totalPage={Number(reportPages.totalPages)}
buttonLength={3}
handlePageNumberButtonClick={handleNowPage}
/>
</section>
</section>
) : (
<div>Loading...</div>
)}

{detailModalOpen && (
<ReportDetailModal selectedReport={selectedReport} closeEvent={setDetailModalOpen} />
)}
Expand Down
Loading