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,