'use client'; import './style.scss'; import Link from 'next/link'; import { useSearchParams } from 'next/navigation'; import { useMemo } from 'react' import Post from '@/types/forum/post'; import { formatDate, isNewPost } from '@/lib/utils/client'; import { BoardLayout } from '@/constants/forum'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faComment, faThumbsUp, faEye } from '@fortawesome/free-regular-svg-icons'; type Props = { isEnabled: boolean; list: Post[]; layout?: BoardLayout; } // 공지사항 목록 export default function NoticeListLayout({isEnabled, list, layout}: Props) { const searchParams = useSearchParams(); const query = useMemo(() => Object.fromEntries(searchParams.entries()), [searchParams]); if (!isEnabled) { return null; } if (!list || list.length <= 0) { return; } return ( <> {list.map(row => { const isNew = isNewPost(true, row); const createdAt = formatDate(row.createdAt); const postViewUrl = {pathname: '/post/' + row.id, query}; return (
{/* PC */}
  1. 공지사항
  2. {row.subject} {row.comments > 0 && ([{row.comments}])} {isNew && NEW}
  3. {layout === BoardLayout.Default && ( <>
  4. {row.name || row.sid}
  5. {createdAt}
  6. {row.views}
  7. {row.likes}
  8. )} {layout === BoardLayout.Media && ( <>
  9. {row.name || row.sid}
  10. {createdAt}
  11. {row.views}
  12. )} {layout === BoardLayout.QnA && ( <>
  13. {row.name || row.sid}
  14. -
  15. {createdAt}
  16. )}
{/* Mobile */}
); })} ); }