@hivcd-printshop/design-system 1.3.3 → 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -376,8 +376,33 @@ var BackButton = ({ onClick, className }) => {
376
376
  );
377
377
  };
378
378
 
379
- // src/components/CTA/CTA.tsx
379
+ // src/components/Badge/Badge.tsx
380
380
  import { jsx as jsx4 } from "react/jsx-runtime";
381
+ var variantStyles = {
382
+ warning: "bg-sub-warning text-strong",
383
+ restriction: "bg-sub-restriction text-strong",
384
+ outline: "bg-white border border-gray02 text-primary",
385
+ neutral: "bg-gray01 text-secondary",
386
+ solid: "bg-black text-white"
387
+ };
388
+ var Badge = ({ variant = "neutral", children, className, ...props }) => {
389
+ return /* @__PURE__ */ jsx4(
390
+ "span",
391
+ {
392
+ className: cn(
393
+ "inline-flex h-8 w-fit items-center justify-center px-2 py-1",
394
+ "text-body3-book whitespace-nowrap select-none",
395
+ variantStyles[variant],
396
+ className
397
+ ),
398
+ ...props,
399
+ children
400
+ }
401
+ );
402
+ };
403
+
404
+ // src/components/CTA/CTA.tsx
405
+ import { jsx as jsx5 } from "react/jsx-runtime";
381
406
  var CTA = ({
382
407
  primary = false,
383
408
  alert = false,
@@ -388,7 +413,7 @@ var CTA = ({
388
413
  forModal = false,
389
414
  ...props
390
415
  }) => {
391
- return /* @__PURE__ */ jsx4(
416
+ return /* @__PURE__ */ jsx5(
392
417
  "button",
393
418
  {
394
419
  type: "button",
@@ -416,22 +441,22 @@ var CTA = ({
416
441
  };
417
442
 
418
443
  // src/components/Column/MultiColumn.tsx
419
- import { jsx as jsx5 } from "react/jsx-runtime";
444
+ import { jsx as jsx6 } from "react/jsx-runtime";
420
445
  var MultiColumnMain = ({ children, className }) => {
421
- return /* @__PURE__ */ jsx5("div", { className: cn("flex flex-col w-full h-full", className), children });
446
+ return /* @__PURE__ */ jsx6("div", { className: cn("flex flex-col w-full h-full", className), children });
422
447
  };
423
448
  var Columns = ({ children, className }) => {
424
449
  return (
425
450
  // flex 래퍼를 사용하고 하위 Column들이 flex-1을 가지게 하거나,
426
451
  // grid를 사용하여 열을 나눌 수 있어. 여기서는 flex를 활용한 균등 분할 예시야.
427
- /* @__PURE__ */ jsx5("div", { className: cn("flex w-full h-full divide-x divide-gray02", className), children })
452
+ /* @__PURE__ */ jsx6("div", { className: cn("flex w-full h-full divide-x divide-gray02", className), children })
428
453
  );
429
454
  };
430
455
  var CTAs = ({ children, className }) => {
431
456
  if (!children) return null;
432
457
  return (
433
458
  // CTA 버튼들을 중앙에 배치하는 예시 (우측 정렬이 필요하면 justify-end 사용)
434
- /* @__PURE__ */ jsx5("div", { className: cn("flex flex-col w-full h-fit", className), children })
459
+ /* @__PURE__ */ jsx6("div", { className: cn("flex flex-col w-full h-fit", className), children })
435
460
  );
436
461
  };
437
462
  var MultiColumn = Object.assign(MultiColumnMain, {
@@ -440,39 +465,39 @@ var MultiColumn = Object.assign(MultiColumnMain, {
440
465
  });
441
466
 
442
467
  // src/components/Column/Column.tsx
443
- import { jsx as jsx6, jsxs as jsxs3 } from "react/jsx-runtime";
468
+ import { jsx as jsx7, jsxs as jsxs3 } from "react/jsx-runtime";
444
469
  var Column = ({ className, children, header }) => {
445
470
  return /* @__PURE__ */ jsxs3("div", { className: cn("flex flex-col gap-5", "h-full w-full px-5 py-3", className), children: [
446
- header && /* @__PURE__ */ jsx6("h1", { className: cn("text-body1-medium text-primary"), children: header }),
471
+ header && /* @__PURE__ */ jsx7("h1", { className: cn("text-body1-medium text-primary"), children: header }),
447
472
  children
448
473
  ] });
449
474
  };
450
475
 
451
476
  // src/components/Column/ColumnContentContainer.tsx
452
- import { jsx as jsx7 } from "react/jsx-runtime";
477
+ import { jsx as jsx8 } from "react/jsx-runtime";
453
478
  var ColumnContentContainer = ({ className, children }) => {
454
- return /* @__PURE__ */ jsx7("div", { className: cn("flex flex-col gap-1.5 w-full h-fit", className), children });
479
+ return /* @__PURE__ */ jsx8("div", { className: cn("flex flex-col gap-1.5 w-full h-fit", className), children });
455
480
  };
456
481
 
457
482
  // src/components/Column/ColumnLabel.tsx
458
- import { jsx as jsx8, jsxs as jsxs4 } from "react/jsx-runtime";
483
+ import { jsx as jsx9, jsxs as jsxs4 } from "react/jsx-runtime";
459
484
  var ColumnLabel = ({ className, children, subLabel, htmlFor }) => {
460
485
  return /* @__PURE__ */ jsxs4("label", { htmlFor, className: cn("flex gap-1.5 items-end", className), children: [
461
- /* @__PURE__ */ jsx8("span", { className: cn("text-body2-regular text-tertiary"), children }),
462
- subLabel && /* @__PURE__ */ jsx8("span", { className: cn("text-caption-book text-quaternary"), children: subLabel })
486
+ /* @__PURE__ */ jsx9("span", { className: cn("text-body2-regular text-tertiary"), children }),
487
+ subLabel && /* @__PURE__ */ jsx9("span", { className: cn("text-caption-book text-quaternary"), children: subLabel })
463
488
  ] });
464
489
  };
465
490
 
466
491
  // src/components/Column/ColumnText.tsx
467
- import { jsx as jsx9 } from "react/jsx-runtime";
492
+ import { jsx as jsx10 } from "react/jsx-runtime";
468
493
  var ColumnTextStyle = "text-body3-book text-strong";
469
494
  var ModalTextStyle = "text-body1-regular text-primary";
470
495
  var ColumnText = ({ className, alert = false, children, onClick }) => {
471
- return /* @__PURE__ */ jsx9("div", { className: cn(ColumnTextStyle, alert && "text-danger", className), onClick, children: children ? children : "-" });
496
+ return /* @__PURE__ */ jsx10("div", { className: cn(ColumnTextStyle, alert && "text-danger", className), onClick, children: children ? children : "-" });
472
497
  };
473
498
 
474
499
  // src/components/Column/ColumnSubTitle.tsx
475
- import { jsx as jsx10, jsxs as jsxs5 } from "react/jsx-runtime";
500
+ import { jsx as jsx11, jsxs as jsxs5 } from "react/jsx-runtime";
476
501
  var ColumnSubTitle = ({
477
502
  className,
478
503
  children,
@@ -480,29 +505,29 @@ var ColumnSubTitle = ({
480
505
  as: Tag2 = "h2"
481
506
  }) => {
482
507
  return /* @__PURE__ */ jsxs5(Tag2, { className: cn("flex items-center justify-between gap-1.5", "w-full", className), children: [
483
- /* @__PURE__ */ jsx10("span", { className: cn("text-body1-medium text-primary"), children }),
484
- action && /* @__PURE__ */ jsx10("span", { className: "flex shrink-0 items-center", children: action })
508
+ /* @__PURE__ */ jsx11("span", { className: cn("text-body1-medium text-primary"), children }),
509
+ action && /* @__PURE__ */ jsx11("span", { className: "flex shrink-0 items-center", children: action })
485
510
  ] });
486
511
  };
487
512
 
488
513
  // src/components/Column/ColumnDescription.tsx
489
- import { jsx as jsx11, jsxs as jsxs6 } from "react/jsx-runtime";
514
+ import { jsx as jsx12, jsxs as jsxs6 } from "react/jsx-runtime";
490
515
  var ColumnDescription = ({
491
516
  className,
492
517
  children,
493
518
  bullet = true
494
519
  }) => {
495
520
  return /* @__PURE__ */ jsxs6("div", { className: cn("flex items-start gap-3", className), children: [
496
- bullet && /* @__PURE__ */ jsx11("span", { className: "flex shrink-0 items-center py-1", children: /* @__PURE__ */ jsx11(IconCompass, { className: "size-4" }) }),
497
- /* @__PURE__ */ jsx11("div", { className: "min-w-0 flex-1 whitespace-pre-line text-body3-book text-primary", children })
521
+ bullet && /* @__PURE__ */ jsx12("span", { className: "flex shrink-0 items-center py-1", children: /* @__PURE__ */ jsx12(IconCompass, { className: "size-4" }) }),
522
+ /* @__PURE__ */ jsx12("div", { className: "min-w-0 flex-1 whitespace-pre-line text-body3-book text-primary", children })
498
523
  ] });
499
524
  };
500
525
  var ColumnDescriptionList = ({ className, children }) => {
501
- return /* @__PURE__ */ jsx11("div", { className: cn("flex flex-col gap-4", className), children });
526
+ return /* @__PURE__ */ jsx12("div", { className: cn("flex flex-col gap-4", className), children });
502
527
  };
503
528
 
504
529
  // src/components/Form/BasicFormField.tsx
505
- import { jsx as jsx12, jsxs as jsxs7 } from "react/jsx-runtime";
530
+ import { jsx as jsx13, jsxs as jsxs7 } from "react/jsx-runtime";
506
531
  var BasicFormField = ({
507
532
  children,
508
533
  isDanger,
@@ -511,7 +536,7 @@ var BasicFormField = ({
511
536
  }) => {
512
537
  return /* @__PURE__ */ jsxs7("div", { className: cn("flex flex-col gap-1.5", className), children: [
513
538
  children,
514
- isDanger && dangerText && /* @__PURE__ */ jsx12("span", { className: "text-caption-book text-danger", children: dangerText })
539
+ isDanger && dangerText && /* @__PURE__ */ jsx13("span", { className: "text-caption-book text-danger", children: dangerText })
515
540
  ] });
516
541
  };
517
542
  var getInputStyles = (isDanger, additionalClass) => {
@@ -522,6 +547,9 @@ var getInputStyles = (isDanger, additionalClass) => {
522
547
  "bg-white transition-colors",
523
548
  ColumnTextStyle,
524
549
  "text-primary placeholder:text-quaternary",
550
+ // 비활성(disabled) 상태: 배경/글자를 죽이고 커서 차단
551
+ "disabled:bg-gray00 disabled:text-quaternary disabled:cursor-not-allowed",
552
+ "disabled:placeholder:text-quaternary",
525
553
  isDanger && "border-danger",
526
554
  // 경고 시 빨간 테두리 (#E42939)
527
555
  additionalClass
@@ -530,15 +558,15 @@ var getInputStyles = (isDanger, additionalClass) => {
530
558
  };
531
559
 
532
560
  // src/components/Form/FormText.tsx
533
- import { jsx as jsx13 } from "react/jsx-runtime";
561
+ import { jsx as jsx14 } from "react/jsx-runtime";
534
562
  var FormText = ({ className, isDanger, dangerText, ...props }) => {
535
- return /* @__PURE__ */ jsx13(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ jsx13("input", { type: "text", className: getInputStyles(isDanger, className), ...props }) });
563
+ return /* @__PURE__ */ jsx14(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ jsx14("input", { type: "text", className: getInputStyles(isDanger, className), ...props }) });
536
564
  };
537
565
 
538
566
  // src/components/Form/FormTextArea.tsx
539
- import { jsx as jsx14 } from "react/jsx-runtime";
567
+ import { jsx as jsx15 } from "react/jsx-runtime";
540
568
  var FormTextArea = ({ className, isDanger, dangerText, ...props }) => {
541
- return /* @__PURE__ */ jsx14(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ jsx14(
569
+ return /* @__PURE__ */ jsx15(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ jsx15(
542
570
  "textarea",
543
571
  {
544
572
  className: getInputStyles(isDanger, "resize-none h-30 px-4 py-2.5 " + (className || "")),
@@ -548,19 +576,19 @@ var FormTextArea = ({ className, isDanger, dangerText, ...props }) => {
548
576
  };
549
577
 
550
578
  // src/components/Form/FormNumber.tsx
551
- import { jsx as jsx15 } from "react/jsx-runtime";
579
+ import { jsx as jsx16 } from "react/jsx-runtime";
552
580
  var FormNumber = ({ className, isDanger, dangerText, ...props }) => {
553
- return /* @__PURE__ */ jsx15(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ jsx15("input", { type: "number", className: getInputStyles(isDanger, className), ...props }) });
581
+ return /* @__PURE__ */ jsx16(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ jsx16("input", { type: "number", className: getInputStyles(isDanger, className), ...props }) });
554
582
  };
555
583
 
556
584
  // src/components/Form/FormPassword.tsx
557
- import { jsx as jsx16 } from "react/jsx-runtime";
585
+ import { jsx as jsx17 } from "react/jsx-runtime";
558
586
  var FormPassword = ({ className, isDanger, dangerText, ...props }) => {
559
- return /* @__PURE__ */ jsx16(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ jsx16("input", { type: "password", className: getInputStyles(isDanger, className), ...props }) });
587
+ return /* @__PURE__ */ jsx17(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ jsx17("input", { type: "password", className: getInputStyles(isDanger, className), ...props }) });
560
588
  };
561
589
 
562
590
  // src/components/Form/FormTel.tsx
563
- import { jsx as jsx17 } from "react/jsx-runtime";
591
+ import { jsx as jsx18 } from "react/jsx-runtime";
564
592
  var FormTel = ({ className, isDanger, dangerText, onChange, ...props }) => {
565
593
  const handlePhoneChange = (e) => {
566
594
  const rawValue = e.target.value.replace(/[^0-9]/g, "");
@@ -572,7 +600,7 @@ var FormTel = ({ className, isDanger, dangerText, onChange, ...props }) => {
572
600
  e.target.value = formattedValue;
573
601
  if (onChange) onChange(e);
574
602
  };
575
- return /* @__PURE__ */ jsx17(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ jsx17(
603
+ return /* @__PURE__ */ jsx18(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ jsx18(
576
604
  "input",
577
605
  {
578
606
  type: "tel",
@@ -586,7 +614,7 @@ var FormTel = ({ className, isDanger, dangerText, onChange, ...props }) => {
586
614
 
587
615
  // src/components/Form/FormColor.tsx
588
616
  import { useState as useState2 } from "react";
589
- import { jsx as jsx18, jsxs as jsxs8 } from "react/jsx-runtime";
617
+ import { jsx as jsx19, jsxs as jsxs8 } from "react/jsx-runtime";
590
618
  var FormColor = ({
591
619
  className,
592
620
  isDanger,
@@ -604,7 +632,7 @@ var FormColor = ({
604
632
  setInternalColor(e.target.value);
605
633
  onChange?.(e);
606
634
  };
607
- return /* @__PURE__ */ jsx18(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ jsxs8(
635
+ return /* @__PURE__ */ jsx19(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ jsxs8(
608
636
  "label",
609
637
  {
610
638
  className: getInputStyles(
@@ -613,7 +641,7 @@ var FormColor = ({
613
641
  "flex items-center gap-2 relative focus-within:border-black focus-within:hover:bg-white" + (className || "")
614
642
  ),
615
643
  children: [
616
- /* @__PURE__ */ jsx18("div", { className: "w-6 h-6 shrink-0 overflow-hidden", style: { backgroundColor: color }, children: /* @__PURE__ */ jsx18(
644
+ /* @__PURE__ */ jsx19("div", { className: "w-6 h-6 shrink-0 overflow-hidden", style: { backgroundColor: color }, children: /* @__PURE__ */ jsx19(
617
645
  "input",
618
646
  {
619
647
  type: "color",
@@ -623,7 +651,7 @@ var FormColor = ({
623
651
  ...props
624
652
  }
625
653
  ) }),
626
- /* @__PURE__ */ jsx18("span", { className: "text-primary text-body3-regular uppercase flex-1 select-none", children: color })
654
+ /* @__PURE__ */ jsx19("span", { className: "text-primary text-body3-regular uppercase flex-1 select-none", children: color })
627
655
  ]
628
656
  }
629
657
  ) });
@@ -631,7 +659,7 @@ var FormColor = ({
631
659
 
632
660
  // src/components/Form/FormFile.tsx
633
661
  import { useState as useState3 } from "react";
634
- import { jsx as jsx19, jsxs as jsxs9 } from "react/jsx-runtime";
662
+ import { jsx as jsx20, jsxs as jsxs9 } from "react/jsx-runtime";
635
663
  var FormFile = ({
636
664
  className,
637
665
  isDanger,
@@ -692,7 +720,7 @@ var FormFile = ({
692
720
  }
693
721
  };
694
722
  const displayFileName = selectedFile?.name || (fileUrl ? fileUrl.split("/").pop() : null);
695
- return /* @__PURE__ */ jsx19(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ jsxs9(
723
+ return /* @__PURE__ */ jsx20(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ jsxs9(
696
724
  "div",
697
725
  {
698
726
  className: getInputStyles(
@@ -705,7 +733,7 @@ var FormFile = ({
705
733
  )
706
734
  ),
707
735
  children: [
708
- displayFileName && /* @__PURE__ */ jsx19(
736
+ displayFileName && /* @__PURE__ */ jsx20(
709
737
  "span",
710
738
  {
711
739
  onClick: handleDownload,
@@ -715,8 +743,8 @@ var FormFile = ({
715
743
  }
716
744
  ),
717
745
  /* @__PURE__ */ jsxs9("label", { className: "shrink-0 px-1 -mx-1 cursor-pointer", children: [
718
- /* @__PURE__ */ jsx19("div", { className: "text-primary text-caption-regular underline", children: displayFileName ? "\uB2E4\uC2DC \uCCA8\uBD80" : "\uD30C\uC77C \uCCA8\uBD80" }),
719
- /* @__PURE__ */ jsx19("input", { type: "file", className: "hidden", onChange: handleFileChange, ...props })
746
+ /* @__PURE__ */ jsx20("div", { className: "text-primary text-caption-regular underline", children: displayFileName ? "\uB2E4\uC2DC \uCCA8\uBD80" : "\uD30C\uC77C \uCCA8\uBD80" }),
747
+ /* @__PURE__ */ jsx20("input", { type: "file", className: "hidden", onChange: handleFileChange, ...props })
720
748
  ] })
721
749
  ]
722
750
  }
@@ -724,7 +752,7 @@ var FormFile = ({
724
752
  };
725
753
 
726
754
  // src/components/Form/FormCheckBox.tsx
727
- import { jsx as jsx20, jsxs as jsxs10 } from "react/jsx-runtime";
755
+ import { jsx as jsx21, jsxs as jsxs10 } from "react/jsx-runtime";
728
756
  var FormCheckBox = ({
729
757
  isChecked,
730
758
  setIsChecked,
@@ -744,7 +772,7 @@ var FormCheckBox = ({
744
772
  className
745
773
  ),
746
774
  children: [
747
- /* @__PURE__ */ jsx20(
775
+ /* @__PURE__ */ jsx21(
748
776
  "input",
749
777
  {
750
778
  type: "checkbox",
@@ -754,14 +782,14 @@ var FormCheckBox = ({
754
782
  ...props
755
783
  }
756
784
  ),
757
- /* @__PURE__ */ jsx20(
785
+ /* @__PURE__ */ jsx21(
758
786
  "div",
759
787
  {
760
788
  className: cn(
761
789
  "flex items-center justify-center w-5 h-5 shrink-0 rounded transition-colors",
762
790
  "group-hover:bg-gray00 group-active:bg-gray01"
763
791
  ),
764
- children: /* @__PURE__ */ jsx20(
792
+ children: /* @__PURE__ */ jsx21(
765
793
  "div",
766
794
  {
767
795
  className: cn(
@@ -771,12 +799,12 @@ var FormCheckBox = ({
771
799
  // 💡 3. 키보드 Tab 이동 시 접근성 향상 (포커스 링 표시)
772
800
  "peer-focus-visible:ring-2 peer-focus-visible:ring-black peer-focus-visible:ring-offset-1"
773
801
  ),
774
- children: isChecked && /* @__PURE__ */ jsx20(IconCheck, {})
802
+ children: isChecked && /* @__PURE__ */ jsx21(IconCheck, {})
775
803
  }
776
804
  )
777
805
  }
778
806
  ),
779
- children && /* @__PURE__ */ jsx20("span", { className: cn("text-body3-book text-primary", textStyle), children })
807
+ children && /* @__PURE__ */ jsx21("span", { className: cn("text-body3-book text-primary", textStyle), children })
780
808
  ]
781
809
  }
782
810
  );
@@ -786,14 +814,14 @@ var FormCheckBox = ({
786
814
  import { useEffect, useRef, useState as useState4 } from "react";
787
815
 
788
816
  // src/components/Form/SelectBoxOption.tsx
789
- import { jsx as jsx21 } from "react/jsx-runtime";
817
+ import { jsx as jsx22 } from "react/jsx-runtime";
790
818
  var SelectBoxOption = ({
791
819
  label,
792
820
  onClick,
793
821
  // selectedLabel,
794
822
  className
795
823
  }) => {
796
- return /* @__PURE__ */ jsx21(
824
+ return /* @__PURE__ */ jsx22(
797
825
  "li",
798
826
  {
799
827
  onClick,
@@ -815,7 +843,7 @@ var SelectBoxOption = ({
815
843
  };
816
844
 
817
845
  // src/components/Form/FormSelectBox.tsx
818
- import { jsx as jsx22, jsxs as jsxs11 } from "react/jsx-runtime";
846
+ import { jsx as jsx23, jsxs as jsxs11 } from "react/jsx-runtime";
819
847
  var FormSelectBox = ({
820
848
  options,
821
849
  value,
@@ -838,7 +866,7 @@ var FormSelectBox = ({
838
866
  document.removeEventListener("mousedown", handleClickOutside);
839
867
  };
840
868
  }, []);
841
- return /* @__PURE__ */ jsx22(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ jsxs11("div", { ref: containerRef, className: "relative w-full", children: [
869
+ return /* @__PURE__ */ jsx23(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ jsxs11("div", { ref: containerRef, className: "relative w-full", children: [
842
870
  /* @__PURE__ */ jsxs11(
843
871
  "div",
844
872
  {
@@ -859,8 +887,8 @@ var FormSelectBox = ({
859
887
  setIsOpen((prev) => !prev);
860
888
  },
861
889
  children: [
862
- /* @__PURE__ */ jsx22("span", { className: value ? "text-primary" : "text-quaternary", children: value || placeholder }),
863
- /* @__PURE__ */ jsx22(
890
+ /* @__PURE__ */ jsx23("span", { className: value ? "text-primary" : "text-quaternary", children: value || placeholder }),
891
+ /* @__PURE__ */ jsx23(
864
892
  IconChevronDownXS,
865
893
  {
866
894
  className: cn("text-gray06 transition-transform", isOpen && "rotate-180"),
@@ -870,7 +898,7 @@ var FormSelectBox = ({
870
898
  ]
871
899
  }
872
900
  ),
873
- isOpen && /* @__PURE__ */ jsx22(
901
+ isOpen && /* @__PURE__ */ jsx23(
874
902
  "ul",
875
903
  {
876
904
  className: cn(
@@ -880,7 +908,7 @@ var FormSelectBox = ({
880
908
  "max-h-50 overflow-y-auto"
881
909
  // 항목이 너무 많으면 스크롤 생성 (디자인 스펙: 그림자 없음)
882
910
  ),
883
- children: options.map((option) => /* @__PURE__ */ jsx22(
911
+ children: options.map((option) => /* @__PURE__ */ jsx23(
884
912
  SelectBoxOption,
885
913
  {
886
914
  label: option,
@@ -897,7 +925,7 @@ var FormSelectBox = ({
897
925
  };
898
926
 
899
927
  // src/components/TextButton/TextButton.tsx
900
- import { Fragment, jsx as jsx23, jsxs as jsxs12 } from "react/jsx-runtime";
928
+ import { Fragment, jsx as jsx24, jsxs as jsxs12 } from "react/jsx-runtime";
901
929
  var TextButton = ({
902
930
  children,
903
931
  icon,
@@ -908,9 +936,9 @@ var TextButton = ({
908
936
  ...props
909
937
  }) => {
910
938
  const content = /* @__PURE__ */ jsxs12(Fragment, { children: [
911
- icon && iconPosition === "left" && /* @__PURE__ */ jsx23("span", { className: "flex shrink-0 items-center", children: icon }),
912
- /* @__PURE__ */ jsx23("span", { className: cn(underline && "underline underline-offset-2"), children }),
913
- icon && iconPosition === "right" && /* @__PURE__ */ jsx23("span", { className: "flex shrink-0 items-center", children: icon })
939
+ icon && iconPosition === "left" && /* @__PURE__ */ jsx24("span", { className: "flex shrink-0 items-center", children: icon }),
940
+ /* @__PURE__ */ jsx24("span", { className: cn(underline && "underline underline-offset-2"), children }),
941
+ icon && iconPosition === "right" && /* @__PURE__ */ jsx24("span", { className: "flex shrink-0 items-center", children: icon })
914
942
  ] });
915
943
  const classes = cn(
916
944
  "inline-flex w-fit items-center gap-1 px-1 -mx-1",
@@ -925,15 +953,15 @@ var TextButton = ({
925
953
  );
926
954
  if (props.href !== void 0) {
927
955
  const { href, ...rest } = props;
928
- return /* @__PURE__ */ jsx23("a", { href, className: classes, ...rest, children: content });
956
+ return /* @__PURE__ */ jsx24("a", { href, className: classes, ...rest, children: content });
929
957
  }
930
958
  const buttonProps = props;
931
- return /* @__PURE__ */ jsx23("button", { type: "button", className: classes, ...buttonProps, children: content });
959
+ return /* @__PURE__ */ jsx24("button", { type: "button", className: classes, ...buttonProps, children: content });
932
960
  };
933
961
 
934
962
  // src/components/Dropdown/Dropdown.tsx
935
963
  import { useEffect as useEffect2, useRef as useRef2, useState as useState5 } from "react";
936
- import { jsx as jsx24, jsxs as jsxs13 } from "react/jsx-runtime";
964
+ import { jsx as jsx25, jsxs as jsxs13 } from "react/jsx-runtime";
937
965
  var Dropdown = ({ selectedLabel, setSelectedLabel, labels, className }) => {
938
966
  const [isOpen, setIsOpen] = useState5(false);
939
967
  const containerRef = useRef2(null);
@@ -962,8 +990,8 @@ var Dropdown = ({ selectedLabel, setSelectedLabel, labels, className }) => {
962
990
  ),
963
991
  onClick: () => setIsOpen((prev) => !prev),
964
992
  children: [
965
- /* @__PURE__ */ jsx24("p", { children: selectedLabel }),
966
- /* @__PURE__ */ jsx24(
993
+ /* @__PURE__ */ jsx25("p", { children: selectedLabel }),
994
+ /* @__PURE__ */ jsx25(
967
995
  IconChevronDownXS,
968
996
  {
969
997
  className: cn("text-gray06 transition-transform", isOpen && "rotate-180"),
@@ -973,7 +1001,7 @@ var Dropdown = ({ selectedLabel, setSelectedLabel, labels, className }) => {
973
1001
  ]
974
1002
  }
975
1003
  ),
976
- isOpen && /* @__PURE__ */ jsx24("div", { className: cn("absolute top-full right-0 z-10", "box-border border border-gray02"), children: labels.map((label) => /* @__PURE__ */ jsx24(
1004
+ isOpen && /* @__PURE__ */ jsx25("div", { className: cn("absolute top-full right-0 z-10", "box-border border border-gray02"), children: labels.map((label) => /* @__PURE__ */ jsx25(
977
1005
  SelectBoxOption,
978
1006
  {
979
1007
  label,
@@ -989,7 +1017,7 @@ var Dropdown = ({ selectedLabel, setSelectedLabel, labels, className }) => {
989
1017
  };
990
1018
 
991
1019
  // src/components/ListView/List.tsx
992
- import { jsx as jsx25, jsxs as jsxs14 } from "react/jsx-runtime";
1020
+ import { jsx as jsx26, jsxs as jsxs14 } from "react/jsx-runtime";
993
1021
  function List({
994
1022
  className,
995
1023
  label1,
@@ -1018,14 +1046,14 @@ function List({
1018
1046
  onClick,
1019
1047
  children: [
1020
1048
  /* @__PURE__ */ jsxs14("section", { className: cn("flex items-center gap-4"), children: [
1021
- /* @__PURE__ */ jsx25("label", { className: cn("text-body2-regular"), children: label1 ? label1 : "-" }),
1022
- /* @__PURE__ */ jsx25("div", { className: cn("flex items-center gap-2"), children })
1049
+ /* @__PURE__ */ jsx26("label", { className: cn("text-body2-regular"), children: label1 ? label1 : "-" }),
1050
+ /* @__PURE__ */ jsx26("div", { className: cn("flex items-center gap-2"), children })
1023
1051
  ] }),
1024
- /* @__PURE__ */ jsx25(
1052
+ /* @__PURE__ */ jsx26(
1025
1053
  "label",
1026
1054
  {
1027
1055
  className: cn(
1028
- "text-body3-book truncate p-1 w-fit",
1056
+ "text-body3-book truncate p-1 w-fit max-w-full",
1029
1057
  label2OnClick && "underline has-clickable",
1030
1058
  label2OnClick && !selected && "hover:bg-gray00"
1031
1059
  ),
@@ -1033,18 +1061,18 @@ function List({
1033
1061
  children: label2 ? label2 : "-"
1034
1062
  }
1035
1063
  ),
1036
- /* @__PURE__ */ jsx25("label", { className: cn("text-body3-regular text-right"), children: label3 ? label3 : "-" })
1064
+ /* @__PURE__ */ jsx26("label", { className: cn("text-body3-regular text-right"), children: label3 ? label3 : "-" })
1037
1065
  ]
1038
1066
  }
1039
1067
  );
1040
1068
  }
1041
1069
 
1042
1070
  // src/components/Modal/Modal.tsx
1043
- import { jsx as jsx26, jsxs as jsxs15 } from "react/jsx-runtime";
1071
+ import { jsx as jsx27, jsxs as jsxs15 } from "react/jsx-runtime";
1044
1072
  var ModalBase = ({ isVisible, header, children, className, onClose }) => {
1045
1073
  if (!isVisible) return null;
1046
1074
  return /* @__PURE__ */ jsxs15("div", { className: cn("fixed inset-0 z-50"), children: [
1047
- /* @__PURE__ */ jsx26(
1075
+ /* @__PURE__ */ jsx27(
1048
1076
  "div",
1049
1077
  {
1050
1078
  "aria-hidden": true,
@@ -1052,7 +1080,7 @@ var ModalBase = ({ isVisible, header, children, className, onClose }) => {
1052
1080
  className: cn("fixed inset-0 z-1000 bg-[#212121]/30", onClose && "cursor-pointer")
1053
1081
  }
1054
1082
  ),
1055
- /* @__PURE__ */ jsx26("div", { className: "fixed inset-0 z-1001 flex items-center justify-center pointer-events-none", children: /* @__PURE__ */ jsxs15(
1083
+ /* @__PURE__ */ jsx27("div", { className: "fixed inset-0 z-1001 flex items-center justify-center pointer-events-none", children: /* @__PURE__ */ jsxs15(
1056
1084
  "main",
1057
1085
  {
1058
1086
  role: "dialog",
@@ -1065,7 +1093,7 @@ var ModalBase = ({ isVisible, header, children, className, onClose }) => {
1065
1093
  className
1066
1094
  ),
1067
1095
  children: [
1068
- onClose && /* @__PURE__ */ jsx26(
1096
+ onClose && /* @__PURE__ */ jsx27(
1069
1097
  "button",
1070
1098
  {
1071
1099
  type: "button",
@@ -1075,10 +1103,10 @@ var ModalBase = ({ isVisible, header, children, className, onClose }) => {
1075
1103
  "absolute right-3 top-3 flex size-8 items-center justify-center",
1076
1104
  "text-tertiary transition-colors hover:bg-gray00 active:bg-gray01 cursor-pointer"
1077
1105
  ),
1078
- children: /* @__PURE__ */ jsx26(IconClose, {})
1106
+ children: /* @__PURE__ */ jsx27(IconClose, {})
1079
1107
  }
1080
1108
  ),
1081
- /* @__PURE__ */ jsx26("h1", { className: cn("text-strong font-[500] text-[24px] leading-[32px]"), children: header }),
1109
+ /* @__PURE__ */ jsx27("h1", { className: cn("text-head-lg-medium text-strong"), children: header }),
1082
1110
  children
1083
1111
  ]
1084
1112
  }
@@ -1086,7 +1114,7 @@ var ModalBase = ({ isVisible, header, children, className, onClose }) => {
1086
1114
  ] });
1087
1115
  };
1088
1116
  var Contents = ({ children, className }) => {
1089
- return /* @__PURE__ */ jsx26(
1117
+ return /* @__PURE__ */ jsx27(
1090
1118
  "div",
1091
1119
  {
1092
1120
  className: cn(
@@ -1103,7 +1131,7 @@ var CTAs2 = ({ children, className, row = false }) => {
1103
1131
  if (!children) return null;
1104
1132
  return (
1105
1133
  // CTA 버튼들을 중앙에 배치하는 예시 (우측 정렬이 필요하면 justify-end 사용)
1106
- /* @__PURE__ */ jsx26(
1134
+ /* @__PURE__ */ jsx27(
1107
1135
  "div",
1108
1136
  {
1109
1137
  className: cn(
@@ -1122,9 +1150,9 @@ var Modal = Object.assign(ModalBase, {
1122
1150
  });
1123
1151
 
1124
1152
  // src/components/Modal/ModalText.tsx
1125
- import { jsx as jsx27 } from "react/jsx-runtime";
1153
+ import { jsx as jsx28 } from "react/jsx-runtime";
1126
1154
  var ModalText = ({ children, className }) => {
1127
- return /* @__PURE__ */ jsx27(
1155
+ return /* @__PURE__ */ jsx28(
1128
1156
  "div",
1129
1157
  {
1130
1158
  className: cn(
@@ -1140,14 +1168,14 @@ var ModalText = ({ children, className }) => {
1140
1168
  };
1141
1169
 
1142
1170
  // src/components/createPost/CategorySegment.tsx
1143
- import { jsx as jsx28 } from "react/jsx-runtime";
1171
+ import { jsx as jsx29 } from "react/jsx-runtime";
1144
1172
  var CategorySegment = ({
1145
1173
  selected = false,
1146
1174
  label,
1147
1175
  className,
1148
1176
  onClick
1149
1177
  }) => {
1150
- return /* @__PURE__ */ jsx28(
1178
+ return /* @__PURE__ */ jsx29(
1151
1179
  "div",
1152
1180
  {
1153
1181
  className: cn(
@@ -1167,7 +1195,7 @@ var CategorySegment = ({
1167
1195
  };
1168
1196
 
1169
1197
  // src/components/createPost/CategorySegmentedControl.tsx
1170
- import { jsx as jsx29, jsxs as jsxs16 } from "react/jsx-runtime";
1198
+ import { jsx as jsx30, jsxs as jsxs16 } from "react/jsx-runtime";
1171
1199
  var categorySegments = {
1172
1200
  info: ["\uACF5\uC6A9 \uBB3C\uD488", "\uC77C\uBC18 \uAE30\uC790\uC7AC", "\uD2B9\uC218 \uAE30\uC790\uC7AC"],
1173
1201
  archive: ["\uD504\uB9B0\uD2B8\uC2E4", "\uD64D\uC775\uC2DC\uB514"],
@@ -1182,7 +1210,7 @@ var CategorySegmentedControl = ({
1182
1210
  }) => {
1183
1211
  const segments = categorySegments[variable];
1184
1212
  return /* @__PURE__ */ jsxs16("div", { className: cn("w-full h-fit flex items-center justify-start", className), children: [
1185
- /* @__PURE__ */ jsx29(
1213
+ /* @__PURE__ */ jsx30(
1186
1214
  "div",
1187
1215
  {
1188
1216
  className: cn(
@@ -1195,7 +1223,7 @@ var CategorySegmentedControl = ({
1195
1223
  children: variable === "infoTag" ? "\uD0DC\uADF8 \uC120\uD0DD" : "\uCE74\uD14C\uACE0\uB9AC \uC120\uD0DD"
1196
1224
  }
1197
1225
  ),
1198
- segments.map((label) => /* @__PURE__ */ jsx29(
1226
+ segments.map((label) => /* @__PURE__ */ jsx30(
1199
1227
  CategorySegment,
1200
1228
  {
1201
1229
  label,
@@ -1208,9 +1236,9 @@ var CategorySegmentedControl = ({
1208
1236
  };
1209
1237
 
1210
1238
  // src/components/createPost/TitleInput.tsx
1211
- import { jsx as jsx30 } from "react/jsx-runtime";
1239
+ import { jsx as jsx31 } from "react/jsx-runtime";
1212
1240
  var TitleInput = ({ title, onChange, className }) => {
1213
- return /* @__PURE__ */ jsx30(
1241
+ return /* @__PURE__ */ jsx31(
1214
1242
  "input",
1215
1243
  {
1216
1244
  type: "text",
@@ -1230,9 +1258,9 @@ var TitleInput = ({ title, onChange, className }) => {
1230
1258
  };
1231
1259
 
1232
1260
  // src/components/notice/NoticeBadge.tsx
1233
- import { jsx as jsx31 } from "react/jsx-runtime";
1261
+ import { jsx as jsx32 } from "react/jsx-runtime";
1234
1262
  var NoticeBadge = ({ variable, className, onClick }) => {
1235
- return /* @__PURE__ */ jsx31(
1263
+ return /* @__PURE__ */ jsx32(
1236
1264
  "button",
1237
1265
  {
1238
1266
  type: "button",
@@ -1253,7 +1281,7 @@ var NoticeBadge = ({ variable, className, onClick }) => {
1253
1281
  };
1254
1282
 
1255
1283
  // src/components/notice/NoticeBar.tsx
1256
- import { jsx as jsx32, jsxs as jsxs17 } from "react/jsx-runtime";
1284
+ import { jsx as jsx33, jsxs as jsxs17 } from "react/jsx-runtime";
1257
1285
  var NoticeBar = ({
1258
1286
  variable = "default",
1259
1287
  badgeVariable,
@@ -1275,17 +1303,17 @@ var NoticeBar = ({
1275
1303
  onClick,
1276
1304
  children: [
1277
1305
  /* @__PURE__ */ jsxs17("section", { className: "flex items-center gap-3", children: [
1278
- /* @__PURE__ */ jsx32(NoticeBadge, { variable: badgeVariable }),
1279
- /* @__PURE__ */ jsx32("h1", { className: "text-head1-medium text-strong", children: title })
1306
+ /* @__PURE__ */ jsx33(NoticeBadge, { variable: badgeVariable }),
1307
+ /* @__PURE__ */ jsx33("h1", { className: "text-head1-medium text-strong", children: title })
1280
1308
  ] }),
1281
- /* @__PURE__ */ jsx32("p", { className: "text-body3-book text-tertiary", children: date })
1309
+ /* @__PURE__ */ jsx33("p", { className: "text-body3-book text-tertiary", children: date })
1282
1310
  ]
1283
1311
  }
1284
1312
  );
1285
1313
  };
1286
1314
 
1287
1315
  // src/components/SearchBar/SearchBar.tsx
1288
- import { jsx as jsx33, jsxs as jsxs18 } from "react/jsx-runtime";
1316
+ import { jsx as jsx34, jsxs as jsxs18 } from "react/jsx-runtime";
1289
1317
  var SearchBar = ({ value, onChange, className }) => {
1290
1318
  return /* @__PURE__ */ jsxs18(
1291
1319
  "label",
@@ -1298,8 +1326,8 @@ var SearchBar = ({ value, onChange, className }) => {
1298
1326
  className
1299
1327
  ),
1300
1328
  children: [
1301
- /* @__PURE__ */ jsx33(IconSearch, {}),
1302
- /* @__PURE__ */ jsx33(
1329
+ /* @__PURE__ */ jsx34(IconSearch, {}),
1330
+ /* @__PURE__ */ jsx34(
1303
1331
  "input",
1304
1332
  {
1305
1333
  type: "text",
@@ -1319,7 +1347,7 @@ var SearchBar = ({ value, onChange, className }) => {
1319
1347
 
1320
1348
  // src/components/SideRadioAccordion/SideRadioAccordion.tsx
1321
1349
  import { forwardRef as forwardRef2 } from "react";
1322
- import { jsx as jsx34, jsxs as jsxs19 } from "react/jsx-runtime";
1350
+ import { jsx as jsx35, jsxs as jsxs19 } from "react/jsx-runtime";
1323
1351
  var printColorBgClass = {
1324
1352
  Plotter: "bg-print-plotter",
1325
1353
  Printer: "bg-print-printer",
@@ -1364,7 +1392,7 @@ var SideRadioAccordion = forwardRef2(
1364
1392
  onOpenChange?.(next);
1365
1393
  };
1366
1394
  return /* @__PURE__ */ jsxs19("div", { ref, className: cn("w-full border-r border-gray02 bg-white", className), children: [
1367
- /* @__PURE__ */ jsx34(
1395
+ /* @__PURE__ */ jsx35(
1368
1396
  Stepper,
1369
1397
  {
1370
1398
  step,
@@ -1376,7 +1404,7 @@ var SideRadioAccordion = forwardRef2(
1376
1404
  }
1377
1405
  ),
1378
1406
  expanded && /* @__PURE__ */ jsxs19("div", { className: "flex flex-col divide-y divide-gray02", children: [
1379
- radioToggleList.map((item) => /* @__PURE__ */ jsx34(
1407
+ radioToggleList.map((item) => /* @__PURE__ */ jsx35(
1380
1408
  RadioToggleItem,
1381
1409
  {
1382
1410
  ...item,
@@ -1385,7 +1413,7 @@ var SideRadioAccordion = forwardRef2(
1385
1413
  },
1386
1414
  itemKey(item)
1387
1415
  )),
1388
- quantityLimitLabel && /* @__PURE__ */ jsx34("div", { className: "px-5 py-4", children: /* @__PURE__ */ jsx34(TextButton2, { label: quantityLimitLabel, onClick: onClickQuantityLimit }) })
1416
+ quantityLimitLabel && /* @__PURE__ */ jsx35("div", { className: "px-5 py-4", children: /* @__PURE__ */ jsx35(TextButton2, { label: quantityLimitLabel, onClick: onClickQuantityLimit }) })
1389
1417
  ] })
1390
1418
  ] });
1391
1419
  }
@@ -1398,7 +1426,7 @@ var Stepper = ({ step, title, isOpen, collapsible, onClick, className }) => {
1398
1426
  ] });
1399
1427
  const base = "w-full flex items-center justify-between px-5 py-2.5 text-head3-medium text-primary text-left bg-white border-b border-gray02";
1400
1428
  if (!collapsible) {
1401
- return /* @__PURE__ */ jsx34("div", { className: cn(base, className), children: label });
1429
+ return /* @__PURE__ */ jsx35("div", { className: cn(base, className), children: label });
1402
1430
  }
1403
1431
  return /* @__PURE__ */ jsxs19(
1404
1432
  "button",
@@ -1408,7 +1436,7 @@ var Stepper = ({ step, title, isOpen, collapsible, onClick, className }) => {
1408
1436
  className: cn(base, "cursor-pointer hover:bg-gray00 active:bg-gray01", className),
1409
1437
  children: [
1410
1438
  label,
1411
- /* @__PURE__ */ jsx34(IconChevronDownXS, { className: cn("transition-transform", isOpen && "rotate-180") })
1439
+ /* @__PURE__ */ jsx35(IconChevronDownXS, { className: cn("transition-transform", isOpen && "rotate-180") })
1412
1440
  ]
1413
1441
  }
1414
1442
  );
@@ -1443,15 +1471,15 @@ var RadioToggleItem = ({
1443
1471
  className
1444
1472
  ),
1445
1473
  children: [
1446
- /* @__PURE__ */ jsx34(Radio, { selected: open }),
1447
- /* @__PURE__ */ jsx34("span", { children: title })
1474
+ /* @__PURE__ */ jsx35(Radio, { selected: open }),
1475
+ /* @__PURE__ */ jsx35("span", { children: title })
1448
1476
  ]
1449
1477
  }
1450
1478
  ),
1451
1479
  open && /* @__PURE__ */ jsxs19("div", { className: "flex flex-col gap-2 px-3 py-3 bg-white", children: [
1452
- /* @__PURE__ */ jsx34("p", { className: "text-caption-regular text-secondary", children: content }),
1453
- badges && badges.length > 0 && /* @__PURE__ */ jsx34("div", { className: "flex flex-wrap gap-1", children: badges.map((badge) => /* @__PURE__ */ jsx34(Badge, { label: badge }, badge)) }),
1454
- labelTextButton && /* @__PURE__ */ jsx34(
1480
+ /* @__PURE__ */ jsx35("p", { className: "text-caption-regular text-secondary", children: content }),
1481
+ badges && badges.length > 0 && /* @__PURE__ */ jsx35("div", { className: "flex flex-wrap gap-1", children: badges.map((badge) => /* @__PURE__ */ jsx35(Badge2, { label: badge }, badge)) }),
1482
+ labelTextButton && /* @__PURE__ */ jsx35(
1455
1483
  TextButton2,
1456
1484
  {
1457
1485
  label: labelTextButton,
@@ -1469,7 +1497,7 @@ var Radio = ({ selected = false, className }) => {
1469
1497
  // 디자인 스펙(Figma "radio" 5:781): 24px 히트 영역 안에 10px 원만 중앙에 그려진다.
1470
1498
  // 아이콘 자체 색은 고정, hover/pressed 시 24px 원형 배경 칩만 나타난다(gray00/gray01).
1471
1499
  // 부모 버튼의 group-hover/active로 동기화.
1472
- /* @__PURE__ */ jsx34(
1500
+ /* @__PURE__ */ jsx35(
1473
1501
  "span",
1474
1502
  {
1475
1503
  className: cn(
@@ -1477,7 +1505,7 @@ var Radio = ({ selected = false, className }) => {
1477
1505
  "group-hover:bg-gray00 group-active:bg-gray01",
1478
1506
  className
1479
1507
  ),
1480
- children: /* @__PURE__ */ jsx34(Icon, { className: "size-2.5" })
1508
+ children: /* @__PURE__ */ jsx35(Icon, { className: "size-2.5" })
1481
1509
  }
1482
1510
  )
1483
1511
  );
@@ -1496,14 +1524,14 @@ var TextButton2 = ({ label, onClick, showIcon = false, className }) => {
1496
1524
  className
1497
1525
  ),
1498
1526
  children: [
1499
- showIcon && /* @__PURE__ */ jsx34(IconExclamation, {}),
1527
+ showIcon && /* @__PURE__ */ jsx35(IconExclamation, {}),
1500
1528
  label
1501
1529
  ]
1502
1530
  }
1503
1531
  );
1504
1532
  };
1505
- var Badge = ({ label, className }) => {
1506
- return /* @__PURE__ */ jsx34(
1533
+ var Badge2 = ({ label, className }) => {
1534
+ return /* @__PURE__ */ jsx35(
1507
1535
  "div",
1508
1536
  {
1509
1537
  className: cn(
@@ -1517,7 +1545,7 @@ var Badge = ({ label, className }) => {
1517
1545
  };
1518
1546
 
1519
1547
  // src/components/Tag/Tag.tsx
1520
- import { jsx as jsx35 } from "react/jsx-runtime";
1548
+ import { jsx as jsx36 } from "react/jsx-runtime";
1521
1549
  var Tag = ({
1522
1550
  className,
1523
1551
  children,
@@ -1527,7 +1555,7 @@ var Tag = ({
1527
1555
  onClick,
1528
1556
  ...props
1529
1557
  }) => {
1530
- return /* @__PURE__ */ jsx35(
1558
+ return /* @__PURE__ */ jsx36(
1531
1559
  "button",
1532
1560
  {
1533
1561
  className: cn(
@@ -1546,21 +1574,21 @@ var Tag = ({
1546
1574
  disabled,
1547
1575
  style: bgColor ? { backgroundColor: bgColor, border: "none" } : void 0,
1548
1576
  ...props,
1549
- children: /* @__PURE__ */ jsx35("span", { children })
1577
+ children: /* @__PURE__ */ jsx36("span", { children })
1550
1578
  }
1551
1579
  );
1552
1580
  };
1553
1581
 
1554
1582
  // src/components/TabSwitch/TabSwitch.tsx
1555
1583
  import { forwardRef as forwardRef3 } from "react";
1556
- import { jsx as jsx36, jsxs as jsxs20 } from "react/jsx-runtime";
1584
+ import { jsx as jsx37, jsxs as jsxs20 } from "react/jsx-runtime";
1557
1585
  var itemKey2 = (item) => item.value ?? item.label;
1558
1586
  var TabSwitch = forwardRef3(function TabSwitch2({ items, selected, defaultSelected, onSelect, className }, ref) {
1559
1587
  const [selectedValue, setSelectedValue] = useControllableState(
1560
1588
  selected,
1561
1589
  defaultSelected ?? itemKey2(items[0])
1562
1590
  );
1563
- return /* @__PURE__ */ jsx36("div", { ref, className: cn("w-full border-b border-gray02", className), children: /* @__PURE__ */ jsx36("div", { className: "flex items-stretch", children: items.map((item) => {
1591
+ return /* @__PURE__ */ jsx37("div", { ref, className: cn("w-full border-b border-gray02", className), children: /* @__PURE__ */ jsx37("div", { className: "flex items-stretch", children: items.map((item) => {
1564
1592
  const key = itemKey2(item);
1565
1593
  const isSelected = key === selectedValue;
1566
1594
  return /* @__PURE__ */ jsxs20("div", { className: "flex items-stretch", children: [
@@ -1577,7 +1605,7 @@ var TabSwitch = forwardRef3(function TabSwitch2({ items, selected, defaultSelect
1577
1605
  isSelected ? "gap-2" : "pb-2.5"
1578
1606
  ),
1579
1607
  children: [
1580
- /* @__PURE__ */ jsx36(
1608
+ /* @__PURE__ */ jsx37(
1581
1609
  "span",
1582
1610
  {
1583
1611
  className: cn(
@@ -1587,11 +1615,11 @@ var TabSwitch = forwardRef3(function TabSwitch2({ items, selected, defaultSelect
1587
1615
  children: item.label
1588
1616
  }
1589
1617
  ),
1590
- isSelected && /* @__PURE__ */ jsx36("span", { className: "h-0.5 w-full bg-black" })
1618
+ isSelected && /* @__PURE__ */ jsx37("span", { className: "h-0.5 w-full bg-black" })
1591
1619
  ]
1592
1620
  }
1593
1621
  ),
1594
- /* @__PURE__ */ jsx36("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" })
1622
+ /* @__PURE__ */ jsx37("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" })
1595
1623
  ] }, key);
1596
1624
  }) }) });
1597
1625
  });
@@ -1633,7 +1661,7 @@ var formatWeekRange = (weekStart) => {
1633
1661
  };
1634
1662
 
1635
1663
  // src/components/Timetable/WeekNavigation.tsx
1636
- import { jsx as jsx37, jsxs as jsxs21 } from "react/jsx-runtime";
1664
+ import { jsx as jsx38, jsxs as jsxs21 } from "react/jsx-runtime";
1637
1665
  var weekLabel = {
1638
1666
  thisWeek: "\uC774\uBC88 \uC8FC",
1639
1667
  nextWeek: "\uB2E4\uC74C \uC8FC",
@@ -1656,22 +1684,22 @@ var WeekNavigation = forwardRef4(
1656
1684
  className
1657
1685
  ),
1658
1686
  children: [
1659
- /* @__PURE__ */ jsx37(ArrowButton, { direction: "left", visible: showPrev, onClick: onPrevWeek }),
1660
- /* @__PURE__ */ jsx37("span", { className: "flex flex-1 items-center justify-center text-center", children: text }),
1661
- /* @__PURE__ */ jsx37(ArrowButton, { direction: "right", visible: showNext, onClick: onNextWeek })
1687
+ /* @__PURE__ */ jsx38(ArrowButton, { direction: "left", visible: showPrev, onClick: onPrevWeek }),
1688
+ /* @__PURE__ */ jsx38("span", { className: "flex flex-1 items-center justify-center text-center", children: text }),
1689
+ /* @__PURE__ */ jsx38(ArrowButton, { direction: "right", visible: showNext, onClick: onNextWeek })
1662
1690
  ]
1663
1691
  }
1664
1692
  );
1665
1693
  }
1666
1694
  );
1667
1695
  var ArrowButton = ({ direction, visible, onClick }) => {
1668
- const divider = /* @__PURE__ */ jsx37("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" });
1696
+ const divider = /* @__PURE__ */ jsx38("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" });
1669
1697
  if (!visible) {
1670
- return /* @__PURE__ */ jsx37("span", { "aria-hidden": true, className: "w-[43px]" });
1698
+ return /* @__PURE__ */ jsx38("span", { "aria-hidden": true, className: "w-[43px]" });
1671
1699
  }
1672
1700
  return /* @__PURE__ */ jsxs21("div", { className: "flex items-stretch", children: [
1673
1701
  direction === "right" && divider,
1674
- /* @__PURE__ */ jsx37(
1702
+ /* @__PURE__ */ jsx38(
1675
1703
  "button",
1676
1704
  {
1677
1705
  type: "button",
@@ -1681,7 +1709,7 @@ var ArrowButton = ({ direction, visible, onClick }) => {
1681
1709
  "text-gray06 cursor-pointer transition-colors",
1682
1710
  "hover:bg-gray00 active:bg-gray01"
1683
1711
  ),
1684
- children: /* @__PURE__ */ jsx37(
1712
+ children: /* @__PURE__ */ jsx38(
1685
1713
  IconChevronDownXS,
1686
1714
  {
1687
1715
  className: direction === "left" ? "rotate-90" : "-rotate-90",
@@ -1695,7 +1723,7 @@ var ArrowButton = ({ direction, visible, onClick }) => {
1695
1723
  };
1696
1724
 
1697
1725
  // src/components/Timetable/Timetable.tsx
1698
- import { jsx as jsx38, jsxs as jsxs22 } from "react/jsx-runtime";
1726
+ import { jsx as jsx39, jsxs as jsxs22 } from "react/jsx-runtime";
1699
1727
  var printColorHoverClass = {
1700
1728
  Plotter: "hover:bg-print-plotter",
1701
1729
  Printer: "hover:bg-print-printer",
@@ -1719,7 +1747,7 @@ var Timetable = forwardRef5(function Timetable2({
1719
1747
  className
1720
1748
  }, ref) {
1721
1749
  return /* @__PURE__ */ jsxs22("div", { ref, className: cn(fluid && "w-full", className), children: [
1722
- !hideWeekNavigation && /* @__PURE__ */ jsx38(
1750
+ !hideWeekNavigation && /* @__PURE__ */ jsx39(
1723
1751
  WeekNavigation,
1724
1752
  {
1725
1753
  date: weekStart,
@@ -1730,7 +1758,7 @@ var Timetable = forwardRef5(function Timetable2({
1730
1758
  onNextWeek
1731
1759
  }
1732
1760
  ),
1733
- /* @__PURE__ */ jsx38("div", { className: cn("flex divide-x divide-gray02", fluid && "w-full"), children: days.map((day) => /* @__PURE__ */ jsx38(
1761
+ /* @__PURE__ */ jsx39("div", { className: cn("flex divide-x divide-gray02", fluid && "w-full"), children: days.map((day) => /* @__PURE__ */ jsx39(
1734
1762
  DailyTimetable,
1735
1763
  {
1736
1764
  date: day.date,
@@ -1744,11 +1772,11 @@ var Timetable = forwardRef5(function Timetable2({
1744
1772
  });
1745
1773
  var DailyTimetable = ({ date, slots, fluid, onSelectTime, className }) => {
1746
1774
  return /* @__PURE__ */ jsxs22("div", { className: cn("flex flex-col", fluid ? "flex-1 min-w-0" : "w-18", className), children: [
1747
- /* @__PURE__ */ jsx38("div", { className: "h-12 flex items-center justify-center border-b border-gray02 text-body1-regular text-secondary", children: formatDayLabel(date) }),
1775
+ /* @__PURE__ */ jsx39("div", { className: "h-12 flex items-center justify-center border-b border-gray02 text-body1-regular text-secondary", children: formatDayLabel(date) }),
1748
1776
  slots.map((slot, index) => {
1749
1777
  const prevState = index > 0 ? slots[index - 1].state : void 0;
1750
1778
  const withTopBorder = slot.state !== "none" && prevState === "none";
1751
- return /* @__PURE__ */ jsx38(
1779
+ return /* @__PURE__ */ jsx39(
1752
1780
  TimeItem,
1753
1781
  {
1754
1782
  state: slot.state,
@@ -1777,7 +1805,7 @@ var TimeItem = ({
1777
1805
  }) => {
1778
1806
  const clickable = (state === "default" || state === "selected") && !!onClick;
1779
1807
  const style = state === "default" && color ? { "--tt-hover": color } : void 0;
1780
- return /* @__PURE__ */ jsx38(
1808
+ return /* @__PURE__ */ jsx39(
1781
1809
  "div",
1782
1810
  {
1783
1811
  onClick: clickable ? onClick : void 0,
@@ -1809,7 +1837,7 @@ import {
1809
1837
  useCallback as useCallback2,
1810
1838
  useState as useState6
1811
1839
  } from "react";
1812
- import { jsx as jsx39, jsxs as jsxs23 } from "react/jsx-runtime";
1840
+ import { jsx as jsx40, jsxs as jsxs23 } from "react/jsx-runtime";
1813
1841
  function useControllableState2(controlled, defaultValue) {
1814
1842
  const isControlled = controlled !== void 0;
1815
1843
  const [uncontrolled, setUncontrolled] = useState6(defaultValue);
@@ -1862,7 +1890,7 @@ var TNB = forwardRef6(function TNB2({
1862
1890
  onSelectedLowerChange?.(label);
1863
1891
  };
1864
1892
  return /* @__PURE__ */ jsxs23("nav", { ref, "aria-label": ariaLabel, className: cn("w-full bg-white", className), children: [
1865
- /* @__PURE__ */ jsx39(
1893
+ /* @__PURE__ */ jsx40(
1866
1894
  UpperPart,
1867
1895
  {
1868
1896
  logo,
@@ -1873,7 +1901,7 @@ var TNB = forwardRef6(function TNB2({
1873
1901
  linkComponent
1874
1902
  }
1875
1903
  ),
1876
- /* @__PURE__ */ jsx39(
1904
+ /* @__PURE__ */ jsx40(
1877
1905
  LowerPart,
1878
1906
  {
1879
1907
  lowerPartItemList: currentLowerItemList,
@@ -1888,7 +1916,7 @@ var NavClickable = forwardRef6(function NavClickable2({ href, onClick, linkCompo
1888
1916
  const ariaCurrent = current ? "page" : void 0;
1889
1917
  if (href && !disabled) {
1890
1918
  if (Link) {
1891
- return /* @__PURE__ */ jsx39(
1919
+ return /* @__PURE__ */ jsx40(
1892
1920
  Link,
1893
1921
  {
1894
1922
  href,
@@ -1900,7 +1928,7 @@ var NavClickable = forwardRef6(function NavClickable2({ href, onClick, linkCompo
1900
1928
  }
1901
1929
  );
1902
1930
  }
1903
- return /* @__PURE__ */ jsx39(
1931
+ return /* @__PURE__ */ jsx40(
1904
1932
  "a",
1905
1933
  {
1906
1934
  href,
@@ -1912,7 +1940,7 @@ var NavClickable = forwardRef6(function NavClickable2({ href, onClick, linkCompo
1912
1940
  }
1913
1941
  );
1914
1942
  }
1915
- return /* @__PURE__ */ jsx39(
1943
+ return /* @__PURE__ */ jsx40(
1916
1944
  "button",
1917
1945
  {
1918
1946
  type: "button",
@@ -1943,11 +1971,11 @@ var UpperPart = ({
1943
1971
  ),
1944
1972
  children: [
1945
1973
  /* @__PURE__ */ jsxs23("div", { className: "flex items-stretch", children: [
1946
- /* @__PURE__ */ jsx39("div", { className: "flex w-14 shrink-0 items-center justify-center px-3", children: /* @__PURE__ */ jsx39(NavIconButton, { ...logo, linkComponent }) }),
1974
+ /* @__PURE__ */ jsx40("div", { className: "flex w-14 shrink-0 items-center justify-center px-3", children: /* @__PURE__ */ jsx40(NavIconButton, { ...logo, linkComponent }) }),
1947
1975
  /* @__PURE__ */ jsxs23("div", { className: "flex items-stretch", children: [
1948
- /* @__PURE__ */ jsx39("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" }),
1976
+ /* @__PURE__ */ jsx40("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" }),
1949
1977
  upperPartItemList.map((item) => /* @__PURE__ */ jsxs23(Fragment2, { children: [
1950
- /* @__PURE__ */ jsx39(
1978
+ /* @__PURE__ */ jsx40(
1951
1979
  UpperPartTab,
1952
1980
  {
1953
1981
  label: item.label,
@@ -1960,15 +1988,15 @@ var UpperPart = ({
1960
1988
  }
1961
1989
  }
1962
1990
  ),
1963
- /* @__PURE__ */ jsx39("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" })
1991
+ /* @__PURE__ */ jsx40("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" })
1964
1992
  ] }, item.id ?? item.label))
1965
1993
  ] })
1966
1994
  ] }),
1967
1995
  /* @__PURE__ */ jsxs23("div", { className: "flex items-stretch", children: [
1968
- /* @__PURE__ */ jsx39("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" }),
1996
+ /* @__PURE__ */ jsx40("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" }),
1969
1997
  upperPartIconList.map((icon, index) => /* @__PURE__ */ jsxs23(Fragment2, { children: [
1970
- /* @__PURE__ */ jsx39(NavIconButton, { ...icon, linkComponent }),
1971
- /* @__PURE__ */ jsx39("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" })
1998
+ /* @__PURE__ */ jsx40(NavIconButton, { ...icon, linkComponent }),
1999
+ /* @__PURE__ */ jsx40("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" })
1972
2000
  ] }, icon.id ?? icon.src ?? icon.label ?? index))
1973
2001
  ] })
1974
2002
  ]
@@ -1998,8 +2026,8 @@ var UpperPartTab = ({
1998
2026
  className
1999
2027
  ),
2000
2028
  children: [
2001
- /* @__PURE__ */ jsx39("span", { className: cn("px-5 text-head1-medium", selected ? "text-strong" : "text-quaternary"), children: label }),
2002
- /* @__PURE__ */ jsx39("span", { className: cn("h-0.5 w-full", selected ? "bg-black" : "bg-transparent") })
2029
+ /* @__PURE__ */ jsx40("span", { className: cn("px-5 text-head1-medium", selected ? "text-strong" : "text-quaternary"), children: label }),
2030
+ /* @__PURE__ */ jsx40("span", { className: cn("h-0.5 w-full", selected ? "bg-black" : "bg-transparent") })
2003
2031
  ]
2004
2032
  }
2005
2033
  );
@@ -2024,9 +2052,9 @@ var NavIconButton = forwardRef6(
2024
2052
  className
2025
2053
  ),
2026
2054
  children: [
2027
- icon ? /* @__PURE__ */ jsx39("span", { className: "inline-flex h-6 w-6 items-center justify-center", children: icon }) : src ? /* @__PURE__ */ jsx39("img", { src, alt: alt ?? label ?? "", className: "h-6 w-6" }) : null,
2028
- label ? /* @__PURE__ */ jsx39("span", { className: cn("text-body2-regular", selected ? "text-white" : "text-secondary"), children: label }) : null,
2029
- showBadge ? /* @__PURE__ */ jsx39(
2055
+ icon ? /* @__PURE__ */ jsx40("span", { className: "inline-flex h-6 w-6 items-center justify-center", children: icon }) : src ? /* @__PURE__ */ jsx40("img", { src, alt: alt ?? label ?? "", className: "h-6 w-6" }) : null,
2056
+ label ? /* @__PURE__ */ jsx40("span", { className: cn("text-body2-regular", selected ? "text-white" : "text-secondary"), children: label }) : null,
2057
+ showBadge ? /* @__PURE__ */ jsx40(
2030
2058
  "span",
2031
2059
  {
2032
2060
  "aria-hidden": badge === true,
@@ -2057,9 +2085,9 @@ var LowerPart = ({
2057
2085
  {
2058
2086
  className: cn("w-full h-[42px] pl-14 flex items-stretch border-b border-gray02", className),
2059
2087
  children: [
2060
- /* @__PURE__ */ jsx39("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" }),
2088
+ /* @__PURE__ */ jsx40("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" }),
2061
2089
  lowerPartItemList.map((item) => /* @__PURE__ */ jsxs23(Fragment2, { children: [
2062
- /* @__PURE__ */ jsx39(
2090
+ /* @__PURE__ */ jsx40(
2063
2091
  LowerPartItemButton,
2064
2092
  {
2065
2093
  label: item.label,
@@ -2072,7 +2100,7 @@ var LowerPart = ({
2072
2100
  }
2073
2101
  }
2074
2102
  ),
2075
- /* @__PURE__ */ jsx39("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" })
2103
+ /* @__PURE__ */ jsx40("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" })
2076
2104
  ] }, item.id ?? item.label))
2077
2105
  ]
2078
2106
  }
@@ -2086,7 +2114,7 @@ var LowerPartItemButton = ({
2086
2114
  linkComponent,
2087
2115
  className
2088
2116
  }) => {
2089
- return /* @__PURE__ */ jsx39(
2117
+ return /* @__PURE__ */ jsx40(
2090
2118
  NavClickable,
2091
2119
  {
2092
2120
  href,
@@ -2106,7 +2134,7 @@ var LowerPartItemButton = ({
2106
2134
 
2107
2135
  // src/components/Toast/Toast.tsx
2108
2136
  import { forwardRef as forwardRef7, useEffect as useEffect3, useState as useState7 } from "react";
2109
- import { jsx as jsx40 } from "react/jsx-runtime";
2137
+ import { jsx as jsx41 } from "react/jsx-runtime";
2110
2138
  var EXIT_MS = 300;
2111
2139
  var Toast = forwardRef7(function Toast2({ message, open, duration = 3e3, onClose, position = "none", className }, ref) {
2112
2140
  const controlled = open !== void 0;
@@ -2129,7 +2157,7 @@ var Toast = forwardRef7(function Toast2({ message, open, duration = 3e3, onClose
2129
2157
  return () => clearTimeout(timer);
2130
2158
  }, [controlled, open, duration, onClose]);
2131
2159
  if (!mounted) return null;
2132
- const banner = /* @__PURE__ */ jsx40(
2160
+ const banner = /* @__PURE__ */ jsx41(
2133
2161
  "div",
2134
2162
  {
2135
2163
  ref,
@@ -2147,7 +2175,7 @@ var Toast = forwardRef7(function Toast2({ message, open, duration = 3e3, onClose
2147
2175
  }
2148
2176
  );
2149
2177
  if (position === "none") return banner;
2150
- return /* @__PURE__ */ jsx40(
2178
+ return /* @__PURE__ */ jsx41(
2151
2179
  "div",
2152
2180
  {
2153
2181
  className: cn(
@@ -2161,6 +2189,7 @@ var Toast = forwardRef7(function Toast2({ message, open, duration = 3e3, onClose
2161
2189
  export {
2162
2190
  Accordion,
2163
2191
  BackButton,
2192
+ Badge,
2164
2193
  BasicFormField,
2165
2194
  CTA,
2166
2195
  CategorySegment,