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