@hivcd-printshop/design-system 1.2.0 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +28 -2
- package/dist/index.d.ts +28 -2
- package/dist/index.js +341 -262
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +339 -262
- package/dist/index.mjs.map +1 -1
- package/dist/style.css +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -28,6 +28,8 @@ __export(index_exports, {
|
|
|
28
28
|
CategorySegmentedControl: () => CategorySegmentedControl,
|
|
29
29
|
Column: () => Column,
|
|
30
30
|
ColumnContentContainer: () => ColumnContentContainer,
|
|
31
|
+
ColumnDescription: () => ColumnDescription,
|
|
32
|
+
ColumnDescriptionList: () => ColumnDescriptionList,
|
|
31
33
|
ColumnLabel: () => ColumnLabel,
|
|
32
34
|
ColumnSubTitle: () => ColumnSubTitle,
|
|
33
35
|
ColumnText: () => ColumnText,
|
|
@@ -44,6 +46,7 @@ __export(index_exports, {
|
|
|
44
46
|
FormTextArea: () => FormTextArea,
|
|
45
47
|
IconCheck: () => IconCheck,
|
|
46
48
|
IconChevronDownXS: () => IconChevronDownXS,
|
|
49
|
+
IconCompass: () => IconCompass,
|
|
47
50
|
IconInfo: () => IconInfo,
|
|
48
51
|
List: () => List,
|
|
49
52
|
Modal: () => Modal,
|
|
@@ -219,6 +222,28 @@ var IconGoBack = ({ className, stroke }) => {
|
|
|
219
222
|
}
|
|
220
223
|
);
|
|
221
224
|
};
|
|
225
|
+
var IconCompass = ({ className, fill }) => {
|
|
226
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
227
|
+
"svg",
|
|
228
|
+
{
|
|
229
|
+
className,
|
|
230
|
+
width: "16",
|
|
231
|
+
height: "16",
|
|
232
|
+
viewBox: "0 0 16 16",
|
|
233
|
+
fill: "none",
|
|
234
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
235
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
236
|
+
"path",
|
|
237
|
+
{
|
|
238
|
+
fillRule: "evenodd",
|
|
239
|
+
clipRule: "evenodd",
|
|
240
|
+
d: "M12.5731 7.37945C12.2964 5.32806 10.668 3.70356 8.6166 3.42688V0H7.37945V3.42688C5.32806 3.70356 3.70356 5.32806 3.42688 7.37945H0V8.62055H3.42688C3.70356 10.6719 5.32806 12.2964 7.37945 12.5731V16H8.6166V12.5731C10.668 12.2964 12.2964 10.6719 12.5731 8.62055H16V7.37945H12.5731ZM7.37945 11.3241C6.01186 11.0672 4.93281 9.98814 4.67589 8.62055H7.37945V11.3241ZM7.4664 5.51383C7.41897 5.81423 7.39131 6.14229 7.37945 6.50988V7.37945H4.67589C4.89328 6.22925 5.68775 5.28458 6.75099 4.86166C6.9921 4.73122 7.07905 4.67589 7.19763 4.41502L7.67984 4.57312C7.58498 4.90119 7.51779 5.21344 7.4664 5.51383ZM9.24506 11.1383C9.00395 11.2727 8.917 11.3241 8.79842 11.5889L8.31621 11.4269C8.41107 11.1028 8.47826 10.7905 8.52965 10.4901C8.57312 10.2134 8.60474 9.91304 8.6166 9.58103V8.62055H11.3202C11.1067 9.77075 10.3083 10.7154 9.24506 11.1383ZM8.6166 7.37945V4.67984C9.98419 4.93281 11.0672 6.01186 11.3202 7.37945H8.6166Z",
|
|
241
|
+
fill: fill || "#121212"
|
|
242
|
+
}
|
|
243
|
+
)
|
|
244
|
+
}
|
|
245
|
+
);
|
|
246
|
+
};
|
|
222
247
|
|
|
223
248
|
// src/components/BackButton/BackButton.tsx
|
|
224
249
|
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
@@ -307,8 +332,8 @@ var MultiColumn = Object.assign(MultiColumnMain, {
|
|
|
307
332
|
// src/components/Column/Column.tsx
|
|
308
333
|
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
309
334
|
var Column = ({ className, children, header }) => {
|
|
310
|
-
return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: cn("flex flex-col gap-5", "h-full w-full px-5
|
|
311
|
-
header && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("h1", { className: cn("text-
|
|
335
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: cn("flex flex-col gap-5", "h-full w-full px-5 py-3", className), children: [
|
|
336
|
+
header && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("h1", { className: cn("text-body1-medium text-primary"), children: header }),
|
|
312
337
|
children
|
|
313
338
|
] });
|
|
314
339
|
};
|
|
@@ -345,70 +370,87 @@ var ColumnSubTitle = ({
|
|
|
345
370
|
as: Tag2 = "h2"
|
|
346
371
|
}) => {
|
|
347
372
|
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(Tag2, { className: cn("flex items-center justify-between gap-1.5", "w-full", className), children: [
|
|
348
|
-
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: cn("text-
|
|
373
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: cn("text-body1-medium text-primary"), children }),
|
|
349
374
|
action && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "flex shrink-0 items-center", children: action })
|
|
350
375
|
] });
|
|
351
376
|
};
|
|
352
377
|
|
|
353
|
-
// src/components/
|
|
378
|
+
// src/components/Column/ColumnDescription.tsx
|
|
354
379
|
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
380
|
+
var ColumnDescription = ({
|
|
381
|
+
className,
|
|
382
|
+
children,
|
|
383
|
+
bullet = true
|
|
384
|
+
}) => {
|
|
385
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: cn("flex items-start gap-3", className), children: [
|
|
386
|
+
bullet && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "flex shrink-0 items-center py-1", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(IconCompass, { className: "size-4" }) }),
|
|
387
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "min-w-0 flex-1 whitespace-pre-line text-body3-book text-primary", children })
|
|
388
|
+
] });
|
|
389
|
+
};
|
|
390
|
+
var ColumnDescriptionList = ({ className, children }) => {
|
|
391
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: cn("flex flex-col gap-4", className), children });
|
|
392
|
+
};
|
|
393
|
+
|
|
394
|
+
// src/components/Form/BasicFormField.tsx
|
|
395
|
+
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
355
396
|
var BasicFormField = ({
|
|
356
397
|
children,
|
|
357
398
|
isDanger,
|
|
358
399
|
dangerText,
|
|
359
400
|
className
|
|
360
401
|
}) => {
|
|
361
|
-
return /* @__PURE__ */ (0,
|
|
402
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: cn("flex flex-col gap-1.5", className), children: [
|
|
362
403
|
children,
|
|
363
|
-
isDanger && dangerText && /* @__PURE__ */ (0,
|
|
404
|
+
isDanger && dangerText && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "text-caption-book text-danger", children: dangerText })
|
|
364
405
|
] });
|
|
365
406
|
};
|
|
366
407
|
var getInputStyles = (isDanger, additionalClass) => {
|
|
367
408
|
return cn(
|
|
368
|
-
|
|
409
|
+
// 디자인 스펙: 높이 41px, 좌우 12px / 상하 10px 패딩
|
|
410
|
+
"w-full h-[41px] px-3 py-2.5",
|
|
369
411
|
"box-border border border-gray02 focus:outline-none focus:border-black",
|
|
370
|
-
"bg-white
|
|
412
|
+
"bg-white transition-colors",
|
|
371
413
|
ColumnTextStyle,
|
|
372
414
|
"text-primary placeholder:text-quaternary",
|
|
373
415
|
isDanger && "border-danger",
|
|
374
|
-
//
|
|
416
|
+
// 경고 시 빨간 테두리 (#E42939)
|
|
375
417
|
additionalClass
|
|
376
418
|
// 각 인풋별 추가 스타일 (예: textarea의 h-30)
|
|
377
419
|
);
|
|
378
420
|
};
|
|
379
421
|
|
|
380
422
|
// src/components/Form/FormText.tsx
|
|
381
|
-
var
|
|
423
|
+
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
382
424
|
var FormText = ({ className, isDanger, dangerText, ...props }) => {
|
|
383
|
-
return /* @__PURE__ */ (0,
|
|
425
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("input", { type: "text", className: getInputStyles(isDanger, className), ...props }) });
|
|
384
426
|
};
|
|
385
427
|
|
|
386
428
|
// src/components/Form/FormTextArea.tsx
|
|
387
|
-
var
|
|
429
|
+
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
388
430
|
var FormTextArea = ({ className, isDanger, dangerText, ...props }) => {
|
|
389
|
-
return /* @__PURE__ */ (0,
|
|
431
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
390
432
|
"textarea",
|
|
391
433
|
{
|
|
392
|
-
className: getInputStyles(isDanger, "resize-none h-30 py-2.5 " + (className || "")),
|
|
434
|
+
className: getInputStyles(isDanger, "resize-none h-30 px-4 py-2.5 " + (className || "")),
|
|
393
435
|
...props
|
|
394
436
|
}
|
|
395
437
|
) });
|
|
396
438
|
};
|
|
397
439
|
|
|
398
440
|
// src/components/Form/FormNumber.tsx
|
|
399
|
-
var
|
|
441
|
+
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
400
442
|
var FormNumber = ({ className, isDanger, dangerText, ...props }) => {
|
|
401
|
-
return /* @__PURE__ */ (0,
|
|
443
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("input", { type: "number", className: getInputStyles(isDanger, className), ...props }) });
|
|
402
444
|
};
|
|
403
445
|
|
|
404
446
|
// src/components/Form/FormPassword.tsx
|
|
405
|
-
var
|
|
447
|
+
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
406
448
|
var FormPassword = ({ className, isDanger, dangerText, ...props }) => {
|
|
407
|
-
return /* @__PURE__ */ (0,
|
|
449
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("input", { type: "password", className: getInputStyles(isDanger, className), ...props }) });
|
|
408
450
|
};
|
|
409
451
|
|
|
410
452
|
// src/components/Form/FormTel.tsx
|
|
411
|
-
var
|
|
453
|
+
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
412
454
|
var FormTel = ({ className, isDanger, dangerText, onChange, ...props }) => {
|
|
413
455
|
const handlePhoneChange = (e) => {
|
|
414
456
|
const rawValue = e.target.value.replace(/[^0-9]/g, "");
|
|
@@ -420,7 +462,7 @@ var FormTel = ({ className, isDanger, dangerText, onChange, ...props }) => {
|
|
|
420
462
|
e.target.value = formattedValue;
|
|
421
463
|
if (onChange) onChange(e);
|
|
422
464
|
};
|
|
423
|
-
return /* @__PURE__ */ (0,
|
|
465
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
424
466
|
"input",
|
|
425
467
|
{
|
|
426
468
|
type: "tel",
|
|
@@ -434,7 +476,7 @@ var FormTel = ({ className, isDanger, dangerText, onChange, ...props }) => {
|
|
|
434
476
|
|
|
435
477
|
// src/components/Form/FormColor.tsx
|
|
436
478
|
var import_react = require("react");
|
|
437
|
-
var
|
|
479
|
+
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
438
480
|
var FormColor = ({
|
|
439
481
|
className,
|
|
440
482
|
isDanger,
|
|
@@ -452,7 +494,7 @@ var FormColor = ({
|
|
|
452
494
|
setInternalColor(e.target.value);
|
|
453
495
|
onChange?.(e);
|
|
454
496
|
};
|
|
455
|
-
return /* @__PURE__ */ (0,
|
|
497
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
|
|
456
498
|
"label",
|
|
457
499
|
{
|
|
458
500
|
className: getInputStyles(
|
|
@@ -461,7 +503,7 @@ var FormColor = ({
|
|
|
461
503
|
"flex items-center gap-2 relative focus-within:border-black focus-within:hover:bg-white" + (className || "")
|
|
462
504
|
),
|
|
463
505
|
children: [
|
|
464
|
-
/* @__PURE__ */ (0,
|
|
506
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "w-6 h-6 shrink-0 overflow-hidden", style: { backgroundColor: color }, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
465
507
|
"input",
|
|
466
508
|
{
|
|
467
509
|
type: "color",
|
|
@@ -471,7 +513,7 @@ var FormColor = ({
|
|
|
471
513
|
...props
|
|
472
514
|
}
|
|
473
515
|
) }),
|
|
474
|
-
/* @__PURE__ */ (0,
|
|
516
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "text-primary text-body3-regular uppercase flex-1 select-none", children: color })
|
|
475
517
|
]
|
|
476
518
|
}
|
|
477
519
|
) });
|
|
@@ -479,12 +521,11 @@ var FormColor = ({
|
|
|
479
521
|
|
|
480
522
|
// src/components/Form/FormFile.tsx
|
|
481
523
|
var import_react2 = require("react");
|
|
482
|
-
var
|
|
524
|
+
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
483
525
|
var FormFile = ({
|
|
484
526
|
className,
|
|
485
527
|
isDanger,
|
|
486
528
|
dangerText,
|
|
487
|
-
placeholder = "\uD30C\uC77C\uC744 \uC120\uD0DD\uD574\uC8FC\uC138\uC694",
|
|
488
529
|
fileUrl,
|
|
489
530
|
filename,
|
|
490
531
|
onChange,
|
|
@@ -541,32 +582,31 @@ var FormFile = ({
|
|
|
541
582
|
}
|
|
542
583
|
};
|
|
543
584
|
const displayFileName = selectedFile?.name || (fileUrl ? fileUrl.split("/").pop() : null);
|
|
544
|
-
return /* @__PURE__ */ (0,
|
|
585
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
|
|
545
586
|
"div",
|
|
546
587
|
{
|
|
547
588
|
className: getInputStyles(
|
|
548
589
|
isDanger,
|
|
549
|
-
|
|
590
|
+
// 디자인 스펙: 파일 전 상태는 우측 정렬("파일 첨부"만), 파일 후 상태는 좌우 배치
|
|
591
|
+
cn(
|
|
592
|
+
"flex items-center gap-2",
|
|
593
|
+
displayFileName ? "justify-between" : "justify-end",
|
|
594
|
+
className
|
|
595
|
+
)
|
|
550
596
|
),
|
|
551
597
|
children: [
|
|
552
|
-
/* @__PURE__ */ (0,
|
|
553
|
-
"
|
|
598
|
+
displayFileName && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
599
|
+
"span",
|
|
554
600
|
{
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
onClick: handleDownload,
|
|
560
|
-
className: "w-full underline text-primary cursor-pointer hover:text-black transition-colors",
|
|
561
|
-
title: `${displayFileName} \uB2E4\uC6B4\uB85C\uB4DC`,
|
|
562
|
-
children: displayFileName
|
|
563
|
-
}
|
|
564
|
-
) : /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "w-full", children: placeholder })
|
|
601
|
+
onClick: handleDownload,
|
|
602
|
+
className: "text-body3-book text-primary truncate max-w-[200px] cursor-pointer",
|
|
603
|
+
title: `${displayFileName} \uB2E4\uC6B4\uB85C\uB4DC`,
|
|
604
|
+
children: displayFileName
|
|
565
605
|
}
|
|
566
606
|
),
|
|
567
|
-
/* @__PURE__ */ (0,
|
|
568
|
-
/* @__PURE__ */ (0,
|
|
569
|
-
/* @__PURE__ */ (0,
|
|
607
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("label", { className: "shrink-0 px-1 -mx-1 cursor-pointer", children: [
|
|
608
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "text-primary text-caption-regular underline", children: displayFileName ? "\uB2E4\uC2DC \uCCA8\uBD80" : "\uD30C\uC77C \uCCA8\uBD80" }),
|
|
609
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("input", { type: "file", className: "hidden", onChange: handleFileChange, ...props })
|
|
570
610
|
] })
|
|
571
611
|
]
|
|
572
612
|
}
|
|
@@ -574,7 +614,7 @@ var FormFile = ({
|
|
|
574
614
|
};
|
|
575
615
|
|
|
576
616
|
// src/components/Form/FormCheckBox.tsx
|
|
577
|
-
var
|
|
617
|
+
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
578
618
|
var FormCheckBox = ({
|
|
579
619
|
isChecked,
|
|
580
620
|
setIsChecked,
|
|
@@ -583,19 +623,18 @@ var FormCheckBox = ({
|
|
|
583
623
|
textStyle,
|
|
584
624
|
...props
|
|
585
625
|
}) => {
|
|
586
|
-
return /* @__PURE__ */ (0,
|
|
626
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
587
627
|
"label",
|
|
588
628
|
{
|
|
589
629
|
className: cn(
|
|
590
|
-
"w-fit h-fit
|
|
630
|
+
"group w-fit h-fit",
|
|
591
631
|
"flex items-center gap-1",
|
|
592
|
-
"hover:bg-gray00 active:bg-gray01 transition-colors",
|
|
593
632
|
"cursor-pointer select-none",
|
|
594
633
|
// 💡 1. 텍스트 드래그 방지 추가
|
|
595
634
|
className
|
|
596
635
|
),
|
|
597
636
|
children: [
|
|
598
|
-
/* @__PURE__ */ (0,
|
|
637
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
599
638
|
"input",
|
|
600
639
|
{
|
|
601
640
|
type: "checkbox",
|
|
@@ -605,20 +644,29 @@ var FormCheckBox = ({
|
|
|
605
644
|
...props
|
|
606
645
|
}
|
|
607
646
|
),
|
|
608
|
-
/* @__PURE__ */ (0,
|
|
647
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
609
648
|
"div",
|
|
610
649
|
{
|
|
611
650
|
className: cn(
|
|
612
|
-
"w-
|
|
613
|
-
"
|
|
614
|
-
"flex items-center justify-center transition-colors duration-200",
|
|
615
|
-
// 💡 3. 키보드 Tab 이동 시 접근성 향상 (포커스 링 표시)
|
|
616
|
-
"peer-focus-visible:ring-2 peer-focus-visible:ring-black peer-focus-visible:ring-offset-1"
|
|
651
|
+
"flex items-center justify-center w-5 h-5 shrink-0 rounded transition-colors",
|
|
652
|
+
"group-hover:bg-gray00 group-active:bg-gray01"
|
|
617
653
|
),
|
|
618
|
-
children:
|
|
654
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
655
|
+
"div",
|
|
656
|
+
{
|
|
657
|
+
className: cn(
|
|
658
|
+
"w-[15px] h-[15px]",
|
|
659
|
+
"box-border border border-black",
|
|
660
|
+
"flex items-center justify-center transition-colors duration-200",
|
|
661
|
+
// 💡 3. 키보드 Tab 이동 시 접근성 향상 (포커스 링 표시)
|
|
662
|
+
"peer-focus-visible:ring-2 peer-focus-visible:ring-black peer-focus-visible:ring-offset-1"
|
|
663
|
+
),
|
|
664
|
+
children: isChecked && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(IconCheck, {})
|
|
665
|
+
}
|
|
666
|
+
)
|
|
619
667
|
}
|
|
620
|
-
)
|
|
621
|
-
children && /* @__PURE__ */ (0,
|
|
668
|
+
),
|
|
669
|
+
children && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: cn("text-body3-book text-primary", textStyle), children })
|
|
622
670
|
]
|
|
623
671
|
}
|
|
624
672
|
);
|
|
@@ -628,19 +676,20 @@ var FormCheckBox = ({
|
|
|
628
676
|
var import_react3 = require("react");
|
|
629
677
|
|
|
630
678
|
// src/components/Form/SelectBoxOption.tsx
|
|
631
|
-
var
|
|
679
|
+
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
632
680
|
var SelectBoxOption = ({
|
|
633
681
|
label,
|
|
634
682
|
onClick,
|
|
635
683
|
// selectedLabel,
|
|
636
684
|
className
|
|
637
685
|
}) => {
|
|
638
|
-
return /* @__PURE__ */ (0,
|
|
686
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
639
687
|
"li",
|
|
640
688
|
{
|
|
641
689
|
onClick,
|
|
642
690
|
className: cn(
|
|
643
|
-
"w-full
|
|
691
|
+
"w-full p-3 shrink-0",
|
|
692
|
+
// 디자인 스펙: 12px 패딩
|
|
644
693
|
"flex items-center justify-start",
|
|
645
694
|
// "box-border border-b border-gray02",
|
|
646
695
|
"text-body3-book text-primary",
|
|
@@ -656,7 +705,7 @@ var SelectBoxOption = ({
|
|
|
656
705
|
};
|
|
657
706
|
|
|
658
707
|
// src/components/Form/FormSelectBox.tsx
|
|
659
|
-
var
|
|
708
|
+
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
660
709
|
var FormSelectBox = ({
|
|
661
710
|
options,
|
|
662
711
|
value,
|
|
@@ -679,8 +728,8 @@ var FormSelectBox = ({
|
|
|
679
728
|
document.removeEventListener("mousedown", handleClickOutside);
|
|
680
729
|
};
|
|
681
730
|
}, []);
|
|
682
|
-
return /* @__PURE__ */ (0,
|
|
683
|
-
/* @__PURE__ */ (0,
|
|
731
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { ref: containerRef, className: "relative w-full", children: [
|
|
732
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
|
|
684
733
|
"div",
|
|
685
734
|
{
|
|
686
735
|
tabIndex: 0,
|
|
@@ -688,8 +737,8 @@ var FormSelectBox = ({
|
|
|
688
737
|
isDanger,
|
|
689
738
|
cn(
|
|
690
739
|
"flex items-center justify-between cursor-pointer select-none",
|
|
691
|
-
isOpen && "border-
|
|
692
|
-
//
|
|
740
|
+
isOpen && "border-gray08",
|
|
741
|
+
// 열려있을 때 테두리 #3A414C 고정 (디자인 스펙)
|
|
693
742
|
className
|
|
694
743
|
)
|
|
695
744
|
),
|
|
@@ -700,8 +749,8 @@ var FormSelectBox = ({
|
|
|
700
749
|
setIsOpen((prev) => !prev);
|
|
701
750
|
},
|
|
702
751
|
children: [
|
|
703
|
-
/* @__PURE__ */ (0,
|
|
704
|
-
/* @__PURE__ */ (0,
|
|
752
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { className: value ? "text-primary" : "text-quaternary", children: value || placeholder }),
|
|
753
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
705
754
|
IconChevronDownXS,
|
|
706
755
|
{
|
|
707
756
|
className: cn("text-gray06 transition-transform", isOpen && "rotate-180"),
|
|
@@ -711,17 +760,17 @@ var FormSelectBox = ({
|
|
|
711
760
|
]
|
|
712
761
|
}
|
|
713
762
|
),
|
|
714
|
-
isOpen && /* @__PURE__ */ (0,
|
|
763
|
+
isOpen && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
715
764
|
"ul",
|
|
716
765
|
{
|
|
717
766
|
className: cn(
|
|
718
767
|
"absolute top-full left-0 right-0 z-10",
|
|
719
768
|
// 💡 Input 바로 아래에 띄움
|
|
720
769
|
"box-border border border-gray02 bg-white flex flex-col",
|
|
721
|
-
"max-h-50 overflow-y-auto
|
|
722
|
-
//
|
|
770
|
+
"max-h-50 overflow-y-auto"
|
|
771
|
+
// 항목이 너무 많으면 스크롤 생성 (디자인 스펙: 그림자 없음)
|
|
723
772
|
),
|
|
724
|
-
children: options.map((option) => /* @__PURE__ */ (0,
|
|
773
|
+
children: options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
725
774
|
SelectBoxOption,
|
|
726
775
|
{
|
|
727
776
|
label: option,
|
|
@@ -738,7 +787,7 @@ var FormSelectBox = ({
|
|
|
738
787
|
};
|
|
739
788
|
|
|
740
789
|
// src/components/TextButton/TextButton.tsx
|
|
741
|
-
var
|
|
790
|
+
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
742
791
|
var TextButton = ({
|
|
743
792
|
children,
|
|
744
793
|
icon,
|
|
@@ -748,15 +797,15 @@ var TextButton = ({
|
|
|
748
797
|
className,
|
|
749
798
|
...props
|
|
750
799
|
}) => {
|
|
751
|
-
const content = /* @__PURE__ */ (0,
|
|
752
|
-
icon && iconPosition === "left" && /* @__PURE__ */ (0,
|
|
753
|
-
/* @__PURE__ */ (0,
|
|
754
|
-
icon && iconPosition === "right" && /* @__PURE__ */ (0,
|
|
800
|
+
const content = /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(import_jsx_runtime22.Fragment, { children: [
|
|
801
|
+
icon && iconPosition === "left" && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "flex shrink-0 items-center", children: icon }),
|
|
802
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: cn(underline && "underline underline-offset-2"), children }),
|
|
803
|
+
icon && iconPosition === "right" && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "flex shrink-0 items-center", children: icon })
|
|
755
804
|
] });
|
|
756
805
|
const classes = cn(
|
|
757
806
|
"inline-flex w-fit items-center gap-1 px-1 -mx-1",
|
|
758
807
|
"text-caption-book",
|
|
759
|
-
alert ? "text-danger" : "text-
|
|
808
|
+
alert ? "text-danger" : "text-secondary",
|
|
760
809
|
"hover:bg-gray00 active:bg-gray01 transition-colors",
|
|
761
810
|
alert ? "hover:text-danger" : "hover:text-primary",
|
|
762
811
|
"cursor-pointer select-none",
|
|
@@ -766,15 +815,15 @@ var TextButton = ({
|
|
|
766
815
|
);
|
|
767
816
|
if (props.href !== void 0) {
|
|
768
817
|
const { href, ...rest } = props;
|
|
769
|
-
return /* @__PURE__ */ (0,
|
|
818
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("a", { href, className: classes, ...rest, children: content });
|
|
770
819
|
}
|
|
771
820
|
const buttonProps = props;
|
|
772
|
-
return /* @__PURE__ */ (0,
|
|
821
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("button", { type: "button", className: classes, ...buttonProps, children: content });
|
|
773
822
|
};
|
|
774
823
|
|
|
775
824
|
// src/components/Dropdown/Dropdown.tsx
|
|
776
825
|
var import_react4 = require("react");
|
|
777
|
-
var
|
|
826
|
+
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
778
827
|
var Dropdown = ({ selectedLabel, setSelectedLabel, labels, className }) => {
|
|
779
828
|
const [isOpen, setIsOpen] = (0, import_react4.useState)(false);
|
|
780
829
|
const containerRef = (0, import_react4.useRef)(null);
|
|
@@ -789,8 +838,8 @@ var Dropdown = ({ selectedLabel, setSelectedLabel, labels, className }) => {
|
|
|
789
838
|
document.removeEventListener("mousedown", handleClickOutside);
|
|
790
839
|
};
|
|
791
840
|
}, []);
|
|
792
|
-
return /* @__PURE__ */ (0,
|
|
793
|
-
/* @__PURE__ */ (0,
|
|
841
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { ref: containerRef, className: "relative", children: [
|
|
842
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
794
843
|
"div",
|
|
795
844
|
{
|
|
796
845
|
className: cn(
|
|
@@ -803,8 +852,8 @@ var Dropdown = ({ selectedLabel, setSelectedLabel, labels, className }) => {
|
|
|
803
852
|
),
|
|
804
853
|
onClick: () => setIsOpen((prev) => !prev),
|
|
805
854
|
children: [
|
|
806
|
-
/* @__PURE__ */ (0,
|
|
807
|
-
/* @__PURE__ */ (0,
|
|
855
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("p", { children: selectedLabel }),
|
|
856
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
808
857
|
IconChevronDownXS,
|
|
809
858
|
{
|
|
810
859
|
className: cn("text-gray06 transition-transform", isOpen && "rotate-180"),
|
|
@@ -814,7 +863,7 @@ var Dropdown = ({ selectedLabel, setSelectedLabel, labels, className }) => {
|
|
|
814
863
|
]
|
|
815
864
|
}
|
|
816
865
|
),
|
|
817
|
-
isOpen && /* @__PURE__ */ (0,
|
|
866
|
+
isOpen && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: cn("absolute top-full right-0 z-10", "box-border border border-gray02"), children: labels.map((label) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
818
867
|
SelectBoxOption,
|
|
819
868
|
{
|
|
820
869
|
label,
|
|
@@ -830,7 +879,7 @@ var Dropdown = ({ selectedLabel, setSelectedLabel, labels, className }) => {
|
|
|
830
879
|
};
|
|
831
880
|
|
|
832
881
|
// src/components/ListView/List.tsx
|
|
833
|
-
var
|
|
882
|
+
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
834
883
|
function List({
|
|
835
884
|
className,
|
|
836
885
|
label1,
|
|
@@ -843,7 +892,7 @@ function List({
|
|
|
843
892
|
children,
|
|
844
893
|
...props
|
|
845
894
|
}) {
|
|
846
|
-
return /* @__PURE__ */ (0,
|
|
895
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
|
|
847
896
|
"li",
|
|
848
897
|
{
|
|
849
898
|
className: cn(
|
|
@@ -858,11 +907,11 @@ function List({
|
|
|
858
907
|
...props,
|
|
859
908
|
onClick,
|
|
860
909
|
children: [
|
|
861
|
-
/* @__PURE__ */ (0,
|
|
862
|
-
/* @__PURE__ */ (0,
|
|
863
|
-
/* @__PURE__ */ (0,
|
|
910
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("section", { className: cn("flex items-center gap-4"), children: [
|
|
911
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("label", { className: cn("text-body2-regular"), children: label1 ? label1 : "-" }),
|
|
912
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: cn("flex items-center gap-2"), children })
|
|
864
913
|
] }),
|
|
865
|
-
/* @__PURE__ */ (0,
|
|
914
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
866
915
|
"label",
|
|
867
916
|
{
|
|
868
917
|
className: cn(
|
|
@@ -874,21 +923,21 @@ function List({
|
|
|
874
923
|
children: label2 ? label2 : "-"
|
|
875
924
|
}
|
|
876
925
|
),
|
|
877
|
-
/* @__PURE__ */ (0,
|
|
926
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("label", { className: cn("text-body3-regular text-right"), children: label3 ? label3 : "-" })
|
|
878
927
|
]
|
|
879
928
|
}
|
|
880
929
|
);
|
|
881
930
|
}
|
|
882
931
|
|
|
883
932
|
// src/components/Modal/Modal.tsx
|
|
884
|
-
var
|
|
933
|
+
var import_jsx_runtime25 = require("react/jsx-runtime");
|
|
885
934
|
var ModalBase = ({ isVisible, header, children, className }) => {
|
|
886
935
|
if (!isVisible) return null;
|
|
887
|
-
return /* @__PURE__ */ (0,
|
|
936
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: cn("fixed inset-0 z-50 pointer-events-auto"), children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
888
937
|
"div",
|
|
889
938
|
{
|
|
890
939
|
className: cn("fixed inset-0 z-1001 flex items-center justify-center pointer-events-auto"),
|
|
891
|
-
children: /* @__PURE__ */ (0,
|
|
940
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
|
|
892
941
|
"main",
|
|
893
942
|
{
|
|
894
943
|
className: cn(
|
|
@@ -899,7 +948,7 @@ var ModalBase = ({ isVisible, header, children, className }) => {
|
|
|
899
948
|
className
|
|
900
949
|
),
|
|
901
950
|
children: [
|
|
902
|
-
/* @__PURE__ */ (0,
|
|
951
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)("h1", { className: cn("text-strong font-[500] text-[24px] leading-[32px]"), children: header }),
|
|
903
952
|
children
|
|
904
953
|
]
|
|
905
954
|
}
|
|
@@ -908,7 +957,7 @@ var ModalBase = ({ isVisible, header, children, className }) => {
|
|
|
908
957
|
) });
|
|
909
958
|
};
|
|
910
959
|
var Contents = ({ children, className }) => {
|
|
911
|
-
return /* @__PURE__ */ (0,
|
|
960
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
912
961
|
"div",
|
|
913
962
|
{
|
|
914
963
|
className: cn(
|
|
@@ -925,7 +974,7 @@ var CTAs2 = ({ children, className, row = false }) => {
|
|
|
925
974
|
if (!children) return null;
|
|
926
975
|
return (
|
|
927
976
|
// CTA 버튼들을 중앙에 배치하는 예시 (우측 정렬이 필요하면 justify-end 사용)
|
|
928
|
-
/* @__PURE__ */ (0,
|
|
977
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
929
978
|
"div",
|
|
930
979
|
{
|
|
931
980
|
className: cn(
|
|
@@ -944,9 +993,9 @@ var Modal = Object.assign(ModalBase, {
|
|
|
944
993
|
});
|
|
945
994
|
|
|
946
995
|
// src/components/Modal/ModalText.tsx
|
|
947
|
-
var
|
|
996
|
+
var import_jsx_runtime26 = require("react/jsx-runtime");
|
|
948
997
|
var ModalText = ({ children, className }) => {
|
|
949
|
-
return /* @__PURE__ */ (0,
|
|
998
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
950
999
|
"div",
|
|
951
1000
|
{
|
|
952
1001
|
className: cn(
|
|
@@ -962,14 +1011,14 @@ var ModalText = ({ children, className }) => {
|
|
|
962
1011
|
};
|
|
963
1012
|
|
|
964
1013
|
// src/components/createPost/CategorySegment.tsx
|
|
965
|
-
var
|
|
1014
|
+
var import_jsx_runtime27 = require("react/jsx-runtime");
|
|
966
1015
|
var CategorySegment = ({
|
|
967
1016
|
selected = false,
|
|
968
1017
|
label,
|
|
969
1018
|
className,
|
|
970
1019
|
onClick
|
|
971
1020
|
}) => {
|
|
972
|
-
return /* @__PURE__ */ (0,
|
|
1021
|
+
return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
973
1022
|
"div",
|
|
974
1023
|
{
|
|
975
1024
|
className: cn(
|
|
@@ -989,7 +1038,7 @@ var CategorySegment = ({
|
|
|
989
1038
|
};
|
|
990
1039
|
|
|
991
1040
|
// src/components/createPost/CategorySegmentedControl.tsx
|
|
992
|
-
var
|
|
1041
|
+
var import_jsx_runtime28 = require("react/jsx-runtime");
|
|
993
1042
|
var categorySegments = {
|
|
994
1043
|
info: ["\uACF5\uC6A9 \uBB3C\uD488", "\uC77C\uBC18 \uAE30\uC790\uC7AC", "\uD2B9\uC218 \uAE30\uC790\uC7AC"],
|
|
995
1044
|
archive: ["\uD504\uB9B0\uD2B8\uC2E4", "\uD64D\uC775\uC2DC\uB514"],
|
|
@@ -1003,8 +1052,8 @@ var CategorySegmentedControl = ({
|
|
|
1003
1052
|
className
|
|
1004
1053
|
}) => {
|
|
1005
1054
|
const segments = categorySegments[variable];
|
|
1006
|
-
return /* @__PURE__ */ (0,
|
|
1007
|
-
/* @__PURE__ */ (0,
|
|
1055
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: cn("w-full h-fit flex items-center justify-start", className), children: [
|
|
1056
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
1008
1057
|
"div",
|
|
1009
1058
|
{
|
|
1010
1059
|
className: cn(
|
|
@@ -1017,7 +1066,7 @@ var CategorySegmentedControl = ({
|
|
|
1017
1066
|
children: variable === "infoTag" ? "\uD0DC\uADF8 \uC120\uD0DD" : "\uCE74\uD14C\uACE0\uB9AC \uC120\uD0DD"
|
|
1018
1067
|
}
|
|
1019
1068
|
),
|
|
1020
|
-
segments.map((label) => /* @__PURE__ */ (0,
|
|
1069
|
+
segments.map((label) => /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
1021
1070
|
CategorySegment,
|
|
1022
1071
|
{
|
|
1023
1072
|
label,
|
|
@@ -1030,9 +1079,9 @@ var CategorySegmentedControl = ({
|
|
|
1030
1079
|
};
|
|
1031
1080
|
|
|
1032
1081
|
// src/components/createPost/TitleInput.tsx
|
|
1033
|
-
var
|
|
1082
|
+
var import_jsx_runtime29 = require("react/jsx-runtime");
|
|
1034
1083
|
var TitleInput = ({ title, onChange, className }) => {
|
|
1035
|
-
return /* @__PURE__ */ (0,
|
|
1084
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
1036
1085
|
"input",
|
|
1037
1086
|
{
|
|
1038
1087
|
type: "text",
|
|
@@ -1052,9 +1101,9 @@ var TitleInput = ({ title, onChange, className }) => {
|
|
|
1052
1101
|
};
|
|
1053
1102
|
|
|
1054
1103
|
// src/components/notice/NoticeBadge.tsx
|
|
1055
|
-
var
|
|
1104
|
+
var import_jsx_runtime30 = require("react/jsx-runtime");
|
|
1056
1105
|
var NoticeBadge = ({ variable, className, onClick }) => {
|
|
1057
|
-
return /* @__PURE__ */ (0,
|
|
1106
|
+
return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
1058
1107
|
"button",
|
|
1059
1108
|
{
|
|
1060
1109
|
type: "button",
|
|
@@ -1075,7 +1124,7 @@ var NoticeBadge = ({ variable, className, onClick }) => {
|
|
|
1075
1124
|
};
|
|
1076
1125
|
|
|
1077
1126
|
// src/components/notice/NoticeBar.tsx
|
|
1078
|
-
var
|
|
1127
|
+
var import_jsx_runtime31 = require("react/jsx-runtime");
|
|
1079
1128
|
var NoticeBar = ({
|
|
1080
1129
|
variable = "default",
|
|
1081
1130
|
badgeVariable,
|
|
@@ -1084,7 +1133,7 @@ var NoticeBar = ({
|
|
|
1084
1133
|
className,
|
|
1085
1134
|
onClick
|
|
1086
1135
|
}) => {
|
|
1087
|
-
return /* @__PURE__ */ (0,
|
|
1136
|
+
return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
|
|
1088
1137
|
"div",
|
|
1089
1138
|
{
|
|
1090
1139
|
className: cn(
|
|
@@ -1096,20 +1145,20 @@ var NoticeBar = ({
|
|
|
1096
1145
|
),
|
|
1097
1146
|
onClick,
|
|
1098
1147
|
children: [
|
|
1099
|
-
/* @__PURE__ */ (0,
|
|
1100
|
-
/* @__PURE__ */ (0,
|
|
1101
|
-
/* @__PURE__ */ (0,
|
|
1148
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("section", { className: "flex items-center gap-3", children: [
|
|
1149
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)(NoticeBadge, { variable: badgeVariable }),
|
|
1150
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)("h1", { className: "text-head1-medium text-strong", children: title })
|
|
1102
1151
|
] }),
|
|
1103
|
-
/* @__PURE__ */ (0,
|
|
1152
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)("p", { className: "text-body3-book text-tertiary", children: date })
|
|
1104
1153
|
]
|
|
1105
1154
|
}
|
|
1106
1155
|
);
|
|
1107
1156
|
};
|
|
1108
1157
|
|
|
1109
1158
|
// src/components/SearchBar/SearchBar.tsx
|
|
1110
|
-
var
|
|
1159
|
+
var import_jsx_runtime32 = require("react/jsx-runtime");
|
|
1111
1160
|
var SearchBar = ({ value, onChange, className }) => {
|
|
1112
|
-
return /* @__PURE__ */ (0,
|
|
1161
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
|
|
1113
1162
|
"label",
|
|
1114
1163
|
{
|
|
1115
1164
|
className: cn(
|
|
@@ -1120,8 +1169,8 @@ var SearchBar = ({ value, onChange, className }) => {
|
|
|
1120
1169
|
className
|
|
1121
1170
|
),
|
|
1122
1171
|
children: [
|
|
1123
|
-
/* @__PURE__ */ (0,
|
|
1124
|
-
/* @__PURE__ */ (0,
|
|
1172
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(IconSearch, {}),
|
|
1173
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
1125
1174
|
"input",
|
|
1126
1175
|
{
|
|
1127
1176
|
type: "text",
|
|
@@ -1170,7 +1219,7 @@ var RadioSelected_default = "./RadioSelected-DOLVV7ZM.svg";
|
|
|
1170
1219
|
var RadioUnselected_default = "./RadioUnselected-QN74EU46.svg";
|
|
1171
1220
|
|
|
1172
1221
|
// src/components/SideRadioAccordion/SideRadioAccordion.tsx
|
|
1173
|
-
var
|
|
1222
|
+
var import_jsx_runtime33 = require("react/jsx-runtime");
|
|
1174
1223
|
var printColorBgClass = {
|
|
1175
1224
|
Plotter: "bg-print-plotter",
|
|
1176
1225
|
Printer: "bg-print-printer",
|
|
@@ -1214,8 +1263,8 @@ var SideRadioAccordion = (0, import_react6.forwardRef)(
|
|
|
1214
1263
|
setIsOpen(next);
|
|
1215
1264
|
onOpenChange?.(next);
|
|
1216
1265
|
};
|
|
1217
|
-
return /* @__PURE__ */ (0,
|
|
1218
|
-
/* @__PURE__ */ (0,
|
|
1266
|
+
return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { ref, className: cn("w-full border-r border-gray02 bg-white", className), children: [
|
|
1267
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
1219
1268
|
Stepper,
|
|
1220
1269
|
{
|
|
1221
1270
|
step,
|
|
@@ -1226,8 +1275,8 @@ var SideRadioAccordion = (0, import_react6.forwardRef)(
|
|
|
1226
1275
|
className: cn(stickyHeader && "sticky top-0 z-10")
|
|
1227
1276
|
}
|
|
1228
1277
|
),
|
|
1229
|
-
expanded && /* @__PURE__ */ (0,
|
|
1230
|
-
radioToggleList.map((item) => /* @__PURE__ */ (0,
|
|
1278
|
+
expanded && /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "flex flex-col divide-y divide-gray02", children: [
|
|
1279
|
+
radioToggleList.map((item) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
1231
1280
|
RadioToggleItem,
|
|
1232
1281
|
{
|
|
1233
1282
|
...item,
|
|
@@ -1236,29 +1285,22 @@ var SideRadioAccordion = (0, import_react6.forwardRef)(
|
|
|
1236
1285
|
},
|
|
1237
1286
|
itemKey(item)
|
|
1238
1287
|
)),
|
|
1239
|
-
quantityLimitLabel && /* @__PURE__ */ (0,
|
|
1240
|
-
TextButton2,
|
|
1241
|
-
{
|
|
1242
|
-
label: quantityLimitLabel,
|
|
1243
|
-
onClick: onClickQuantityLimit,
|
|
1244
|
-
className: "mt-2"
|
|
1245
|
-
}
|
|
1246
|
-
)
|
|
1288
|
+
quantityLimitLabel && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "px-5 py-4", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(TextButton2, { label: quantityLimitLabel, onClick: onClickQuantityLimit }) })
|
|
1247
1289
|
] })
|
|
1248
1290
|
] });
|
|
1249
1291
|
}
|
|
1250
1292
|
);
|
|
1251
1293
|
var Stepper = ({ step, title, isOpen, collapsible, onClick, className }) => {
|
|
1252
|
-
const label = /* @__PURE__ */ (0,
|
|
1294
|
+
const label = /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("span", { children: [
|
|
1253
1295
|
step,
|
|
1254
1296
|
" | ",
|
|
1255
1297
|
title
|
|
1256
1298
|
] });
|
|
1257
|
-
const base = "w-full flex items-center justify-between px-
|
|
1299
|
+
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";
|
|
1258
1300
|
if (!collapsible) {
|
|
1259
|
-
return /* @__PURE__ */ (0,
|
|
1301
|
+
return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: cn(base, className), children: label });
|
|
1260
1302
|
}
|
|
1261
|
-
return /* @__PURE__ */ (0,
|
|
1303
|
+
return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
|
|
1262
1304
|
"button",
|
|
1263
1305
|
{
|
|
1264
1306
|
type: "button",
|
|
@@ -1266,7 +1308,7 @@ var Stepper = ({ step, title, isOpen, collapsible, onClick, className }) => {
|
|
|
1266
1308
|
className: cn(base, "cursor-pointer hover:bg-gray00 active:bg-gray01", className),
|
|
1267
1309
|
children: [
|
|
1268
1310
|
label,
|
|
1269
|
-
/* @__PURE__ */ (0,
|
|
1311
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
1270
1312
|
"img",
|
|
1271
1313
|
{
|
|
1272
1314
|
src: ChevronDown_default,
|
|
@@ -1292,29 +1334,29 @@ var RadioToggleItem = ({
|
|
|
1292
1334
|
}) => {
|
|
1293
1335
|
const rowBg = !open ? "bg-white hover:bg-gray00" : color ? void 0 : printColor ? printColorBgClass[printColor] : "bg-gray00";
|
|
1294
1336
|
const style = open && color ? { backgroundColor: color } : void 0;
|
|
1295
|
-
return /* @__PURE__ */ (0,
|
|
1296
|
-
/* @__PURE__ */ (0,
|
|
1337
|
+
return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "w-full", children: [
|
|
1338
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
|
|
1297
1339
|
"button",
|
|
1298
1340
|
{
|
|
1299
1341
|
type: "button",
|
|
1300
1342
|
onClick: onSelect,
|
|
1301
1343
|
style,
|
|
1302
1344
|
className: cn(
|
|
1303
|
-
"w-full flex items-center gap-1.5
|
|
1304
|
-
"text-
|
|
1345
|
+
"w-full flex items-center gap-1.5 p-3",
|
|
1346
|
+
"text-body1-regular text-secondary text-left cursor-pointer",
|
|
1305
1347
|
rowBg,
|
|
1306
1348
|
className
|
|
1307
1349
|
),
|
|
1308
1350
|
children: [
|
|
1309
|
-
/* @__PURE__ */ (0,
|
|
1310
|
-
/* @__PURE__ */ (0,
|
|
1351
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Radio, { selected: open }),
|
|
1352
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { children: title })
|
|
1311
1353
|
]
|
|
1312
1354
|
}
|
|
1313
1355
|
),
|
|
1314
|
-
open && /* @__PURE__ */ (0,
|
|
1315
|
-
/* @__PURE__ */ (0,
|
|
1316
|
-
badges && badges.length > 0 && /* @__PURE__ */ (0,
|
|
1317
|
-
labelTextButton && /* @__PURE__ */ (0,
|
|
1356
|
+
open && /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "flex flex-col gap-2 px-3 py-3 bg-white", children: [
|
|
1357
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("p", { className: "text-caption-regular text-secondary", children: content }),
|
|
1358
|
+
badges && badges.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "flex gap-1", children: badges.map((badge) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Badge, { label: badge }, badge)) }),
|
|
1359
|
+
labelTextButton && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
1318
1360
|
TextButton2,
|
|
1319
1361
|
{
|
|
1320
1362
|
label: labelTextButton,
|
|
@@ -1327,17 +1369,17 @@ var RadioToggleItem = ({
|
|
|
1327
1369
|
] });
|
|
1328
1370
|
};
|
|
1329
1371
|
var Radio = ({ selected = false, className }) => {
|
|
1330
|
-
return /* @__PURE__ */ (0,
|
|
1372
|
+
return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
1331
1373
|
"img",
|
|
1332
1374
|
{
|
|
1333
1375
|
src: selected ? RadioSelected_default : RadioUnselected_default,
|
|
1334
1376
|
alt: "",
|
|
1335
|
-
className: cn("w-
|
|
1377
|
+
className: cn("w-6 h-6", className)
|
|
1336
1378
|
}
|
|
1337
1379
|
);
|
|
1338
1380
|
};
|
|
1339
1381
|
var TextButton2 = ({ label, onClick, showIcon = false, className }) => {
|
|
1340
|
-
return /* @__PURE__ */ (0,
|
|
1382
|
+
return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
|
|
1341
1383
|
"button",
|
|
1342
1384
|
{
|
|
1343
1385
|
type: "button",
|
|
@@ -1350,14 +1392,14 @@ var TextButton2 = ({ label, onClick, showIcon = false, className }) => {
|
|
|
1350
1392
|
className
|
|
1351
1393
|
),
|
|
1352
1394
|
children: [
|
|
1353
|
-
showIcon && /* @__PURE__ */ (0,
|
|
1395
|
+
showIcon && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("img", { src: Exclamation_default, alt: "" }),
|
|
1354
1396
|
label
|
|
1355
1397
|
]
|
|
1356
1398
|
}
|
|
1357
1399
|
);
|
|
1358
1400
|
};
|
|
1359
1401
|
var Badge = ({ label, className }) => {
|
|
1360
|
-
return /* @__PURE__ */ (0,
|
|
1402
|
+
return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
1361
1403
|
"div",
|
|
1362
1404
|
{
|
|
1363
1405
|
className: cn(
|
|
@@ -1371,7 +1413,7 @@ var Badge = ({ label, className }) => {
|
|
|
1371
1413
|
};
|
|
1372
1414
|
|
|
1373
1415
|
// src/components/Tag/Tag.tsx
|
|
1374
|
-
var
|
|
1416
|
+
var import_jsx_runtime34 = require("react/jsx-runtime");
|
|
1375
1417
|
var Tag = ({
|
|
1376
1418
|
className,
|
|
1377
1419
|
children,
|
|
@@ -1381,7 +1423,7 @@ var Tag = ({
|
|
|
1381
1423
|
onClick,
|
|
1382
1424
|
...props
|
|
1383
1425
|
}) => {
|
|
1384
|
-
return /* @__PURE__ */ (0,
|
|
1426
|
+
return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
|
|
1385
1427
|
"button",
|
|
1386
1428
|
{
|
|
1387
1429
|
className: cn(
|
|
@@ -1400,7 +1442,7 @@ var Tag = ({
|
|
|
1400
1442
|
disabled,
|
|
1401
1443
|
style: bgColor ? { backgroundColor: bgColor, border: "none" } : void 0,
|
|
1402
1444
|
...props,
|
|
1403
|
-
children: /* @__PURE__ */ (0,
|
|
1445
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { children })
|
|
1404
1446
|
}
|
|
1405
1447
|
);
|
|
1406
1448
|
};
|
|
@@ -1442,7 +1484,7 @@ var formatWeekRange = (weekStart) => {
|
|
|
1442
1484
|
};
|
|
1443
1485
|
|
|
1444
1486
|
// src/components/Timetable/WeekNavigation.tsx
|
|
1445
|
-
var
|
|
1487
|
+
var import_jsx_runtime35 = require("react/jsx-runtime");
|
|
1446
1488
|
var weekLabel = {
|
|
1447
1489
|
thisWeek: "\uC774\uBC88 \uC8FC",
|
|
1448
1490
|
nextWeek: "\uB2E4\uC74C \uC8FC",
|
|
@@ -1453,53 +1495,62 @@ var WeekNavigation = (0, import_react7.forwardRef)(
|
|
|
1453
1495
|
const showPrev = canPrev ?? (week ? week !== "thisWeek" : true);
|
|
1454
1496
|
const showNext = canNext ?? (week ? week !== "twoWeeksLater" : true);
|
|
1455
1497
|
const text = label ?? (week ? `${weekLabel[week]} (${formatWeekRange(date)})` : formatWeekRange(date));
|
|
1456
|
-
return /* @__PURE__ */ (0,
|
|
1498
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(
|
|
1457
1499
|
"div",
|
|
1458
1500
|
{
|
|
1459
1501
|
ref,
|
|
1460
1502
|
className: cn(
|
|
1461
|
-
"flex items-
|
|
1462
|
-
"w-full h-
|
|
1463
|
-
"bg-white border border-gray02",
|
|
1464
|
-
"text-
|
|
1503
|
+
"flex items-stretch justify-between",
|
|
1504
|
+
"w-full h-12",
|
|
1505
|
+
"bg-white border-b border-gray02",
|
|
1506
|
+
"text-body1-medium text-secondary",
|
|
1465
1507
|
className
|
|
1466
1508
|
),
|
|
1467
1509
|
children: [
|
|
1468
|
-
/* @__PURE__ */ (0,
|
|
1469
|
-
/* @__PURE__ */ (0,
|
|
1470
|
-
/* @__PURE__ */ (0,
|
|
1510
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(ArrowButton, { direction: "left", visible: showPrev, onClick: onPrevWeek }),
|
|
1511
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: "flex flex-1 items-center justify-center text-center", children: text }),
|
|
1512
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(ArrowButton, { direction: "right", visible: showNext, onClick: onNextWeek })
|
|
1471
1513
|
]
|
|
1472
1514
|
}
|
|
1473
1515
|
);
|
|
1474
1516
|
}
|
|
1475
1517
|
);
|
|
1476
1518
|
var ArrowButton = ({ direction, visible, onClick }) => {
|
|
1519
|
+
const divider = /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" });
|
|
1477
1520
|
if (!visible) {
|
|
1478
|
-
return /* @__PURE__ */ (0,
|
|
1521
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: "flex items-stretch", children: [
|
|
1522
|
+
direction === "right" && divider,
|
|
1523
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: "w-[42px]" }),
|
|
1524
|
+
direction === "left" && divider
|
|
1525
|
+
] });
|
|
1479
1526
|
}
|
|
1480
|
-
return /* @__PURE__ */ (0,
|
|
1481
|
-
"
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1527
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: "flex items-stretch", children: [
|
|
1528
|
+
direction === "right" && divider,
|
|
1529
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
1530
|
+
"button",
|
|
1531
|
+
{
|
|
1532
|
+
type: "button",
|
|
1533
|
+
onClick,
|
|
1534
|
+
className: cn(
|
|
1535
|
+
"flex w-[42px] items-center justify-center",
|
|
1536
|
+
"text-gray06 cursor-pointer transition-colors",
|
|
1537
|
+
"hover:bg-gray00 active:bg-gray01"
|
|
1538
|
+
),
|
|
1539
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
1540
|
+
IconChevronDownXS,
|
|
1541
|
+
{
|
|
1542
|
+
className: direction === "left" ? "rotate-90" : "-rotate-90",
|
|
1543
|
+
stroke: "currentColor"
|
|
1544
|
+
}
|
|
1545
|
+
)
|
|
1546
|
+
}
|
|
1547
|
+
),
|
|
1548
|
+
direction === "left" && divider
|
|
1549
|
+
] });
|
|
1499
1550
|
};
|
|
1500
1551
|
|
|
1501
1552
|
// src/components/Timetable/Timetable.tsx
|
|
1502
|
-
var
|
|
1553
|
+
var import_jsx_runtime36 = require("react/jsx-runtime");
|
|
1503
1554
|
var printColorHoverClass = {
|
|
1504
1555
|
Plotter: "hover:bg-print-plotter",
|
|
1505
1556
|
Printer: "hover:bg-print-printer",
|
|
@@ -1522,8 +1573,8 @@ var Timetable = (0, import_react8.forwardRef)(function Timetable2({
|
|
|
1522
1573
|
canNextWeek,
|
|
1523
1574
|
className
|
|
1524
1575
|
}, ref) {
|
|
1525
|
-
return /* @__PURE__ */ (0,
|
|
1526
|
-
!hideWeekNavigation && /* @__PURE__ */ (0,
|
|
1576
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { ref, className: cn(fluid && "w-full", className), children: [
|
|
1577
|
+
!hideWeekNavigation && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
1527
1578
|
WeekNavigation,
|
|
1528
1579
|
{
|
|
1529
1580
|
date: weekStart,
|
|
@@ -1534,7 +1585,7 @@ var Timetable = (0, import_react8.forwardRef)(function Timetable2({
|
|
|
1534
1585
|
onNextWeek
|
|
1535
1586
|
}
|
|
1536
1587
|
),
|
|
1537
|
-
/* @__PURE__ */ (0,
|
|
1588
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: cn("flex", fluid && "w-full"), children: days.map((day) => /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
1538
1589
|
DailyTimetable,
|
|
1539
1590
|
{
|
|
1540
1591
|
date: day.date,
|
|
@@ -1547,9 +1598,9 @@ var Timetable = (0, import_react8.forwardRef)(function Timetable2({
|
|
|
1547
1598
|
] });
|
|
1548
1599
|
});
|
|
1549
1600
|
var DailyTimetable = ({ date, slots, fluid, onSelectTime, className }) => {
|
|
1550
|
-
return /* @__PURE__ */ (0,
|
|
1551
|
-
/* @__PURE__ */ (0,
|
|
1552
|
-
slots.map((slot) => /* @__PURE__ */ (0,
|
|
1601
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: cn("flex flex-col", fluid ? "flex-1 min-w-0" : "w-18", className), children: [
|
|
1602
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "h-12 flex items-center justify-center border-b border-gray02 text-body1-regular text-secondary", children: formatDayLabel(date) }),
|
|
1603
|
+
slots.map((slot) => /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
1553
1604
|
TimeItem,
|
|
1554
1605
|
{
|
|
1555
1606
|
state: slot.state,
|
|
@@ -1575,17 +1626,17 @@ var TimeItem = ({
|
|
|
1575
1626
|
}) => {
|
|
1576
1627
|
const clickable = (state === "default" || state === "selected") && !!onClick;
|
|
1577
1628
|
const style = state === "default" && color ? { "--tt-hover": color } : void 0;
|
|
1578
|
-
return /* @__PURE__ */ (0,
|
|
1629
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
1579
1630
|
"div",
|
|
1580
1631
|
{
|
|
1581
1632
|
onClick: clickable ? onClick : void 0,
|
|
1582
1633
|
style,
|
|
1583
1634
|
className: cn(
|
|
1584
|
-
"h-18 flex items-center justify-center",
|
|
1635
|
+
"h-18 flex items-center justify-center border-b border-gray02",
|
|
1585
1636
|
fluid ? "w-full" : "w-18",
|
|
1586
1637
|
"text-body1-medium text-center bg-white text-primary",
|
|
1587
1638
|
state === "none" && "bg-gray00 text-transparent",
|
|
1588
|
-
state === "selected" && "bg-black text-
|
|
1639
|
+
state === "selected" && "bg-black text-white hover:cursor-pointer",
|
|
1589
1640
|
state === "disabled" && "bg-gray00 text-gray03",
|
|
1590
1641
|
state === "default" && [
|
|
1591
1642
|
"hover:cursor-pointer",
|
|
@@ -1600,7 +1651,7 @@ var TimeItem = ({
|
|
|
1600
1651
|
|
|
1601
1652
|
// src/components/TNB/TNB.tsx
|
|
1602
1653
|
var import_react9 = require("react");
|
|
1603
|
-
var
|
|
1654
|
+
var import_jsx_runtime37 = require("react/jsx-runtime");
|
|
1604
1655
|
function useControllableState2(controlled, defaultValue) {
|
|
1605
1656
|
const isControlled = controlled !== void 0;
|
|
1606
1657
|
const [uncontrolled, setUncontrolled] = (0, import_react9.useState)(defaultValue);
|
|
@@ -1652,8 +1703,8 @@ var TNB = (0, import_react9.forwardRef)(function TNB2({
|
|
|
1652
1703
|
setLowerValue(label);
|
|
1653
1704
|
onSelectedLowerChange?.(label);
|
|
1654
1705
|
};
|
|
1655
|
-
return /* @__PURE__ */ (0,
|
|
1656
|
-
/* @__PURE__ */ (0,
|
|
1706
|
+
return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("nav", { ref, "aria-label": ariaLabel, className: cn("w-full bg-white", className), children: [
|
|
1707
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
|
|
1657
1708
|
UpperPart,
|
|
1658
1709
|
{
|
|
1659
1710
|
logo,
|
|
@@ -1664,7 +1715,7 @@ var TNB = (0, import_react9.forwardRef)(function TNB2({
|
|
|
1664
1715
|
linkComponent
|
|
1665
1716
|
}
|
|
1666
1717
|
),
|
|
1667
|
-
/* @__PURE__ */ (0,
|
|
1718
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
|
|
1668
1719
|
LowerPart,
|
|
1669
1720
|
{
|
|
1670
1721
|
lowerPartItemList: currentLowerItemList,
|
|
@@ -1679,7 +1730,7 @@ var NavClickable = (0, import_react9.forwardRef)(function NavClickable2({ href,
|
|
|
1679
1730
|
const ariaCurrent = current ? "page" : void 0;
|
|
1680
1731
|
if (href && !disabled) {
|
|
1681
1732
|
if (Link) {
|
|
1682
|
-
return /* @__PURE__ */ (0,
|
|
1733
|
+
return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
|
|
1683
1734
|
Link,
|
|
1684
1735
|
{
|
|
1685
1736
|
href,
|
|
@@ -1691,7 +1742,7 @@ var NavClickable = (0, import_react9.forwardRef)(function NavClickable2({ href,
|
|
|
1691
1742
|
}
|
|
1692
1743
|
);
|
|
1693
1744
|
}
|
|
1694
|
-
return /* @__PURE__ */ (0,
|
|
1745
|
+
return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
|
|
1695
1746
|
"a",
|
|
1696
1747
|
{
|
|
1697
1748
|
href,
|
|
@@ -1703,7 +1754,7 @@ var NavClickable = (0, import_react9.forwardRef)(function NavClickable2({ href,
|
|
|
1703
1754
|
}
|
|
1704
1755
|
);
|
|
1705
1756
|
}
|
|
1706
|
-
return /* @__PURE__ */ (0,
|
|
1757
|
+
return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
|
|
1707
1758
|
"button",
|
|
1708
1759
|
{
|
|
1709
1760
|
type: "button",
|
|
@@ -1725,33 +1776,50 @@ var UpperPart = ({
|
|
|
1725
1776
|
linkComponent,
|
|
1726
1777
|
className
|
|
1727
1778
|
}) => {
|
|
1728
|
-
return /* @__PURE__ */ (0,
|
|
1729
|
-
|
|
1730
|
-
|
|
1731
|
-
|
|
1732
|
-
|
|
1733
|
-
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
linkComponent,
|
|
1738
|
-
|
|
1739
|
-
|
|
1740
|
-
|
|
1741
|
-
|
|
1742
|
-
|
|
1743
|
-
|
|
1744
|
-
|
|
1745
|
-
|
|
1746
|
-
|
|
1747
|
-
|
|
1748
|
-
|
|
1749
|
-
|
|
1750
|
-
|
|
1751
|
-
|
|
1752
|
-
|
|
1753
|
-
|
|
1754
|
-
|
|
1779
|
+
return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
|
|
1780
|
+
"div",
|
|
1781
|
+
{
|
|
1782
|
+
className: cn(
|
|
1783
|
+
"w-full min-h-13 flex items-stretch justify-between border-b border-gray02",
|
|
1784
|
+
className
|
|
1785
|
+
),
|
|
1786
|
+
children: [
|
|
1787
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "flex items-stretch", children: [
|
|
1788
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "flex w-14 shrink-0 items-center justify-center px-3", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(NavIconButton, { ...logo, linkComponent }) }),
|
|
1789
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "flex items-stretch", children: [
|
|
1790
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" }),
|
|
1791
|
+
upperPartItemList.map((item) => /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_react9.Fragment, { children: [
|
|
1792
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
|
|
1793
|
+
UpperPartTab,
|
|
1794
|
+
{
|
|
1795
|
+
label: item.label,
|
|
1796
|
+
href: item.href,
|
|
1797
|
+
selected: item.label === selected,
|
|
1798
|
+
linkComponent,
|
|
1799
|
+
onClick: () => {
|
|
1800
|
+
item.onClick?.();
|
|
1801
|
+
onSelectItem(item.label);
|
|
1802
|
+
}
|
|
1803
|
+
}
|
|
1804
|
+
),
|
|
1805
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" })
|
|
1806
|
+
] }, item.id ?? item.label))
|
|
1807
|
+
] })
|
|
1808
|
+
] }),
|
|
1809
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "flex items-stretch", children: [
|
|
1810
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" }),
|
|
1811
|
+
upperPartIconList.map((icon, index) => /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
|
|
1812
|
+
NavIconButton,
|
|
1813
|
+
{
|
|
1814
|
+
...icon,
|
|
1815
|
+
linkComponent
|
|
1816
|
+
},
|
|
1817
|
+
icon.id ?? icon.src ?? icon.label ?? index
|
|
1818
|
+
))
|
|
1819
|
+
] })
|
|
1820
|
+
]
|
|
1821
|
+
}
|
|
1822
|
+
);
|
|
1755
1823
|
};
|
|
1756
1824
|
var UpperPartTab = ({
|
|
1757
1825
|
label,
|
|
@@ -1761,7 +1829,7 @@ var UpperPartTab = ({
|
|
|
1761
1829
|
linkComponent,
|
|
1762
1830
|
className
|
|
1763
1831
|
}) => {
|
|
1764
|
-
return /* @__PURE__ */ (0,
|
|
1832
|
+
return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
|
|
1765
1833
|
NavClickable,
|
|
1766
1834
|
{
|
|
1767
1835
|
href,
|
|
@@ -1769,11 +1837,14 @@ var UpperPartTab = ({
|
|
|
1769
1837
|
linkComponent,
|
|
1770
1838
|
current: selected,
|
|
1771
1839
|
className: cn(
|
|
1772
|
-
"inline-flex
|
|
1773
|
-
|
|
1840
|
+
"inline-flex min-h-13 flex-col items-center gap-2 pt-2.5 cursor-pointer no-underline",
|
|
1841
|
+
"transition-colors hover:bg-gray00 active:bg-gray01",
|
|
1774
1842
|
className
|
|
1775
1843
|
),
|
|
1776
|
-
children:
|
|
1844
|
+
children: [
|
|
1845
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: cn("px-5 text-head1-medium", selected ? "text-strong" : "text-quaternary"), children: label }),
|
|
1846
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: cn("h-0.5 w-full", selected ? "bg-black" : "bg-transparent") })
|
|
1847
|
+
]
|
|
1777
1848
|
}
|
|
1778
1849
|
);
|
|
1779
1850
|
};
|
|
@@ -1781,7 +1852,7 @@ var NavIconButton = (0, import_react9.forwardRef)(
|
|
|
1781
1852
|
function NavIconButton2({ src, icon, alt, label, href, onClick, selected, badge, className, linkComponent }, forwardedRef) {
|
|
1782
1853
|
const interactive = Boolean(onClick || href);
|
|
1783
1854
|
const showBadge = badge !== void 0 && badge !== null && badge !== false;
|
|
1784
|
-
return /* @__PURE__ */ (0,
|
|
1855
|
+
return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
|
|
1785
1856
|
NavClickable,
|
|
1786
1857
|
{
|
|
1787
1858
|
ref: forwardedRef,
|
|
@@ -1791,15 +1862,15 @@ var NavIconButton = (0, import_react9.forwardRef)(
|
|
|
1791
1862
|
current: selected,
|
|
1792
1863
|
disabled: !interactive,
|
|
1793
1864
|
className: cn(
|
|
1794
|
-
"relative inline-flex h-
|
|
1865
|
+
"relative inline-flex h-13 min-w-13 items-center justify-center gap-1.5 px-3 transition-colors",
|
|
1795
1866
|
interactive && "cursor-pointer",
|
|
1796
1867
|
selected ? "bg-black text-white" : "bg-transparent hover:bg-gray00 active:bg-gray01",
|
|
1797
1868
|
className
|
|
1798
1869
|
),
|
|
1799
1870
|
children: [
|
|
1800
|
-
icon ? /* @__PURE__ */ (0,
|
|
1801
|
-
label ? /* @__PURE__ */ (0,
|
|
1802
|
-
showBadge ? /* @__PURE__ */ (0,
|
|
1871
|
+
icon ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: "inline-flex h-6 w-6 items-center justify-center", children: icon }) : src ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("img", { src, alt: alt ?? label ?? "", className: "h-6 w-6" }) : null,
|
|
1872
|
+
label ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: cn("text-body2-regular", selected ? "text-white" : "text-secondary"), children: label }) : null,
|
|
1873
|
+
showBadge ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
|
|
1803
1874
|
"span",
|
|
1804
1875
|
{
|
|
1805
1876
|
"aria-hidden": badge === true,
|
|
@@ -1825,24 +1896,29 @@ var LowerPart = ({
|
|
|
1825
1896
|
if (lowerPartItemList.length === 0) {
|
|
1826
1897
|
return null;
|
|
1827
1898
|
}
|
|
1828
|
-
return /* @__PURE__ */ (0,
|
|
1899
|
+
return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
|
|
1829
1900
|
"div",
|
|
1830
1901
|
{
|
|
1831
|
-
className: cn("w-full h-
|
|
1832
|
-
children:
|
|
1833
|
-
|
|
1834
|
-
{
|
|
1835
|
-
|
|
1836
|
-
|
|
1837
|
-
|
|
1838
|
-
|
|
1839
|
-
|
|
1840
|
-
|
|
1841
|
-
|
|
1842
|
-
|
|
1843
|
-
|
|
1844
|
-
|
|
1845
|
-
|
|
1902
|
+
className: cn("w-full h-[42px] pl-14 flex items-stretch border-b border-gray02", className),
|
|
1903
|
+
children: [
|
|
1904
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" }),
|
|
1905
|
+
lowerPartItemList.map((item) => /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_react9.Fragment, { children: [
|
|
1906
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
|
|
1907
|
+
LowerPartItemButton,
|
|
1908
|
+
{
|
|
1909
|
+
label: item.label,
|
|
1910
|
+
href: item.href,
|
|
1911
|
+
selected: item.label === selected,
|
|
1912
|
+
linkComponent,
|
|
1913
|
+
onClick: () => {
|
|
1914
|
+
item.onClick?.();
|
|
1915
|
+
onSelectItem(item.label);
|
|
1916
|
+
}
|
|
1917
|
+
}
|
|
1918
|
+
),
|
|
1919
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" })
|
|
1920
|
+
] }, item.id ?? item.label))
|
|
1921
|
+
]
|
|
1846
1922
|
}
|
|
1847
1923
|
);
|
|
1848
1924
|
};
|
|
@@ -1854,7 +1930,7 @@ var LowerPartItemButton = ({
|
|
|
1854
1930
|
linkComponent,
|
|
1855
1931
|
className
|
|
1856
1932
|
}) => {
|
|
1857
|
-
return /* @__PURE__ */ (0,
|
|
1933
|
+
return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
|
|
1858
1934
|
NavClickable,
|
|
1859
1935
|
{
|
|
1860
1936
|
href,
|
|
@@ -1862,9 +1938,9 @@ var LowerPartItemButton = ({
|
|
|
1862
1938
|
linkComponent,
|
|
1863
1939
|
current: selected,
|
|
1864
1940
|
className: cn(
|
|
1865
|
-
"inline-flex px-
|
|
1866
|
-
"hover:bg-gray00 active:bg-gray01",
|
|
1867
|
-
selected ? "text-strong
|
|
1941
|
+
"inline-flex h-full items-center justify-center px-5 text-head3-medium cursor-pointer no-underline",
|
|
1942
|
+
"transition-colors hover:bg-gray00 active:bg-gray01",
|
|
1943
|
+
selected ? "text-strong" : "text-quaternary",
|
|
1868
1944
|
className
|
|
1869
1945
|
),
|
|
1870
1946
|
children: label
|
|
@@ -1874,7 +1950,7 @@ var LowerPartItemButton = ({
|
|
|
1874
1950
|
|
|
1875
1951
|
// src/components/Toast/Toast.tsx
|
|
1876
1952
|
var import_react10 = require("react");
|
|
1877
|
-
var
|
|
1953
|
+
var import_jsx_runtime38 = require("react/jsx-runtime");
|
|
1878
1954
|
var EXIT_MS = 300;
|
|
1879
1955
|
var Toast = (0, import_react10.forwardRef)(function Toast2({ message, open, duration = 3e3, onClose, position = "none", className }, ref) {
|
|
1880
1956
|
const controlled = open !== void 0;
|
|
@@ -1897,7 +1973,7 @@ var Toast = (0, import_react10.forwardRef)(function Toast2({ message, open, dura
|
|
|
1897
1973
|
return () => clearTimeout(timer);
|
|
1898
1974
|
}, [controlled, open, duration, onClose]);
|
|
1899
1975
|
if (!mounted) return null;
|
|
1900
|
-
const banner = /* @__PURE__ */ (0,
|
|
1976
|
+
const banner = /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
|
|
1901
1977
|
"div",
|
|
1902
1978
|
{
|
|
1903
1979
|
ref,
|
|
@@ -1905,7 +1981,7 @@ var Toast = (0, import_react10.forwardRef)(function Toast2({ message, open, dura
|
|
|
1905
1981
|
"aria-live": "polite",
|
|
1906
1982
|
className: cn(
|
|
1907
1983
|
"w-full h-fit py-2.5 bg-gray06",
|
|
1908
|
-
"font-pretendard text-white text-center font-semibold text-[17px]",
|
|
1984
|
+
"font-pretendard text-white text-center font-semibold text-[17px] leading-[1.6]",
|
|
1909
1985
|
"shadow-[0_2px_15px_rgba(0,0,0,0.18)]",
|
|
1910
1986
|
controlled && "transition-opacity duration-300",
|
|
1911
1987
|
controlled && (visible ? "opacity-100" : "opacity-0"),
|
|
@@ -1915,7 +1991,7 @@ var Toast = (0, import_react10.forwardRef)(function Toast2({ message, open, dura
|
|
|
1915
1991
|
}
|
|
1916
1992
|
);
|
|
1917
1993
|
if (position === "none") return banner;
|
|
1918
|
-
return /* @__PURE__ */ (0,
|
|
1994
|
+
return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
|
|
1919
1995
|
"div",
|
|
1920
1996
|
{
|
|
1921
1997
|
className: cn(
|
|
@@ -1935,6 +2011,8 @@ var Toast = (0, import_react10.forwardRef)(function Toast2({ message, open, dura
|
|
|
1935
2011
|
CategorySegmentedControl,
|
|
1936
2012
|
Column,
|
|
1937
2013
|
ColumnContentContainer,
|
|
2014
|
+
ColumnDescription,
|
|
2015
|
+
ColumnDescriptionList,
|
|
1938
2016
|
ColumnLabel,
|
|
1939
2017
|
ColumnSubTitle,
|
|
1940
2018
|
ColumnText,
|
|
@@ -1951,6 +2029,7 @@ var Toast = (0, import_react10.forwardRef)(function Toast2({ message, open, dura
|
|
|
1951
2029
|
FormTextArea,
|
|
1952
2030
|
IconCheck,
|
|
1953
2031
|
IconChevronDownXS,
|
|
2032
|
+
IconCompass,
|
|
1954
2033
|
IconInfo,
|
|
1955
2034
|
List,
|
|
1956
2035
|
Modal,
|