@hivcd-printshop/design-system 1.2.3 → 1.3.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.js CHANGED
@@ -21,6 +21,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
21
21
  // src/index.ts
22
22
  var index_exports = {};
23
23
  __export(index_exports, {
24
+ Accordion: () => Accordion,
24
25
  BackButton: () => BackButton,
25
26
  BasicFormField: () => BasicFormField,
26
27
  CTA: () => CTA,
@@ -73,6 +74,9 @@ __export(index_exports, {
73
74
  });
74
75
  module.exports = __toCommonJS(index_exports);
75
76
 
77
+ // src/components/Accordion/Accordion.tsx
78
+ var import_react2 = require("react");
79
+
76
80
  // src/lib/cn.ts
77
81
  var import_clsx = require("clsx");
78
82
  var import_tailwind_merge = require("tailwind-merge");
@@ -100,6 +104,21 @@ function cn(...inputs) {
100
104
  return twMerge((0, import_clsx.clsx)(inputs));
101
105
  }
102
106
 
107
+ // src/lib/useControllableState.ts
108
+ var import_react = require("react");
109
+ function useControllableState(controlled, defaultValue) {
110
+ const isControlled = controlled !== void 0;
111
+ const [uncontrolled, setUncontrolled] = (0, import_react.useState)(defaultValue);
112
+ const value = isControlled ? controlled : uncontrolled;
113
+ const setValue = (0, import_react.useCallback)(
114
+ (next) => {
115
+ if (!isControlled) setUncontrolled(next);
116
+ },
117
+ [isControlled]
118
+ );
119
+ return [value, setValue, isControlled];
120
+ }
121
+
103
122
  // src/assets/svgs/Icons.tsx
104
123
  var import_jsx_runtime = require("react/jsx-runtime");
105
124
  var IconChevronDownXS = ({
@@ -263,8 +282,8 @@ var IconRadioSelected = ({
263
282
  fill: "none",
264
283
  xmlns: "http://www.w3.org/2000/svg",
265
284
  children: [
266
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("circle", { cx: "8", cy: "8", r: "7", stroke: stroke || "#121212" }),
267
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("circle", { cx: "8", cy: "8", r: "4", fill: fill || "#121212" })
285
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("circle", { cx: "8", cy: "8", r: "7", stroke: stroke || "#121212", strokeWidth: "1.5" }),
286
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("circle", { cx: "8", cy: "8", r: "3.5", fill: fill || "#121212" })
268
287
  ]
269
288
  }
270
289
  );
@@ -282,7 +301,7 @@ var IconRadioUnselected = ({
282
301
  viewBox: "0 0 16 16",
283
302
  fill: "none",
284
303
  xmlns: "http://www.w3.org/2000/svg",
285
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("circle", { cx: "8", cy: "8", r: "7", stroke: stroke || "#B4B9C2" })
304
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("circle", { cx: "8", cy: "8", r: "7", stroke: stroke || "#505865", strokeWidth: "1.5" })
286
305
  }
287
306
  );
288
307
  };
@@ -332,10 +351,88 @@ var IconClose = ({ className, stroke }) => {
332
351
  );
333
352
  };
334
353
 
335
- // src/components/BackButton/BackButton.tsx
354
+ // src/components/Accordion/Accordion.tsx
336
355
  var import_jsx_runtime2 = require("react/jsx-runtime");
356
+ var Accordion = (0, import_react2.forwardRef)(function Accordion2({
357
+ step,
358
+ title,
359
+ children,
360
+ headerRight,
361
+ collapsible = true,
362
+ defaultOpen = true,
363
+ open,
364
+ onOpenChange,
365
+ stickyHeader = false,
366
+ className,
367
+ headerClassName,
368
+ contentClassName
369
+ }, ref) {
370
+ const [isOpen, setIsOpen] = useControllableState(open, defaultOpen);
371
+ const expanded = collapsible ? isOpen : true;
372
+ const toggleOpen = () => {
373
+ if (!collapsible) return;
374
+ const next = !isOpen;
375
+ setIsOpen(next);
376
+ onOpenChange?.(next);
377
+ };
378
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { ref, className: cn("w-full bg-white", className), children: [
379
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
380
+ AccordionHeader,
381
+ {
382
+ step,
383
+ title,
384
+ headerRight,
385
+ isOpen: expanded,
386
+ collapsible,
387
+ onClick: toggleOpen,
388
+ className: cn(stickyHeader && "sticky top-0 z-10", headerClassName)
389
+ }
390
+ ),
391
+ expanded && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: contentClassName, children })
392
+ ] });
393
+ });
394
+ var AccordionHeader = ({
395
+ step,
396
+ title,
397
+ headerRight,
398
+ isOpen,
399
+ collapsible,
400
+ onClick,
401
+ className
402
+ }) => {
403
+ const label = /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("span", { className: "truncate", children: [
404
+ step,
405
+ " | ",
406
+ title
407
+ ] });
408
+ const base = "w-full flex items-center justify-between gap-3 px-5 py-2.5 text-head3-medium text-primary text-left bg-white border-b border-gray02";
409
+ if (!collapsible) {
410
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: cn(base, className), children: [
411
+ label,
412
+ headerRight
413
+ ] });
414
+ }
415
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
416
+ "button",
417
+ {
418
+ type: "button",
419
+ onClick,
420
+ className: cn(base, "cursor-pointer hover:bg-gray00 active:bg-gray01", className),
421
+ children: [
422
+ label,
423
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("span", { className: "flex shrink-0 items-center gap-3", children: [
424
+ headerRight,
425
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(IconChevronDownXS, { className: cn("transition-transform", isOpen && "rotate-180") })
426
+ ] })
427
+ ]
428
+ }
429
+ );
430
+ };
431
+
432
+ // src/components/BackButton/BackButton.tsx
433
+ var import_jsx_runtime3 = require("react/jsx-runtime");
337
434
  var BackButton = ({ onClick, className }) => {
338
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
435
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
339
436
  "button",
340
437
  {
341
438
  type: "button",
@@ -348,13 +445,13 @@ var BackButton = ({ onClick, className }) => {
348
445
  "cursor-pointer",
349
446
  className
350
447
  ),
351
- children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(IconGoBack, {})
448
+ children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(IconGoBack, {})
352
449
  }
353
450
  );
354
451
  };
355
452
 
356
453
  // src/components/CTA/CTA.tsx
357
- var import_jsx_runtime3 = require("react/jsx-runtime");
454
+ var import_jsx_runtime4 = require("react/jsx-runtime");
358
455
  var CTA = ({
359
456
  primary = false,
360
457
  alert = false,
@@ -365,7 +462,7 @@ var CTA = ({
365
462
  forModal = false,
366
463
  ...props
367
464
  }) => {
368
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
465
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
369
466
  "button",
370
467
  {
371
468
  type: "button",
@@ -393,22 +490,22 @@ var CTA = ({
393
490
  };
394
491
 
395
492
  // src/components/Column/MultiColumn.tsx
396
- var import_jsx_runtime4 = require("react/jsx-runtime");
493
+ var import_jsx_runtime5 = require("react/jsx-runtime");
397
494
  var MultiColumnMain = ({ children, className }) => {
398
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: cn("flex flex-col w-full h-full", className), children });
495
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: cn("flex flex-col w-full h-full", className), children });
399
496
  };
400
497
  var Columns = ({ children, className }) => {
401
498
  return (
402
499
  // flex 래퍼를 사용하고 하위 Column들이 flex-1을 가지게 하거나,
403
500
  // grid를 사용하여 열을 나눌 수 있어. 여기서는 flex를 활용한 균등 분할 예시야.
404
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: cn("flex w-full h-full divide-x divide-gray02", className), children })
501
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: cn("flex w-full h-full divide-x divide-gray02", className), children })
405
502
  );
406
503
  };
407
504
  var CTAs = ({ children, className }) => {
408
505
  if (!children) return null;
409
506
  return (
410
507
  // CTA 버튼들을 중앙에 배치하는 예시 (우측 정렬이 필요하면 justify-end 사용)
411
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: cn("flex flex-col w-full h-fit", className), children })
508
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: cn("flex flex-col w-full h-fit", className), children })
412
509
  );
413
510
  };
414
511
  var MultiColumn = Object.assign(MultiColumnMain, {
@@ -417,78 +514,78 @@ var MultiColumn = Object.assign(MultiColumnMain, {
417
514
  });
418
515
 
419
516
  // src/components/Column/Column.tsx
420
- var import_jsx_runtime5 = require("react/jsx-runtime");
517
+ var import_jsx_runtime6 = require("react/jsx-runtime");
421
518
  var Column = ({ className, children, header }) => {
422
- 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: [
423
- header && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("h1", { className: cn("text-body1-medium text-primary"), children: header }),
519
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: cn("flex flex-col gap-5", "h-full w-full px-5 py-3", className), children: [
520
+ header && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("h1", { className: cn("text-body1-medium text-primary"), children: header }),
424
521
  children
425
522
  ] });
426
523
  };
427
524
 
428
525
  // src/components/Column/ColumnContentContainer.tsx
429
- var import_jsx_runtime6 = require("react/jsx-runtime");
526
+ var import_jsx_runtime7 = require("react/jsx-runtime");
430
527
  var ColumnContentContainer = ({ className, children }) => {
431
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: cn("flex flex-col gap-1.5 w-full h-fit", className), children });
528
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: cn("flex flex-col gap-1.5 w-full h-fit", className), children });
432
529
  };
