{"version":3,"file":"JIcon.vue.cjs","sources":["../../../../src/components/atoms/JIcon.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { computed } from 'vue'\r\nimport { \r\n  House, \r\n  User, \r\n  Settings, \r\n  Search, \r\n  Plus, \r\n  Minus, \r\n  SquarePen, \r\n  Trash2, \r\n  Save, \r\n  Download,\r\n  Upload,\r\n  Eye,\r\n  EyeOff,\r\n  Heart,\r\n  Star,\r\n  Check,\r\n  X,\r\n  CircleAlert,\r\n  Info,\r\n  ChevronDown,\r\n  ChevronUp,\r\n  ChevronLeft,\r\n  ChevronRight,\r\n  Menu,\r\n  Ellipsis,\r\n  EllipsisVertical,\r\n  Palette,\r\n  // WMS 핵심 아이콘들\r\n  Package,\r\n  PackageCheck,\r\n  PackageX,\r\n  Truck,\r\n  Warehouse,\r\n  Boxes,\r\n  Archive,\r\n  ClipboardList,\r\n  ClipboardCheck,\r\n  FileText,\r\n  ChartBar,\r\n  TrendingUp,\r\n  TrendingDown,\r\n  Calendar,\r\n  Clock,\r\n  MapPin,\r\n  Table,\r\n  List,\r\n  ListFilter,\r\n  ArrowUpWideNarrow,\r\n  ArrowDownWideNarrow,\r\n  Scale,\r\n  // 추가 아이콘들\r\n  Server,\r\n  Database,\r\n  Link,\r\n  ArrowLeftRight,\r\n  CircleQuestionMark,\r\n  Monitor,\r\n  Users,\r\n  Code,\r\n  FileKey,\r\n  Cpu,\r\n  Rocket,\r\n  FileSpreadsheet,\r\n  Activity,\r\n  MessageCircle,\r\n  Book,\r\n  LogIn,\r\n  LogOut,\r\n  // 편집 관련\r\n  Copy,\r\n  Clipboard,\r\n  Undo2,\r\n  Redo2,\r\n  Pencil,\r\n  // 파일/폴더 관련\r\n  Folder,\r\n  FolderPlus,\r\n  FolderOpen,\r\n  FilePlus,\r\n  FileSearch,\r\n  FilePen,\r\n  FileMinus,\r\n  // 통신/알림 관련\r\n  Mail,\r\n  Send,\r\n  Phone,\r\n  Bell,\r\n  BellOff,\r\n  MessageSquare,\r\n  // 화살표/방향 관련\r\n  ArrowUp,\r\n  ArrowDown,\r\n  ArrowLeft,\r\n  ArrowRight,\r\n  RotateCw,\r\n  RotateCcw,\r\n  RefreshCw,\r\n  Move,\r\n  // 상태/피드백 관련\r\n  CircleCheckBig,\r\n  CircleX,\r\n  Circle,\r\n  // 보안 관련\r\n  Lock,\r\n  LockOpen,\r\n  Shield,\r\n  ShieldCheck,\r\n  ShieldAlert,\r\n  // 사용자 관리 관련\r\n  UserPlus,\r\n  UserMinus,\r\n  UserCheck,\r\n  UserX,\r\n  CircleUser,\r\n  // 액션 관련\r\n  Power,\r\n  Zap,\r\n  Target,\r\n  Flag,\r\n  Funnel,\r\n  // 조직/팀 관련\r\n  Building,\r\n  Briefcase,\r\n  Globe,\r\n  // 기타 유용한 아이콘\r\n  Printer,\r\n  Share2,\r\n  ExternalLink,\r\n  Maximize2,\r\n  Minimize2,\r\n  MoveVertical,\r\n  MoveHorizontal,\r\n  Sun,\r\n  Moon,\r\n  type LucideIcon\r\n} from 'lucide-vue-next'\r\n\r\n// 확장 가능한 아이콘 타입\r\ntype BaseIconName = \r\n  | 'house' | 'user' | 'settings' | 'search' | 'plus' | 'minus'\r\n  | 'squarePen' | 'trash2' | 'save' | 'download' | 'upload'\r\n  | 'eye' | 'eyeOff' | 'heart' | 'star' | 'check' | 'x'\r\n  | 'circleAlert' | 'info' | 'chevronDown' | 'chevronUp'\r\n  | 'chevronLeft' | 'chevronRight' | 'menu' | 'ellipsis' | 'ellipsisVertical'\r\n  | 'palette'\r\n  // WMS 핵심 아이콘들\r\n  | 'package' | 'packageCheck' | 'packageX'\r\n  | 'truck' | 'warehouse' | 'boxes'\r\n  | 'archive' | 'clipboardList' | 'clipboardCheck'\r\n  | 'fileText' | 'chartBar'\r\n  | 'trendingUp' | 'trendingDown' | 'calendar' | 'clock'\r\n  | 'mapPin' | 'table' | 'list' | 'listFilter'\r\n  | 'arrowUpWideNarrow' | 'arrowDownWideNarrow' | 'scale'\r\n  // 추가 아이콘들\r\n  | 'server' | 'database' | 'link' | 'arrowLeftRight' | 'circleQuestionMark'\r\n  | 'monitor' | 'users' | 'code' | 'fileKey' | 'cpu'\r\n  | 'rocket' | 'fileSpreadsheet' | 'activity' | 'messageCircle' | 'book'\r\n  // 인증 관련 아이콘들\r\n  | 'logIn' | 'logOut'\r\n  // 편집 관련 아이콘들\r\n  | 'copy' | 'clipboard' | 'undo2' | 'redo2' | 'pencil'\r\n  // 파일/폴더 관련 아이콘들\r\n  | 'folder' | 'folderPlus' | 'folderOpen' | 'filePlus' | 'fileSearch' | 'filePen' | 'fileMinus'\r\n  // 통신/알림 관련 아이콘들\r\n  | 'mail' | 'send' | 'phone' | 'bell' | 'bellOff' | 'messageSquare'\r\n  // 화살표/방향 관련 아이콘들\r\n  | 'arrowUp' | 'arrowDown' | 'arrowLeft' | 'arrowRight' | 'rotateCw' | 'rotateCcw' | 'refreshCw' | 'move'\r\n  // 상태/피드백 관련 아이콘들\r\n  | 'circleCheckBig' | 'circleX' | 'circle'\r\n  // 보안 관련 아이콘들\r\n  | 'lock' | 'lockOpen' | 'shield' | 'shieldCheck' | 'shieldAlert'\r\n  // 사용자 관리 관련 아이콘들\r\n  | 'userPlus' | 'userMinus' | 'userCheck' | 'userX' | 'circleUser'\r\n  // 액션 관련 아이콘들\r\n  | 'power' | 'zap' | 'target' | 'flag' | 'funnel'\r\n  // 조직/팀 관련 아이콘들\r\n  | 'building' | 'briefcase' | 'globe'\r\n  // 기타 유용한 아이콘들\r\n  | 'printer' | 'share2' | 'externalLink' | 'maximize2' | 'minimize2' | 'moveVertical' | 'moveHorizontal'\r\n  | 'sun' | 'moon'\r\n\r\n// 커스텀 아이콘 확장을 위한 타입\r\ntype CustomIconName = string // 나중에 확장 가능\r\n\r\ntype IconName = BaseIconName | CustomIconName\r\n\r\ntype StyleType =\r\n  | 'default'   // 기본 스타일\r\n  | 'primary'   // 강조 스타일 (파랑)\r\n  | 'success'   // 성공 스타일 (초록)\r\n  | 'warning'   // 경고 스타일 (주황)\r\n  | 'danger'    // 위험 스타일 (빨강)\r\n\r\ntype SizeType = 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n\r\nconst props = withDefaults(\r\n  defineProps<{\r\n    name: IconName\r\n    size?: SizeType\r\n    color?: string\r\n    class?: string\r\n    /** 스타일 프리셋 */\r\n    styletype?: StyleType\r\n    /** 접근성 라벨 */\r\n    ariaLabel?: string\r\n    /** 접근성 역할 */\r\n    role?: string\r\n  }>(),\r\n  {\n    size: 'sm',\n    styletype: 'default',\n    role: 'img',\n  },\n)\r\n\r\n/**\r\n * 기본 아이콘 매핑 (타입 안전)\r\n */\r\nconst baseIconMap: Record<BaseIconName, LucideIcon> = {\r\n  house: House,\r\n  user: User,\r\n  settings: Settings,\r\n  search: Search,\r\n  plus: Plus,\r\n  minus: Minus,\r\n  squarePen: SquarePen,\r\n  trash2: Trash2,\r\n  save: Save,\r\n  download: Download,\r\n  upload: Upload,\r\n  eye: Eye,\r\n  eyeOff: EyeOff,\r\n  heart: Heart,\r\n  star: Star,\r\n  check: Check,\r\n  x: X,\r\n  circleAlert: CircleAlert,\r\n  info: Info,\r\n  chevronDown: ChevronDown,\r\n  chevronUp: ChevronUp,\r\n  chevronLeft: ChevronLeft,\r\n  chevronRight: ChevronRight,\r\n  menu: Menu,\r\n  ellipsis: Ellipsis,\r\n  ellipsisVertical: EllipsisVertical,\r\n  palette: Palette,\r\n  // WMS 핵심 아이콘들\r\n  package: Package,\r\n  packageCheck: PackageCheck,\r\n  packageX: PackageX,\r\n  truck: Truck,\r\n  warehouse: Warehouse,\r\n  boxes: Boxes,\r\n  archive: Archive,\r\n  clipboardList: ClipboardList,\r\n  clipboardCheck: ClipboardCheck,\r\n  fileText: FileText,\r\n  chartBar: ChartBar,\r\n  trendingUp: TrendingUp,\r\n  trendingDown: TrendingDown,\r\n  calendar: Calendar,\r\n  clock: Clock,\r\n  mapPin: MapPin,\r\n  table: Table,\r\n  list: List,\r\n  listFilter: ListFilter,\r\n  arrowUpWideNarrow: ArrowUpWideNarrow,\r\n  arrowDownWideNarrow: ArrowDownWideNarrow,\r\n  scale: Scale,\r\n  // 추가 아이콘들\r\n  server: Server,\r\n  database: Database,\r\n  link: Link,\r\n  arrowLeftRight: ArrowLeftRight,\r\n  circleQuestionMark: CircleQuestionMark,\r\n  monitor: Monitor,\r\n  users: Users,\r\n  code: Code,\r\n  fileKey: FileKey,\r\n  cpu: Cpu,\r\n  rocket: Rocket,\r\n  fileSpreadsheet: FileSpreadsheet,\r\n  activity: Activity,\r\n  messageCircle: MessageCircle,\r\n  book: Book,\r\n  // 인증 관련 아이콘들\r\n  logIn: LogIn,\r\n  logOut: LogOut,\r\n  // 편집 관련 아이콘들\r\n  copy: Copy,\r\n  clipboard: Clipboard,\r\n  undo2: Undo2,\r\n  redo2: Redo2,\r\n  pencil: Pencil,\r\n  // 파일/폴더 관련 아이콘들\r\n  folder: Folder,\r\n  folderPlus: FolderPlus,\r\n  folderOpen: FolderOpen,\r\n  filePlus: FilePlus,\r\n  fileSearch: FileSearch,\r\n  filePen: FilePen,\r\n  fileMinus: FileMinus,\r\n  // 통신/알림 관련 아이콘들\r\n  mail: Mail,\r\n  send: Send,\r\n  phone: Phone,\r\n  bell: Bell,\r\n  bellOff: BellOff,\r\n  messageSquare: MessageSquare,\r\n  // 화살표/방향 관련 아이콘들\r\n  arrowUp: ArrowUp,\r\n  arrowDown: ArrowDown,\r\n  arrowLeft: ArrowLeft,\r\n  arrowRight: ArrowRight,\r\n  rotateCw: RotateCw,\r\n  rotateCcw: RotateCcw,\r\n  refreshCw: RefreshCw,\r\n  move: Move,\r\n  // 상태/피드백 관련 아이콘들\r\n  circleCheckBig: CircleCheckBig,\r\n  circleX: CircleX,\r\n  circle: Circle,\r\n  // 보안 관련 아이콘들\r\n  lock: Lock,\r\n  lockOpen: LockOpen,\r\n  shield: Shield,\r\n  shieldCheck: ShieldCheck,\r\n  shieldAlert: ShieldAlert,\r\n  // 사용자 관리 관련 아이콘들\r\n  userPlus: UserPlus,\r\n  userMinus: UserMinus,\r\n  userCheck: UserCheck,\r\n  userX: UserX,\r\n  circleUser: CircleUser,\r\n  // 액션 관련 아이콘들\r\n  power: Power,\r\n  zap: Zap,\r\n  target: Target,\r\n  flag: Flag,\r\n  funnel: Funnel,\r\n  // 조직/팀 관련 아이콘들\r\n  building: Building,\r\n  briefcase: Briefcase,\r\n  globe: Globe,\r\n  // 기타 유용한 아이콘들\r\n  printer: Printer,\r\n  share2: Share2,\r\n  externalLink: ExternalLink,\r\n  maximize2: Maximize2,\r\n  minimize2: Minimize2,\r\n  moveVertical: MoveVertical,\r\n  moveHorizontal: MoveHorizontal,\r\n  sun: Sun,\r\n  moon: Moon,\r\n}\r\n\r\n/**\r\n * 동적 아이콘 로딩을 위한 함수 (나중에 확장 가능)\r\n * 현재는 사용하지 않지만 향후 커스텀 아이콘 지원을 위해 준비\r\n */\r\n// const loadCustomIcon = async (iconName: string): Promise<LucideIcon | null> => {\r\n//   try {\r\n//     // 나중에 다른 아이콘 라이브러리나 커스텀 아이콘을 동적으로 로드할 수 있음\r\n//     // 예: const { [iconName]: IconComponent } = await import('@/assets/icons')\r\n//     return null\r\n//   } catch {\r\n//     return null\r\n//   }\r\n// }\r\n\r\n/**\r\n * size -> 실제 크기 매핑\r\n */\r\nconst SIZE_PRESETS: Record<SizeType, number> = {\n  xs: 12,\n  sm: 16,\n  md: 20,\n  lg: 24,\n  xl: 32,\n}\n\r\n/**\r\n * styletype -> color, class 매핑\r\n */\r\nconst STYLE_PRESETS: Record<StyleType, { color?: string; class: string }> = {\r\n  default: { class: '' },\r\n  primary: { \r\n    color: '#3b82f6',\r\n    class: '',\r\n  },\r\n  success: { \r\n    color: '#10b981',\r\n    class: '',\r\n  },\r\n  warning: { \r\n    color: '#f59e0b',\r\n    class: '',\r\n  },\r\n  danger: { \r\n    color: '#ef4444',\r\n    class: '',\r\n  },\r\n}\r\n\r\n/** 최종 바인딩: 직접 넘긴 props가 있으면 styletype 기본값과 병합 */\r\nconst mapped = computed(() => {\r\n  const stylePreset = STYLE_PRESETS[props.styletype!]\r\n  const sizePreset = SIZE_PRESETS[props.size!]\r\n  const finalClass = [stylePreset.class, props.class].filter(Boolean).join(' ')\r\n  const ariaLabel = props.ariaLabel || props.name\r\n  \r\n  return {\r\n    size: sizePreset,\r\n    color: props.color || stylePreset.color, // props.color가 있으면 우선 사용, 없으면 stylePreset.color 사용\r\n    class: finalClass,\r\n    'aria-label': ariaLabel,\r\n    'aria-hidden': !ariaLabel,\r\n    role: props.role,\r\n  }\r\n})\r\n\r\n/** 현재 아이콘 컴포넌트 */\r\nconst IconComponent = computed(() => {\r\n  // 기본 아이콘 먼저 확인\r\n  if (props.name in baseIconMap) {\r\n    return baseIconMap[props.name as BaseIconName]\r\n  }\r\n  \r\n  // 커스텀 아이콘은 나중에 확장\r\n  // return loadCustomIcon(props.name)\r\n  \r\n  // 기본값으로 house 아이콘 반환\r\n  return House\r\n})\r\n</script>\r\n\r\n<template>\r\n  <component \r\n    :is=\"IconComponent\" \r\n    v-bind=\"mapped\"\r\n  />\r\n</template>"],"names":["props","__props","baseIconMap","House","User","Settings","Search","Plus","Minus","SquarePen","Trash2","Save","Download","Upload","Eye","EyeOff","Heart","Star","Check","X","CircleAlert","Info","ChevronDown","ChevronUp","ChevronLeft","ChevronRight","Menu","Ellipsis","EllipsisVertical","Palette","Package","PackageCheck","PackageX","Truck","Warehouse","Boxes","Archive","ClipboardList","ClipboardCheck","FileText","ChartBar","TrendingUp","TrendingDown","Calendar","Clock","MapPin","Table","List","ListFilter","ArrowUpWideNarrow","ArrowDownWideNarrow","Scale","Server","Database","Link","ArrowLeftRight","CircleQuestionMark","Monitor","Users","Code","FileKey","Cpu","Rocket","FileSpreadsheet","Activity","MessageCircle","Book","LogIn","LogOut","Copy","Clipboard","Undo2","Redo2","Pencil","Folder","FolderPlus","FolderOpen","FilePlus","FileSearch","FilePen","FileMinus","Mail","Send","Phone","Bell","BellOff","MessageSquare","ArrowUp","ArrowDown","ArrowLeft","ArrowRight","RotateCw","RotateCcw","RefreshCw","Move","CircleCheckBig","CircleX","Circle","Lock","LockOpen","Shield","ShieldCheck","ShieldAlert","UserPlus","UserMinus","UserCheck","UserX","CircleUser","Power","Zap","Target","Flag","Funnel","Building","Briefcase","Globe","Printer","Share2","ExternalLink","Maximize2","Minimize2","MoveVertical","MoveHorizontal","Sun","Moon","SIZE_PRESETS","STYLE_PRESETS","mapped","computed","stylePreset","sizePreset","finalClass","ariaLabel","IconComponent","_createBlock","_resolveDynamicComponent","_normalizeProps","_guardReactiveProps"],"mappings":"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"}