{"version":3,"file":"JSidebarItem.vue.cjs","sources":["../../../../../src/components/organisms/JSidebar/JSidebarItem.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, inject } from 'vue'\nimport type { SidebarMenuItem } from '@/types/sidebar.types'\nimport { SIDEBAR_INJECTION_KEY } from '@/types/sidebar.types'\nimport JIcon from '@/components/atoms/JIcon.vue'\nimport JTooltip from '@/components/atoms/JTooltip.vue'\nimport { cn } from '@/lib/utils'\n\n/**\n * JSidebarItem - 메뉴 아이템 (menuType='L' 전용)\n * 링크 타입 메뉴만 렌더링. 폴더(F)는 JSidebarGroup에서 처리.\n */\n\nconst props = defineProps<{\n  item: SidebarMenuItem\n}>()\n\nconst emit = defineEmits<{\n  'menu-click': [item: SidebarMenuItem, event: MouseEvent]\n}>()\n\nconst state = inject(SIDEBAR_INJECTION_KEY)!\n\nconst isActive = computed(() => {\n  if (!props.item.path || !state.activePath) return false\n  return state.activePath === props.item.path\n})\n\nconst isFav = computed(() => state.favorites.has(props.item.id))\n\nconst handleClick = (event: MouseEvent) => {\n  if (props.item.disabled) return\n  emit('menu-click', props.item, event)\n}\n\nconst handleFavoriteClick = (event: MouseEvent) => {\n  event.stopPropagation()\n  state.toggleFavorite(props.item.id)\n}\n</script>\n\n<template>\n  <!-- Collapsed: 아이콘 + Tooltip -->\n  <JTooltip\n    v-if=\"state.collapsed\"\n    :content=\"item.label\"\n    side=\"right\"\n    size=\"sm\"\n  >\n    <template #trigger>\n      <div\n        :class=\"cn(\n          'flex items-center justify-center py-1.5 mx-1 rounded-md cursor-pointer transition-colors',\n          isActive\n            ? 'bg-primary/10 text-primary'\n            : 'text-foreground hover:bg-accent/50',\n          item.disabled && 'opacity-40 cursor-not-allowed'\n        )\"\n        @click=\"handleClick\"\n      >\n        <JIcon :name=\"item.icon || 'file'\" size=\"sm\" />\n      </div>\n    </template>\n  </JTooltip>\n\n  <!-- Expanded: 아이콘 + 라벨 + 즐겨찾기 -->\n  <div\n    v-else\n    :class=\"cn(\n      'group flex items-center gap-1.5 py-0.5 px-2 rounded-md cursor-pointer transition-colors relative',\n      isActive\n        ? 'bg-primary/10 text-primary font-medium'\n        : 'text-foreground hover:bg-accent/50',\n      item.disabled && 'opacity-40 cursor-not-allowed'\n    )\"\n    @click=\"handleClick\"\n  >\n    <!-- 활성 좌측 바 -->\n    <div\n      v-if=\"isActive\"\n      class=\"absolute left-0 top-1 bottom-1 w-[3px] rounded-r bg-primary\"\n    />\n\n    <JIcon\n      v-if=\"item.icon\"\n      :name=\"item.icon\"\n      size=\"sm\"\n      class=\"flex-shrink-0\"\n    />\n    <span class=\"flex-1 truncate text-[11px]\">{{ item.label }}</span>\n\n    <!-- 즐겨찾기 별 -->\n    <button\n      :class=\"cn(\n        'flex-shrink-0 p-0.5 rounded transition-opacity',\n        isFav\n          ? 'opacity-100 text-yellow-500'\n          : 'opacity-0 group-hover:opacity-100 text-muted-foreground hover:text-yellow-500'\n      )\"\n      @click=\"handleFavoriteClick\"\n    >\n      <JIcon\n        name=\"star\"\n        size=\"sm\"\n        :class=\"isFav ? 'fill-yellow-500' : undefined\"\n      />\n    </button>\n  </div>\n</template>\n"],"names":["props","__props","emit","__emit","state","inject","SIDEBAR_INJECTION_KEY","isActive","computed","isFav","handleClick","event","handleFavoriteClick","_unref","_createBlock","JTooltip","_createElementVNode","cn","_createVNode","JIcon","_createElementBlock","_openBlock","_hoisted_1","_hoisted_2","_toDisplayString","_normalizeClass"],"mappings":"8fAaA,MAAMA,EAAQC,EAIRC,EAAOC,EAIPC,EAAQC,EAAAA,OAAOC,uBAAqB,EAEpCC,EAAWC,EAAAA,SAAS,IACpB,CAACR,EAAM,KAAK,MAAQ,CAACI,EAAM,WAAmB,GAC3CA,EAAM,aAAeJ,EAAM,KAAK,IACxC,EAEKS,EAAQD,WAAS,IAAMJ,EAAM,UAAU,IAAIJ,EAAM,KAAK,EAAE,CAAC,EAEzDU,EAAeC,GAAsB,CACrCX,EAAM,KAAK,UACfE,EAAK,aAAcF,EAAM,KAAMW,CAAK,CACtC,EAEMC,EAAuBD,GAAsB,CACjDA,EAAM,gBAAA,EACNP,EAAM,eAAeJ,EAAM,KAAK,EAAE,CACpC,eAMUa,EAAAA,MAAAT,CAAA,EAAM,yBADdU,EAAAA,YAoBWC,UAAA,OAlBR,QAASd,EAAA,KAAK,MACf,KAAK,QACL,KAAK,IAAA,GAEM,kBACT,IAWM,CAXNe,EAAAA,mBAWM,MAAA,CAVH,uBAAOH,EAAAA,MAAAI,IAAA,6FAAoHV,EAAA,wEAAkHN,EAAA,KAAK,UAAQ,+BAAA,GAO1P,QAAOS,CAAA,GAERQ,EAAAA,YAA+CC,EAAAA,QAAA,CAAvC,KAAMlB,EAAA,KAAK,MAAI,OAAY,KAAK,IAAA,6DAM9CmB,EAAAA,mBAyCM,MAAA,OAvCH,uBAAOP,EAAAA,MAAAI,IAAA,qGAAoHV,EAAA,oFAAkHN,EAAA,KAAK,UAAQ,+BAAA,GAO1P,QAAOS,CAAA,GAIAH,EAAA,OADRc,EAAAA,UAAA,EAAAD,EAAAA,mBAGE,MAHFE,CAGE,+BAGMrB,EAAA,KAAK,oBADba,EAAAA,YAKEK,EAAAA,QAAA,OAHC,KAAMlB,EAAA,KAAK,KACZ,KAAK,KACL,MAAM,eAAA,gDAERe,qBAAiE,OAAjEO,EAAiEC,EAAAA,gBAApBvB,EAAA,KAAK,KAAK,EAAA,CAAA,EAGvDe,EAAAA,mBAcS,SAAA,CAbN,uBAAOH,EAAAA,MAAAI,IAAA,mDAAsER,EAAA,sHAM7E,QAAOG,CAAA,GAERM,EAAAA,YAIEC,EAAAA,QAAA,CAHA,KAAK,OACL,KAAK,KACJ,MAAKM,EAAAA,eAAEhB,EAAA,MAAK,kBAAuB,MAAS,CAAA"}