@hivcd-printshop/design-system 1.3.3 → 1.4.0
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.d.mts +20 -1
- package/dist/index.d.ts +20 -1
- package/dist/index.js +234 -204
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +190 -161
- package/dist/index.mjs.map +1 -1
- package/dist/style.css +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -23,6 +23,7 @@ var index_exports = {};
|
|
|
23
23
|
__export(index_exports, {
|
|
24
24
|
Accordion: () => Accordion,
|
|
25
25
|
BackButton: () => BackButton,
|
|
26
|
+
Badge: () => Badge,
|
|
26
27
|
BasicFormField: () => BasicFormField,
|
|
27
28
|
CTA: () => CTA,
|
|
28
29
|
CategorySegment: () => CategorySegment,
|
|
@@ -451,8 +452,33 @@ var BackButton = ({ onClick, className }) => {
|
|
|
451
452
|
);
|
|
452
453
|
};
|
|
453
454
|
|
|
454
|
-
// src/components/
|
|
455
|
+
// src/components/Badge/Badge.tsx
|
|
455
456
|
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
457
|
+
var variantStyles = {
|
|
458
|
+
warning: "bg-sub-warning text-strong",
|
|
459
|
+
restriction: "bg-sub-restriction text-strong",
|
|
460
|
+
outline: "bg-white border border-gray02 text-primary",
|
|
461
|
+
neutral: "bg-gray01 text-secondary",
|
|
462
|
+
solid: "bg-black text-white"
|
|
463
|
+
};
|
|
464
|
+
var Badge = ({ variant = "neutral", children, className, ...props }) => {
|
|
465
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
466
|
+
"span",
|
|
467
|
+
{
|
|
468
|
+
className: cn(
|
|
469
|
+
"inline-flex h-8 w-fit items-center justify-center px-2 py-1",
|
|
470
|
+
"text-body3-book whitespace-nowrap select-none",
|
|
471
|
+
variantStyles[variant],
|
|
472
|
+
className
|
|
473
|
+
),
|
|
474
|
+
...props,
|
|
475
|
+
children
|
|
476
|
+
}
|
|
477
|
+
);
|
|
478
|
+
};
|
|
479
|
+
|
|
480
|
+
// src/components/CTA/CTA.tsx
|
|
481
|
+
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
456
482
|
var CTA = ({
|
|
457
483
|
primary = false,
|
|
458
484
|
alert = false,
|
|
@@ -463,7 +489,7 @@ var CTA = ({
|
|
|
463
489
|
forModal = false,
|
|
464
490
|
...props
|
|
465
491
|
}) => {
|
|
466
|
-
return /* @__PURE__ */ (0,
|
|
492
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
467
493
|
"button",
|
|
468
494
|
{
|
|
469
495
|
type: "button",
|
|
@@ -491,22 +517,22 @@ var CTA = ({
|
|
|
491
517
|
};
|
|
492
518
|
|
|
493
519
|
// src/components/Column/MultiColumn.tsx
|
|
494
|
-
var
|
|
520
|
+
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
495
521
|
var MultiColumnMain = ({ children, className }) => {
|
|
496
|
-
return /* @__PURE__ */ (0,
|
|
522
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: cn("flex flex-col w-full h-full", className), children });
|
|
497
523
|
};
|
|
498
524
|
var Columns = ({ children, className }) => {
|
|
499
525
|
return (
|
|
500
526
|
// flex 래퍼를 사용하고 하위 Column들이 flex-1을 가지게 하거나,
|
|
501
527
|
// grid를 사용하여 열을 나눌 수 있어. 여기서는 flex를 활용한 균등 분할 예시야.
|
|
502
|
-
/* @__PURE__ */ (0,
|
|
528
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: cn("flex w-full h-full divide-x divide-gray02", className), children })
|
|
503
529
|
);
|
|
504
530
|
};
|
|
505
531
|
var CTAs = ({ children, className }) => {
|
|
506
532
|
if (!children) return null;
|
|
507
533
|
return (
|
|
508
534
|
// CTA 버튼들을 중앙에 배치하는 예시 (우측 정렬이 필요하면 justify-end 사용)
|
|
509
|
-
/* @__PURE__ */ (0,
|
|
535
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: cn("flex flex-col w-full h-fit", className), children })
|
|
510
536
|
);
|
|
511
537
|
};
|
|
512
538
|
var MultiColumn = Object.assign(MultiColumnMain, {
|
|
@@ -515,78 +541,78 @@ var MultiColumn = Object.assign(MultiColumnMain, {
|
|
|
515
541
|
});
|
|
516
542
|
|
|
517
543
|
// src/components/Column/Column.tsx
|
|
518
|
-
var
|
|
544
|
+
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
519
545
|
var Column = ({ className, children, header }) => {
|
|
520
|
-
return /* @__PURE__ */ (0,
|
|
521
|
-
header && /* @__PURE__ */ (0,
|
|
546
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: cn("flex flex-col gap-5", "h-full w-full px-5 py-3", className), children: [
|
|
547
|
+
header && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("h1", { className: cn("text-body1-medium text-primary"), children: header }),
|
|
522
548
|
children
|
|
523
549
|
] });
|
|
524
550
|
};
|
|
525
551
|
|
|
526
552
|
// src/components/Column/ColumnContentContainer.tsx
|
|
527
|
-
var
|
|
553
|
+
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
528
554
|
var ColumnContentContainer = ({ className, children }) => {
|
|
529
|
-
return /* @__PURE__ */ (0,
|
|
555
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: cn("flex flex-col gap-1.5 w-full h-fit", className), children });
|
|
530
556
|
};
|
|
531
557
|
|
|
532
558
|
// src/components/Column/ColumnLabel.tsx
|
|
533
|
-
var
|
|
559
|
+
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
534
560
|
var ColumnLabel = ({ className, children, subLabel, htmlFor }) => {
|
|
535
|
-
return /* @__PURE__ */ (0,
|
|
536
|
-
/* @__PURE__ */ (0,
|
|
537
|
-
subLabel && /* @__PURE__ */ (0,
|
|
561
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("label", { htmlFor, className: cn("flex gap-1.5 items-end", className), children: [
|
|
562
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: cn("text-body2-regular text-tertiary"), children }),
|
|
563
|
+
subLabel && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: cn("text-caption-book text-quaternary"), children: subLabel })
|
|
538
564
|
] });
|
|
539
565
|
};
|
|
540
566
|
|
|
541
567
|
// src/components/Column/ColumnText.tsx
|
|
542
|
-
var
|
|
568
|
+
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
543
569
|
var ColumnTextStyle = "text-body3-book text-strong";
|
|
544
570
|
var ModalTextStyle = "text-body1-regular text-primary";
|
|
545
571
|
var ColumnText = ({ className, alert = false, children, onClick }) => {
|
|
546
|
-
return /* @__PURE__ */ (0,
|
|
572
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: cn(ColumnTextStyle, alert && "text-danger", className), onClick, children: children ? children : "-" });
|
|
547
573
|
};
|
|
548
574
|
|
|
549
575
|
// src/components/Column/ColumnSubTitle.tsx
|
|
550
|
-
var
|
|
576
|
+
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
551
577
|
var ColumnSubTitle = ({
|
|
552
578
|
className,
|
|
553
579
|
children,
|
|
554
580
|
action,
|
|
555
581
|
as: Tag2 = "h2"
|
|
556
582
|
}) => {
|
|
557
|
-
return /* @__PURE__ */ (0,
|
|
558
|
-
/* @__PURE__ */ (0,
|
|
559
|
-
action && /* @__PURE__ */ (0,
|
|
583
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(Tag2, { className: cn("flex items-center justify-between gap-1.5", "w-full", className), children: [
|
|
584
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: cn("text-body1-medium text-primary"), children }),
|
|
585
|
+
action && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "flex shrink-0 items-center", children: action })
|
|
560
586
|
] });
|
|
561
587
|
};
|
|
562
588
|
|
|
563
589
|
// src/components/Column/ColumnDescription.tsx
|
|
564
|
-
var
|
|
590
|
+
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
565
591
|
var ColumnDescription = ({
|
|
566
592
|
className,
|
|
567
593
|
children,
|
|
568
594
|
bullet = true
|
|
569
595
|
}) => {
|
|
570
|
-
return /* @__PURE__ */ (0,
|
|
571
|
-
bullet && /* @__PURE__ */ (0,
|
|
572
|
-
/* @__PURE__ */ (0,
|
|
596
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: cn("flex items-start gap-3", className), children: [
|
|
597
|
+
bullet && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "flex shrink-0 items-center py-1", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(IconCompass, { className: "size-4" }) }),
|
|
598
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: "min-w-0 flex-1 whitespace-pre-line text-body3-book text-primary", children })
|
|
573
599
|
] });
|
|
574
600
|
};
|
|
575
601
|
var ColumnDescriptionList = ({ className, children }) => {
|
|
576
|
-
return /* @__PURE__ */ (0,
|
|
602
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: cn("flex flex-col gap-4", className), children });
|
|
577
603
|
};
|
|
578
604
|
|
|
579
605
|
// src/components/Form/BasicFormField.tsx
|
|
580
|
-
var
|
|
606
|
+
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
581
607
|
var BasicFormField = ({
|
|
582
608
|
children,
|
|
583
609
|
isDanger,
|
|
584
610
|
dangerText,
|
|
585
611
|
className
|
|
586
612
|
}) => {
|
|
587
|
-
return /* @__PURE__ */ (0,
|
|
613
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: cn("flex flex-col gap-1.5", className), children: [
|
|
588
614
|
children,
|
|
589
|
-
isDanger && dangerText && /* @__PURE__ */ (0,
|
|
615
|
+
isDanger && dangerText && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: "text-caption-book text-danger", children: dangerText })
|
|
590
616
|
] });
|
|
591
617
|
};
|
|
592
618
|
var getInputStyles = (isDanger, additionalClass) => {
|
|
@@ -597,6 +623,9 @@ var getInputStyles = (isDanger, additionalClass) => {
|
|
|
597
623
|
"bg-white transition-colors",
|
|
598
624
|
ColumnTextStyle,
|
|
599
625
|
"text-primary placeholder:text-quaternary",
|
|
626
|
+
// 비활성(disabled) 상태: 배경/글자를 죽이고 커서 차단
|
|
627
|
+
"disabled:bg-gray00 disabled:text-quaternary disabled:cursor-not-allowed",
|
|
628
|
+
"disabled:placeholder:text-quaternary",
|
|
600
629
|
isDanger && "border-danger",
|
|
601
630
|
// 경고 시 빨간 테두리 (#E42939)
|
|
602
631
|
additionalClass
|
|
@@ -605,15 +634,15 @@ var getInputStyles = (isDanger, additionalClass) => {
|
|
|
605
634
|
};
|
|
606
635
|
|
|
607
636
|
// src/components/Form/FormText.tsx
|
|
608
|
-
var
|
|
637
|
+
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
609
638
|
var FormText = ({ className, isDanger, dangerText, ...props }) => {
|
|
610
|
-
return /* @__PURE__ */ (0,
|
|
639
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("input", { type: "text", className: getInputStyles(isDanger, className), ...props }) });
|
|
611
640
|
};
|
|
612
641
|
|
|
613
642
|
// src/components/Form/FormTextArea.tsx
|
|
614
|
-
var
|
|
643
|
+
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
615
644
|
var FormTextArea = ({ className, isDanger, dangerText, ...props }) => {
|
|
616
|
-
return /* @__PURE__ */ (0,
|
|
645
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
617
646
|
"textarea",
|
|
618
647
|
{
|
|
619
648
|
className: getInputStyles(isDanger, "resize-none h-30 px-4 py-2.5 " + (className || "")),
|
|
@@ -623,19 +652,19 @@ var FormTextArea = ({ className, isDanger, dangerText, ...props }) => {
|
|
|
623
652
|
};
|
|
624
653
|
|
|
625
654
|
// src/components/Form/FormNumber.tsx
|
|
626
|
-
var
|
|
655
|
+
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
627
656
|
var FormNumber = ({ className, isDanger, dangerText, ...props }) => {
|
|
628
|
-
return /* @__PURE__ */ (0,
|
|
657
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("input", { type: "number", className: getInputStyles(isDanger, className), ...props }) });
|
|
629
658
|
};
|
|
630
659
|
|
|
631
660
|
// src/components/Form/FormPassword.tsx
|
|
632
|
-
var
|
|
661
|
+
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
633
662
|
var FormPassword = ({ className, isDanger, dangerText, ...props }) => {
|
|
634
|
-
return /* @__PURE__ */ (0,
|
|
663
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("input", { type: "password", className: getInputStyles(isDanger, className), ...props }) });
|
|
635
664
|
};
|
|
636
665
|
|
|
637
666
|
// src/components/Form/FormTel.tsx
|
|
638
|
-
var
|
|
667
|
+
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
639
668
|
var FormTel = ({ className, isDanger, dangerText, onChange, ...props }) => {
|
|
640
669
|
const handlePhoneChange = (e) => {
|
|
641
670
|
const rawValue = e.target.value.replace(/[^0-9]/g, "");
|
|
@@ -647,7 +676,7 @@ var FormTel = ({ className, isDanger, dangerText, onChange, ...props }) => {
|
|
|
647
676
|
e.target.value = formattedValue;
|
|
648
677
|
if (onChange) onChange(e);
|
|
649
678
|
};
|
|
650
|
-
return /* @__PURE__ */ (0,
|
|
679
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
651
680
|
"input",
|
|
652
681
|
{
|
|
653
682
|
type: "tel",
|
|
@@ -661,7 +690,7 @@ var FormTel = ({ className, isDanger, dangerText, onChange, ...props }) => {
|
|
|
661
690
|
|
|
662
691
|
// src/components/Form/FormColor.tsx
|
|
663
692
|
var import_react3 = require("react");
|
|
664
|
-
var
|
|
693
|
+
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
665
694
|
var FormColor = ({
|
|
666
695
|
className,
|
|
667
696
|
isDanger,
|
|
@@ -679,7 +708,7 @@ var FormColor = ({
|
|
|
679
708
|
setInternalColor(e.target.value);
|
|
680
709
|
onChange?.(e);
|
|
681
710
|
};
|
|
682
|
-
return /* @__PURE__ */ (0,
|
|
711
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
683
712
|
"label",
|
|
684
713
|
{
|
|
685
714
|
className: getInputStyles(
|
|
@@ -688,7 +717,7 @@ var FormColor = ({
|
|
|
688
717
|
"flex items-center gap-2 relative focus-within:border-black focus-within:hover:bg-white" + (className || "")
|
|
689
718
|
),
|
|
690
719
|
children: [
|
|
691
|
-
/* @__PURE__ */ (0,
|
|
720
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "w-6 h-6 shrink-0 overflow-hidden", style: { backgroundColor: color }, children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
692
721
|
"input",
|
|
693
722
|
{
|
|
694
723
|
type: "color",
|
|
@@ -698,7 +727,7 @@ var FormColor = ({
|
|
|
698
727
|
...props
|
|
699
728
|
}
|
|
700
729
|
) }),
|
|
701
|
-
/* @__PURE__ */ (0,
|
|
730
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "text-primary text-body3-regular uppercase flex-1 select-none", children: color })
|
|
702
731
|
]
|
|
703
732
|
}
|
|
704
733
|
) });
|
|
@@ -706,7 +735,7 @@ var FormColor = ({
|
|
|
706
735
|
|
|
707
736
|
// src/components/Form/FormFile.tsx
|
|
708
737
|
var import_react4 = require("react");
|
|
709
|
-
var
|
|
738
|
+
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
710
739
|
var FormFile = ({
|
|
711
740
|
className,
|
|
712
741
|
isDanger,
|
|
@@ -767,7 +796,7 @@ var FormFile = ({
|
|
|
767
796
|
}
|
|
768
797
|
};
|
|
769
798
|
const displayFileName = selectedFile?.name || (fileUrl ? fileUrl.split("/").pop() : null);
|
|
770
|
-
return /* @__PURE__ */ (0,
|
|
799
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
|
|
771
800
|
"div",
|
|
772
801
|
{
|
|
773
802
|
className: getInputStyles(
|
|
@@ -780,7 +809,7 @@ var FormFile = ({
|
|
|
780
809
|
)
|
|
781
810
|
),
|
|
782
811
|
children: [
|
|
783
|
-
displayFileName && /* @__PURE__ */ (0,
|
|
812
|
+
displayFileName && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
784
813
|
"span",
|
|
785
814
|
{
|
|
786
815
|
onClick: handleDownload,
|
|
@@ -789,9 +818,9 @@ var FormFile = ({
|
|
|
789
818
|
children: displayFileName
|
|
790
819
|
}
|
|
791
820
|
),
|
|
792
|
-
/* @__PURE__ */ (0,
|
|
793
|
-
/* @__PURE__ */ (0,
|
|
794
|
-
/* @__PURE__ */ (0,
|
|
821
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("label", { className: "shrink-0 px-1 -mx-1 cursor-pointer", children: [
|
|
822
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "text-primary text-caption-regular underline", children: displayFileName ? "\uB2E4\uC2DC \uCCA8\uBD80" : "\uD30C\uC77C \uCCA8\uBD80" }),
|
|
823
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)("input", { type: "file", className: "hidden", onChange: handleFileChange, ...props })
|
|
795
824
|
] })
|
|
796
825
|
]
|
|
797
826
|
}
|
|
@@ -799,7 +828,7 @@ var FormFile = ({
|
|
|
799
828
|
};
|
|
800
829
|
|
|
801
830
|
// src/components/Form/FormCheckBox.tsx
|
|
802
|
-
var
|
|
831
|
+
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
803
832
|
var FormCheckBox = ({
|
|
804
833
|
isChecked,
|
|
805
834
|
setIsChecked,
|
|
@@ -808,7 +837,7 @@ var FormCheckBox = ({
|
|
|
808
837
|
textStyle,
|
|
809
838
|
...props
|
|
810
839
|
}) => {
|
|
811
|
-
return /* @__PURE__ */ (0,
|
|
840
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
|
|
812
841
|
"label",
|
|
813
842
|
{
|
|
814
843
|
className: cn(
|
|
@@ -819,7 +848,7 @@ var FormCheckBox = ({
|
|
|
819
848
|
className
|
|
820
849
|
),
|
|
821
850
|
children: [
|
|
822
|
-
/* @__PURE__ */ (0,
|
|
851
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
823
852
|
"input",
|
|
824
853
|
{
|
|
825
854
|
type: "checkbox",
|
|
@@ -829,14 +858,14 @@ var FormCheckBox = ({
|
|
|
829
858
|
...props
|
|
830
859
|
}
|
|
831
860
|
),
|
|
832
|
-
/* @__PURE__ */ (0,
|
|
861
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
833
862
|
"div",
|
|
834
863
|
{
|
|
835
864
|
className: cn(
|
|
836
865
|
"flex items-center justify-center w-5 h-5 shrink-0 rounded transition-colors",
|
|
837
866
|
"group-hover:bg-gray00 group-active:bg-gray01"
|
|
838
867
|
),
|
|
839
|
-
children: /* @__PURE__ */ (0,
|
|
868
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
840
869
|
"div",
|
|
841
870
|
{
|
|
842
871
|
className: cn(
|
|
@@ -846,12 +875,12 @@ var FormCheckBox = ({
|
|
|
846
875
|
// 💡 3. 키보드 Tab 이동 시 접근성 향상 (포커스 링 표시)
|
|
847
876
|
"peer-focus-visible:ring-2 peer-focus-visible:ring-black peer-focus-visible:ring-offset-1"
|
|
848
877
|
),
|
|
849
|
-
children: isChecked && /* @__PURE__ */ (0,
|
|
878
|
+
children: isChecked && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(IconCheck, {})
|
|
850
879
|
}
|
|
851
880
|
)
|
|
852
881
|
}
|
|
853
882
|
),
|
|
854
|
-
children && /* @__PURE__ */ (0,
|
|
883
|
+
children && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { className: cn("text-body3-book text-primary", textStyle), children })
|
|
855
884
|
]
|
|
856
885
|
}
|
|
857
886
|
);
|
|
@@ -861,14 +890,14 @@ var FormCheckBox = ({
|
|
|
861
890
|
var import_react5 = require("react");
|
|
862
891
|
|
|
863
892
|
// src/components/Form/SelectBoxOption.tsx
|
|
864
|
-
var
|
|
893
|
+
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
865
894
|
var SelectBoxOption = ({
|
|
866
895
|
label,
|
|
867
896
|
onClick,
|
|
868
897
|
// selectedLabel,
|
|
869
898
|
className
|
|
870
899
|
}) => {
|
|
871
|
-
return /* @__PURE__ */ (0,
|
|
900
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
872
901
|
"li",
|
|
873
902
|
{
|
|
874
903
|
onClick,
|
|
@@ -890,7 +919,7 @@ var SelectBoxOption = ({
|
|
|
890
919
|
};
|
|
891
920
|
|
|
892
921
|
// src/components/Form/FormSelectBox.tsx
|
|
893
|
-
var
|
|
922
|
+
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
894
923
|
var FormSelectBox = ({
|
|
895
924
|
options,
|
|
896
925
|
value,
|
|
@@ -913,8 +942,8 @@ var FormSelectBox = ({
|
|
|
913
942
|
document.removeEventListener("mousedown", handleClickOutside);
|
|
914
943
|
};
|
|
915
944
|
}, []);
|
|
916
|
-
return /* @__PURE__ */ (0,
|
|
917
|
-
/* @__PURE__ */ (0,
|
|
945
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { ref: containerRef, className: "relative w-full", children: [
|
|
946
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
918
947
|
"div",
|
|
919
948
|
{
|
|
920
949
|
tabIndex: 0,
|
|
@@ -934,8 +963,8 @@ var FormSelectBox = ({
|
|
|
934
963
|
setIsOpen((prev) => !prev);
|
|
935
964
|
},
|
|
936
965
|
children: [
|
|
937
|
-
/* @__PURE__ */ (0,
|
|
938
|
-
/* @__PURE__ */ (0,
|
|
966
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: value ? "text-primary" : "text-quaternary", children: value || placeholder }),
|
|
967
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
939
968
|
IconChevronDownXS,
|
|
940
969
|
{
|
|
941
970
|
className: cn("text-gray06 transition-transform", isOpen && "rotate-180"),
|
|
@@ -945,7 +974,7 @@ var FormSelectBox = ({
|
|
|
945
974
|
]
|
|
946
975
|
}
|
|
947
976
|
),
|
|
948
|
-
isOpen && /* @__PURE__ */ (0,
|
|
977
|
+
isOpen && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
949
978
|
"ul",
|
|
950
979
|
{
|
|
951
980
|
className: cn(
|
|
@@ -955,7 +984,7 @@ var FormSelectBox = ({
|
|
|
955
984
|
"max-h-50 overflow-y-auto"
|
|
956
985
|
// 항목이 너무 많으면 스크롤 생성 (디자인 스펙: 그림자 없음)
|
|
957
986
|
),
|
|
958
|
-
children: options.map((option) => /* @__PURE__ */ (0,
|
|
987
|
+
children: options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
959
988
|
SelectBoxOption,
|
|
960
989
|
{
|
|
961
990
|
label: option,
|
|
@@ -972,7 +1001,7 @@ var FormSelectBox = ({
|
|
|
972
1001
|
};
|
|
973
1002
|
|
|
974
1003
|
// src/components/TextButton/TextButton.tsx
|
|
975
|
-
var
|
|
1004
|
+
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
976
1005
|
var TextButton = ({
|
|
977
1006
|
children,
|
|
978
1007
|
icon,
|
|
@@ -982,10 +1011,10 @@ var TextButton = ({
|
|
|
982
1011
|
className,
|
|
983
1012
|
...props
|
|
984
1013
|
}) => {
|
|
985
|
-
const content = /* @__PURE__ */ (0,
|
|
986
|
-
icon && iconPosition === "left" && /* @__PURE__ */ (0,
|
|
987
|
-
/* @__PURE__ */ (0,
|
|
988
|
-
icon && iconPosition === "right" && /* @__PURE__ */ (0,
|
|
1014
|
+
const content = /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(import_jsx_runtime24.Fragment, { children: [
|
|
1015
|
+
icon && iconPosition === "left" && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "flex shrink-0 items-center", children: icon }),
|
|
1016
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: cn(underline && "underline underline-offset-2"), children }),
|
|
1017
|
+
icon && iconPosition === "right" && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "flex shrink-0 items-center", children: icon })
|
|
989
1018
|
] });
|
|
990
1019
|
const classes = cn(
|
|
991
1020
|
"inline-flex w-fit items-center gap-1 px-1 -mx-1",
|
|
@@ -1000,15 +1029,15 @@ var TextButton = ({
|
|
|
1000
1029
|
);
|
|
1001
1030
|
if (props.href !== void 0) {
|
|
1002
1031
|
const { href, ...rest } = props;
|
|
1003
|
-
return /* @__PURE__ */ (0,
|
|
1032
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("a", { href, className: classes, ...rest, children: content });
|
|
1004
1033
|
}
|
|
1005
1034
|
const buttonProps = props;
|
|
1006
|
-
return /* @__PURE__ */ (0,
|
|
1035
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("button", { type: "button", className: classes, ...buttonProps, children: content });
|
|
1007
1036
|
};
|
|
1008
1037
|
|
|
1009
1038
|
// src/components/Dropdown/Dropdown.tsx
|
|
1010
1039
|
var import_react6 = require("react");
|
|
1011
|
-
var
|
|
1040
|
+
var import_jsx_runtime25 = require("react/jsx-runtime");
|
|
1012
1041
|
var Dropdown = ({ selectedLabel, setSelectedLabel, labels, className }) => {
|
|
1013
1042
|
const [isOpen, setIsOpen] = (0, import_react6.useState)(false);
|
|
1014
1043
|
const containerRef = (0, import_react6.useRef)(null);
|
|
@@ -1023,8 +1052,8 @@ var Dropdown = ({ selectedLabel, setSelectedLabel, labels, className }) => {
|
|
|
1023
1052
|
document.removeEventListener("mousedown", handleClickOutside);
|
|
1024
1053
|
};
|
|
1025
1054
|
}, []);
|
|
1026
|
-
return /* @__PURE__ */ (0,
|
|
1027
|
-
/* @__PURE__ */ (0,
|
|
1055
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { ref: containerRef, className: "relative", children: [
|
|
1056
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
|
|
1028
1057
|
"div",
|
|
1029
1058
|
{
|
|
1030
1059
|
className: cn(
|
|
@@ -1037,8 +1066,8 @@ var Dropdown = ({ selectedLabel, setSelectedLabel, labels, className }) => {
|
|
|
1037
1066
|
),
|
|
1038
1067
|
onClick: () => setIsOpen((prev) => !prev),
|
|
1039
1068
|
children: [
|
|
1040
|
-
/* @__PURE__ */ (0,
|
|
1041
|
-
/* @__PURE__ */ (0,
|
|
1069
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)("p", { children: selectedLabel }),
|
|
1070
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
1042
1071
|
IconChevronDownXS,
|
|
1043
1072
|
{
|
|
1044
1073
|
className: cn("text-gray06 transition-transform", isOpen && "rotate-180"),
|
|
@@ -1048,7 +1077,7 @@ var Dropdown = ({ selectedLabel, setSelectedLabel, labels, className }) => {
|
|
|
1048
1077
|
]
|
|
1049
1078
|
}
|
|
1050
1079
|
),
|
|
1051
|
-
isOpen && /* @__PURE__ */ (0,
|
|
1080
|
+
isOpen && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: cn("absolute top-full right-0 z-10", "box-border border border-gray02"), children: labels.map((label) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
1052
1081
|
SelectBoxOption,
|
|
1053
1082
|
{
|
|
1054
1083
|
label,
|
|
@@ -1064,7 +1093,7 @@ var Dropdown = ({ selectedLabel, setSelectedLabel, labels, className }) => {
|
|
|
1064
1093
|
};
|
|
1065
1094
|
|
|
1066
1095
|
// src/components/ListView/List.tsx
|
|
1067
|
-
var
|
|
1096
|
+
var import_jsx_runtime26 = require("react/jsx-runtime");
|
|
1068
1097
|
function List({
|
|
1069
1098
|
className,
|
|
1070
1099
|
label1,
|
|
@@ -1077,7 +1106,7 @@ function List({
|
|
|
1077
1106
|
children,
|
|
1078
1107
|
...props
|
|
1079
1108
|
}) {
|
|
1080
|
-
return /* @__PURE__ */ (0,
|
|
1109
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
|
|
1081
1110
|
"li",
|
|
1082
1111
|
{
|
|
1083
1112
|
className: cn(
|
|
@@ -1092,11 +1121,11 @@ function List({
|
|
|
1092
1121
|
...props,
|
|
1093
1122
|
onClick,
|
|
1094
1123
|
children: [
|
|
1095
|
-
/* @__PURE__ */ (0,
|
|
1096
|
-
/* @__PURE__ */ (0,
|
|
1097
|
-
/* @__PURE__ */ (0,
|
|
1124
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("section", { className: cn("flex items-center gap-4"), children: [
|
|
1125
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)("label", { className: cn("text-body2-regular"), children: label1 ? label1 : "-" }),
|
|
1126
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: cn("flex items-center gap-2"), children })
|
|
1098
1127
|
] }),
|
|
1099
|
-
/* @__PURE__ */ (0,
|
|
1128
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
1100
1129
|
"label",
|
|
1101
1130
|
{
|
|
1102
1131
|
className: cn(
|
|
@@ -1108,18 +1137,18 @@ function List({
|
|
|
1108
1137
|
children: label2 ? label2 : "-"
|
|
1109
1138
|
}
|
|
1110
1139
|
),
|
|
1111
|
-
/* @__PURE__ */ (0,
|
|
1140
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)("label", { className: cn("text-body3-regular text-right"), children: label3 ? label3 : "-" })
|
|
1112
1141
|
]
|
|
1113
1142
|
}
|
|
1114
1143
|
);
|
|
1115
1144
|
}
|
|
1116
1145
|
|
|
1117
1146
|
// src/components/Modal/Modal.tsx
|
|
1118
|
-
var
|
|
1147
|
+
var import_jsx_runtime27 = require("react/jsx-runtime");
|
|
1119
1148
|
var ModalBase = ({ isVisible, header, children, className, onClose }) => {
|
|
1120
1149
|
if (!isVisible) return null;
|
|
1121
|
-
return /* @__PURE__ */ (0,
|
|
1122
|
-
/* @__PURE__ */ (0,
|
|
1150
|
+
return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: cn("fixed inset-0 z-50"), children: [
|
|
1151
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
1123
1152
|
"div",
|
|
1124
1153
|
{
|
|
1125
1154
|
"aria-hidden": true,
|
|
@@ -1127,7 +1156,7 @@ var ModalBase = ({ isVisible, header, children, className, onClose }) => {
|
|
|
1127
1156
|
className: cn("fixed inset-0 z-1000 bg-[#212121]/30", onClose && "cursor-pointer")
|
|
1128
1157
|
}
|
|
1129
1158
|
),
|
|
1130
|
-
/* @__PURE__ */ (0,
|
|
1159
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: "fixed inset-0 z-1001 flex items-center justify-center pointer-events-none", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
|
|
1131
1160
|
"main",
|
|
1132
1161
|
{
|
|
1133
1162
|
role: "dialog",
|
|
@@ -1140,7 +1169,7 @@ var ModalBase = ({ isVisible, header, children, className, onClose }) => {
|
|
|
1140
1169
|
className
|
|
1141
1170
|
),
|
|
1142
1171
|
children: [
|
|
1143
|
-
onClose && /* @__PURE__ */ (0,
|
|
1172
|
+
onClose && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
1144
1173
|
"button",
|
|
1145
1174
|
{
|
|
1146
1175
|
type: "button",
|
|
@@ -1150,10 +1179,10 @@ var ModalBase = ({ isVisible, header, children, className, onClose }) => {
|
|
|
1150
1179
|
"absolute right-3 top-3 flex size-8 items-center justify-center",
|
|
1151
1180
|
"text-tertiary transition-colors hover:bg-gray00 active:bg-gray01 cursor-pointer"
|
|
1152
1181
|
),
|
|
1153
|
-
children: /* @__PURE__ */ (0,
|
|
1182
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(IconClose, {})
|
|
1154
1183
|
}
|
|
1155
1184
|
),
|
|
1156
|
-
/* @__PURE__ */ (0,
|
|
1185
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)("h1", { className: cn("text-head-lg-medium text-strong"), children: header }),
|
|
1157
1186
|
children
|
|
1158
1187
|
]
|
|
1159
1188
|
}
|
|
@@ -1161,7 +1190,7 @@ var ModalBase = ({ isVisible, header, children, className, onClose }) => {
|
|
|
1161
1190
|
] });
|
|
1162
1191
|
};
|
|
1163
1192
|
var Contents = ({ children, className }) => {
|
|
1164
|
-
return /* @__PURE__ */ (0,
|
|
1193
|
+
return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
1165
1194
|
"div",
|
|
1166
1195
|
{
|
|
1167
1196
|
className: cn(
|
|
@@ -1178,7 +1207,7 @@ var CTAs2 = ({ children, className, row = false }) => {
|
|
|
1178
1207
|
if (!children) return null;
|
|
1179
1208
|
return (
|
|
1180
1209
|
// CTA 버튼들을 중앙에 배치하는 예시 (우측 정렬이 필요하면 justify-end 사용)
|
|
1181
|
-
/* @__PURE__ */ (0,
|
|
1210
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
1182
1211
|
"div",
|
|
1183
1212
|
{
|
|
1184
1213
|
className: cn(
|
|
@@ -1197,9 +1226,9 @@ var Modal = Object.assign(ModalBase, {
|
|
|
1197
1226
|
});
|
|
1198
1227
|
|
|
1199
1228
|
// src/components/Modal/ModalText.tsx
|
|
1200
|
-
var
|
|
1229
|
+
var import_jsx_runtime28 = require("react/jsx-runtime");
|
|
1201
1230
|
var ModalText = ({ children, className }) => {
|
|
1202
|
-
return /* @__PURE__ */ (0,
|
|
1231
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
1203
1232
|
"div",
|
|
1204
1233
|
{
|
|
1205
1234
|
className: cn(
|
|
@@ -1215,14 +1244,14 @@ var ModalText = ({ children, className }) => {
|
|
|
1215
1244
|
};
|
|
1216
1245
|
|
|
1217
1246
|
// src/components/createPost/CategorySegment.tsx
|
|
1218
|
-
var
|
|
1247
|
+
var import_jsx_runtime29 = require("react/jsx-runtime");
|
|
1219
1248
|
var CategorySegment = ({
|
|
1220
1249
|
selected = false,
|
|
1221
1250
|
label,
|
|
1222
1251
|
className,
|
|
1223
1252
|
onClick
|
|
1224
1253
|
}) => {
|
|
1225
|
-
return /* @__PURE__ */ (0,
|
|
1254
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
1226
1255
|
"div",
|
|
1227
1256
|
{
|
|
1228
1257
|
className: cn(
|
|
@@ -1242,7 +1271,7 @@ var CategorySegment = ({
|
|
|
1242
1271
|
};
|
|
1243
1272
|
|
|
1244
1273
|
// src/components/createPost/CategorySegmentedControl.tsx
|
|
1245
|
-
var
|
|
1274
|
+
var import_jsx_runtime30 = require("react/jsx-runtime");
|
|
1246
1275
|
var categorySegments = {
|
|
1247
1276
|
info: ["\uACF5\uC6A9 \uBB3C\uD488", "\uC77C\uBC18 \uAE30\uC790\uC7AC", "\uD2B9\uC218 \uAE30\uC790\uC7AC"],
|
|
1248
1277
|
archive: ["\uD504\uB9B0\uD2B8\uC2E4", "\uD64D\uC775\uC2DC\uB514"],
|
|
@@ -1256,8 +1285,8 @@ var CategorySegmentedControl = ({
|
|
|
1256
1285
|
className
|
|
1257
1286
|
}) => {
|
|
1258
1287
|
const segments = categorySegments[variable];
|
|
1259
|
-
return /* @__PURE__ */ (0,
|
|
1260
|
-
/* @__PURE__ */ (0,
|
|
1288
|
+
return /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: cn("w-full h-fit flex items-center justify-start", className), children: [
|
|
1289
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
1261
1290
|
"div",
|
|
1262
1291
|
{
|
|
1263
1292
|
className: cn(
|
|
@@ -1270,7 +1299,7 @@ var CategorySegmentedControl = ({
|
|
|
1270
1299
|
children: variable === "infoTag" ? "\uD0DC\uADF8 \uC120\uD0DD" : "\uCE74\uD14C\uACE0\uB9AC \uC120\uD0DD"
|
|
1271
1300
|
}
|
|
1272
1301
|
),
|
|
1273
|
-
segments.map((label) => /* @__PURE__ */ (0,
|
|
1302
|
+
segments.map((label) => /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
1274
1303
|
CategorySegment,
|
|
1275
1304
|
{
|
|
1276
1305
|
label,
|
|
@@ -1283,9 +1312,9 @@ var CategorySegmentedControl = ({
|
|
|
1283
1312
|
};
|
|
1284
1313
|
|
|
1285
1314
|
// src/components/createPost/TitleInput.tsx
|
|
1286
|
-
var
|
|
1315
|
+
var import_jsx_runtime31 = require("react/jsx-runtime");
|
|
1287
1316
|
var TitleInput = ({ title, onChange, className }) => {
|
|
1288
|
-
return /* @__PURE__ */ (0,
|
|
1317
|
+
return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
|
|
1289
1318
|
"input",
|
|
1290
1319
|
{
|
|
1291
1320
|
type: "text",
|
|
@@ -1305,9 +1334,9 @@ var TitleInput = ({ title, onChange, className }) => {
|
|
|
1305
1334
|
};
|
|
1306
1335
|
|
|
1307
1336
|
// src/components/notice/NoticeBadge.tsx
|
|
1308
|
-
var
|
|
1337
|
+
var import_jsx_runtime32 = require("react/jsx-runtime");
|
|
1309
1338
|
var NoticeBadge = ({ variable, className, onClick }) => {
|
|
1310
|
-
return /* @__PURE__ */ (0,
|
|
1339
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
1311
1340
|
"button",
|
|
1312
1341
|
{
|
|
1313
1342
|
type: "button",
|
|
@@ -1328,7 +1357,7 @@ var NoticeBadge = ({ variable, className, onClick }) => {
|
|
|
1328
1357
|
};
|
|
1329
1358
|
|
|
1330
1359
|
// src/components/notice/NoticeBar.tsx
|
|
1331
|
-
var
|
|
1360
|
+
var import_jsx_runtime33 = require("react/jsx-runtime");
|
|
1332
1361
|
var NoticeBar = ({
|
|
1333
1362
|
variable = "default",
|
|
1334
1363
|
badgeVariable,
|
|
@@ -1337,7 +1366,7 @@ var NoticeBar = ({
|
|
|
1337
1366
|
className,
|
|
1338
1367
|
onClick
|
|
1339
1368
|
}) => {
|
|
1340
|
-
return /* @__PURE__ */ (0,
|
|
1369
|
+
return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
|
|
1341
1370
|
"div",
|
|
1342
1371
|
{
|
|
1343
1372
|
className: cn(
|
|
@@ -1349,20 +1378,20 @@ var NoticeBar = ({
|
|
|
1349
1378
|
),
|
|
1350
1379
|
onClick,
|
|
1351
1380
|
children: [
|
|
1352
|
-
/* @__PURE__ */ (0,
|
|
1353
|
-
/* @__PURE__ */ (0,
|
|
1354
|
-
/* @__PURE__ */ (0,
|
|
1381
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("section", { className: "flex items-center gap-3", children: [
|
|
1382
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(NoticeBadge, { variable: badgeVariable }),
|
|
1383
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("h1", { className: "text-head1-medium text-strong", children: title })
|
|
1355
1384
|
] }),
|
|
1356
|
-
/* @__PURE__ */ (0,
|
|
1385
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("p", { className: "text-body3-book text-tertiary", children: date })
|
|
1357
1386
|
]
|
|
1358
1387
|
}
|
|
1359
1388
|
);
|
|
1360
1389
|
};
|
|
1361
1390
|
|
|
1362
1391
|
// src/components/SearchBar/SearchBar.tsx
|
|
1363
|
-
var
|
|
1392
|
+
var import_jsx_runtime34 = require("react/jsx-runtime");
|
|
1364
1393
|
var SearchBar = ({ value, onChange, className }) => {
|
|
1365
|
-
return /* @__PURE__ */ (0,
|
|
1394
|
+
return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(
|
|
1366
1395
|
"label",
|
|
1367
1396
|
{
|
|
1368
1397
|
className: cn(
|
|
@@ -1373,8 +1402,8 @@ var SearchBar = ({ value, onChange, className }) => {
|
|
|
1373
1402
|
className
|
|
1374
1403
|
),
|
|
1375
1404
|
children: [
|
|
1376
|
-
/* @__PURE__ */ (0,
|
|
1377
|
-
/* @__PURE__ */ (0,
|
|
1405
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)(IconSearch, {}),
|
|
1406
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
|
|
1378
1407
|
"input",
|
|
1379
1408
|
{
|
|
1380
1409
|
type: "text",
|
|
@@ -1394,7 +1423,7 @@ var SearchBar = ({ value, onChange, className }) => {
|
|
|
1394
1423
|
|
|
1395
1424
|
// src/components/SideRadioAccordion/SideRadioAccordion.tsx
|
|
1396
1425
|
var import_react7 = require("react");
|
|
1397
|
-
var
|
|
1426
|
+
var import_jsx_runtime35 = require("react/jsx-runtime");
|
|
1398
1427
|
var printColorBgClass = {
|
|
1399
1428
|
Plotter: "bg-print-plotter",
|
|
1400
1429
|
Printer: "bg-print-printer",
|
|
@@ -1438,8 +1467,8 @@ var SideRadioAccordion = (0, import_react7.forwardRef)(
|
|
|
1438
1467
|
setIsOpen(next);
|
|
1439
1468
|
onOpenChange?.(next);
|
|
1440
1469
|
};
|
|
1441
|
-
return /* @__PURE__ */ (0,
|
|
1442
|
-
/* @__PURE__ */ (0,
|
|
1470
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { ref, className: cn("w-full border-r border-gray02 bg-white", className), children: [
|
|
1471
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
1443
1472
|
Stepper,
|
|
1444
1473
|
{
|
|
1445
1474
|
step,
|
|
@@ -1450,8 +1479,8 @@ var SideRadioAccordion = (0, import_react7.forwardRef)(
|
|
|
1450
1479
|
className: cn(stickyHeader && "sticky top-0 z-10")
|
|
1451
1480
|
}
|
|
1452
1481
|
),
|
|
1453
|
-
expanded && /* @__PURE__ */ (0,
|
|
1454
|
-
radioToggleList.map((item) => /* @__PURE__ */ (0,
|
|
1482
|
+
expanded && /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: "flex flex-col divide-y divide-gray02", children: [
|
|
1483
|
+
radioToggleList.map((item) => /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
1455
1484
|
RadioToggleItem,
|
|
1456
1485
|
{
|
|
1457
1486
|
...item,
|
|
@@ -1460,22 +1489,22 @@ var SideRadioAccordion = (0, import_react7.forwardRef)(
|
|
|
1460
1489
|
},
|
|
1461
1490
|
itemKey(item)
|
|
1462
1491
|
)),
|
|
1463
|
-
quantityLimitLabel && /* @__PURE__ */ (0,
|
|
1492
|
+
quantityLimitLabel && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "px-5 py-4", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(TextButton2, { label: quantityLimitLabel, onClick: onClickQuantityLimit }) })
|
|
1464
1493
|
] })
|
|
1465
1494
|
] });
|
|
1466
1495
|
}
|
|
1467
1496
|
);
|
|
1468
1497
|
var Stepper = ({ step, title, isOpen, collapsible, onClick, className }) => {
|
|
1469
|
-
const label = /* @__PURE__ */ (0,
|
|
1498
|
+
const label = /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("span", { children: [
|
|
1470
1499
|
step,
|
|
1471
1500
|
" | ",
|
|
1472
1501
|
title
|
|
1473
1502
|
] });
|
|
1474
1503
|
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";
|
|
1475
1504
|
if (!collapsible) {
|
|
1476
|
-
return /* @__PURE__ */ (0,
|
|
1505
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: cn(base, className), children: label });
|
|
1477
1506
|
}
|
|
1478
|
-
return /* @__PURE__ */ (0,
|
|
1507
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(
|
|
1479
1508
|
"button",
|
|
1480
1509
|
{
|
|
1481
1510
|
type: "button",
|
|
@@ -1483,7 +1512,7 @@ var Stepper = ({ step, title, isOpen, collapsible, onClick, className }) => {
|
|
|
1483
1512
|
className: cn(base, "cursor-pointer hover:bg-gray00 active:bg-gray01", className),
|
|
1484
1513
|
children: [
|
|
1485
1514
|
label,
|
|
1486
|
-
/* @__PURE__ */ (0,
|
|
1515
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(IconChevronDownXS, { className: cn("transition-transform", isOpen && "rotate-180") })
|
|
1487
1516
|
]
|
|
1488
1517
|
}
|
|
1489
1518
|
);
|
|
@@ -1503,8 +1532,8 @@ var RadioToggleItem = ({
|
|
|
1503
1532
|
}) => {
|
|
1504
1533
|
const rowBg = !open ? "bg-white hover:bg-gray00" : color ? void 0 : printColor ? printColorBgClass[printColor] : "bg-gray00";
|
|
1505
1534
|
const style = open && color ? { backgroundColor: color } : void 0;
|
|
1506
|
-
return /* @__PURE__ */ (0,
|
|
1507
|
-
/* @__PURE__ */ (0,
|
|
1535
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: "w-full", children: [
|
|
1536
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(
|
|
1508
1537
|
"button",
|
|
1509
1538
|
{
|
|
1510
1539
|
type: "button",
|
|
@@ -1518,15 +1547,15 @@ var RadioToggleItem = ({
|
|
|
1518
1547
|
className
|
|
1519
1548
|
),
|
|
1520
1549
|
children: [
|
|
1521
|
-
/* @__PURE__ */ (0,
|
|
1522
|
-
/* @__PURE__ */ (0,
|
|
1550
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Radio, { selected: open }),
|
|
1551
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { children: title })
|
|
1523
1552
|
]
|
|
1524
1553
|
}
|
|
1525
1554
|
),
|
|
1526
|
-
open && /* @__PURE__ */ (0,
|
|
1527
|
-
/* @__PURE__ */ (0,
|
|
1528
|
-
badges && badges.length > 0 && /* @__PURE__ */ (0,
|
|
1529
|
-
labelTextButton && /* @__PURE__ */ (0,
|
|
1555
|
+
open && /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: "flex flex-col gap-2 px-3 py-3 bg-white", children: [
|
|
1556
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("p", { className: "text-caption-regular text-secondary", children: content }),
|
|
1557
|
+
badges && badges.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "flex flex-wrap gap-1", children: badges.map((badge) => /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Badge2, { label: badge }, badge)) }),
|
|
1558
|
+
labelTextButton && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
1530
1559
|
TextButton2,
|
|
1531
1560
|
{
|
|
1532
1561
|
label: labelTextButton,
|
|
@@ -1544,7 +1573,7 @@ var Radio = ({ selected = false, className }) => {
|
|
|
1544
1573
|
// 디자인 스펙(Figma "radio" 5:781): 24px 히트 영역 안에 10px 원만 중앙에 그려진다.
|
|
1545
1574
|
// 아이콘 자체 색은 고정, hover/pressed 시 24px 원형 배경 칩만 나타난다(gray00/gray01).
|
|
1546
1575
|
// 부모 버튼의 group-hover/active로 동기화.
|
|
1547
|
-
/* @__PURE__ */ (0,
|
|
1576
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
1548
1577
|
"span",
|
|
1549
1578
|
{
|
|
1550
1579
|
className: cn(
|
|
@@ -1552,13 +1581,13 @@ var Radio = ({ selected = false, className }) => {
|
|
|
1552
1581
|
"group-hover:bg-gray00 group-active:bg-gray01",
|
|
1553
1582
|
className
|
|
1554
1583
|
),
|
|
1555
|
-
children: /* @__PURE__ */ (0,
|
|
1584
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Icon, { className: "size-2.5" })
|
|
1556
1585
|
}
|
|
1557
1586
|
)
|
|
1558
1587
|
);
|
|
1559
1588
|
};
|
|
1560
1589
|
var TextButton2 = ({ label, onClick, showIcon = false, className }) => {
|
|
1561
|
-
return /* @__PURE__ */ (0,
|
|
1590
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(
|
|
1562
1591
|
"button",
|
|
1563
1592
|
{
|
|
1564
1593
|
type: "button",
|
|
@@ -1571,14 +1600,14 @@ var TextButton2 = ({ label, onClick, showIcon = false, className }) => {
|
|
|
1571
1600
|
className
|
|
1572
1601
|
),
|
|
1573
1602
|
children: [
|
|
1574
|
-
showIcon && /* @__PURE__ */ (0,
|
|
1603
|
+
showIcon && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(IconExclamation, {}),
|
|
1575
1604
|
label
|
|
1576
1605
|
]
|
|
1577
1606
|
}
|
|
1578
1607
|
);
|
|
1579
1608
|
};
|
|
1580
|
-
var
|
|
1581
|
-
return /* @__PURE__ */ (0,
|
|
1609
|
+
var Badge2 = ({ label, className }) => {
|
|
1610
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
1582
1611
|
"div",
|
|
1583
1612
|
{
|
|
1584
1613
|
className: cn(
|
|
@@ -1592,7 +1621,7 @@ var Badge = ({ label, className }) => {
|
|
|
1592
1621
|
};
|
|
1593
1622
|
|
|
1594
1623
|
// src/components/Tag/Tag.tsx
|
|
1595
|
-
var
|
|
1624
|
+
var import_jsx_runtime36 = require("react/jsx-runtime");
|
|
1596
1625
|
var Tag = ({
|
|
1597
1626
|
className,
|
|
1598
1627
|
children,
|
|
@@ -1602,7 +1631,7 @@ var Tag = ({
|
|
|
1602
1631
|
onClick,
|
|
1603
1632
|
...props
|
|
1604
1633
|
}) => {
|
|
1605
|
-
return /* @__PURE__ */ (0,
|
|
1634
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
1606
1635
|
"button",
|
|
1607
1636
|
{
|
|
1608
1637
|
className: cn(
|
|
@@ -1621,25 +1650,25 @@ var Tag = ({
|
|
|
1621
1650
|
disabled,
|
|
1622
1651
|
style: bgColor ? { backgroundColor: bgColor, border: "none" } : void 0,
|
|
1623
1652
|
...props,
|
|
1624
|
-
children: /* @__PURE__ */ (0,
|
|
1653
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { children })
|
|
1625
1654
|
}
|
|
1626
1655
|
);
|
|
1627
1656
|
};
|
|
1628
1657
|
|
|
1629
1658
|
// src/components/TabSwitch/TabSwitch.tsx
|
|
1630
1659
|
var import_react8 = require("react");
|
|
1631
|
-
var
|
|
1660
|
+
var import_jsx_runtime37 = require("react/jsx-runtime");
|
|
1632
1661
|
var itemKey2 = (item) => item.value ?? item.label;
|
|
1633
1662
|
var TabSwitch = (0, import_react8.forwardRef)(function TabSwitch2({ items, selected, defaultSelected, onSelect, className }, ref) {
|
|
1634
1663
|
const [selectedValue, setSelectedValue] = useControllableState(
|
|
1635
1664
|
selected,
|
|
1636
1665
|
defaultSelected ?? itemKey2(items[0])
|
|
1637
1666
|
);
|
|
1638
|
-
return /* @__PURE__ */ (0,
|
|
1667
|
+
return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { ref, className: cn("w-full border-b border-gray02", className), children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "flex items-stretch", children: items.map((item) => {
|
|
1639
1668
|
const key = itemKey2(item);
|
|
1640
1669
|
const isSelected = key === selectedValue;
|
|
1641
|
-
return /* @__PURE__ */ (0,
|
|
1642
|
-
/* @__PURE__ */ (0,
|
|
1670
|
+
return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "flex items-stretch", children: [
|
|
1671
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
|
|
1643
1672
|
"button",
|
|
1644
1673
|
{
|
|
1645
1674
|
type: "button",
|
|
@@ -1652,7 +1681,7 @@ var TabSwitch = (0, import_react8.forwardRef)(function TabSwitch2({ items, selec
|
|
|
1652
1681
|
isSelected ? "gap-2" : "pb-2.5"
|
|
1653
1682
|
),
|
|
1654
1683
|
children: [
|
|
1655
|
-
/* @__PURE__ */ (0,
|
|
1684
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
|
|
1656
1685
|
"span",
|
|
1657
1686
|
{
|
|
1658
1687
|
className: cn(
|
|
@@ -1662,11 +1691,11 @@ var TabSwitch = (0, import_react8.forwardRef)(function TabSwitch2({ items, selec
|
|
|
1662
1691
|
children: item.label
|
|
1663
1692
|
}
|
|
1664
1693
|
),
|
|
1665
|
-
isSelected && /* @__PURE__ */ (0,
|
|
1694
|
+
isSelected && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: "h-0.5 w-full bg-black" })
|
|
1666
1695
|
]
|
|
1667
1696
|
}
|
|
1668
1697
|
),
|
|
1669
|
-
/* @__PURE__ */ (0,
|
|
1698
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" })
|
|
1670
1699
|
] }, key);
|
|
1671
1700
|
}) }) });
|
|
1672
1701
|
});
|
|
@@ -1708,7 +1737,7 @@ var formatWeekRange = (weekStart) => {
|
|
|
1708
1737
|
};
|
|
1709
1738
|
|
|
1710
1739
|
// src/components/Timetable/WeekNavigation.tsx
|
|
1711
|
-
var
|
|
1740
|
+
var import_jsx_runtime38 = require("react/jsx-runtime");
|
|
1712
1741
|
var weekLabel = {
|
|
1713
1742
|
thisWeek: "\uC774\uBC88 \uC8FC",
|
|
1714
1743
|
nextWeek: "\uB2E4\uC74C \uC8FC",
|
|
@@ -1719,7 +1748,7 @@ var WeekNavigation = (0, import_react9.forwardRef)(
|
|
|
1719
1748
|
const showPrev = canPrev ?? (week ? week !== "thisWeek" : true);
|
|
1720
1749
|
const showNext = canNext ?? (week ? week !== "twoWeeksLater" : true);
|
|
1721
1750
|
const text = label ?? (week ? `${weekLabel[week]} (${formatWeekRange(date)})` : formatWeekRange(date));
|
|
1722
|
-
return /* @__PURE__ */ (0,
|
|
1751
|
+
return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
|
|
1723
1752
|
"div",
|
|
1724
1753
|
{
|
|
1725
1754
|
ref,
|
|
@@ -1731,22 +1760,22 @@ var WeekNavigation = (0, import_react9.forwardRef)(
|
|
|
1731
1760
|
className
|
|
1732
1761
|
),
|
|
1733
1762
|
children: [
|
|
1734
|
-
/* @__PURE__ */ (0,
|
|
1735
|
-
/* @__PURE__ */ (0,
|
|
1736
|
-
/* @__PURE__ */ (0,
|
|
1763
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)(ArrowButton, { direction: "left", visible: showPrev, onClick: onPrevWeek }),
|
|
1764
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "flex flex-1 items-center justify-center text-center", children: text }),
|
|
1765
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)(ArrowButton, { direction: "right", visible: showNext, onClick: onNextWeek })
|
|
1737
1766
|
]
|
|
1738
1767
|
}
|
|
1739
1768
|
);
|
|
1740
1769
|
}
|
|
1741
1770
|
);
|
|
1742
1771
|
var ArrowButton = ({ direction, visible, onClick }) => {
|
|
1743
|
-
const divider = /* @__PURE__ */ (0,
|
|
1772
|
+
const divider = /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" });
|
|
1744
1773
|
if (!visible) {
|
|
1745
|
-
return /* @__PURE__ */ (0,
|
|
1774
|
+
return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { "aria-hidden": true, className: "w-[43px]" });
|
|
1746
1775
|
}
|
|
1747
|
-
return /* @__PURE__ */ (0,
|
|
1776
|
+
return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "flex items-stretch", children: [
|
|
1748
1777
|
direction === "right" && divider,
|
|
1749
|
-
/* @__PURE__ */ (0,
|
|
1778
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
|
|
1750
1779
|
"button",
|
|
1751
1780
|
{
|
|
1752
1781
|
type: "button",
|
|
@@ -1756,7 +1785,7 @@ var ArrowButton = ({ direction, visible, onClick }) => {
|
|
|
1756
1785
|
"text-gray06 cursor-pointer transition-colors",
|
|
1757
1786
|
"hover:bg-gray00 active:bg-gray01"
|
|
1758
1787
|
),
|
|
1759
|
-
children: /* @__PURE__ */ (0,
|
|
1788
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
|
|
1760
1789
|
IconChevronDownXS,
|
|
1761
1790
|
{
|
|
1762
1791
|
className: direction === "left" ? "rotate-90" : "-rotate-90",
|
|
@@ -1770,7 +1799,7 @@ var ArrowButton = ({ direction, visible, onClick }) => {
|
|
|
1770
1799
|
};
|
|
1771
1800
|
|
|
1772
1801
|
// src/components/Timetable/Timetable.tsx
|
|
1773
|
-
var
|
|
1802
|
+
var import_jsx_runtime39 = require("react/jsx-runtime");
|
|
1774
1803
|
var printColorHoverClass = {
|
|
1775
1804
|
Plotter: "hover:bg-print-plotter",
|
|
1776
1805
|
Printer: "hover:bg-print-printer",
|
|
@@ -1793,8 +1822,8 @@ var Timetable = (0, import_react10.forwardRef)(function Timetable2({
|
|
|
1793
1822
|
canNextWeek,
|
|
1794
1823
|
className
|
|
1795
1824
|
}, ref) {
|
|
1796
|
-
return /* @__PURE__ */ (0,
|
|
1797
|
-
!hideWeekNavigation && /* @__PURE__ */ (0,
|
|
1825
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("div", { ref, className: cn(fluid && "w-full", className), children: [
|
|
1826
|
+
!hideWeekNavigation && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
|
|
1798
1827
|
WeekNavigation,
|
|
1799
1828
|
{
|
|
1800
1829
|
date: weekStart,
|
|
@@ -1805,7 +1834,7 @@ var Timetable = (0, import_react10.forwardRef)(function Timetable2({
|
|
|
1805
1834
|
onNextWeek
|
|
1806
1835
|
}
|
|
1807
1836
|
),
|
|
1808
|
-
/* @__PURE__ */ (0,
|
|
1837
|
+
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)("div", { className: cn("flex divide-x divide-gray02", fluid && "w-full"), children: days.map((day) => /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
|
|
1809
1838
|
DailyTimetable,
|
|
1810
1839
|
{
|
|
1811
1840
|
date: day.date,
|
|
@@ -1818,12 +1847,12 @@ var Timetable = (0, import_react10.forwardRef)(function Timetable2({
|
|
|
1818
1847
|
] });
|
|
1819
1848
|
});
|
|
1820
1849
|
var DailyTimetable = ({ date, slots, fluid, onSelectTime, className }) => {
|
|
1821
|
-
return /* @__PURE__ */ (0,
|
|
1822
|
-
/* @__PURE__ */ (0,
|
|
1850
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("div", { className: cn("flex flex-col", fluid ? "flex-1 min-w-0" : "w-18", className), children: [
|
|
1851
|
+
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)("div", { className: "h-12 flex items-center justify-center border-b border-gray02 text-body1-regular text-secondary", children: formatDayLabel(date) }),
|
|
1823
1852
|
slots.map((slot, index) => {
|
|
1824
1853
|
const prevState = index > 0 ? slots[index - 1].state : void 0;
|
|
1825
1854
|
const withTopBorder = slot.state !== "none" && prevState === "none";
|
|
1826
|
-
return /* @__PURE__ */ (0,
|
|
1855
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
|
|
1827
1856
|
TimeItem,
|
|
1828
1857
|
{
|
|
1829
1858
|
state: slot.state,
|
|
@@ -1852,7 +1881,7 @@ var TimeItem = ({
|
|
|
1852
1881
|
}) => {
|
|
1853
1882
|
const clickable = (state === "default" || state === "selected") && !!onClick;
|
|
1854
1883
|
const style = state === "default" && color ? { "--tt-hover": color } : void 0;
|
|
1855
|
-
return /* @__PURE__ */ (0,
|
|
1884
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
|
|
1856
1885
|
"div",
|
|
1857
1886
|
{
|
|
1858
1887
|
onClick: clickable ? onClick : void 0,
|
|
@@ -1879,7 +1908,7 @@ var TimeItem = ({
|
|
|
1879
1908
|
|
|
1880
1909
|
// src/components/TNB/TNB.tsx
|
|
1881
1910
|
var import_react11 = require("react");
|
|
1882
|
-
var
|
|
1911
|
+
var import_jsx_runtime40 = require("react/jsx-runtime");
|
|
1883
1912
|
function useControllableState2(controlled, defaultValue) {
|
|
1884
1913
|
const isControlled = controlled !== void 0;
|
|
1885
1914
|
const [uncontrolled, setUncontrolled] = (0, import_react11.useState)(defaultValue);
|
|
@@ -1931,8 +1960,8 @@ var TNB = (0, import_react11.forwardRef)(function TNB2({
|
|
|
1931
1960
|
setLowerValue(label);
|
|
1932
1961
|
onSelectedLowerChange?.(label);
|
|
1933
1962
|
};
|
|
1934
|
-
return /* @__PURE__ */ (0,
|
|
1935
|
-
/* @__PURE__ */ (0,
|
|
1963
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("nav", { ref, "aria-label": ariaLabel, className: cn("w-full bg-white", className), children: [
|
|
1964
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
1936
1965
|
UpperPart,
|
|
1937
1966
|
{
|
|
1938
1967
|
logo,
|
|
@@ -1943,7 +1972,7 @@ var TNB = (0, import_react11.forwardRef)(function TNB2({
|
|
|
1943
1972
|
linkComponent
|
|
1944
1973
|
}
|
|
1945
1974
|
),
|
|
1946
|
-
/* @__PURE__ */ (0,
|
|
1975
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
1947
1976
|
LowerPart,
|
|
1948
1977
|
{
|
|
1949
1978
|
lowerPartItemList: currentLowerItemList,
|
|
@@ -1958,7 +1987,7 @@ var NavClickable = (0, import_react11.forwardRef)(function NavClickable2({ href,
|
|
|
1958
1987
|
const ariaCurrent = current ? "page" : void 0;
|
|
1959
1988
|
if (href && !disabled) {
|
|
1960
1989
|
if (Link) {
|
|
1961
|
-
return /* @__PURE__ */ (0,
|
|
1990
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
1962
1991
|
Link,
|
|
1963
1992
|
{
|
|
1964
1993
|
href,
|
|
@@ -1970,7 +1999,7 @@ var NavClickable = (0, import_react11.forwardRef)(function NavClickable2({ href,
|
|
|
1970
1999
|
}
|
|
1971
2000
|
);
|
|
1972
2001
|
}
|
|
1973
|
-
return /* @__PURE__ */ (0,
|
|
2002
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
1974
2003
|
"a",
|
|
1975
2004
|
{
|
|
1976
2005
|
href,
|
|
@@ -1982,7 +2011,7 @@ var NavClickable = (0, import_react11.forwardRef)(function NavClickable2({ href,
|
|
|
1982
2011
|
}
|
|
1983
2012
|
);
|
|
1984
2013
|
}
|
|
1985
|
-
return /* @__PURE__ */ (0,
|
|
2014
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
1986
2015
|
"button",
|
|
1987
2016
|
{
|
|
1988
2017
|
type: "button",
|
|
@@ -2004,7 +2033,7 @@ var UpperPart = ({
|
|
|
2004
2033
|
linkComponent,
|
|
2005
2034
|
className
|
|
2006
2035
|
}) => {
|
|
2007
|
-
return /* @__PURE__ */ (0,
|
|
2036
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(
|
|
2008
2037
|
"div",
|
|
2009
2038
|
{
|
|
2010
2039
|
className: cn(
|
|
@@ -2012,12 +2041,12 @@ var UpperPart = ({
|
|
|
2012
2041
|
className
|
|
2013
2042
|
),
|
|
2014
2043
|
children: [
|
|
2015
|
-
/* @__PURE__ */ (0,
|
|
2016
|
-
/* @__PURE__ */ (0,
|
|
2017
|
-
/* @__PURE__ */ (0,
|
|
2018
|
-
/* @__PURE__ */ (0,
|
|
2019
|
-
upperPartItemList.map((item) => /* @__PURE__ */ (0,
|
|
2020
|
-
/* @__PURE__ */ (0,
|
|
2044
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { className: "flex items-stretch", children: [
|
|
2045
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { className: "flex w-14 shrink-0 items-center justify-center px-3", children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(NavIconButton, { ...logo, linkComponent }) }),
|
|
2046
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { className: "flex items-stretch", children: [
|
|
2047
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" }),
|
|
2048
|
+
upperPartItemList.map((item) => /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(import_react11.Fragment, { children: [
|
|
2049
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
2021
2050
|
UpperPartTab,
|
|
2022
2051
|
{
|
|
2023
2052
|
label: item.label,
|
|
@@ -2030,15 +2059,15 @@ var UpperPart = ({
|
|
|
2030
2059
|
}
|
|
2031
2060
|
}
|
|
2032
2061
|
),
|
|
2033
|
-
/* @__PURE__ */ (0,
|
|
2062
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" })
|
|
2034
2063
|
] }, item.id ?? item.label))
|
|
2035
2064
|
] })
|
|
2036
2065
|
] }),
|
|
2037
|
-
/* @__PURE__ */ (0,
|
|
2038
|
-
/* @__PURE__ */ (0,
|
|
2039
|
-
upperPartIconList.map((icon, index) => /* @__PURE__ */ (0,
|
|
2040
|
-
/* @__PURE__ */ (0,
|
|
2041
|
-
/* @__PURE__ */ (0,
|
|
2066
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { className: "flex items-stretch", children: [
|
|
2067
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" }),
|
|
2068
|
+
upperPartIconList.map((icon, index) => /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(import_react11.Fragment, { children: [
|
|
2069
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(NavIconButton, { ...icon, linkComponent }),
|
|
2070
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" })
|
|
2042
2071
|
] }, icon.id ?? icon.src ?? icon.label ?? index))
|
|
2043
2072
|
] })
|
|
2044
2073
|
]
|
|
@@ -2053,7 +2082,7 @@ var UpperPartTab = ({
|
|
|
2053
2082
|
linkComponent,
|
|
2054
2083
|
className
|
|
2055
2084
|
}) => {
|
|
2056
|
-
return /* @__PURE__ */ (0,
|
|
2085
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(
|
|
2057
2086
|
NavClickable,
|
|
2058
2087
|
{
|
|
2059
2088
|
href,
|
|
@@ -2068,8 +2097,8 @@ var UpperPartTab = ({
|
|
|
2068
2097
|
className
|
|
2069
2098
|
),
|
|
2070
2099
|
children: [
|
|
2071
|
-
/* @__PURE__ */ (0,
|
|
2072
|
-
/* @__PURE__ */ (0,
|
|
2100
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { className: cn("px-5 text-head1-medium", selected ? "text-strong" : "text-quaternary"), children: label }),
|
|
2101
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { className: cn("h-0.5 w-full", selected ? "bg-black" : "bg-transparent") })
|
|
2073
2102
|
]
|
|
2074
2103
|
}
|
|
2075
2104
|
);
|
|
@@ -2078,7 +2107,7 @@ var NavIconButton = (0, import_react11.forwardRef)(
|
|
|
2078
2107
|
function NavIconButton2({ src, icon, alt, label, href, onClick, selected, badge, className, linkComponent }, forwardedRef) {
|
|
2079
2108
|
const interactive = Boolean(onClick || href);
|
|
2080
2109
|
const showBadge = badge !== void 0 && badge !== null && badge !== false;
|
|
2081
|
-
return /* @__PURE__ */ (0,
|
|
2110
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(
|
|
2082
2111
|
NavClickable,
|
|
2083
2112
|
{
|
|
2084
2113
|
ref: forwardedRef,
|
|
@@ -2094,9 +2123,9 @@ var NavIconButton = (0, import_react11.forwardRef)(
|
|
|
2094
2123
|
className
|
|
2095
2124
|
),
|
|
2096
2125
|
children: [
|
|
2097
|
-
icon ? /* @__PURE__ */ (0,
|
|
2098
|
-
label ? /* @__PURE__ */ (0,
|
|
2099
|
-
showBadge ? /* @__PURE__ */ (0,
|
|
2126
|
+
icon ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { className: "inline-flex h-6 w-6 items-center justify-center", children: icon }) : src ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("img", { src, alt: alt ?? label ?? "", className: "h-6 w-6" }) : null,
|
|
2127
|
+
label ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { className: cn("text-body2-regular", selected ? "text-white" : "text-secondary"), children: label }) : null,
|
|
2128
|
+
showBadge ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
2100
2129
|
"span",
|
|
2101
2130
|
{
|
|
2102
2131
|
"aria-hidden": badge === true,
|
|
@@ -2122,14 +2151,14 @@ var LowerPart = ({
|
|
|
2122
2151
|
if (lowerPartItemList.length === 0) {
|
|
2123
2152
|
return null;
|
|
2124
2153
|
}
|
|
2125
|
-
return /* @__PURE__ */ (0,
|
|
2154
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(
|
|
2126
2155
|
"div",
|
|
2127
2156
|
{
|
|
2128
2157
|
className: cn("w-full h-[42px] pl-14 flex items-stretch border-b border-gray02", className),
|
|
2129
2158
|
children: [
|
|
2130
|
-
/* @__PURE__ */ (0,
|
|
2131
|
-
lowerPartItemList.map((item) => /* @__PURE__ */ (0,
|
|
2132
|
-
/* @__PURE__ */ (0,
|
|
2159
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" }),
|
|
2160
|
+
lowerPartItemList.map((item) => /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(import_react11.Fragment, { children: [
|
|
2161
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
2133
2162
|
LowerPartItemButton,
|
|
2134
2163
|
{
|
|
2135
2164
|
label: item.label,
|
|
@@ -2142,7 +2171,7 @@ var LowerPart = ({
|
|
|
2142
2171
|
}
|
|
2143
2172
|
}
|
|
2144
2173
|
),
|
|
2145
|
-
/* @__PURE__ */ (0,
|
|
2174
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" })
|
|
2146
2175
|
] }, item.id ?? item.label))
|
|
2147
2176
|
]
|
|
2148
2177
|
}
|
|
@@ -2156,7 +2185,7 @@ var LowerPartItemButton = ({
|
|
|
2156
2185
|
linkComponent,
|
|
2157
2186
|
className
|
|
2158
2187
|
}) => {
|
|
2159
|
-
return /* @__PURE__ */ (0,
|
|
2188
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
2160
2189
|
NavClickable,
|
|
2161
2190
|
{
|
|
2162
2191
|
href,
|
|
@@ -2176,7 +2205,7 @@ var LowerPartItemButton = ({
|
|
|
2176
2205
|
|
|
2177
2206
|
// src/components/Toast/Toast.tsx
|
|
2178
2207
|
var import_react12 = require("react");
|
|
2179
|
-
var
|
|
2208
|
+
var import_jsx_runtime41 = require("react/jsx-runtime");
|
|
2180
2209
|
var EXIT_MS = 300;
|
|
2181
2210
|
var Toast = (0, import_react12.forwardRef)(function Toast2({ message, open, duration = 3e3, onClose, position = "none", className }, ref) {
|
|
2182
2211
|
const controlled = open !== void 0;
|
|
@@ -2199,7 +2228,7 @@ var Toast = (0, import_react12.forwardRef)(function Toast2({ message, open, dura
|
|
|
2199
2228
|
return () => clearTimeout(timer);
|
|
2200
2229
|
}, [controlled, open, duration, onClose]);
|
|
2201
2230
|
if (!mounted) return null;
|
|
2202
|
-
const banner = /* @__PURE__ */ (0,
|
|
2231
|
+
const banner = /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
2203
2232
|
"div",
|
|
2204
2233
|
{
|
|
2205
2234
|
ref,
|
|
@@ -2217,7 +2246,7 @@ var Toast = (0, import_react12.forwardRef)(function Toast2({ message, open, dura
|
|
|
2217
2246
|
}
|
|
2218
2247
|
);
|
|
2219
2248
|
if (position === "none") return banner;
|
|
2220
|
-
return /* @__PURE__ */ (0,
|
|
2249
|
+
return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
2221
2250
|
"div",
|
|
2222
2251
|
{
|
|
2223
2252
|
className: cn(
|
|
@@ -2232,6 +2261,7 @@ var Toast = (0, import_react12.forwardRef)(function Toast2({ message, open, dura
|
|
|
2232
2261
|
0 && (module.exports = {
|
|
2233
2262
|
Accordion,
|
|
2234
2263
|
BackButton,
|
|
2264
|
+
Badge,
|
|
2235
2265
|
BasicFormField,
|
|
2236
2266
|
CTA,
|
|
2237
2267
|
CategorySegment,
|