diff --git a/src/assets/icons/chevron_down.svg b/src/assets/icons/chevron_down.svg index 910d318..14ee399 100644 --- a/src/assets/icons/chevron_down.svg +++ b/src/assets/icons/chevron_down.svg @@ -1,3 +1,3 @@ diff --git a/src/assets/icons/chevron_up.svg b/src/assets/icons/chevron_up.svg index d68cfc3..30be611 100644 --- a/src/assets/icons/chevron_up.svg +++ b/src/assets/icons/chevron_up.svg @@ -1,3 +1,3 @@ diff --git a/src/assets/icons/smile.svg b/src/assets/icons/smile.svg new file mode 100644 index 0000000..153492f --- /dev/null +++ b/src/assets/icons/smile.svg @@ -0,0 +1,3 @@ + diff --git a/src/assets/index.tsx b/src/assets/index.tsx index 8265aa2..e9133a1 100644 --- a/src/assets/index.tsx +++ b/src/assets/index.tsx @@ -39,6 +39,7 @@ import NaverIcon from '@/assets/icons/naver_icon.svg?react'; import SoundIcon from '@/assets/icons/sound.svg?react'; import EnvironmentIcon from '@/assets/icons/environment.svg?react'; import CompanionIcon from '@/assets/icons/companion.svg?react'; +import SmileIcon from '@/assets/icons/smile.svg?react'; import GalleryProfileIcon from '@/assets/icons/file_select.svg?react'; import TicketAlt from '@/assets/gif/ticket_alt.gif'; @@ -86,5 +87,6 @@ export { EnvironmentIcon, CompanionIcon, TicketAlt, + SmileIcon, GalleryProfileIcon, }; diff --git a/src/components/common/TagReviewNumber/TagCardList.tsx b/src/components/common/TagReviewNumber/TagCardList.tsx new file mode 100644 index 0000000..6e01331 --- /dev/null +++ b/src/components/common/TagReviewNumber/TagCardList.tsx @@ -0,0 +1,57 @@ +import { useState } from 'react'; +import { ChevronDownIcon, ChevronUpIcon } from '@/assets'; +import { TagReviewNumber } from '@/components'; + +interface TagReview { + iconType: 'sound' | 'environment' | 'companion'; + title: string; + count: number; +} + +interface TagCardListProps { + tags: TagReview[]; + maxVisible?: number; +} + +const TagCardList = ({ tags, maxVisible = 4 }: TagCardListProps) => { + const [expanded, setExpanded] = useState(false); + const visibleTags = expanded ? tags : tags.slice(0, maxVisible); + const hasOverflow = tags.length > maxVisible; + + return ( +
{title}
+{title}
{count}