433
530
 
434
531
  // src/components/Column/ColumnLabel.tsx
435
- var import_jsx_runtime7 = require("react/jsx-runtime");
532
+ var import_jsx_runtime8 = require("react/jsx-runtime");
436
533
  var ColumnLabel = ({ className, children, subLabel, htmlFor }) => {
437
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("label", { htmlFor, className: cn("flex gap-1.5 items-end", className), children: [
438
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: cn("text-body2-regular text-tertiary"), children }),
439
- subLabel && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: cn("text-caption-book text-quaternary"), children: subLabel })
534
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("label", { htmlFor, className: cn("flex gap-1.5 items-end", className), children: [
535
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: cn("text-body2-regular text-tertiary"), children }),
536
+ subLabel && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: cn("text-caption-book text-quaternary"), children: subLabel })
440
537
  ] });
441
538
  };
442
539
 
443
540
  // src/components/Column/ColumnText.tsx
444
- var import_jsx_runtime8 = require("react/jsx-runtime");
541
+ var import_jsx_runtime9 = require("react/jsx-runtime");
445
542
  var ColumnTextStyle = "text-body3-book text-strong";
446
543
  var ModalTextStyle = "text-body1-regular text-primary";
447
544
  var ColumnText = ({ className, alert = false, children, onClick }) => {
448
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: cn(ColumnTextStyle, alert && "text-danger", className), onClick, children: children ? children : "-" });
545
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: cn(ColumnTextStyle, alert && "text-danger", className), onClick, children: children ? children : "-" });
449
546
  };
450
547
 
451
548
  // src/components/Column/ColumnSubTitle.tsx
452
- var import_jsx_runtime9 = require("react/jsx-runtime");
549
+ var import_jsx_runtime10 = require("react/jsx-runtime");
453
550
  var ColumnSubTitle = ({
454
551
  className,
455
552
  children,
456
553
  action,
457
554
  as: Tag2 = "h2"
458
555
  }) => {
459
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(Tag2, { className: cn("flex items-center justify-between gap-1.5", "w-full", className), children: [
460
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: cn("text-body1-medium text-primary"), children }),
461
- action && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "flex shrink-0 items-center", children: action })
556
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(Tag2, { className: cn("flex items-center justify-between gap-1.5", "w-full", className), children: [
557
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: cn("text-body1-medium text-primary"), children }),
558
+ action && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "flex shrink-0 items-center", children: action })
462
559
  ] });
463
560
  };
464
561
 
465
562
  // src/components/Column/ColumnDescription.tsx
466
- var import_jsx_runtime10 = require("react/jsx-runtime");
563
+ var import_jsx_runtime11 = require("react/jsx-runtime");
467
564
  var ColumnDescription = ({
468
565
  className,
469
566
  children,
470
567
  bullet = true
471
568
  }) => {
472
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: cn("flex items-start gap-3", className), children: [
473
- 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" }) }),
474
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "min-w-0 flex-1 whitespace-pre-line text-body3-book text-primary", children })
569
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: cn("flex items-start gap-3", className), children: [
570
+ bullet && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "flex shrink-0 items-center py-1", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(IconCompass, { className: "size-4" }) }),
571
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "min-w-0 flex-1 whitespace-pre-line text-body3-book text-primary", children })
475
572
  ] });
476
573
  };
477
574
  var ColumnDescriptionList = ({ className, children }) => {
478
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: cn("flex flex-col gap-4", className), children });
575
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: cn("flex flex-col gap-4", className), children });
479
576
  };
480
577
 
481
578
  // src/components/Form/BasicFormField.tsx
482
- var import_jsx_runtime11 = require("react/jsx-runtime");
579
+ var import_jsx_runtime12 = require("react/jsx-runtime");
483
580
  var BasicFormField = ({
484
581
  children,
485
582
  isDanger,
486
583
  dangerText,
487
584
  className
488
585
  }) => {
489
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: cn("flex flex-col gap-1.5", className), children: [
586
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: cn("flex flex-col gap-1.5", className), children: [
490
587
  children,
491
- isDanger && dangerText && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "text-caption-book text-danger", children: dangerText })
588
+ isDanger && dangerText && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "text-caption-book text-danger", children: dangerText })
492
589
  ] });
493
590
  };
494
591
  var getInputStyles = (isDanger, additionalClass) => {
@@ -507,15 +604,15 @@ var getInputStyles = (isDanger, additionalClass) => {
507
604
  };
508
605
 
509
606
  // src/components/Form/FormText.tsx
510
- var import_jsx_runtime12 = require("react/jsx-runtime");
607
+ var import_jsx_runtime13 = require("react/jsx-runtime");
511
608
  var FormText = ({ className, isDanger, dangerText, ...props }) => {
512
- 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 }) });
609
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("input", { type: "text", className: getInputStyles(isDanger, className), ...props }) });
513
610
  };
514
611
 
515
612
  // src/components/Form/FormTextArea.tsx
516
- var import_jsx_runtime13 = require("react/jsx-runtime");
613
+ var import_jsx_runtime14 = require("react/jsx-runtime");
517
614
  var FormTextArea = ({ className, isDanger, dangerText, ...props }) => {
518
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
615
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
519
616
  "textarea",
520
617
  {
521
618
  className: getInputStyles(isDanger, "resize-none h-30 px-4 py-2.5 " + (className || "")),
@@ -525,19 +622,19 @@ var FormTextArea = ({ className, isDanger, dangerText, ...props }) => {
525
622
  };
526
623
 
527
624
  // src/components/Form/FormNumber.tsx
528
- var import_jsx_runtime14 = require("react/jsx-runtime");
625
+ var import_jsx_runtime15 = require("react/jsx-runtime");
529
626
  var FormNumber = ({ className, isDanger, dangerText, ...props }) => {
530
- 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 }) });
627
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("input", { type: "number", className: getInputStyles(isDanger, className), ...props }) });
531
628
  };
532
629
 
533
630
  // src/components/Form/FormPassword.tsx
534
- var import_jsx_runtime15 = require("react/jsx-runtime");
631
+ var import_jsx_runtime16 = require("react/jsx-runtime");
535
632
  var FormPassword = ({ className, isDanger, dangerText, ...props }) => {
536
- 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 }) });
633
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("input", { type: "password", className: getInputStyles(isDanger, className), ...props }) });
537
634
  };
538
635
 
539
636
  // src/components/Form/FormTel.tsx
