/** * GUARDiA Messenger — 라인 아이콘 컴포넌트 (React Native) * react-native-svg 없이 View + StyleSheet만 사용하여 선 아이콘을 구현. * 폐쇄망/온프레미스 환경 호환. * stroke 스타일은 View border로 표현, 복잡한 패스는 Text 유니코드 대체. */ import { View, StyleSheet, Text } from 'react-native' interface Props { name: keyof typeof ICONS size?: number color?: string } /** 아이콘 이름 → 렌더 함수 맵 */ const ICONS = { dashboard: (s: number, c: string) => , sr: (s: number, c: string) => , chat: (s: number, c: string) => , bell: (s: number, c: string) => , settings: (s: number, c: string) => , server: (s: number, c: string) => , alert: (s: number, c: string) => , check: (s: number, c: string) => , sync: (s: number, c: string) => , user: (s: number, c: string) => , lock: (s: number, c: string) => , globe: (s: number, c: string) => , mail: (s: number, c: string) => , send: (s: number, c: string) => , mic: (s: number, c: string) => , building: (s: number, c: string) => , ai: (s: number, c: string) => , zap: (s: number, c: string) => , } as const export default function LineIcon({ name, size = 22, color = '#00A0C8' }: Props) { const renderer = ICONS[name] if (!renderer) return null return renderer(size, color) } /* ─── 개별 아이콘 구현 ───────────────────────────── */ function DashboardIcon({ size, color }: { size: number; color: string }) { const b = size * 0.07 return ( ) } function SrIcon({ size, color }: { size: number; color: string }) { const b = size * 0.07 return ( ) } function ChatIcon({ size, color }: { size: number; color: string }) { const b = size * 0.07 return ( ) } function BellIcon({ size, color }: { size: number; color: string }) { const b = size * 0.07 return ( ) } function SettingsIcon({ size, color }: { size: number; color: string }) { const b = size * 0.07 const r = (size - b * 2) / 2 const innerR = r * 0.3 return ( ) } function ServerIcon({ size, color }: { size: number; color: string }) { const b = size * 0.07 return ( ) } function AlertIcon({ size, color }: { size: number; color: string }) { const b = size * 0.07 return ( ) } function CheckIcon({ size, color }: { size: number; color: string }) { const b = size * 0.07 return ( ) } function SyncIcon({ size, color }: { size: number; color: string }) { const b = size * 0.07 return ( ) } function UserIcon({ size, color }: { size: number; color: string }) { const b = size * 0.07 return ( ) } function LockIcon({ size, color }: { size: number; color: string }) { const b = size * 0.07 return ( ) } function GlobeIcon({ size, color }: { size: number; color: string }) { const b = size * 0.07 return ( ) } function MailIcon({ size, color }: { size: number; color: string }) { const b = size * 0.07 return ( ) } function SendIcon({ size, color }: { size: number; color: string }) { return ( ) } function MicIcon({ size, color }: { size: number; color: string }) { const b = size * 0.07 return ( ) } function BuildingIcon({ size, color }: { size: number; color: string }) { const b = size * 0.07 return ( ) } function AiIcon({ size, color }: { size: number; color: string }) { const b = size * 0.07 return ( {[0,1,2].map(i => ( ))} ) } function ZapIcon({ size, color }: { size: number; color: string }) { return ( ) }