{"version":3,"file":"JLayoutSimple.vue.cjs","sources":["../../../../src/components/templates/JLayoutSimple.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ref, watch } from 'vue'\nimport JLayout from './JLayout.vue'\nimport JHeader from '@/components/organisms/JHeader.vue'\nimport JSidebar from '@/components/organisms/JSidebar/JSidebar.vue'\nimport JPageContainer from '@/components/organisms/JPageContainer.vue'\nimport { useBreakpoint } from '@/composables/useBreakpoint'\nimport type { SidebarMenuItem } from '@/types/sidebar.types'\n\n/**\n * JLayoutSimple - JSidebar + 일반 PageContainer 조합 템플릿\n *\n * 모바일에서는 사이드바가 오버레이 드로어로 전환되며,\n * 메뉴 클릭 시 자동으로 닫힙니다.\n *\n * @example\n * ```vue\n * <JLayoutSimple :menu-items=\"menuItems\" storage-key=\"my-app-favorites\">\n *   <template #content>\n *     <RouterView />\n *   </template>\n * </JLayoutSimple>\n * ```\n */\n\nconst props = withDefaults(\n  defineProps<{\n    /** 레이아웃 스타일 타입 */\n    styletype?: 'default' | 'minimal'\n    /** 콘텐츠 영역 스크롤 가능 여부 */\n    contentScroll?: boolean\n    /** 추가 CSS 클래스 */\n    class?: string\n    /** 메뉴 아이템 목록 */\n    menuItems?: SidebarMenuItem[]\n    /** 현재 활성 경로 */\n    activePath?: string\n    /** 즐겨찾기 localStorage 키 */\n    storageKey?: string\n  }>(),\n  {\n    styletype: 'default',\n    contentScroll: true,\n    menuItems: () => [],\n  }\n)\n\nconst emit = defineEmits<{\n  'menu-click': [item: SidebarMenuItem, event: MouseEvent]\n}>()\n\nconst { isMobile } = useBreakpoint()\nconst isSidebarCollapsed = ref(false)\n\n// 모바일 전환 시 사이드바 자동 닫기\nwatch(isMobile, (mobile) => {\n  if (mobile) isSidebarCollapsed.value = true\n})\n\nconst handleSidebarToggle = () => {\n  isSidebarCollapsed.value = !isSidebarCollapsed.value\n}\n\nconst handleMenuClick = (item: SidebarMenuItem, event: MouseEvent) => {\n  emit('menu-click', item, event)\n  // 모바일에서 메뉴 클릭 시 사이드바 자동 닫기\n  if (isMobile.value) isSidebarCollapsed.value = true\n}\n\nconst handleBackdropClick = () => {\n  isSidebarCollapsed.value = true\n}\n</script>\n\n<template>\n  <JLayout\n    v-bind=\"props\"\n    :sidebar-open=\"!isSidebarCollapsed\"\n    @backdrop-click=\"handleBackdropClick\"\n  >\n    <template #header>\n      <slot name=\"header\" :is-sidebar-collapsed=\"isSidebarCollapsed\" :on-sidebar-toggle=\"handleSidebarToggle\">\n        <JHeader\n          logo-text=\"JWMS Portal\"\n          :styletype=\"props.styletype\"\n          :show-sidebar-toggle=\"true\"\n          :is-sidebar-open=\"!isSidebarCollapsed\"\n          @sidebar-toggle=\"handleSidebarToggle\"\n        />\n      </slot>\n    </template>\n    <template #sidebar>\n      <slot name=\"sidebar\" :is-sidebar-collapsed=\"isSidebarCollapsed\">\n        <JSidebar\n          v-model:collapsed=\"isSidebarCollapsed\"\n          :items=\"props.menuItems\"\n          :active-path=\"props.activePath\"\n          :storage-key=\"props.storageKey\"\n          @menu-click=\"handleMenuClick\"\n        />\n      </slot>\n    </template>\n    <template #content>\n      <slot name=\"content\">\n        <slot>\n          <!-- 기본 콘텐츠 예시 -->\n          <JPageContainer title=\"페이지 제목\">\n            <div class=\"p-6\">\n              <p class=\"text-muted-foreground\">콘텐츠를 배치해주세요.</p>\n            </div>\n          </JPageContainer>\n        </slot>\n      </slot>\n    </template>\n  </JLayout>\n</template>\n"],"names":["props","__props","emit","__emit","isMobile","useBreakpoint","isSidebarCollapsed","ref","watch","mobile","handleSidebarToggle","handleMenuClick","item","event","handleBackdropClick","_createBlock","JLayout","_mergeProps","_renderSlot","_ctx","_createVNode","JHeader","JSidebar","$event","JPageContainer","_cache","_createElementVNode"],"mappings":"mkBAyBA,MAAMA,EAAQC,EAsBRC,EAAOC,EAIP,CAAE,SAAAC,CAAA,EAAaC,gBAAA,EACfC,EAAqBC,EAAAA,IAAI,EAAK,EAGpCC,QAAMJ,EAAWK,GAAW,CACtBA,MAA2B,MAAQ,GACzC,CAAC,EAED,MAAMC,EAAsB,IAAM,CAChCJ,EAAmB,MAAQ,CAACA,EAAmB,KACjD,EAEMK,EAAkB,CAACC,EAAuBC,IAAsB,CACpEX,EAAK,aAAcU,EAAMC,CAAK,EAE1BT,EAAS,QAAOE,EAAmB,MAAQ,GACjD,EAEMQ,EAAsB,IAAM,CAChCR,EAAmB,MAAQ,EAC7B,8BAIES,EAAAA,YAuCUC,EAAAA,QAvCVC,EAAAA,WAuCUjB,EAtCK,CACZ,gBAAeM,EAAA,MACf,gBAAgBQ,CAAA,IAEN,iBACT,IAQO,CARPI,aAQOC,EAAA,OAAA,SAAA,CARc,mBAAsBb,EAAA,MAAqB,gBAAmBI,CAAA,EAAnF,IAQO,CAPLU,EAAAA,YAMEC,EAAAA,QAAA,CALA,YAAU,cACT,UAAWrB,EAAM,UACjB,sBAAqB,GACrB,mBAAkBM,EAAA,MAClB,gBAAgBI,CAAA,8CAIZ,kBACT,IAQO,CARPQ,aAQOC,EAAA,OAAA,UAAA,CARe,mBAAsBb,EAAA,KAAA,EAA5C,IAQO,CAPLc,EAAAA,YAMEE,EAAAA,QAAA,CALQ,UAAWhB,EAAA,0CAAAA,EAAkB,MAAAiB,GACpC,MAAOvB,EAAM,UACb,cAAaA,EAAM,WACnB,cAAaA,EAAM,WACnB,YAAYW,CAAA,gEAIR,kBACT,IASO,CATPO,EAAAA,WASOC,sBATP,IASO,CARLD,EAAAA,WAOOC,sBAPP,IAOO,CALLC,EAAAA,YAIiBI,EAAAA,QAAA,CAJD,MAAM,UAAQ,mBAC5B,IAEM,CAAA,GAAAC,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAA,CAFNC,EAAAA,mBAEM,MAAA,CAFD,MAAM,OAAK,CACdA,EAAAA,mBAAiD,IAAA,CAA9C,MAAM,uBAAA,EAAwB,cAAY,CAAA"}