{"version":3,"file":"JCard.vue.cjs","sources":["../../../../src/components/molecules/JCard.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport type { HTMLAttributes } from \"vue\"\nimport { Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter } from '@/components/shadcn'\nimport { cn } from \"@/lib/utils\"\n\ntype CardVariant = 'default' | 'elevated'\n\nconst props = withDefaults(\n  defineProps<{\n    /** Card 자체의 클래스 */\n    class?: HTMLAttributes[\"class\"]\n    /** 카드 제목 */\n    title?: string\n    /** 카드 설명 */\n    description?: string\n    /** 카드 푸터 텍스트 */\n    footer?: string\n    /** 카드 variant (패턴 4) */\n    variant?: CardVariant\n    /** CardContent가 남은 세로 공간을 채우도록 flex column 적용 */\n    fillContent?: boolean\n  }>(),\n  {\n    variant: 'default',\n  }\n)\n\n// 패턴 4: variant 클래스\nconst variantClasses = computed(() => {\n  const variants = {\n    default: 'shadow-sm',\n    elevated: 'shadow-md',\n  }\n  return variants[props.variant]\n})\n</script>\n\n<template>\n  <Card :class=\"cn(variantClasses, fillContent && 'flex flex-col', props.class)\">\n    <!-- Header: title/description + actions 슬롯 (패턴 7) -->\n    <CardHeader v-if=\"title || description || $slots.actions\">\n      <div class=\"flex justify-between items-center gap-3\">\n        <!-- 좌측: 제목/설명 -->\n        <div class=\"flex-1\">\n          <CardTitle v-if=\"title\">{{ title }}</CardTitle>\n          <CardDescription v-if=\"description\">{{ description }}</CardDescription>\n        </div>\n\n        <!-- 우측: actions 슬롯 (패턴 7) -->\n        <div v-if=\"$slots.actions\" class=\"flex gap-2 flex-shrink-0\">\n          <slot name=\"actions\" />\n        </div>\n      </div>\n    </CardHeader>\n\n    <!-- Content -->\n    <CardContent :class=\"fillContent && 'flex-1 flex flex-col min-h-0'\">\n      <slot />\n    </CardContent>\n\n    <!-- Footer: 슬롯 우선, 없으면 텍스트 -->\n    <CardFooter v-if=\"$slots.footer || footer\">\n      <slot name=\"footer\">{{ footer }}</slot>\n    </CardFooter>\n  </Card>\n</template>\n"],"names":["props","__props","variantClasses","computed","_createBlock","_unref","Card","_normalizeClass","$slots","CardHeader","_createElementVNode","_hoisted_1","_hoisted_2","CardTitle","CardDescription","_openBlock","_createElementBlock","_hoisted_3","_renderSlot","_ctx","_createVNode","CardContent","CardFooter"],"mappings":"6sBAQA,MAAMA,EAAQC,EAqBRC,EAAiBC,EAAAA,SAAS,KACb,CACf,QAAS,YACT,SAAU,WAAA,GAEIH,EAAM,OAAO,CAC9B,8BAICI,EAAAA,YA0BOC,EAAAA,MAAAC,EAAAA,OAAA,EAAA,CA1BA,MAAKC,EAAAA,eAAEF,cAAGH,EAAA,MAAgBD,EAAA,aAAW,gBAAqBD,EAAM,KAAK,CAAA,CAAA,qBAE1E,IAaa,CAbKC,EAAA,OAASA,EAAA,aAAeO,EAAAA,OAAO,uBAAjDJ,EAAAA,YAaaC,EAAAA,MAAAI,EAAAA,OAAA,EAAA,CAAA,IAAA,GAAA,mBAZX,IAWM,CAXNC,EAAAA,mBAWM,MAXNC,EAWM,CATJD,EAAAA,mBAGM,MAHNE,EAGM,CAFaX,EAAA,qBAAjBG,EAAAA,YAA+CC,QAAAQ,EAAAA,OAAA,EAAA,CAAA,IAAA,GAAA,mBAAvB,IAAW,qCAARZ,EAAA,KAAK,EAAA,CAAA,CAAA,sCACTA,EAAA,2BAAvBG,EAAAA,YAAuEC,QAAAS,EAAAA,OAAA,EAAA,CAAA,IAAA,GAAA,mBAAnC,IAAiB,qCAAdb,EAAA,WAAW,EAAA,CAAA,CAAA,wCAIzCO,EAAAA,OAAO,SAAlBO,EAAAA,YAAAC,EAAAA,mBAEM,MAFNC,EAEM,CADJC,aAAuBC,EAAA,OAAA,SAAA,CAAA,uEAM7BC,cAEcf,EAAAA,MAAAgB,EAAAA,OAAA,EAAA,CAFA,uBAAOpB,EAAA,aAAW,8BAAA,CAAA,qBAC9B,IAAQ,CAARiB,aAAQC,EAAA,OAAA,SAAA,CAAA,qBAIQX,EAAAA,OAAO,QAAUP,EAAA,sBAAnCG,EAAAA,YAEaC,EAAAA,MAAAiB,EAAAA,OAAA,EAAA,CAAA,IAAA,GAAA,mBADX,IAAuC,CAAvCJ,EAAAA,WAAuCC,qBAAvC,IAAuC,qCAAhBlB,EAAA,MAAM,EAAA,CAAA,CAAA"}