{"version":3,"file":"JBadge.vue.cjs","sources":["../../../../src/components/atoms/JBadge.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport Badge from '@/components/shadcn/Badge.vue'\n\ntype StyleType =\n  | 'default'   // 기본 스타일\n  | 'primary'   // 강조 스타일 (파랑)\n  | 'success'   // 성공 스타일 (초록)\n  | 'warning'   // 경고 스타일 (주황)\n  | 'danger'    // 위험 스타일 (빨강)\n\nconst props = withDefaults(\n  defineProps<{\n    variant?: 'default' | 'secondary' | 'destructive' | 'outline'\n    class?: string\n    /** 스타일 프리셋 */\n    styletype?: StyleType\n    /** 배지 크기 */\n    size?: 'xs' | 'sm' | 'md' | 'lg'\n  }>(),\n  {\n    variant: 'default',\n    styletype: 'default',\n    size: 'sm',\n  },\n)\n\n/**\n * styletype -> variant, class 매핑\n */\nconst STYLE_PRESETS: Record<StyleType, { variant?: string; class: string }> = {\n  default: { class: '' },\n  primary: { \n    variant: 'default',\n    class: 'bg-blue-500 text-white hover:bg-blue-600',\n  },\n  success: { \n    variant: 'default',\n    class: 'bg-green-500 text-white hover:bg-green-600',\n  },\n  warning: { \n    variant: 'default',\n    class: 'bg-amber-500 text-white hover:bg-amber-600',\n  },\n  danger: { \n    variant: 'default',\n    class: 'bg-red-500 text-white hover:bg-red-600',\n  },\n}\n\n/**\n * size -> class 매핑\n */\nconst SIZE_PRESETS: Record<'xs' | 'sm' | 'md' | 'lg', string> = {\n  xs: 'text-[10px] px-1 py-0.5 leading-tight',\n  sm: 'text-xs px-1.5 py-0.5',\n  md: 'text-sm px-2 py-1',\n  lg: 'text-sm px-2.5 py-1',\n}\n\n/** 최종 바인딩: 직접 넘긴 props가 있으면 styletype 기본값과 병합 */\nconst mapped = computed(() => {\n  const preset = STYLE_PRESETS[props.styletype!]\n  const sizeClass = SIZE_PRESETS[props.size!]\n  \n  const finalVariant = props.variant || preset.variant\n  let styleClass = ''\n  \n  // variant에 따른 스타일 처리\n  if (finalVariant === 'outline') {\n    // outline: 테두리 색상만 적용 (styletype 색상 사용)\n    styleClass = getOutlineStyleClass(props.styletype!)\n  } else if (finalVariant === 'secondary') {\n    // secondary: shadcn CSS 변수 사용 (light/dark mode 자동 대응)\n    styleClass = 'bg-secondary text-secondary-foreground hover:bg-secondary/80'\n  } else if (finalVariant === 'destructive') {\n    // destructive: 고정된 빨간색 계열 스타일 (styletype 무시)\n    styleClass = 'bg-red-500 text-white hover:bg-red-600'\n  } else {\n    // default: styletype의 배경색 스타일 적용\n    styleClass = preset.class\n  }\n  \n  const finalClass = [styleClass, sizeClass, props.class].filter(Boolean).join(' ')\n  \n  return {\n    variant: finalVariant,\n    class: finalClass,\n  }\n})\n\n/**\n * outline variant용 스타일 클래스\n */\nconst getOutlineStyleClass = (styletype: StyleType): string => {\n  const outlineStyles: Record<StyleType, string> = {\n    default: 'border-border text-foreground',\n    primary: 'border-blue-500 text-blue-600 dark:border-blue-400 dark:text-blue-400',\n    success: 'border-green-500 text-green-600 dark:border-green-400 dark:text-green-400',\n    warning: 'border-amber-500 text-amber-600 dark:border-amber-400 dark:text-amber-400',\n    danger: 'border-red-500 text-red-600 dark:border-red-400 dark:text-red-400',\n  }\n  return outlineStyles[styletype] || ''\n}\n</script>\n\n<template>\n  <Badge v-bind=\"mapped\">\n    <slot />\n  </Badge>\n</template>\n"],"names":["props","__props","STYLE_PRESETS","SIZE_PRESETS","mapped","computed","preset","sizeClass","finalVariant","styleClass","getOutlineStyleClass","finalClass","styletype","_openBlock","_createBlock","Badge","_renderSlot","_ctx"],"mappings":"qTAWA,MAAMA,EAAQC,EAmBRC,EAAwE,CAC5E,QAAS,CAAE,MAAO,EAAA,EAClB,QAAS,CACP,QAAS,UACT,MAAO,0CAAA,EAET,QAAS,CACP,QAAS,UACT,MAAO,4CAAA,EAET,QAAS,CACP,QAAS,UACT,MAAO,4CAAA,EAET,OAAQ,CACN,QAAS,UACT,MAAO,wCAAA,CACT,EAMIC,EAA0D,CAC9D,GAAI,wCACJ,GAAI,wBACJ,GAAI,oBACJ,GAAI,qBAAA,EAIAC,EAASC,EAAAA,SAAS,IAAM,CAC5B,MAAMC,EAASJ,EAAcF,EAAM,SAAU,EACvCO,EAAYJ,EAAaH,EAAM,IAAK,EAEpCQ,EAAeR,EAAM,SAAWM,EAAO,QAC7C,IAAIG,EAAa,GAGbD,IAAiB,UAEnBC,EAAaC,EAAqBV,EAAM,SAAU,EACzCQ,IAAiB,YAE1BC,EAAa,+DACJD,IAAiB,cAE1BC,EAAa,yCAGbA,EAAaH,EAAO,MAGtB,MAAMK,EAAa,CAACF,EAAYF,EAAWP,EAAM,KAAK,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,EAEhF,MAAO,CACL,QAASQ,EACT,MAAOG,CAAA,CAEX,CAAC,EAKKD,EAAwBE,IACqB,CAC/C,QAAS,gCACT,QAAS,wEACT,QAAS,4EACT,QAAS,4EACT,OAAQ,mEAAA,GAEWA,CAAS,GAAK,iBAKnCC,EAAAA,UAAA,EAAAC,EAAAA,YAEQC,EAAAA,8CAFOX,EAAA,KAAM,CAAA,EAAA,mBACnB,IAAQ,CAARY,aAAQC,EAAA,OAAA,SAAA,CAAA"}