{"version":3,"file":"JAccordion.vue.cjs","sources":["../../../../src/components/molecules/JAccordion.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { HTMLAttributes } from \"vue\"\nimport { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/components/shadcn'\nimport { cn } from \"@/lib/utils\"\n\nexport interface JAccordionItem {\n  /** 아이템 고유값 */\n  value: string\n  /** 트리거(제목) 텍스트 */\n  title?: string\n  /** 내용 텍스트 */\n  content?: string\n  /** 비활성화 여부 */\n  disabled?: boolean\n}\n\n// 타입 안정성을 위한 Conditional Props 정의\ntype SingleAccordionProps = {\n  /** Accordion 자체의 클래스 */\n  class?: HTMLAttributes[\"class\"]\n  /** Accordion 아이템 배열 */\n  items: JAccordionItem[]\n  /** Accordion 타입 - single: 하나씩만 열림 */\n  type?: \"single\"\n  /** collapsible 여부 (type이 single일 때만 적용) */\n  collapsible?: boolean\n  /** 기본 선택된 값 (single 모드) */\n  defaultValue?: string\n}\n\ntype MultipleAccordionProps = {\n  /** Accordion 자체의 클래스 */\n  class?: HTMLAttributes[\"class\"]\n  /** Accordion 아이템 배열 */\n  items: JAccordionItem[]\n  /** Accordion 타입 - multiple: 여러 개 열림 */\n  type: \"multiple\"\n  /** 기본 선택된 값들 (multiple 모드) */\n  defaultValue?: string[]\n  /** collapsible 여부 (type이 multiple일 때는 무시됨) */\n  collapsible?: never\n}\n\ntype AccordionProps = SingleAccordionProps | MultipleAccordionProps\n\nconst props = withDefaults(defineProps<AccordionProps>(), {\n  type: \"single\",\n  collapsible: true,\n  items: () => []\n})\n\nconst emit = defineEmits<{\n  valueChange: [value: string | string[] | undefined]\n}>()\n</script>\n\n<template>\n  <Accordion \n    :type=\"props.type\" \n    :collapsible=\"props.type === 'multiple' ? undefined : props.collapsible\"\n    :default-value=\"props.defaultValue\"\n    :class=\"cn('w-full', props.class)\"\n    @update:model-value=\"(value: string | string[] | undefined) => emit('valueChange', value)\"\n  >\n    <AccordionItem \n      v-for=\"item in props.items\" \n      :key=\"item.value\"\n      :value=\"item.value\"\n      :disabled=\"item.disabled\"\n    >\n      <AccordionTrigger>\n        <slot name=\"trigger\" :item=\"item\">\n          {{ item.title }}\n        </slot>\n      </AccordionTrigger>\n      <AccordionContent>\n        <slot name=\"content\" :item=\"item\">\n          {{ item.content }}\n        </slot>\n      </AccordionContent>\n    </AccordionItem>\n  </Accordion>\n</template>\n\n"],"names":["props","__props","emit","__emit","_createBlock","_unref","Accordion","_normalizeClass","cn","_cache","value","_openBlock","_createElementBlock","_Fragment","_renderList","item","AccordionItem","_createVNode","AccordionTrigger","_renderSlot","_ctx","_createTextVNode","_toDisplayString","AccordionContent"],"mappings":"skBA6CA,MAAMA,EAAQC,EAMRC,EAAOC,8BAMXC,EAAAA,YAwBYC,EAAAA,MAAAC,EAAAA,OAAA,EAAA,CAvBT,KAAMN,EAAM,KACZ,YAAaA,EAAM,kBAAsB,OAAYA,EAAM,YAC3D,gBAAeA,EAAM,aACrB,MAAKO,EAAAA,eAAEF,QAAAG,EAAAA,EAAA,EAAE,SAAWR,EAAM,KAAK,CAAA,EAC/B,sBAAkBS,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAGC,GAAyCR,gBAAoBQ,CAAK,EAAA,qBAGtF,IAA2B,EAD7BC,YAAA,EAAA,EAAAC,EAAAA,mBAgBgBC,EAAAA,SAAA,KAAAC,EAAAA,WAfCd,EAAM,MAAde,kBADTX,EAAAA,YAgBgBC,EAAAA,MAAAW,EAAAA,OAAA,EAAA,CAdb,IAAKD,EAAK,MACV,MAAOA,EAAK,MACZ,SAAUA,EAAK,QAAA,qBAEhB,IAImB,CAJnBE,EAAAA,YAImBZ,EAAAA,MAAAa,SAAA,EAAA,KAAA,mBAHjB,IAEO,CAFPC,EAAAA,WAEOC,EAAA,OAAA,UAAA,CAFe,KAAAL,CAAA,EAAtB,IAEO,CADFM,EAAAA,gBAAAC,EAAAA,gBAAAP,EAAK,KAAK,EAAA,CAAA,CAAA,gBAGjBE,EAAAA,YAImBZ,EAAAA,MAAAkB,SAAA,EAAA,KAAA,mBAHjB,IAEO,CAFPJ,EAAAA,WAEOC,EAAA,OAAA,UAAA,CAFe,KAAAL,CAAA,EAAtB,IAEO,CADFM,EAAAA,gBAAAC,EAAAA,gBAAAP,EAAK,OAAO,EAAA,CAAA,CAAA"}