diff --git a/app/(tabs)/(folder)/folder-add-url.tsx b/app/(tabs)/(folder)/folder-add-url.tsx index 5e8538e..a81062e 100644 --- a/app/(tabs)/(folder)/folder-add-url.tsx +++ b/app/(tabs)/(folder)/folder-add-url.tsx @@ -8,43 +8,12 @@ import { import { router, Stack, useLocalSearchParams } from 'expo-router'; import { Button } from '@/components/ui/button'; -import { CardLink } from '@/components/ui/card-link'; -import { SelectionCircle } from '@/components/ui/selection-circle'; +import { SelectableLinkCard } from '@/components/ui/selectable-link-card'; import { Colors, Typography } from '@/constants/theme'; import { getFolderErrorMessage, useFolders } from '@/context/folders-context'; -import { useSavedLinks, type SavedLink } from '@/context/saved-links-context'; +import { useSavedLinks } from '@/context/saved-links-context'; import { showAlert } from '@/utils/guarded-alert'; -// ─── Selectable card row ────────────────────────────────────────────────────── - -interface SelectableCardProps { - link: SavedLink; - selected: boolean; - onToggle: (id: number) => void; -} - -function SelectableCard({ link, selected, onToggle }: SelectableCardProps) { - return ( - - onToggle(link.id)} - /> - {selected && ( - - )} - - - - - ); -} - // ─── Screen ─────────────────────────────────────────────────────────────────── export default function FolderAddUrlScreen() { @@ -135,7 +104,7 @@ export default function FolderAddUrlScreen() { data={uncategorizedLinks} keyExtractor={(item) => String(item.id)} renderItem={({ item }) => ( - void; -} - -function SelectableCard({ link, selected, onToggle }: SelectableCardProps) { - return ( - - onToggle(link.id)} - /> - {/* 선택 시 카드 위에 어두운 오버레이 */} - {selected && ( - - )} - - - - - ); -} - // ─── Screen ─────────────────────────────────────────────────────────────────── export default function FolderUrlSelectScreen() { @@ -139,7 +107,7 @@ export default function FolderUrlSelectScreen() { data={links} keyExtractor={(item) => String(item.id)} renderItem={({ item }) => ( - void; +} + +export function SelectableLinkCard({ link, selected, onToggle }: SelectableLinkCardProps) { + return ( + + + onToggle(link.id)} + /> + {selected && ( + + )} + + + + + + ); +} + +const styles = StyleSheet.create({ + selectableCard: { + position: 'relative', + }, + cardLayer: { + position: 'relative', + borderRadius: 22, + overflow: 'hidden', + }, + selectedOverlay: { + position: 'absolute', + inset: 0, + borderRadius: 22, + backgroundColor: Colors.brand.overlaySelected, + }, + checkOverlay: { + position: 'absolute', + right: 16, + top: 0, + bottom: 0, + justifyContent: 'center', + zIndex: 10, + elevation: 10, + }, +}); diff --git a/components/ui/selection-circle.tsx b/components/ui/selection-circle.tsx index c75c7de..2915d30 100644 --- a/components/ui/selection-circle.tsx +++ b/components/ui/selection-circle.tsx @@ -30,6 +30,7 @@ const styles = StyleSheet.create({ borderRadius: CIRCLE_SIZE / 2, alignItems: 'center', justifyContent: 'center', + overflow: 'visible', }, unselected: { backgroundColor: Colors.brand.surface,