540
- var import_jsx_runtime16 = require("react/jsx-runtime");
637
+ var import_jsx_runtime17 = require("react/jsx-runtime");
541
638
  var FormTel = ({ className, isDanger, dangerText, onChange, ...props }) => {
542
639
  const handlePhoneChange = (e) => {
543
640
  const rawValue = e.target.value.replace(/[^0-9]/g, "");
@@ -549,7 +646,7 @@ var FormTel = ({ className, isDanger, dangerText, onChange, ...props }) => {
549
646
  e.target.value = formattedValue;
550
647
  if (onChange) onChange(e);
551
648
  };
552
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
649
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
553
650
  "input",
554
651
  {
555
652
  type: "tel",
@@ -562,8 +659,8 @@ var FormTel = ({ className, isDanger, dangerText, onChange, ...props }) => {
562
659
  };
563
660
 
564
661
  // src/components/Form/FormColor.tsx
565
- var import_react = require("react");
566
- var import_jsx_runtime17 = require("react/jsx-runtime");
662
+ var import_react3 = require("react");
663
+ var import_jsx_runtime18 = require("react/jsx-runtime");
567
664
  var FormColor = ({
568
665
  className,
569
666
  isDanger,
@@ -573,7 +670,7 @@ var FormColor = ({
573
670
  onChange,
574
671
  ...props
575
672
  }) => {
576
- const [internalColor, setInternalColor] = (0, import_react.useState)(
673
+ const [internalColor, setInternalColor] = (0, import_react3.useState)(
577
674
  value || defaultValue || "#000000"
578
675
  );
579
676
  const color = value !== void 0 ? value : internalColor;
@@ -581,7 +678,7 @@ var FormColor = ({
581
678
  setInternalColor(e.target.value);
582
679
  onChange?.(e);
583
680
  };
584
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
681
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
585
682
  "label",
586
683
  {
587
684
  className: getInputStyles(
@@ -590,7 +687,7 @@ var FormColor = ({
590
687
  "flex items-center gap-2 relative focus-within:border-black focus-within:hover:bg-white" + (className || "")
591
688
  ),
592
689
  children: [
593
- /* @__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)(
690
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "w-6 h-6 shrink-0 overflow-hidden", style: { backgroundColor: color }, children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
594
691
  "input",
595
692
  {
596
693
  type: "color",
@@ -600,15 +697,15 @@ var FormColor = ({
600
697
  ...props
601
698
  }
602
699
  ) }),
603
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "text-primary text-body3-regular uppercase flex-1 select-none", children: color })
700
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "text-primary text-body3-regular uppercase flex-1 select-none", children: color })
604
701
  ]
605
702
  }
606
703
  ) });
607
704
  };
608
705
 
609
706
  // src/components/Form/FormFile.tsx
610
- var import_react2 = require("react");
611
- var import_jsx_runtime18 = require("react/jsx-runtime");
707
+ var import_react4 = require("react");
708
+ var import_jsx_runtime19 = require("react/jsx-runtime");
612
709
  var FormFile = ({
613
710
  className,
614
711
  isDanger,
@@ -618,7 +715,7 @@ var FormFile = ({
618
715
  onChange,
619
716
  ...props
620
717
  }) => {
621
- const [selectedFile, setSelectedFile] = (0, import_react2.useState)(null);
718
+ const [selectedFile, setSelectedFile] = (0, import_react4.useState)(null);
622
719
  const handleFileChange = (e) => {
623
720
  const originalFile = e.target.files?.[0];
624
721
  if (!originalFile) {
@@ -669,7 +766,7 @@ var FormFile = ({
669
766
  }
670
767
  };
671
768
  const displayFileName = selectedFile?.name || (fileUrl ? fileUrl.split("/").pop() : null);
672
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
769
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
673
770
  "div",
674
771
  {
675
772
  className: getInputStyles(
@@ -682,7 +779,7 @@ var FormFile = ({
682
779
  )
683
780
  ),
684
781
  children: [
685
- displayFileName && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
782
+ displayFileName && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
686
783
  "span",
687
784
  {
688
785
  onClick: handleDownload,
@@ -691,9 +788,9 @@ var FormFile = ({
691
788
  children: displayFileName
692
789
  }
693
790
  ),
694
- /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("label", { className: "shrink-0 px-1 -mx-1 cursor-pointer", children: [
695
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "text-primary text-caption-regular underline", children: displayFileName ? "\uB2E4\uC2DC \uCCA8\uBD80" : "\uD30C\uC77C \uCCA8\uBD80" }),
696
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("input", { type: "file", className: "hidden", onChange: handleFileChange, ...props })
791
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("label", { className: "shrink-0 px-1 -mx-1 cursor-pointer", children: [
792
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "text-primary text-caption-regular underline", children: displayFileName ? "\uB2E4\uC2DC \uCCA8\uBD80" : "\uD30C\uC77C \uCCA8\uBD80" }),
793
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("input", { type: "file", className: "hidden", onChange: handleFileChange, ...props })
697
794
  ] })
698
795
  ]
699
796
  }
@@ -701,7 +798,7 @@ var FormFile = ({
701
798
  };
702
799
 
703
800
  // src/components/Form/FormCheckBox.tsx
704
- var import_jsx_runtime19 = require("react/jsx-runtime");
801
+ var import_jsx_runtime20 = require("react/jsx-runtime");
705
802
  var FormCheckBox = ({
706
803
  isChecked,
707
804
  setIsChecked,
@@ -710,7 +807,7 @@ var FormCheckBox = ({
710
807
  textStyle,
711
808
  ...props
712
809
  }) => {
713
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
810
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
714
811
  "label",
715
812
  {
716
813
  className: cn(
@@ -721,7 +818,7 @@ var FormCheckBox = ({
721
818
  className
722
819
  ),
723
820
  children: [
724
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
821
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
725
822
  "input",
726
823
  {
727
824
  type: "checkbox",
@@ -731,14 +828,14 @@ var FormCheckBox = ({
731
828
  ...props
732
829
  }
733
830
  ),
734
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
831
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
735
832
  "div",
736
833
  {
737
834
  className: cn(
738
835
  "flex items-center justify-center w-5 h-5 shrink-0 rounded transition-colors",
739
836
  "group-hover:bg-gray00 group-active:bg-gray01"
740
837
  ),
741
- children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
838
+ children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
742
839
  "div",
743
840
  {
744
841
  className: cn(
@@ -748,29 +845,29 @@ var FormCheckBox = ({
748
845
  // 💡 3. 키보드 Tab 이동 시 접근성 향상 (포커스 링 표시)
749
846
  "peer-focus-visible:ring-2 peer-focus-visible:ring-black peer-focus-visible:ring-offset-1"
750
847
  ),
751
- children: isChecked && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(IconCheck, {})
848
+ children: isChecked && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(IconCheck, {})
752
849
  }
753
850
  )
754
851
  }
755
852
  ),
756
- children && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: cn("text-body3-book text-primary", textStyle), children })
853
+ children && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: cn("text-body3-book text-primary", textStyle), children })
757
854
  ]
758
855
  }
759
856
  );
760
857
  };
761
858
 
762
859
  // src/components/Form/FormSelectBox.tsx
763
- var import_react3 = require("react");
860
+ var import_react5 = require("react");
764
861
 
765
862
  // src/components/Form/SelectBoxOption.tsx
766
- var import_jsx_runtime20 = require("react/jsx-runtime");
863
+ var import_jsx_runtime21 = require("react/jsx-runtime");
767
864
  var SelectBoxOption = ({
768
865
  label,
769
866
  onClick,
770
867
  // selectedLabel,
771
868
  className
772
869
  }) => {
773
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
870
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
774
871
  "li",
775
872
  {
776
873
  onClick,
@@ -792,7 +889,7 @@ var SelectBoxOption = ({
792
889
  };
793
890
 
794
891
  // src/components/Form/FormSelectBox.tsx
795
- var import_jsx_runtime21 = require("react/jsx-runtime");
892
+ var import_jsx_runtime22 = require("react/jsx-runtime");
796
893
  var FormSelectBox = ({
797
894
  options,
798
895
  value,
@@ -802,9 +899,9 @@ var FormSelectBox = ({
802
899
  dangerText,
803
900
  className
804
901
  }) => {
805
- const [isOpen, setIsOpen] = (0, import_react3.useState)(false);
806
- const containerRef = (0, import_react3.useRef)(null);
807
- (0, import_react3.useEffect)(() => {
902
+ const [isOpen, setIsOpen] = (0, import_react5.useState)(false);
903
+ const containerRef = (0, import_react5.useRef)(null);
904
+ (0, import_react5.useEffect)(() => {
808
905
  const handleClickOutside = (event) => {
809
906
  if (containerRef.current && !containerRef.current.contains(event.target)) {
810
907
  setIsOpen(false);
@@ -815,8 +912,8 @@ var FormSelectBox = ({
815
912
  document.removeEventListener("mousedown", handleClickOutside);
816
913
  };
817
914
  }, []);
818
- 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: [
819
- /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
915
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { ref: containerRef, className: "relative w-full", children: [
916
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
820
917
  "div",
821
918
  {
822
919
  tabIndex: 0,
@@ -836,8 +933,8 @@ var FormSelectBox = ({
836
933
  setIsOpen((prev) => !prev);
837
934
  },
838
935
  children: [
839
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { className: value ? "text-primary" : "text-quaternary", children: value || placeholder }),
840
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
936
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: value ? "text-primary" : "text-quaternary", children: value || placeholder }),
937
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
841
938
  IconChevronDownXS,
842
939
  {
843
940
  className: cn("text-gray06 transition-transform", isOpen && "rotate-180"),
@@ -847,7 +944,7 @@ var FormSelectBox = ({
847
944
  ]
848
945
  }
849
946
  ),
850
- isOpen && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
947
+ isOpen && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
851
948
  "ul",
852
949
  {
853
950
  className: cn(
@@ -857,7 +954,7 @@ var FormSelectBox = ({
857
954
  "max-h-50 overflow-y-auto"
858
955
  // 항목이 너무 많으면 스크롤 생성 (디자인 스펙: 그림자 없음)
859
956
  ),
860
- children: options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
957
+ children: options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
861
958
  SelectBoxOption,
862
959
  {
863
960
  label: option,
@@ -874,7 +971,7 @@ var FormSelectBox = ({
874
971
  };
875
972
 
876
973
  // src/components/TextButton/TextButton.tsx
877
- var import_jsx_runtime22 = require("react/jsx-runtime");
974
+ var import_jsx_runtime23 = require("react/jsx-runtime");
878
975
  var TextButton = ({
879
976
  children,
880
977
  icon,
@@ -884,10 +981,10 @@ var TextButton = ({
884
981
  className,
885
982
  ...props
886
983
  }) => {
887
- const content = /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(import_jsx_runtime22.Fragment, { children: [
888
- icon && iconPosition === "left" && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "flex shrink-0 items-center", children: icon }),
889
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: cn(underline && "underline underline-offset-2"), children }),
890
- icon && iconPosition === "right" && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "flex shrink-0 items-center", children: icon })
984
+ const content = /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_jsx_runtime23.Fragment, { children: [
985
+ icon && iconPosition === "left" && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: "flex shrink-0 items-center", children: icon }),
986
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: cn(underline && "underline underline-offset-2"), children }),
987
+ icon && iconPosition === "right" && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: "flex shrink-0 items-center", children: icon })
891
988
  ] });
892
989
  const classes = cn(
893
990
  "inline-flex w-fit items-center gap-1 px-1 -mx-1",
@@ -902,19 +999,19 @@ var TextButton = ({
902
999
  );
903
1000
  if (props.href !== void 0) {
904
1001
  const { href, ...rest } = props;
905
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("a", { href, className: classes, ...rest, children: content });
1002
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("a", { href, className: classes, ...rest, children: content });
906
1003
  }
907
1004
  const buttonProps = props;
908
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("button", { type: "button", className: classes, ...buttonProps, children: content });
1005
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("button", { type: "button", className: classes, ...buttonProps, children: content });
909
1006
  };
910
1007
 
911
1008
  // src/components/Dropdown/Dropdown.tsx
912
- var import_react4 = require("react");
913
- var import_jsx_runtime23 = require("react/jsx-runtime");
1009
+ var import_react6 = require("react");
1010
+ var import_jsx_runtime24 = require("react/jsx-runtime");
914
1011
  var Dropdown = ({ selectedLabel, setSelectedLabel, labels, className }) => {
915
- const [isOpen, setIsOpen] = (0, import_react4.useState)(false);
916
- const containerRef = (0, import_react4.useRef)(null);
917
- (0, import_react4.useEffect)(() => {
1012
+ const [isOpen, setIsOpen] = (0, import_react6.useState)(false);
1013
+ const containerRef = (0, import_react6.useRef)(null);
1014
+ (0, import_react6.useEffect)(() => {
918
1015
  const handleClickOutside = (event) => {
919
1016
  if (containerRef.current && !containerRef.current.contains(event.target)) {
920
1017
  setIsOpen(false);
@@ -925,8 +1022,8 @@ var Dropdown = ({ selectedLabel, setSelectedLabel, labels, className }) => {
925
1022
  document.removeEventListener("mousedown", handleClickOutside);
926
1023
  };
927
1024
  }, []);
928
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { ref: containerRef, className: "relative", children: [
929
- /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
1025
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { ref: containerRef, className: "relative", children: [
1026
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
930
1027
  "div",
931
1028
  {
932
1029
  className: cn(
@@ -939,8 +1036,8 @@ var Dropdown = ({ selectedLabel, setSelectedLabel, labels, className }) => {
939
1036
  ),
940
1037
  onClick: () => setIsOpen((prev) => !prev),
941
1038
  children: [
942
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("p", { children: selectedLabel }),
943
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
1039
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("p", { children: selectedLabel }),
1040
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
944
1041
  IconChevronDownXS,
945
1042
  {
946
1043
  className: cn("text-gray06 transition-transform", isOpen && "rotate-180"),
@@ -950,7 +1047,7 @@ var Dropdown = ({ selectedLabel, setSelectedLabel, labels, className }) => {
950
1047
  ]
951
1048
  }
952
1049
  ),
953
- 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)(
1050
+ isOpen && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: cn("absolute top-full right-0 z-10", "box-border border border-gray02"), children: labels.map((label) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
954
1051
  SelectBoxOption,
955
1052
  {
956
1053
  label,
@@ -966,7 +1063,7 @@ var Dropdown = ({ selectedLabel, setSelectedLabel, labels, className }) => {
966
1063
  };
967
1064
 
968
1065
  // src/components/ListView/List.tsx
969
- var import_jsx_runtime24 = require("react/jsx-runtime");
1066
+ var import_jsx_runtime25 = require("react/jsx-runtime");
970
1067
  function List({
971
1068
  className,
972
1069
  label1,
@@ -979,7 +1076,7 @@ function List({
979
1076
  children,
980
1077
  ...props
981
1078
  }) {
982
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
1079
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
983
1080
  "li",
984
1081
  {
985
1082
  className: cn(
@@ -994,11 +1091,11 @@ function List({
994
1091
  ...props,
995
1092
  onClick,
996
1093
  children: [
997
- /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("section", { className: cn("flex items-center gap-4"), children: [
998
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("label", { className: cn("text-body2-regular"), children: label1 ? label1 : "-" }),
999
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: cn("flex items-center gap-2"), children })
1094
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("section", { className: cn("flex items-center gap-4"), children: [
1095
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("label", { className: cn("text-body2-regular"), children: label1 ? label1 : "-" }),
1096
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: cn("flex items-center gap-2"), children })
1000
1097
  ] }),
1001
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
1098
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
1002
1099
  "label",
1003
1100
  {
1004
1101
  className: cn(
@@ -1010,18 +1107,18 @@ function List({
1010
1107
  children: label2 ? label2 : "-"
1011
1108
  }
1012
1109
  ),
1013
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("label", { className: cn("text-body3-regular text-right"), children: label3 ? label3 : "-" })
1110
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("label", { className: cn("text-body3-regular text-right"), children: label3 ? label3 : "-" })
1014
1111
  ]
1015
1112
  }
1016
1113
  );
1017
1114
  }
1018
1115
 
1019
1116
  // src/components/Modal/Modal.tsx
1020
- var import_jsx_runtime25 = require("react/jsx-runtime");
1117
+ var import_jsx_runtime26 = require("react/jsx-runtime");
1021
1118
  var ModalBase = ({ isVisible, header, children, className, onClose }) => {
1022
1119
  if (!isVisible) return null;
1023
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: cn("fixed inset-0 z-50"), children: [
1024
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
1120
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: cn("fixed inset-0 z-50"), children: [
1121
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
1025
1122
  "div",
1026
1123
  {
1027
1124
  "aria-hidden": true,
@@ -1029,7 +1126,7 @@ var ModalBase = ({ isVisible, header, children, className, onClose }) => {
1029
1126
  className: cn("fixed inset-0 z-1000 bg-[#212121]/30", onClose && "cursor-pointer")
1030
1127
  }
1031
1128
  ),
1032
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: "fixed inset-0 z-1001 flex items-center justify-center pointer-events-none", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
1129
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "fixed inset-0 z-1001 flex items-center justify-center pointer-events-none", children: /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
1033
1130
  "main",
1034
1131
  {
1035
1132
  role: "dialog",
@@ -1042,7 +1139,7 @@ var ModalBase = ({ isVisible, header, children, className, onClose }) => {
1042
1139
  className
1043
1140
  ),
1044
1141
  children: [
1045
- onClose && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
1142
+ onClose && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
1046
1143
  "button",
1047
1144
  {
1048
1145
  type: "button",
@@ -1052,10 +1149,10 @@ var ModalBase = ({ isVisible, header, children, className, onClose }) => {
1052
1149
  "absolute right-3 top-3 flex size-8 items-center justify-center",
1053
1150
  "text-tertiary transition-colors hover:bg-gray00 active:bg-gray01 cursor-pointer"
1054
1151
  ),
1055
- children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(IconClose, {})
1152
+ children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(IconClose, {})
1056
1153
  }
1057
1154
  ),
1058
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("h1", { className: cn("text-strong font-[500] text-[24px] leading-[32px]"), children: header }),
1155
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("h1", { className: cn("text-strong font-[500] text-[24px] leading-[32px]"), children: header }),
1059
1156
  children
1060
1157
  ]
1061
1158
  }
@@ -1063,7 +1160,7 @@ var ModalBase = ({ isVisible, header, children, className, onClose }) => {
1063
1160
  ] });
1064
1161
  };
1065
1162
  var Contents = ({ children, className }) => {
1066
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
1163
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
1067
1164
  "div",
1068
1165
  {
1069
1166
  className: cn(
@@ -1080,7 +1177,7 @@ var CTAs2 = ({ children, className, row = false }) => {
1080
1177
  if (!children) return null;
1081
1178
  return (
1082
1179
  // CTA 버튼들을 중앙에 배치하는 예시 (우측 정렬이 필요하면 justify-end 사용)
1083
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
1180
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
1084
1181
  "div",
1085
1182
  {
1086
1183
  className: cn(
@@ -1099,9 +1196,9 @@ var Modal = Object.assign(ModalBase, {
1099
1196
  });
1100
1197
 
1101
1198
  // src/components/Modal/ModalText.tsx
1102
- var import_jsx_runtime26 = require("react/jsx-runtime");
1199
+ var import_jsx_runtime27 = require("react/jsx-runtime");
1103
1200
  var ModalText = ({ children, className }) => {
1104
- return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
1201
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
1105
1202
  "div",
1106
1203
  {
1107
1204
  className: cn(
@@ -1117,14 +1214,14 @@ var ModalText = ({ children, className }) => {
1117
1214
  };
1118
1215
 
1119
1216
  // src/components/createPost/CategorySegment.tsx
1120
- var import_jsx_runtime27 = require("react/jsx-runtime");
1217
+ var import_jsx_runtime28 = require("react/jsx-runtime");
1121
1218
  var CategorySegment = ({
1122
1219
  selected = false,
1123
1220
  label,
1124
1221
  className,
1125
1222
  onClick
1126
1223
  }) => {
1127
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
1224
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
1128
1225
  "div",
1129
1226
  {
1130
1227
  className: cn(
@@ -1144,7 +1241,7 @@ var CategorySegment = ({
1144
1241
  };
1145
1242
 
1146
1243
  // src/components/createPost/CategorySegmentedControl.tsx
1147
- var import_jsx_runtime28 = require("react/jsx-runtime");
1244
+ var import_jsx_runtime29 = require("react/jsx-runtime");
1148
1245
  var categorySegments = {
1149
1246
  info: ["\uACF5\uC6A9 \uBB3C\uD488", "\uC77C\uBC18 \uAE30\uC790\uC7AC", "\uD2B9\uC218 \uAE30\uC790\uC7AC"],
1150
1247
  archive: ["\uD504\uB9B0\uD2B8\uC2E4", "\uD64D\uC775\uC2DC\uB514"],
@@ -1158,8 +1255,8 @@ var CategorySegmentedControl = ({
1158
1255
  className
1159
1256
  }) => {
1160
1257
  const segments = categorySegments[variable];
1161
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: cn("w-full h-fit flex items-center justify-start", className), children: [
1162
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
1258
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: cn("w-full h-fit flex items-center justify-start", className), children: [
1259
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
1163
1260
  "div",
1164
1261
  {
1165
1262
  className: cn(
@@ -1172,7 +1269,7 @@ var CategorySegmentedControl = ({
1172
1269
  children: variable === "infoTag" ? "\uD0DC\uADF8 \uC120\uD0DD" : "\uCE74\uD14C\uACE0\uB9AC \uC120\uD0DD"
1173
1270
  }
1174
1271
  ),
1175
- segments.map((label) => /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
1272
+ segments.map((label) => /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
1176
1273
  CategorySegment,
1177
1274
  {
1178
1275
  label,
@@ -1185,9 +1282,9 @@ var CategorySegmentedControl = ({
1185
1282
  };
1186
1283
 
1187
1284
  // src/components/createPost/TitleInput.tsx
1188
- var import_jsx_runtime29 = require("react/jsx-runtime");
1285
+ var import_jsx_runtime30 = require("react/jsx-runtime");
1189
1286
  var TitleInput = ({ title, onChange, className }) => {
1190
- return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
1287
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
1191
1288
  "input",
1192
1289
  {
1193
1290
  type: "text",
@@ -1207,9 +1304,9 @@ var TitleInput = ({ title, onChange, className }) => {
1207
1304
  };
1208
1305
 
1209
1306
  // src/components/notice/NoticeBadge.tsx
1210
- var import_jsx_runtime30 = require("react/jsx-runtime");
1307
+ var import_jsx_runtime31 = require("react/jsx-runtime");
1211
1308
  var NoticeBadge = ({ variable, className, onClick }) => {
1212
- return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
1309
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
1213
1310
  "button",
1214
1311
  {
1215
1312
  type: "button",
@@ -1230,7 +1327,7 @@ var NoticeBadge = ({ variable, className, onClick }) => {
1230
1327
  };
1231
1328
 
1232
1329
  // src/components/notice/NoticeBar.tsx
1233
- var import_jsx_runtime31 = require("react/jsx-runtime");
1330
+ var import_jsx_runtime32 = require("react/jsx-runtime");
1234
1331
  var NoticeBar = ({
1235
1332
  variable = "default",
1236
1333
  badgeVariable,
@@ -1239,7 +1336,7 @@ var NoticeBar = ({
1239
1336
  className,
1240
1337
  onClick
1241
1338
  }) => {
1242
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
1339
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
1243
1340
  "div",
1244
1341
  {
1245
1342
  className: cn(
@@ -1251,20 +1348,20 @@ var NoticeBar = ({
1251
1348
  ),
1252
1349
  onClick,
1253
1350
  children: [
1254
- /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("section", { className: "flex items-center gap-3", children: [
1255
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(NoticeBadge, { variable: badgeVariable }),
1256
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("h1", { className: "text-head1-medium text-strong", children: title })
1351
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("section", { className: "flex items-center gap-3", children: [
1352
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(NoticeBadge, { variable: badgeVariable }),
1353
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("h1", { className: "text-head1-medium text-strong", children: title })
1257
1354
  ] }),
1258
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("p", { className: "text-body3-book text-tertiary", children: date })
1355
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("p", { className: "text-body3-book text-tertiary", children: date })
1259
1356
  ]
1260
1357
  }
1261
1358
  );
1262
1359
  };
1263
1360
 
1264
1361
  // src/components/SearchBar/SearchBar.tsx
1265
- var import_jsx_runtime32 = require("react/jsx-runtime");
1362
+ var import_jsx_runtime33 = require("react/jsx-runtime");
1266
1363
  var SearchBar = ({ value, onChange, className }) => {
1267
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
1364
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
1268
1365
  "label",
1269
1366
  {
1270
1367
  className: cn(
@@ -1275,8 +1372,8 @@ var SearchBar = ({ value, onChange, className }) => {
1275
1372
  className
1276
1373
  ),
1277
1374
  children: [
1278
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(IconSearch, {}),
1279
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
1375
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(IconSearch, {}),
1376
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
1280
1377
  "input",
1281
1378
  {
1282
1379
  type: "text",
@@ -1295,25 +1392,8 @@ var SearchBar = ({ value, onChange, className }) => {
1295
1392
  };
1296
1393
 
1297
1394
  // src/components/SideRadioAccordion/SideRadioAccordion.tsx
1298
- var import_react6 = require("react");
1299
-
1300
- // src/lib/useControllableState.ts
1301
- var import_react5 = require("react");
1302
- function useControllableState(controlled, defaultValue) {
1303
- const isControlled = controlled !== void 0;
1304
- const [uncontrolled, setUncontrolled] = (0, import_react5.useState)(defaultValue);
1305
- const value = isControlled ? controlled : uncontrolled;
1306
- const setValue = (0, import_react5.useCallback)(
1307
- (next) => {
1308
- if (!isControlled) setUncontrolled(next);
1309
- },
1310
- [isControlled]
1311
- );
1312
- return [value, setValue, isControlled];
1313
- }
1314
-
1315
- // src/components/SideRadioAccordion/SideRadioAccordion.tsx
1316
- var import_jsx_runtime33 = require("react/jsx-runtime");
1395
+ var import_react7 = require("react");
1396
+ var import_jsx_runtime34 = require("react/jsx-runtime");
1317
1397
  var printColorBgClass = {
1318
1398
  Plotter: "bg-print-plotter",
1319
1399
  Printer: "bg-print-printer",
@@ -1324,7 +1404,7 @@ var printColorBgClass = {
1324
1404
  "Laser Cutting": "bg-print-laser-cutting"
1325
1405
  };
1326
1406
  var itemKey = (item) => item.value ?? item.title;
1327
- var SideRadioAccordion = (0, import_react6.forwardRef)(
1407
+ var SideRadioAccordion = (0, import_react7.forwardRef)(
1328
1408
  function SideRadioAccordion2({
1329
1409
  step,
1330
1410
  title,
@@ -1357,8 +1437,8 @@ var SideRadioAccordion = (0, import_react6.forwardRef)(
1357
1437
  setIsOpen(next);
1358
1438
  onOpenChange?.(next);
1359
1439
  };
1360
- return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { ref, className: cn("w-full border-r border-gray02 bg-white", className), children: [
1361
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
1440
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { ref, className: cn("w-full border-r border-gray02 bg-white", className), children: [
1441
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
1362
1442
  Stepper,
1363
1443
  {
1364
1444
  step,
@@ -1369,8 +1449,8 @@ var SideRadioAccordion = (0, import_react6.forwardRef)(
1369
1449
  className: cn(stickyHeader && "sticky top-0 z-10")
1370
1450
  }
1371
1451
  ),
1372
- expanded && /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "flex flex-col divide-y divide-gray02", children: [
1373
- radioToggleList.map((item) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
1452
+ expanded && /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: "flex flex-col divide-y divide-gray02", children: [
1453
+ radioToggleList.map((item) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
1374
1454
  RadioToggleItem,
1375
1455
  {
1376
1456
  ...item,
@@ -1379,22 +1459,22 @@ var SideRadioAccordion = (0, import_react6.forwardRef)(
1379
1459
  },
1380
1460
  itemKey(item)
1381
1461
  )),
1382
- 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 }) })
1462
+ quantityLimitLabel && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { className: "px-5 py-4", children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(TextButton2, { label: quantityLimitLabel, onClick: onClickQuantityLimit }) })
1383
1463
  ] })
1384
1464
  ] });
1385
1465
  }
1386
1466
  );
1387
1467
  var Stepper = ({ step, title, isOpen, collapsible, onClick, className }) => {
1388
- const label = /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("span", { children: [
1468
+ const label = /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("span", { children: [
1389
1469
  step,
1390
1470
  " | ",
1391
1471
  title
1392
1472
  ] });
1393
1473
  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";
1394
1474
  if (!collapsible) {
1395
- return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: cn(base, className), children: label });
1475
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { className: cn(base, className), children: label });
1396
1476
  }
1397
- return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
1477
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(
1398
1478
  "button",
1399
1479
  {
1400
1480
  type: "button",
@@ -1402,7 +1482,7 @@ var Stepper = ({ step, title, isOpen, collapsible, onClick, className }) => {
1402
1482
  className: cn(base, "cursor-pointer hover:bg-gray00 active:bg-gray01", className),
1403
1483
  children: [
1404
1484
  label,
1405
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(IconChevronDownXS, { className: cn("transition-transform", isOpen && "rotate-180") })
1485
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(IconChevronDownXS, { className: cn("transition-transform", isOpen && "rotate-180") })
1406
1486
  ]
1407
1487
  }
1408
1488
  );
@@ -1416,40 +1496,41 @@ var RadioToggleItem = ({
1416
1496
  className,
1417
1497
  labelTextButton,
1418
1498
  onClickTextButton,
1499
+ textButtonIcon = false,
1419
1500
  open,
1420
1501
  onSelect
1421
1502
  }) => {
1422
1503
  const rowBg = !open ? "bg-white hover:bg-gray00" : color ? void 0 : printColor ? printColorBgClass[printColor] : "bg-gray00";
1423
1504
  const style = open && color ? { backgroundColor: color } : void 0;
1424
- return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "w-full", children: [
1425
- /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
1505
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: "w-full", children: [
1506
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(
1426
1507
  "button",
1427
1508
  {
1428
1509
  type: "button",
1429
1510
  onClick: onSelect,
1430
1511
  style,
1431
1512
  className: cn(
1432
- "group w-full flex items-center gap-1.5 p-3",
1513
+ "group w-full flex items-center p-3",
1433
1514
  "text-body1-regular text-left cursor-pointer",
1434
1515
  open ? "text-strong" : "text-secondary",
1435
1516
  rowBg,
1436
1517
  className
1437
1518
  ),
1438
1519
  children: [
1439
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Radio, { selected: open }),
1440
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { children: title })
1520
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Radio, { selected: open }),
1521
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { children: title })
1441
1522
  ]
1442
1523
  }
1443
1524
  ),
1444
- open && /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "flex flex-col gap-2 px-3 py-3 bg-white", children: [
1445
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("p", { className: "text-caption-regular text-secondary", children: content }),
1446
- badges && badges.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "flex flex-wrap gap-1", children: badges.map((badge) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Badge, { label: badge }, badge)) }),
1447
- labelTextButton && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
1525
+ open && /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: "flex flex-col gap-2 px-3 py-3 bg-white", children: [
1526
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("p", { className: "text-caption-regular text-secondary", children: content }),
1527
+ badges && badges.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { className: "flex flex-wrap gap-1", children: badges.map((badge) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Badge, { label: badge }, badge)) }),
1528
+ labelTextButton && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
1448
1529
  TextButton2,
1449
1530
  {
1450
1531
  label: labelTextButton,
1451
1532
  onClick: onClickTextButton,
1452
- showIcon: true,
1533
+ showIcon: textButtonIcon,
1453
1534
  className: "self-end"
1454
1535
  }
1455
1536
  )
@@ -1459,9 +1540,10 @@ var RadioToggleItem = ({
1459
1540
  var Radio = ({ selected = false, className }) => {
1460
1541
  const Icon = selected ? IconRadioSelected : IconRadioUnselected;
1461
1542
  return (
1462
- // 디자인 스펙(Figma "radio" 5:781): 아이콘 자체 색은 고정, hover/pressed 시
1463
- // 24px 원형 배경 칩만 나타난다(gray00/gray01). 부모 버튼의 group-hover/active로 동기화.
1464
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
1543
+ // 디자인 스펙(Figma "radio" 5:781): 24px 히트 영역 안에 10px 원만 중앙에 그려진다.
1544
+ // 아이콘 자체 색은 고정, hover/pressed 시 24px 원형 배경 칩만 나타난다(gray00/gray01).
1545
+ // 부모 버튼의 group-hover/active로 동기화.
1546
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
1465
1547
  "span",
1466
1548
  {
1467
1549
  className: cn(
@@ -1469,13 +1551,13 @@ var Radio = ({ selected = false, className }) => {
1469
1551
  "group-hover:bg-gray00 group-active:bg-gray01",
1470
1552
  className
1471
1553
  ),
1472
- children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Icon, { className: "size-6" })
1554
+ children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Icon, { className: "size-2.5" })
1473
1555
  }
1474
1556
  )
1475
1557
  );
1476
1558
  };
1477
1559
  var TextButton2 = ({ label, onClick, showIcon = false, className }) => {
1478
- return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
1560
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(
1479
1561
  "button",
1480
1562
  {
1481
1563
  type: "button",
@@ -1488,14 +1570,14 @@ var TextButton2 = ({ label, onClick, showIcon = false, className }) => {
1488
1570
  className
1489
1571
  ),
1490
1572
  children: [
1491
- showIcon && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(IconExclamation, {}),
1573
+ showIcon && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(IconExclamation, {}),
1492
1574
  label
1493
1575
  ]
1494
1576
  }
1495
1577
  );
1496
1578
  };
1497
1579
  var Badge = ({ label, className }) => {
1498
- return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
1580
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
1499
1581
  "div",
1500
1582
  {
1501
1583
  className: cn(
@@ -1509,7 +1591,7 @@ var Badge = ({ label, className }) => {
1509
1591
  };
1510
1592
 
1511
1593
  // src/components/Tag/Tag.tsx
1512
- var import_jsx_runtime34 = require("react/jsx-runtime");
1594
+ var import_jsx_runtime35 = require("react/jsx-runtime");
1513
1595
  var Tag = ({
1514
1596
  className,
1515
1597
  children,
@@ -1519,7 +1601,7 @@ var Tag = ({
1519
1601
  onClick,
1520
1602
  ...props
1521
1603
  }) => {
1522
- return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
1604
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
1523
1605
  "button",
1524
1606
  {
1525
1607
  className: cn(
@@ -1538,16 +1620,16 @@ var Tag = ({
1538
1620
  disabled,
1539
1621
  style: bgColor ? { backgroundColor: bgColor, border: "none" } : void 0,
1540
1622
  ...props,
1541
- children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { children })
1623
+ children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { children })
1542
1624
  }
1543
1625
  );
1544
1626
  };
1545
1627
 
1546
1628
  // src/components/Timetable/Timetable.tsx
1547
- var import_react8 = require("react");
1629
+ var import_react9 = require("react");
1548
1630
 
1549
1631
  // src/components/Timetable/WeekNavigation.tsx
1550
- var import_react7 = require("react");
1632
+ var import_react8 = require("react");
1551
1633
 
1552
1634
  // src/components/Timetable/dateUtils.ts
1553
1635
  var KOREAN_WEEKDAYS = ["\uC77C", "\uC6D4", "\uD654", "\uC218", "\uBAA9", "\uAE08", "\uD1A0"];
@@ -1580,18 +1662,18 @@ var formatWeekRange = (weekStart) => {
1580
1662
  };
1581
1663
 
1582
1664
  // src/components/Timetable/WeekNavigation.tsx
1583
- var import_jsx_runtime35 = require("react/jsx-runtime");
1665
+ var import_jsx_runtime36 = require("react/jsx-runtime");
1584
1666
  var weekLabel = {
1585
1667
  thisWeek: "\uC774\uBC88 \uC8FC",
1586
1668
  nextWeek: "\uB2E4\uC74C \uC8FC",
1587
1669
  twoWeeksLater: "\uB2E4\uB2E4\uC74C \uC8FC"
1588
1670
  };
1589
- var WeekNavigation = (0, import_react7.forwardRef)(
1671
+ var WeekNavigation = (0, import_react8.forwardRef)(
1590
1672
  function WeekNavigation2({ date, week, label, canPrev, canNext, onPrevWeek, onNextWeek, className }, ref) {
1591
1673
  const showPrev = canPrev ?? (week ? week !== "thisWeek" : true);
1592
1674
  const showNext = canNext ?? (week ? week !== "twoWeeksLater" : true);
1593
1675
  const text = label ?? (week ? `${weekLabel[week]} (${formatWeekRange(date)})` : formatWeekRange(date));
1594
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(
1676
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
1595
1677
  "div",
1596
1678
  {
1597
1679
  ref,
@@ -1603,26 +1685,22 @@ var WeekNavigation = (0, import_react7.forwardRef)(
1603
1685
  className
1604
1686
  ),
1605
1687
  children: [
1606
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(ArrowButton, { direction: "left", visible: showPrev, onClick: onPrevWeek }),
1607
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: "flex flex-1 items-center justify-center text-center", children: text }),
1608
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(ArrowButton, { direction: "right", visible: showNext, onClick: onNextWeek })
1688
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(ArrowButton, { direction: "left", visible: showPrev, onClick: onPrevWeek }),
1689
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: "flex flex-1 items-center justify-center text-center", children: text }),
1690
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(ArrowButton, { direction: "right", visible: showNext, onClick: onNextWeek })
1609
1691
  ]
1610
1692
  }
1611
1693
  );
1612
1694
  }
1613
1695
  );
1614
1696
  var ArrowButton = ({ direction, visible, onClick }) => {
1615
- const divider = /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" });
1697
+ const divider = /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" });
1616
1698
  if (!visible) {
1617
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: "flex items-stretch", children: [
1618
- direction === "right" && divider,
1619
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: "w-[42px]" }),
1620
- direction === "left" && divider
1621
- ] });
1699
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { "aria-hidden": true, className: "w-[43px]" });
1622
1700
  }
1623
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: "flex items-stretch", children: [
1701
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "flex items-stretch", children: [
1624
1702
  direction === "right" && divider,
1625
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
1703
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
1626
1704
  "button",
1627
1705
  {
1628
1706
  type: "button",
@@ -1632,7 +1710,7 @@ var ArrowButton = ({ direction, visible, onClick }) => {
1632
1710
  "text-gray06 cursor-pointer transition-colors",
1633
1711
  "hover:bg-gray00 active:bg-gray01"
1634
1712
  ),
1635
- children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
1713
+ children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
1636
1714
  IconChevronDownXS,
1637
1715
  {
1638
1716
  className: direction === "left" ? "rotate-90" : "-rotate-90",
@@ -1646,7 +1724,7 @@ var ArrowButton = ({ direction, visible, onClick }) => {
1646
1724
  };
1647
1725
 
1648
1726
  // src/components/Timetable/Timetable.tsx
1649
- var import_jsx_runtime36 = require("react/jsx-runtime");
1727
+ var import_jsx_runtime37 = require("react/jsx-runtime");
1650
1728
  var printColorHoverClass = {
1651
1729
  Plotter: "hover:bg-print-plotter",
1652
1730
  Printer: "hover:bg-print-printer",
@@ -1656,7 +1734,7 @@ var printColorHoverClass = {
1656
1734
  "Seet Cutting": "hover:bg-print-seet-cutting",
1657
1735
  "Laser Cutting": "hover:bg-print-laser-cutting"
1658
1736
  };
1659
- var Timetable = (0, import_react8.forwardRef)(function Timetable2({
1737
+ var Timetable = (0, import_react9.forwardRef)(function Timetable2({
1660
1738
  weekStart,
1661
1739
  week,
1662
1740
  days,
@@ -1669,8 +1747,8 @@ var Timetable = (0, import_react8.forwardRef)(function Timetable2({
1669
1747
  canNextWeek,
1670
1748
  className
1671
1749
  }, ref) {
1672
- return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { ref, className: cn(fluid && "w-full", className), children: [
1673
- !hideWeekNavigation && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
1750
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { ref, className: cn(fluid && "w-full", className), children: [
1751
+ !hideWeekNavigation && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
1674
1752
  WeekNavigation,
1675
1753
  {
1676
1754
  date: weekStart,
@@ -1681,7 +1759,7 @@ var Timetable = (0, import_react8.forwardRef)(function Timetable2({
1681
1759
  onNextWeek
1682
1760
  }
1683
1761
  ),
1684
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: cn("flex", fluid && "w-full"), children: days.map((day) => /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
1762
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: cn("flex divide-x divide-gray02", fluid && "w-full"), children: days.map((day) => /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
1685
1763
  DailyTimetable,
1686
1764
  {
1687
1765
  date: day.date,
@@ -1694,9 +1772,9 @@ var Timetable = (0, import_react8.forwardRef)(function Timetable2({
1694
1772
  ] });
1695
1773
  });
1696
1774
  var DailyTimetable = ({ date, slots, fluid, onSelectTime, className }) => {
1697
- return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: cn("flex flex-col", fluid ? "flex-1 min-w-0" : "w-18", className), children: [
1698
- /* @__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) }),
1699
- slots.map((slot) => /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
1775
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: cn("flex flex-col", fluid ? "flex-1 min-w-0" : "w-18", className), children: [
1776
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "h-12 flex items-center justify-center border-b border-gray02 text-body1-regular text-secondary", children: formatDayLabel(date) }),
1777
+ slots.map((slot) => /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
1700
1778
  TimeItem,
1701
1779
  {
1702
1780
  state: slot.state,
@@ -1722,16 +1800,17 @@ var TimeItem = ({
1722
1800
  }) => {
1723
1801
  const clickable = (state === "default" || state === "selected") && !!onClick;
1724
1802
  const style = state === "default" && color ? { "--tt-hover": color } : void 0;
1725
- return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
1803
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
1726
1804
  "div",
1727
1805
  {
1728
1806
  onClick: clickable ? onClick : void 0,
1729
1807
  style,
1730
1808
  className: cn(
1731
- "h-18 flex items-center justify-center border-b border-gray02",
1809
+ "h-18 flex items-center justify-center",
1732
1810
  fluid ? "w-full" : "w-18",
1733
1811
  "text-body1-medium text-center bg-white text-primary",
1734
- state === "none" && "bg-gray00 text-transparent",
1812
+ // "none"(일정 없음)은 구분선을 그리지 않아 연속된 빈 칸이 하나의 덩어리로 보이게 한다.
1813
+ state === "none" ? "bg-gray00 text-transparent" : "border-b border-gray02",
1735
1814
  state === "selected" && "bg-black text-white hover:cursor-pointer",
1736
1815
  state === "disabled" && "bg-gray00 text-gray03",
1737
1816
  state === "default" && [
@@ -1746,13 +1825,13 @@ var TimeItem = ({
1746
1825
  };
1747
1826
 
1748
1827
  // src/components/TNB/TNB.tsx
1749
- var import_react9 = require("react");
1750
- var import_jsx_runtime37 = require("react/jsx-runtime");
1828
+ var import_react10 = require("react");
1829
+ var import_jsx_runtime38 = require("react/jsx-runtime");
1751
1830
  function useControllableState2(controlled, defaultValue) {
1752
1831
  const isControlled = controlled !== void 0;
1753
- const [uncontrolled, setUncontrolled] = (0, import_react9.useState)(defaultValue);
1832
+ const [uncontrolled, setUncontrolled] = (0, import_react10.useState)(defaultValue);
1754
1833
  const value = isControlled ? controlled : uncontrolled;
1755
- const setValue = (0, import_react9.useCallback)(
1834
+ const setValue = (0, import_react10.useCallback)(
1756
1835
  (next) => {
1757
1836
  if (!isControlled) setUncontrolled(next);
1758
1837
  },
@@ -1760,7 +1839,7 @@ function useControllableState2(controlled, defaultValue) {
1760
1839
  );
1761
1840
  return [value, setValue, isControlled];
1762
1841
  }
1763
- var TNB = (0, import_react9.forwardRef)(function TNB2({
1842
+ var TNB = (0, import_react10.forwardRef)(function TNB2({
1764
1843
  logo,
1765
1844
  upperPartItemList,
1766
1845
  upperPartIconList,
@@ -1799,8 +1878,8 @@ var TNB = (0, import_react9.forwardRef)(function TNB2({
1799
1878
  setLowerValue(label);
1800
1879
  onSelectedLowerChange?.(label);
1801
1880
  };
1802
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("nav", { ref, "aria-label": ariaLabel, className: cn("w-full bg-white", className), children: [
1803
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
1881
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("nav", { ref, "aria-label": ariaLabel, className: cn("w-full bg-white", className), children: [
1882
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
1804
1883
  UpperPart,
1805
1884
  {
1806
1885
  logo,
@@ -1811,7 +1890,7 @@ var TNB = (0, import_react9.forwardRef)(function TNB2({
1811
1890
  linkComponent
1812
1891
  }
1813
1892
  ),
1814
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
1893
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
1815
1894
  LowerPart,
1816
1895
  {
1817
1896
  lowerPartItemList: currentLowerItemList,
@@ -1822,11 +1901,11 @@ var TNB = (0, import_react9.forwardRef)(function TNB2({
1822
1901
  )
1823
1902
  ] });
1824
1903
  });
1825
- var NavClickable = (0, import_react9.forwardRef)(function NavClickable2({ href, onClick, linkComponent: Link, current, disabled, className, children }, ref) {
1904
+ var NavClickable = (0, import_react10.forwardRef)(function NavClickable2({ href, onClick, linkComponent: Link, current, disabled, className, children }, ref) {
1826
1905
  const ariaCurrent = current ? "page" : void 0;
1827
1906
  if (href && !disabled) {
1828
1907
  if (Link) {
1829
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
1908
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
1830
1909
  Link,
1831
1910
  {
1832
1911
  href,
@@ -1838,7 +1917,7 @@ var NavClickable = (0, import_react9.forwardRef)(function NavClickable2({ href,
1838
1917
  }
1839
1918
  );
1840
1919
  }
1841
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
1920
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
1842
1921
  "a",
1843
1922
  {
1844
1923
  href,
@@ -1850,7 +1929,7 @@ var NavClickable = (0, import_react9.forwardRef)(function NavClickable2({ href,
1850
1929
  }
1851
1930
  );
1852
1931
  }
1853
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
1932
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
1854
1933
  "button",
1855
1934
  {
1856
1935
  type: "button",
@@ -1872,7 +1951,7 @@ var UpperPart = ({
1872
1951
  linkComponent,
1873
1952
  className
1874
1953
  }) => {
1875
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
1954
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
1876
1955
  "div",
1877
1956
  {
1878
1957
  className: cn(
@@ -1880,12 +1959,12 @@ var UpperPart = ({
1880
1959
  className
1881
1960
  ),
1882
1961
  children: [
1883
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "flex items-stretch", children: [
1884
- /* @__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 }) }),
1885
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "flex items-stretch", children: [
1886
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" }),
1887
- upperPartItemList.map((item) => /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_react9.Fragment, { children: [
1888
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
1962
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "flex items-stretch", children: [
1963
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "flex w-14 shrink-0 items-center justify-center px-3", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(NavIconButton, { ...logo, linkComponent }) }),
1964
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "flex items-stretch", children: [
1965
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" }),
1966
+ upperPartItemList.map((item) => /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_react10.Fragment, { children: [
1967
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
1889
1968
  UpperPartTab,
1890
1969
  {
1891
1970
  label: item.label,
@@ -1898,15 +1977,15 @@ var UpperPart = ({
1898
1977
  }
1899
1978
  }
1900
1979
  ),
1901
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" })
1980
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" })
1902
1981
  ] }, item.id ?? item.label))
1903
1982
  ] })
1904
1983
  ] }),
1905
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "flex items-stretch", children: [
1906
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" }),
1907
- upperPartIconList.map((icon, index) => /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_react9.Fragment, { children: [
1908
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(NavIconButton, { ...icon, linkComponent }),
1909
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" })
1984
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "flex items-stretch", children: [
1985
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" }),
1986
+ upperPartIconList.map((icon, index) => /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_react10.Fragment, { children: [
1987
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(NavIconButton, { ...icon, linkComponent }),
1988
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" })
1910
1989
  ] }, icon.id ?? icon.src ?? icon.label ?? index))
1911
1990
  ] })
1912
1991
  ]
@@ -1921,7 +2000,7 @@ var UpperPartTab = ({
1921
2000
  linkComponent,
1922
2001
  className
1923
2002
  }) => {
1924
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
2003
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
1925
2004
  NavClickable,
1926
2005
  {
1927
2006
  href,
@@ -1936,17 +2015,17 @@ var UpperPartTab = ({
1936
2015
  className
1937
2016
  ),
1938
2017
  children: [
1939
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: cn("px-5 text-head1-medium", selected ? "text-strong" : "text-quaternary"), children: label }),
1940
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: cn("h-0.5 w-full", selected ? "bg-black" : "bg-transparent") })
2018
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: cn("px-5 text-head1-medium", selected ? "text-strong" : "text-quaternary"), children: label }),
2019
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: cn("h-0.5 w-full", selected ? "bg-black" : "bg-transparent") })
1941
2020
  ]
1942
2021
  }
1943
2022
  );
1944
2023
  };
1945
- var NavIconButton = (0, import_react9.forwardRef)(
2024
+ var NavIconButton = (0, import_react10.forwardRef)(
1946
2025
  function NavIconButton2({ src, icon, alt, label, href, onClick, selected, badge, className, linkComponent }, forwardedRef) {
1947
2026
  const interactive = Boolean(onClick || href);
1948
2027
  const showBadge = badge !== void 0 && badge !== null && badge !== false;
1949
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
2028
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
1950
2029
  NavClickable,
1951
2030
  {
1952
2031
  ref: forwardedRef,
@@ -1962,9 +2041,9 @@ var NavIconButton = (0, import_react9.forwardRef)(
1962
2041
  className
1963
2042
  ),
1964
2043
  children: [
1965
- 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,
1966
- label ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: cn("text-body2-regular", selected ? "text-white" : "text-secondary"), children: label }) : null,
1967
- showBadge ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
2044
+ icon ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "inline-flex h-6 w-6 items-center justify-center", children: icon }) : src ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("img", { src, alt: alt ?? label ?? "", className: "h-6 w-6" }) : null,
2045
+ label ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: cn("text-body2-regular", selected ? "text-white" : "text-secondary"), children: label }) : null,
2046
+ showBadge ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
1968
2047
  "span",
1969
2048
  {
1970
2049
  "aria-hidden": badge === true,
@@ -1990,14 +2069,14 @@ var LowerPart = ({
1990
2069
  if (lowerPartItemList.length === 0) {
1991
2070
  return null;
1992
2071
  }
1993
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
2072
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
1994
2073
  "div",
1995
2074
  {
1996
2075
  className: cn("w-full h-[42px] pl-14 flex items-stretch border-b border-gray02", className),
1997
2076
  children: [
1998
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" }),
1999
- lowerPartItemList.map((item) => /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_react9.Fragment, { children: [
2000
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
2077
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" }),
2078
+ lowerPartItemList.map((item) => /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_react10.Fragment, { children: [
2079
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
2001
2080
  LowerPartItemButton,
2002
2081
  {
2003
2082
  label: item.label,
@@ -2010,7 +2089,7 @@ var LowerPart = ({
2010
2089
  }
2011
2090
  }
2012
2091
  ),
2013
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" })
2092
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" })
2014
2093
  ] }, item.id ?? item.label))
2015
2094
  ]
2016
2095
  }
@@ -2024,7 +2103,7 @@ var LowerPartItemButton = ({
2024
2103
  linkComponent,
2025
2104
  className
2026
2105
  }) => {
2027
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
2106
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
2028
2107
  NavClickable,
2029
2108
  {
2030
2109
  href,
@@ -2043,14 +2122,14 @@ var LowerPartItemButton = ({
2043
2122
  };
2044
2123
 
2045
2124
  // src/components/Toast/Toast.tsx
2046
- var import_react10 = require("react");
2047
- var import_jsx_runtime38 = require("react/jsx-runtime");
2125
+ var import_react11 = require("react");
2126
+ var import_jsx_runtime39 = require("react/jsx-runtime");
2048
2127
  var EXIT_MS = 300;
2049
- var Toast = (0, import_react10.forwardRef)(function Toast2({ message, open, duration = 3e3, onClose, position = "none", className }, ref) {
2128
+ var Toast = (0, import_react11.forwardRef)(function Toast2({ message, open, duration = 3e3, onClose, position = "none", className }, ref) {
2050
2129
  const controlled = open !== void 0;
2051
- const [mounted, setMounted] = (0, import_react10.useState)(!controlled || open);
2052
- const [visible, setVisible] = (0, import_react10.useState)(!controlled || open);
2053
- (0, import_react10.useEffect)(() => {
2130
+ const [mounted, setMounted] = (0, import_react11.useState)(!controlled || open);
2131
+ const [visible, setVisible] = (0, import_react11.useState)(!controlled || open);
2132
+ (0, import_react11.useEffect)(() => {
2054
2133
  if (!controlled) return;
2055
2134
  if (open) {
2056
2135
  setMounted(true);
@@ -2061,13 +2140,13 @@ var Toast = (0, import_react10.forwardRef)(function Toast2({ message, open, dura
2061
2140
  const timer = setTimeout(() => setMounted(false), EXIT_MS);
2062
2141
  return () => clearTimeout(timer);
2063
2142
  }, [controlled, open]);
2064
- (0, import_react10.useEffect)(() => {
2143
+ (0, import_react11.useEffect)(() => {
2065
2144
  if (!controlled || !open || !duration) return;
2066
2145
  const timer = setTimeout(() => onClose?.(), duration);
2067
2146
  return () => clearTimeout(timer);
2068
2147
  }, [controlled, open, duration, onClose]);
2069
2148
  if (!mounted) return null;
2070
- const banner = /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
2149
+ const banner = /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
2071
2150
  "div",
2072
2151
  {
2073
2152
  ref,
@@ -2085,7 +2164,7 @@ var Toast = (0, import_react10.forwardRef)(function Toast2({ message, open, dura
2085
2164
  }
2086
2165
  );
2087
2166
  if (position === "none") return banner;
2088
- return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
2167
+ return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
2089
2168
  "div",
2090
2169
  {
2091
2170
  className: cn(
@@ -2098,6 +2177,7 @@ var Toast = (0, import_react10.forwardRef)(function Toast2({ message, open, dura
2098
2177
  });
2099
2178
  // Annotate the CommonJS export names for ESM import in node:
2100
2179
  0 && (module.exports = {
2180
+ Accordion,
2101
2181
  BackButton,
2102
2182
  BasicFormField,
2103
2183
  CTA,