@hivcd-printshop/design-system 1.2.0 → 1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -153,6 +153,111 @@ var IconGoBack = ({ className, stroke }) => {
153
153
  }
154
154
  );
155
155
  };
156
+ var IconCompass = ({ className, fill }) => {
157
+ return /* @__PURE__ */ jsx(
158
+ "svg",
159
+ {
160
+ className,
161
+ width: "16",
162
+ height: "16",
163
+ viewBox: "0 0 16 16",
164
+ fill: "none",
165
+ xmlns: "http://www.w3.org/2000/svg",
166
+ children: /* @__PURE__ */ jsx(
167
+ "path",
168
+ {
169
+ fillRule: "evenodd",
170
+ clipRule: "evenodd",
171
+ 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",
172
+ fill: fill || "#121212"
173
+ }
174
+ )
175
+ }
176
+ );
177
+ };
178
+ var IconRadioSelected = ({
179
+ className,
180
+ stroke,
181
+ fill
182
+ }) => {
183
+ return /* @__PURE__ */ jsxs(
184
+ "svg",
185
+ {
186
+ className,
187
+ width: "16",
188
+ height: "16",
189
+ viewBox: "0 0 16 16",
190
+ fill: "none",
191
+ xmlns: "http://www.w3.org/2000/svg",
192
+ children: [
193
+ /* @__PURE__ */ jsx("circle", { cx: "8", cy: "8", r: "7", stroke: stroke || "#121212" }),
194
+ /* @__PURE__ */ jsx("circle", { cx: "8", cy: "8", r: "4", fill: fill || "#121212" })
195
+ ]
196
+ }
197
+ );
198
+ };
199
+ var IconRadioUnselected = ({
200
+ className,
201
+ stroke
202
+ }) => {
203
+ return /* @__PURE__ */ jsx(
204
+ "svg",
205
+ {
206
+ className,
207
+ width: "16",
208
+ height: "16",
209
+ viewBox: "0 0 16 16",
210
+ fill: "none",
211
+ xmlns: "http://www.w3.org/2000/svg",
212
+ children: /* @__PURE__ */ jsx("circle", { cx: "8", cy: "8", r: "7", stroke: stroke || "#B4B9C2" })
213
+ }
214
+ );
215
+ };
216
+ var IconExclamation = ({ className, fill }) => {
217
+ return /* @__PURE__ */ jsxs(
218
+ "svg",
219
+ {
220
+ className,
221
+ width: "12",
222
+ height: "12",
223
+ viewBox: "0 0 12 12",
224
+ fill: "none",
225
+ xmlns: "http://www.w3.org/2000/svg",
226
+ children: [
227
+ /* @__PURE__ */ jsx(
228
+ "path",
229
+ {
230
+ d: "M6.41438 7.18735H5.57954L5.50175 3.10938H6.49218L6.41438 7.18735ZM5.40001 8.3313C5.39801 8.23061 5.42395 8.13738 5.47781 8.05161C5.53167 7.96583 5.60448 7.89777 5.69624 7.84743C5.79 7.79708 5.89174 7.77191 6.00145 7.77191C6.10718 7.77191 6.20592 7.79708 6.29768 7.84743C6.38945 7.89777 6.46226 7.96583 6.51612 8.05161C6.57197 8.13738 6.5999 8.23061 6.5999 8.3313C6.5999 8.43199 6.57197 8.52522 6.51612 8.611C6.46226 8.69677 6.38945 8.76483 6.29768 8.81518C6.20592 8.86552 6.10718 8.89069 6.00145 8.89069C5.89174 8.89069 5.79 8.86552 5.69624 8.81518C5.60448 8.76483 5.53167 8.69677 5.47781 8.611C5.42395 8.52522 5.39801 8.43199 5.40001 8.3313Z",
231
+ fill: fill || "#505865"
232
+ }
233
+ ),
234
+ /* @__PURE__ */ jsx("circle", { cx: "6", cy: "6", r: "4.5", stroke: fill || "#505865" })
235
+ ]
236
+ }
237
+ );
238
+ };
239
+ var IconClose = ({ className, stroke }) => {
240
+ return /* @__PURE__ */ jsx(
241
+ "svg",
242
+ {
243
+ className,
244
+ width: "16",
245
+ height: "16",
246
+ viewBox: "0 0 16 16",
247
+ fill: "none",
248
+ xmlns: "http://www.w3.org/2000/svg",
249
+ children: /* @__PURE__ */ jsx(
250
+ "path",
251
+ {
252
+ d: "M4 4L12 12M12 4L4 12",
253
+ stroke: stroke || "#6d7683",
254
+ strokeWidth: "1.5",
255
+ strokeLinecap: "round"
256
+ }
257
+ )
258
+ }
259
+ );
260
+ };
156
261
 
157
262
  // src/components/BackButton/BackButton.tsx
158
263
  import { jsx as jsx2 } from "react/jsx-runtime";
@@ -241,8 +346,8 @@ var MultiColumn = Object.assign(MultiColumnMain, {
241
346
  // src/components/Column/Column.tsx
242
347
  import { jsx as jsx5, jsxs as jsxs2 } from "react/jsx-runtime";
243
348
  var Column = ({ className, children, header }) => {
244
- return /* @__PURE__ */ jsxs2("div", { className: cn("flex flex-col gap-5", "h-full w-full px-5 pt-3 pb-8", className), children: [
245
- header && /* @__PURE__ */ jsx5("h1", { className: cn("text-head3-medium text-primary font-bold"), children: header }),
349
+ return /* @__PURE__ */ jsxs2("div", { className: cn("flex flex-col gap-5", "h-full w-full px-5 py-3", className), children: [
350
+ header && /* @__PURE__ */ jsx5("h1", { className: cn("text-body1-medium text-primary"), children: header }),
246
351
  children
247
352
  ] });
248
353
  };
@@ -279,70 +384,87 @@ var ColumnSubTitle = ({
279
384
  as: Tag2 = "h2"
280
385
  }) => {
281
386
  return /* @__PURE__ */ jsxs4(Tag2, { className: cn("flex items-center justify-between gap-1.5", "w-full", className), children: [
282
- /* @__PURE__ */ jsx9("span", { className: cn("text-head3-medium text-strong"), children }),
387
+ /* @__PURE__ */ jsx9("span", { className: cn("text-body1-medium text-primary"), children }),
283
388
  action && /* @__PURE__ */ jsx9("span", { className: "flex shrink-0 items-center", children: action })
284
389
  ] });
285
390
  };
286
391
 
287
- // src/components/Form/BasicFormField.tsx
392
+ // src/components/Column/ColumnDescription.tsx
288
393
  import { jsx as jsx10, jsxs as jsxs5 } from "react/jsx-runtime";
394
+ var ColumnDescription = ({
395
+ className,
396
+ children,
397
+ bullet = true
398
+ }) => {
399
+ return /* @__PURE__ */ jsxs5("div", { className: cn("flex items-start gap-3", className), children: [
400
+ bullet && /* @__PURE__ */ jsx10("span", { className: "flex shrink-0 items-center py-1", children: /* @__PURE__ */ jsx10(IconCompass, { className: "size-4" }) }),
401
+ /* @__PURE__ */ jsx10("div", { className: "min-w-0 flex-1 whitespace-pre-line text-body3-book text-primary", children })
402
+ ] });
403
+ };
404
+ var ColumnDescriptionList = ({ className, children }) => {
405
+ return /* @__PURE__ */ jsx10("div", { className: cn("flex flex-col gap-4", className), children });
406
+ };
407
+
408
+ // src/components/Form/BasicFormField.tsx
409
+ import { jsx as jsx11, jsxs as jsxs6 } from "react/jsx-runtime";
289
410
  var BasicFormField = ({
290
411
  children,
291
412
  isDanger,
292
413
  dangerText,
293
414
  className
294
415
  }) => {
295
- return /* @__PURE__ */ jsxs5("div", { className: cn("flex flex-col gap-1.5", className), children: [
416
+ return /* @__PURE__ */ jsxs6("div", { className: cn("flex flex-col gap-1.5", className), children: [
296
417
  children,
297
- isDanger && dangerText && /* @__PURE__ */ jsx10("span", { className: "text-caption-book text-danger", children: dangerText })
418
+ isDanger && dangerText && /* @__PURE__ */ jsx11("span", { className: "text-caption-book text-danger", children: dangerText })
298
419
  ] });
299
420
  };
300
421
  var getInputStyles = (isDanger, additionalClass) => {
301
422
  return cn(
302
- "w-full h-10 px-3",
423
+ // 디자인 스펙: 높이 41px, 좌우 12px / 상하 10px 패딩
424
+ "w-full h-[41px] px-3 py-2.5",
303
425
  "box-border border border-gray02 focus:outline-none focus:border-black",
304
- "bg-white hover:bg-gray00 transition-colors focus:hover:bg-white",
426
+ "bg-white transition-colors",
305
427
  ColumnTextStyle,
306
428
  "text-primary placeholder:text-quaternary",
307
429
  isDanger && "border-danger",
308
- // 에러 시 빨간 테두리
430
+ // 경고 시 빨간 테두리 (#E42939)
309
431
  additionalClass
310
432
  // 각 인풋별 추가 스타일 (예: textarea의 h-30)
311
433
  );
312
434
  };
313
435
 
314
436
  // src/components/Form/FormText.tsx
315
- import { jsx as jsx11 } from "react/jsx-runtime";
437
+ import { jsx as jsx12 } from "react/jsx-runtime";
316
438
  var FormText = ({ className, isDanger, dangerText, ...props }) => {
317
- return /* @__PURE__ */ jsx11(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ jsx11("input", { type: "text", className: getInputStyles(isDanger, className), ...props }) });
439
+ return /* @__PURE__ */ jsx12(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ jsx12("input", { type: "text", className: getInputStyles(isDanger, className), ...props }) });
318
440
  };
319
441
 
320
442
  // src/components/Form/FormTextArea.tsx
321
- import { jsx as jsx12 } from "react/jsx-runtime";
443
+ import { jsx as jsx13 } from "react/jsx-runtime";
322
444
  var FormTextArea = ({ className, isDanger, dangerText, ...props }) => {
323
- return /* @__PURE__ */ jsx12(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ jsx12(
445
+ return /* @__PURE__ */ jsx13(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ jsx13(
324
446
  "textarea",
325
447
  {
326
- className: getInputStyles(isDanger, "resize-none h-30 py-2.5 " + (className || "")),
448
+ className: getInputStyles(isDanger, "resize-none h-30 px-4 py-2.5 " + (className || "")),
327
449
  ...props
328
450
  }
329
451
  ) });
330
452
  };
331
453
 
332
454
  // src/components/Form/FormNumber.tsx
333
- import { jsx as jsx13 } from "react/jsx-runtime";
455
+ import { jsx as jsx14 } from "react/jsx-runtime";
334
456
  var FormNumber = ({ className, isDanger, dangerText, ...props }) => {
335
- return /* @__PURE__ */ jsx13(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ jsx13("input", { type: "number", className: getInputStyles(isDanger, className), ...props }) });
457
+ return /* @__PURE__ */ jsx14(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ jsx14("input", { type: "number", className: getInputStyles(isDanger, className), ...props }) });
336
458
  };
337
459
 
338
460
  // src/components/Form/FormPassword.tsx
339
- import { jsx as jsx14 } from "react/jsx-runtime";
461
+ import { jsx as jsx15 } from "react/jsx-runtime";
340
462
  var FormPassword = ({ className, isDanger, dangerText, ...props }) => {
341
- return /* @__PURE__ */ jsx14(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ jsx14("input", { type: "password", className: getInputStyles(isDanger, className), ...props }) });
463
+ return /* @__PURE__ */ jsx15(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ jsx15("input", { type: "password", className: getInputStyles(isDanger, className), ...props }) });
342
464
  };
343
465
 
344
466
  // src/components/Form/FormTel.tsx
345
- import { jsx as jsx15 } from "react/jsx-runtime";
467
+ import { jsx as jsx16 } from "react/jsx-runtime";
346
468
  var FormTel = ({ className, isDanger, dangerText, onChange, ...props }) => {
347
469
  const handlePhoneChange = (e) => {
348
470
  const rawValue = e.target.value.replace(/[^0-9]/g, "");
@@ -354,7 +476,7 @@ var FormTel = ({ className, isDanger, dangerText, onChange, ...props }) => {
354
476
  e.target.value = formattedValue;
355
477
  if (onChange) onChange(e);
356
478
  };
357
- return /* @__PURE__ */ jsx15(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ jsx15(
479
+ return /* @__PURE__ */ jsx16(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ jsx16(
358
480
  "input",
359
481
  {
360
482
  type: "tel",
@@ -368,7 +490,7 @@ var FormTel = ({ className, isDanger, dangerText, onChange, ...props }) => {
368
490
 
369
491
  // src/components/Form/FormColor.tsx
370
492
  import { useState } from "react";
371
- import { jsx as jsx16, jsxs as jsxs6 } from "react/jsx-runtime";
493
+ import { jsx as jsx17, jsxs as jsxs7 } from "react/jsx-runtime";
372
494
  var FormColor = ({
373
495
  className,
374
496
  isDanger,
@@ -386,7 +508,7 @@ var FormColor = ({
386
508
  setInternalColor(e.target.value);
387
509
  onChange?.(e);
388
510
  };
389
- return /* @__PURE__ */ jsx16(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ jsxs6(
511
+ return /* @__PURE__ */ jsx17(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ jsxs7(
390
512
  "label",
391
513
  {
392
514
  className: getInputStyles(
@@ -395,7 +517,7 @@ var FormColor = ({
395
517
  "flex items-center gap-2 relative focus-within:border-black focus-within:hover:bg-white" + (className || "")
396
518
  ),
397
519
  children: [
398
- /* @__PURE__ */ jsx16("div", { className: "w-6 h-6 shrink-0 overflow-hidden", style: { backgroundColor: color }, children: /* @__PURE__ */ jsx16(
520
+ /* @__PURE__ */ jsx17("div", { className: "w-6 h-6 shrink-0 overflow-hidden", style: { backgroundColor: color }, children: /* @__PURE__ */ jsx17(
399
521
  "input",
400
522
  {
401
523
  type: "color",
@@ -405,7 +527,7 @@ var FormColor = ({
405
527
  ...props
406
528
  }
407
529
  ) }),
408
- /* @__PURE__ */ jsx16("span", { className: "text-primary text-body3-regular uppercase flex-1 select-none", children: color })
530
+ /* @__PURE__ */ jsx17("span", { className: "text-primary text-body3-regular uppercase flex-1 select-none", children: color })
409
531
  ]
410
532
  }
411
533
  ) });
@@ -413,12 +535,11 @@ var FormColor = ({
413
535
 
414
536
  // src/components/Form/FormFile.tsx
415
537
  import { useState as useState2 } from "react";
416
- import { jsx as jsx17, jsxs as jsxs7 } from "react/jsx-runtime";
538
+ import { jsx as jsx18, jsxs as jsxs8 } from "react/jsx-runtime";
417
539
  var FormFile = ({
418
540
  className,
419
541
  isDanger,
420
542
  dangerText,
421
- placeholder = "\uD30C\uC77C\uC744 \uC120\uD0DD\uD574\uC8FC\uC138\uC694",
422
543
  fileUrl,
423
544
  filename,
424
545
  onChange,
@@ -475,32 +596,31 @@ var FormFile = ({
475
596
  }
476
597
  };
477
598
  const displayFileName = selectedFile?.name || (fileUrl ? fileUrl.split("/").pop() : null);
478
- return /* @__PURE__ */ jsx17(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ jsxs7(
599
+ return /* @__PURE__ */ jsx18(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ jsxs8(
479
600
  "div",
480
601
  {
481
602
  className: getInputStyles(
482
603
  isDanger,
483
- "active:bg-gray00 flex items-center gap-2 justify-between " + (className || "")
604
+ // 디자인 스펙: 파일 전 상태는 우측 정렬("파일 첨부"만), 파일 후 상태는 좌우 배치
605
+ cn(
606
+ "flex items-center gap-2",
607
+ displayFileName ? "justify-between" : "justify-end",
608
+ className
609
+ )
484
610
  ),
485
611
  children: [
486
- /* @__PURE__ */ jsx17(
487
- "div",
612
+ displayFileName && /* @__PURE__ */ jsx18(
613
+ "span",
488
614
  {
489
- className: `truncate flex-1 max-w-50 w-full ${displayFileName ? "text-primary" : "text-quaternary"}`,
490
- children: displayFileName ? /* @__PURE__ */ jsx17(
491
- "span",
492
- {
493
- onClick: handleDownload,
494
- className: "w-full underline text-primary cursor-pointer hover:text-black transition-colors",
495
- title: `${displayFileName} \uB2E4\uC6B4\uB85C\uB4DC`,
496
- children: displayFileName
497
- }
498
- ) : /* @__PURE__ */ jsx17("span", { className: "w-full", children: placeholder })
615
+ onClick: handleDownload,
616
+ className: "text-body3-book text-primary truncate max-w-[200px] cursor-pointer",
617
+ title: `${displayFileName} \uB2E4\uC6B4\uB85C\uB4DC`,
618
+ children: displayFileName
499
619
  }
500
620
  ),
501
- /* @__PURE__ */ jsxs7("label", { className: "px-1 -mx-1 cursor-pointer", children: [
502
- /* @__PURE__ */ jsx17("div", { className: "text-primary text-caption-regular underline", children: "\uD30C\uC77C \uCCA8\uBD80" }),
503
- /* @__PURE__ */ jsx17("input", { type: "file", className: "hidden", onChange: handleFileChange, ...props })
621
+ /* @__PURE__ */ jsxs8("label", { className: "shrink-0 px-1 -mx-1 cursor-pointer", children: [
622
+ /* @__PURE__ */ jsx18("div", { className: "text-primary text-caption-regular underline", children: displayFileName ? "\uB2E4\uC2DC \uCCA8\uBD80" : "\uD30C\uC77C \uCCA8\uBD80" }),
623
+ /* @__PURE__ */ jsx18("input", { type: "file", className: "hidden", onChange: handleFileChange, ...props })
504
624
  ] })
505
625
  ]
506
626
  }
@@ -508,7 +628,7 @@ var FormFile = ({
508
628
  };
509
629
 
510
630
  // src/components/Form/FormCheckBox.tsx
511
- import { jsx as jsx18, jsxs as jsxs8 } from "react/jsx-runtime";
631
+ import { jsx as jsx19, jsxs as jsxs9 } from "react/jsx-runtime";
512
632
  var FormCheckBox = ({
513
633
  isChecked,
514
634
  setIsChecked,
@@ -517,19 +637,18 @@ var FormCheckBox = ({
517
637
  textStyle,
518
638
  ...props
519
639
  }) => {
520
- return /* @__PURE__ */ jsxs8(
640
+ return /* @__PURE__ */ jsxs9(
521
641
  "label",
522
642
  {
523
643
  className: cn(
524
- "w-fit h-fit pr-1",
644
+ "group w-fit h-fit",
525
645
  "flex items-center gap-1",
526
- "hover:bg-gray00 active:bg-gray01 transition-colors",
527
646
  "cursor-pointer select-none",
528
647
  // 💡 1. 텍스트 드래그 방지 추가
529
648
  className
530
649
  ),
531
650
  children: [
532
- /* @__PURE__ */ jsx18(
651
+ /* @__PURE__ */ jsx19(
533
652
  "input",
534
653
  {
535
654
  type: "checkbox",
@@ -539,20 +658,29 @@ var FormCheckBox = ({
539
658
  ...props
540
659
  }
541
660
  ),
542
- /* @__PURE__ */ jsx18("div", { className: "flex items-center justify-center w-5 h-5 shrink-0", children: /* @__PURE__ */ jsx18(
661
+ /* @__PURE__ */ jsx19(
543
662
  "div",
544
663
  {
545
664
  className: cn(
546
- "w-[15px] h-[15px]",
547
- "box-border border",
548
- "flex items-center justify-center transition-colors duration-200",
549
- // 💡 3. 키보드 Tab 이동 시 접근성 향상 (포커스 링 표시)
550
- "peer-focus-visible:ring-2 peer-focus-visible:ring-black peer-focus-visible:ring-offset-1"
665
+ "flex items-center justify-center w-5 h-5 shrink-0 rounded transition-colors",
666
+ "group-hover:bg-gray00 group-active:bg-gray01"
551
667
  ),
552
- children: isChecked && /* @__PURE__ */ jsx18(IconCheck, {})
668
+ children: /* @__PURE__ */ jsx19(
669
+ "div",
670
+ {
671
+ className: cn(
672
+ "w-[15px] h-[15px]",
673
+ "box-border border border-black",
674
+ "flex items-center justify-center transition-colors duration-200",
675
+ // 💡 3. 키보드 Tab 이동 시 접근성 향상 (포커스 링 표시)
676
+ "peer-focus-visible:ring-2 peer-focus-visible:ring-black peer-focus-visible:ring-offset-1"
677
+ ),
678
+ children: isChecked && /* @__PURE__ */ jsx19(IconCheck, {})
679
+ }
680
+ )
553
681
  }
554
- ) }),
555
- children && /* @__PURE__ */ jsx18("span", { className: cn(ColumnTextStyle, textStyle), children })
682
+ ),
683
+ children && /* @__PURE__ */ jsx19("span", { className: cn("text-body3-book text-primary", textStyle), children })
556
684
  ]
557
685
  }
558
686
  );
@@ -562,19 +690,20 @@ var FormCheckBox = ({
562
690
  import { useEffect, useRef, useState as useState3 } from "react";
563
691
 
564
692
  // src/components/Form/SelectBoxOption.tsx
565
- import { jsx as jsx19 } from "react/jsx-runtime";
693
+ import { jsx as jsx20 } from "react/jsx-runtime";
566
694
  var SelectBoxOption = ({
567
695
  label,
568
696
  onClick,
569
697
  // selectedLabel,
570
698
  className
571
699
  }) => {
572
- return /* @__PURE__ */ jsx19(
700
+ return /* @__PURE__ */ jsx20(
573
701
  "li",
574
702
  {
575
703
  onClick,
576
704
  className: cn(
577
- "w-full h-11 px-3 shrink-0",
705
+ "w-full p-3 shrink-0",
706
+ // 디자인 스펙: 12px 패딩
578
707
  "flex items-center justify-start",
579
708
  // "box-border border-b border-gray02",
580
709
  "text-body3-book text-primary",
@@ -590,7 +719,7 @@ var SelectBoxOption = ({
590
719
  };
591
720
 
592
721
  // src/components/Form/FormSelectBox.tsx
593
- import { jsx as jsx20, jsxs as jsxs9 } from "react/jsx-runtime";
722
+ import { jsx as jsx21, jsxs as jsxs10 } from "react/jsx-runtime";
594
723
  var FormSelectBox = ({
595
724
  options,
596
725
  value,
@@ -613,8 +742,8 @@ var FormSelectBox = ({
613
742
  document.removeEventListener("mousedown", handleClickOutside);
614
743
  };
615
744
  }, []);
616
- return /* @__PURE__ */ jsx20(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ jsxs9("div", { ref: containerRef, className: "relative w-full", children: [
617
- /* @__PURE__ */ jsxs9(
745
+ return /* @__PURE__ */ jsx21(BasicFormField, { isDanger, dangerText, children: /* @__PURE__ */ jsxs10("div", { ref: containerRef, className: "relative w-full", children: [
746
+ /* @__PURE__ */ jsxs10(
618
747
  "div",
619
748
  {
620
749
  tabIndex: 0,
@@ -622,8 +751,8 @@ var FormSelectBox = ({
622
751
  isDanger,
623
752
  cn(
624
753
  "flex items-center justify-between cursor-pointer select-none",
625
- isOpen && "border-black",
626
- // 💡 열려있을 때는 테두리를 검은색으로 고정 (포커스 효과)
754
+ isOpen && "border-gray08",
755
+ // 열려있을 때 테두리 #3A414C 고정 (디자인 스펙)
627
756
  className
628
757
  )
629
758
  ),
@@ -634,8 +763,8 @@ var FormSelectBox = ({
634
763
  setIsOpen((prev) => !prev);
635
764
  },
636
765
  children: [
637
- /* @__PURE__ */ jsx20("span", { className: value ? "text-primary" : "text-quaternary", children: value || placeholder }),
638
- /* @__PURE__ */ jsx20(
766
+ /* @__PURE__ */ jsx21("span", { className: value ? "text-primary" : "text-quaternary", children: value || placeholder }),
767
+ /* @__PURE__ */ jsx21(
639
768
  IconChevronDownXS,
640
769
  {
641
770
  className: cn("text-gray06 transition-transform", isOpen && "rotate-180"),
@@ -645,17 +774,17 @@ var FormSelectBox = ({
645
774
  ]
646
775
  }
647
776
  ),
648
- isOpen && /* @__PURE__ */ jsx20(
777
+ isOpen && /* @__PURE__ */ jsx21(
649
778
  "ul",
650
779
  {
651
780
  className: cn(
652
781
  "absolute top-full left-0 right-0 z-10",
653
782
  // 💡 Input 바로 아래에 띄움
654
783
  "box-border border border-gray02 bg-white flex flex-col",
655
- "max-h-50 overflow-y-auto shadow-sm"
656
- // 💡 항목이 너무 많으면 스크롤 생성
784
+ "max-h-50 overflow-y-auto"
785
+ // 항목이 너무 많으면 스크롤 생성 (디자인 스펙: 그림자 없음)
657
786
  ),
658
- children: options.map((option) => /* @__PURE__ */ jsx20(
787
+ children: options.map((option) => /* @__PURE__ */ jsx21(
659
788
  SelectBoxOption,
660
789
  {
661
790
  label: option,
@@ -672,7 +801,7 @@ var FormSelectBox = ({
672
801
  };
673
802
 
674
803
  // src/components/TextButton/TextButton.tsx
675
- import { Fragment, jsx as jsx21, jsxs as jsxs10 } from "react/jsx-runtime";
804
+ import { Fragment, jsx as jsx22, jsxs as jsxs11 } from "react/jsx-runtime";
676
805
  var TextButton = ({
677
806
  children,
678
807
  icon,
@@ -682,15 +811,15 @@ var TextButton = ({
682
811
  className,
683
812
  ...props
684
813
  }) => {
685
- const content = /* @__PURE__ */ jsxs10(Fragment, { children: [
686
- icon && iconPosition === "left" && /* @__PURE__ */ jsx21("span", { className: "flex shrink-0 items-center", children: icon }),
687
- /* @__PURE__ */ jsx21("span", { className: cn(underline && "underline underline-offset-2"), children }),
688
- icon && iconPosition === "right" && /* @__PURE__ */ jsx21("span", { className: "flex shrink-0 items-center", children: icon })
814
+ const content = /* @__PURE__ */ jsxs11(Fragment, { children: [
815
+ icon && iconPosition === "left" && /* @__PURE__ */ jsx22("span", { className: "flex shrink-0 items-center", children: icon }),
816
+ /* @__PURE__ */ jsx22("span", { className: cn(underline && "underline underline-offset-2"), children }),
817
+ icon && iconPosition === "right" && /* @__PURE__ */ jsx22("span", { className: "flex shrink-0 items-center", children: icon })
689
818
  ] });
690
819
  const classes = cn(
691
820
  "inline-flex w-fit items-center gap-1 px-1 -mx-1",
692
821
  "text-caption-book",
693
- alert ? "text-danger" : "text-tertiary",
822
+ alert ? "text-danger" : "text-secondary",
694
823
  "hover:bg-gray00 active:bg-gray01 transition-colors",
695
824
  alert ? "hover:text-danger" : "hover:text-primary",
696
825
  "cursor-pointer select-none",
@@ -700,15 +829,15 @@ var TextButton = ({
700
829
  );
701
830
  if (props.href !== void 0) {
702
831
  const { href, ...rest } = props;
703
- return /* @__PURE__ */ jsx21("a", { href, className: classes, ...rest, children: content });
832
+ return /* @__PURE__ */ jsx22("a", { href, className: classes, ...rest, children: content });
704
833
  }
705
834
  const buttonProps = props;
706
- return /* @__PURE__ */ jsx21("button", { type: "button", className: classes, ...buttonProps, children: content });
835
+ return /* @__PURE__ */ jsx22("button", { type: "button", className: classes, ...buttonProps, children: content });
707
836
  };
708
837
 
709
838
  // src/components/Dropdown/Dropdown.tsx
710
839
  import { useEffect as useEffect2, useRef as useRef2, useState as useState4 } from "react";
711
- import { jsx as jsx22, jsxs as jsxs11 } from "react/jsx-runtime";
840
+ import { jsx as jsx23, jsxs as jsxs12 } from "react/jsx-runtime";
712
841
  var Dropdown = ({ selectedLabel, setSelectedLabel, labels, className }) => {
713
842
  const [isOpen, setIsOpen] = useState4(false);
714
843
  const containerRef = useRef2(null);
@@ -723,8 +852,8 @@ var Dropdown = ({ selectedLabel, setSelectedLabel, labels, className }) => {
723
852
  document.removeEventListener("mousedown", handleClickOutside);
724
853
  };
725
854
  }, []);
726
- return /* @__PURE__ */ jsxs11("div", { ref: containerRef, className: "relative", children: [
727
- /* @__PURE__ */ jsxs11(
855
+ return /* @__PURE__ */ jsxs12("div", { ref: containerRef, className: "relative", children: [
856
+ /* @__PURE__ */ jsxs12(
728
857
  "div",
729
858
  {
730
859
  className: cn(
@@ -737,8 +866,8 @@ var Dropdown = ({ selectedLabel, setSelectedLabel, labels, className }) => {
737
866
  ),
738
867
  onClick: () => setIsOpen((prev) => !prev),
739
868
  children: [
740
- /* @__PURE__ */ jsx22("p", { children: selectedLabel }),
741
- /* @__PURE__ */ jsx22(
869
+ /* @__PURE__ */ jsx23("p", { children: selectedLabel }),
870
+ /* @__PURE__ */ jsx23(
742
871
  IconChevronDownXS,
743
872
  {
744
873
  className: cn("text-gray06 transition-transform", isOpen && "rotate-180"),
@@ -748,7 +877,7 @@ var Dropdown = ({ selectedLabel, setSelectedLabel, labels, className }) => {
748
877
  ]
749
878
  }
750
879
  ),
751
- isOpen && /* @__PURE__ */ jsx22("div", { className: cn("absolute top-full right-0 z-10", "box-border border border-gray02"), children: labels.map((label) => /* @__PURE__ */ jsx22(
880
+ isOpen && /* @__PURE__ */ jsx23("div", { className: cn("absolute top-full right-0 z-10", "box-border border border-gray02"), children: labels.map((label) => /* @__PURE__ */ jsx23(
752
881
  SelectBoxOption,
753
882
  {
754
883
  label,
@@ -764,7 +893,7 @@ var Dropdown = ({ selectedLabel, setSelectedLabel, labels, className }) => {
764
893
  };
765
894
 
766
895
  // src/components/ListView/List.tsx
767
- import { jsx as jsx23, jsxs as jsxs12 } from "react/jsx-runtime";
896
+ import { jsx as jsx24, jsxs as jsxs13 } from "react/jsx-runtime";
768
897
  function List({
769
898
  className,
770
899
  label1,
@@ -777,7 +906,7 @@ function List({
777
906
  children,
778
907
  ...props
779
908
  }) {
780
- return /* @__PURE__ */ jsxs12(
909
+ return /* @__PURE__ */ jsxs13(
781
910
  "li",
782
911
  {
783
912
  className: cn(
@@ -792,11 +921,11 @@ function List({
792
921
  ...props,
793
922
  onClick,
794
923
  children: [
795
- /* @__PURE__ */ jsxs12("section", { className: cn("flex items-center gap-4"), children: [
796
- /* @__PURE__ */ jsx23("label", { className: cn("text-body2-regular"), children: label1 ? label1 : "-" }),
797
- /* @__PURE__ */ jsx23("div", { className: cn("flex items-center gap-2"), children })
924
+ /* @__PURE__ */ jsxs13("section", { className: cn("flex items-center gap-4"), children: [
925
+ /* @__PURE__ */ jsx24("label", { className: cn("text-body2-regular"), children: label1 ? label1 : "-" }),
926
+ /* @__PURE__ */ jsx24("div", { className: cn("flex items-center gap-2"), children })
798
927
  ] }),
799
- /* @__PURE__ */ jsx23(
928
+ /* @__PURE__ */ jsx24(
800
929
  "label",
801
930
  {
802
931
  className: cn(
@@ -808,41 +937,60 @@ function List({
808
937
  children: label2 ? label2 : "-"
809
938
  }
810
939
  ),
811
- /* @__PURE__ */ jsx23("label", { className: cn("text-body3-regular text-right"), children: label3 ? label3 : "-" })
940
+ /* @__PURE__ */ jsx24("label", { className: cn("text-body3-regular text-right"), children: label3 ? label3 : "-" })
812
941
  ]
813
942
  }
814
943
  );
815
944
  }
816
945
 
817
946
  // src/components/Modal/Modal.tsx
818
- import { jsx as jsx24, jsxs as jsxs13 } from "react/jsx-runtime";
819
- var ModalBase = ({ isVisible, header, children, className }) => {
947
+ import { jsx as jsx25, jsxs as jsxs14 } from "react/jsx-runtime";
948
+ var ModalBase = ({ isVisible, header, children, className, onClose }) => {
820
949
  if (!isVisible) return null;
821
- return /* @__PURE__ */ jsx24("div", { className: cn("fixed inset-0 z-50 pointer-events-auto"), children: /* @__PURE__ */ jsx24(
822
- "div",
823
- {
824
- className: cn("fixed inset-0 z-1001 flex items-center justify-center pointer-events-auto"),
825
- children: /* @__PURE__ */ jsxs13(
826
- "main",
827
- {
828
- className: cn(
829
- "w-110 pt-8 h-fit",
830
- "flex flex-col items-center",
831
- "border border-gray02",
832
- "bg-white shadow-[0 0 30px 0 rgba(0, 0, 0, 0.08);]",
833
- className
950
+ return /* @__PURE__ */ jsxs14("div", { className: cn("fixed inset-0 z-50"), children: [
951
+ /* @__PURE__ */ jsx25(
952
+ "div",
953
+ {
954
+ "aria-hidden": true,
955
+ onClick: onClose,
956
+ className: cn("fixed inset-0 z-1000 bg-black/10", onClose && "cursor-pointer")
957
+ }
958
+ ),
959
+ /* @__PURE__ */ jsx25("div", { className: "fixed inset-0 z-1001 flex items-center justify-center pointer-events-none", children: /* @__PURE__ */ jsxs14(
960
+ "main",
961
+ {
962
+ role: "dialog",
963
+ "aria-modal": "true",
964
+ className: cn(
965
+ "relative w-110 pt-8 h-fit pointer-events-auto",
966
+ "flex flex-col items-center",
967
+ "border border-gray02",
968
+ "bg-white shadow-[0px_0px_30px_0px_rgba(0,0,0,0.08)]",
969
+ className
970
+ ),
971
+ children: [
972
+ onClose && /* @__PURE__ */ jsx25(
973
+ "button",
974
+ {
975
+ type: "button",
976
+ onClick: onClose,
977
+ "aria-label": "\uB2EB\uAE30",
978
+ className: cn(
979
+ "absolute right-3 top-3 flex size-8 items-center justify-center",
980
+ "text-tertiary transition-colors hover:bg-gray00 active:bg-gray01 cursor-pointer"
981
+ ),
982
+ children: /* @__PURE__ */ jsx25(IconClose, {})
983
+ }
834
984
  ),
835
- children: [
836
- /* @__PURE__ */ jsx24("h1", { className: cn("text-strong font-[500] text-[24px] leading-[32px]"), children: header }),
837
- children
838
- ]
839
- }
840
- )
841
- }
842
- ) });
985
+ /* @__PURE__ */ jsx25("h1", { className: cn("text-strong font-[500] text-[24px] leading-[32px]"), children: header }),
986
+ children
987
+ ]
988
+ }
989
+ ) })
990
+ ] });
843
991
  };
844
992
  var Contents = ({ children, className }) => {
845
- return /* @__PURE__ */ jsx24(
993
+ return /* @__PURE__ */ jsx25(
846
994
  "div",
847
995
  {
848
996
  className: cn(
@@ -859,7 +1007,7 @@ var CTAs2 = ({ children, className, row = false }) => {
859
1007
  if (!children) return null;
860
1008
  return (
861
1009
  // CTA 버튼들을 중앙에 배치하는 예시 (우측 정렬이 필요하면 justify-end 사용)
862
- /* @__PURE__ */ jsx24(
1010
+ /* @__PURE__ */ jsx25(
863
1011
  "div",
864
1012
  {
865
1013
  className: cn(
@@ -878,9 +1026,9 @@ var Modal = Object.assign(ModalBase, {
878
1026
  });
879
1027
 
880
1028
  // src/components/Modal/ModalText.tsx
881
- import { jsx as jsx25 } from "react/jsx-runtime";
1029
+ import { jsx as jsx26 } from "react/jsx-runtime";
882
1030
  var ModalText = ({ children, className }) => {
883
- return /* @__PURE__ */ jsx25(
1031
+ return /* @__PURE__ */ jsx26(
884
1032
  "div",
885
1033
  {
886
1034
  className: cn(
@@ -896,14 +1044,14 @@ var ModalText = ({ children, className }) => {
896
1044
  };
897
1045
 
898
1046
  // src/components/createPost/CategorySegment.tsx
899
- import { jsx as jsx26 } from "react/jsx-runtime";
1047
+ import { jsx as jsx27 } from "react/jsx-runtime";
900
1048
  var CategorySegment = ({
901
1049
  selected = false,
902
1050
  label,
903
1051
  className,
904
1052
  onClick
905
1053
  }) => {
906
- return /* @__PURE__ */ jsx26(
1054
+ return /* @__PURE__ */ jsx27(
907
1055
  "div",
908
1056
  {
909
1057
  className: cn(
@@ -923,7 +1071,7 @@ var CategorySegment = ({
923
1071
  };
924
1072
 
925
1073
  // src/components/createPost/CategorySegmentedControl.tsx
926
- import { jsx as jsx27, jsxs as jsxs14 } from "react/jsx-runtime";
1074
+ import { jsx as jsx28, jsxs as jsxs15 } from "react/jsx-runtime";
927
1075
  var categorySegments = {
928
1076
  info: ["\uACF5\uC6A9 \uBB3C\uD488", "\uC77C\uBC18 \uAE30\uC790\uC7AC", "\uD2B9\uC218 \uAE30\uC790\uC7AC"],
929
1077
  archive: ["\uD504\uB9B0\uD2B8\uC2E4", "\uD64D\uC775\uC2DC\uB514"],
@@ -937,8 +1085,8 @@ var CategorySegmentedControl = ({
937
1085
  className
938
1086
  }) => {
939
1087
  const segments = categorySegments[variable];
940
- return /* @__PURE__ */ jsxs14("div", { className: cn("w-full h-fit flex items-center justify-start", className), children: [
941
- /* @__PURE__ */ jsx27(
1088
+ return /* @__PURE__ */ jsxs15("div", { className: cn("w-full h-fit flex items-center justify-start", className), children: [
1089
+ /* @__PURE__ */ jsx28(
942
1090
  "div",
943
1091
  {
944
1092
  className: cn(
@@ -951,7 +1099,7 @@ var CategorySegmentedControl = ({
951
1099
  children: variable === "infoTag" ? "\uD0DC\uADF8 \uC120\uD0DD" : "\uCE74\uD14C\uACE0\uB9AC \uC120\uD0DD"
952
1100
  }
953
1101
  ),
954
- segments.map((label) => /* @__PURE__ */ jsx27(
1102
+ segments.map((label) => /* @__PURE__ */ jsx28(
955
1103
  CategorySegment,
956
1104
  {
957
1105
  label,
@@ -964,9 +1112,9 @@ var CategorySegmentedControl = ({
964
1112
  };
965
1113
 
966
1114
  // src/components/createPost/TitleInput.tsx
967
- import { jsx as jsx28 } from "react/jsx-runtime";
1115
+ import { jsx as jsx29 } from "react/jsx-runtime";
968
1116
  var TitleInput = ({ title, onChange, className }) => {
969
- return /* @__PURE__ */ jsx28(
1117
+ return /* @__PURE__ */ jsx29(
970
1118
  "input",
971
1119
  {
972
1120
  type: "text",
@@ -986,9 +1134,9 @@ var TitleInput = ({ title, onChange, className }) => {
986
1134
  };
987
1135
 
988
1136
  // src/components/notice/NoticeBadge.tsx
989
- import { jsx as jsx29 } from "react/jsx-runtime";
1137
+ import { jsx as jsx30 } from "react/jsx-runtime";
990
1138
  var NoticeBadge = ({ variable, className, onClick }) => {
991
- return /* @__PURE__ */ jsx29(
1139
+ return /* @__PURE__ */ jsx30(
992
1140
  "button",
993
1141
  {
994
1142
  type: "button",
@@ -1009,7 +1157,7 @@ var NoticeBadge = ({ variable, className, onClick }) => {
1009
1157
  };
1010
1158
 
1011
1159
  // src/components/notice/NoticeBar.tsx
1012
- import { jsx as jsx30, jsxs as jsxs15 } from "react/jsx-runtime";
1160
+ import { jsx as jsx31, jsxs as jsxs16 } from "react/jsx-runtime";
1013
1161
  var NoticeBar = ({
1014
1162
  variable = "default",
1015
1163
  badgeVariable,
@@ -1018,7 +1166,7 @@ var NoticeBar = ({
1018
1166
  className,
1019
1167
  onClick
1020
1168
  }) => {
1021
- return /* @__PURE__ */ jsxs15(
1169
+ return /* @__PURE__ */ jsxs16(
1022
1170
  "div",
1023
1171
  {
1024
1172
  className: cn(
@@ -1030,20 +1178,20 @@ var NoticeBar = ({
1030
1178
  ),
1031
1179
  onClick,
1032
1180
  children: [
1033
- /* @__PURE__ */ jsxs15("section", { className: "flex items-center gap-3", children: [
1034
- /* @__PURE__ */ jsx30(NoticeBadge, { variable: badgeVariable }),
1035
- /* @__PURE__ */ jsx30("h1", { className: "text-head1-medium text-strong", children: title })
1181
+ /* @__PURE__ */ jsxs16("section", { className: "flex items-center gap-3", children: [
1182
+ /* @__PURE__ */ jsx31(NoticeBadge, { variable: badgeVariable }),
1183
+ /* @__PURE__ */ jsx31("h1", { className: "text-head1-medium text-strong", children: title })
1036
1184
  ] }),
1037
- /* @__PURE__ */ jsx30("p", { className: "text-body3-book text-tertiary", children: date })
1185
+ /* @__PURE__ */ jsx31("p", { className: "text-body3-book text-tertiary", children: date })
1038
1186
  ]
1039
1187
  }
1040
1188
  );
1041
1189
  };
1042
1190
 
1043
1191
  // src/components/SearchBar/SearchBar.tsx
1044
- import { jsx as jsx31, jsxs as jsxs16 } from "react/jsx-runtime";
1192
+ import { jsx as jsx32, jsxs as jsxs17 } from "react/jsx-runtime";
1045
1193
  var SearchBar = ({ value, onChange, className }) => {
1046
- return /* @__PURE__ */ jsxs16(
1194
+ return /* @__PURE__ */ jsxs17(
1047
1195
  "label",
1048
1196
  {
1049
1197
  className: cn(
@@ -1054,8 +1202,8 @@ var SearchBar = ({ value, onChange, className }) => {
1054
1202
  className
1055
1203
  ),
1056
1204
  children: [
1057
- /* @__PURE__ */ jsx31(IconSearch, {}),
1058
- /* @__PURE__ */ jsx31(
1205
+ /* @__PURE__ */ jsx32(IconSearch, {}),
1206
+ /* @__PURE__ */ jsx32(
1059
1207
  "input",
1060
1208
  {
1061
1209
  type: "text",
@@ -1091,20 +1239,8 @@ function useControllableState(controlled, defaultValue) {
1091
1239
  return [value, setValue, isControlled];
1092
1240
  }
1093
1241
 
1094
- // src/components/SideRadioAccordion/Exclamation.svg
1095
- var Exclamation_default = "./Exclamation-IUYZYYC4.svg";
1096
-
1097
- // src/components/SideRadioAccordion/ChevronDown.svg
1098
- var ChevronDown_default = "./ChevronDown-XSALXCW4.svg";
1099
-
1100
- // src/components/SideRadioAccordion/RadioSelected.svg
1101
- var RadioSelected_default = "./RadioSelected-DOLVV7ZM.svg";
1102
-
1103
- // src/components/SideRadioAccordion/RadioUnselected.svg
1104
- var RadioUnselected_default = "./RadioUnselected-QN74EU46.svg";
1105
-
1106
1242
  // src/components/SideRadioAccordion/SideRadioAccordion.tsx
1107
- import { jsx as jsx32, jsxs as jsxs17 } from "react/jsx-runtime";
1243
+ import { jsx as jsx33, jsxs as jsxs18 } from "react/jsx-runtime";
1108
1244
  var printColorBgClass = {
1109
1245
  Plotter: "bg-print-plotter",
1110
1246
  Printer: "bg-print-printer",
@@ -1148,8 +1284,8 @@ var SideRadioAccordion = forwardRef(
1148
1284
  setIsOpen(next);
1149
1285
  onOpenChange?.(next);
1150
1286
  };
1151
- return /* @__PURE__ */ jsxs17("div", { ref, className: cn("w-full", className), children: [
1152
- /* @__PURE__ */ jsx32(
1287
+ return /* @__PURE__ */ jsxs18("div", { ref, className: cn("w-full border-r border-gray02 bg-white", className), children: [
1288
+ /* @__PURE__ */ jsx33(
1153
1289
  Stepper,
1154
1290
  {
1155
1291
  step,
@@ -1160,8 +1296,8 @@ var SideRadioAccordion = forwardRef(
1160
1296
  className: cn(stickyHeader && "sticky top-0 z-10")
1161
1297
  }
1162
1298
  ),
1163
- expanded && /* @__PURE__ */ jsxs17("div", { className: "flex flex-col", children: [
1164
- radioToggleList.map((item) => /* @__PURE__ */ jsx32(
1299
+ expanded && /* @__PURE__ */ jsxs18("div", { className: "flex flex-col divide-y divide-gray02", children: [
1300
+ radioToggleList.map((item) => /* @__PURE__ */ jsx33(
1165
1301
  RadioToggleItem,
1166
1302
  {
1167
1303
  ...item,
@@ -1170,29 +1306,22 @@ var SideRadioAccordion = forwardRef(
1170
1306
  },
1171
1307
  itemKey(item)
1172
1308
  )),
1173
- quantityLimitLabel && /* @__PURE__ */ jsx32(
1174
- TextButton2,
1175
- {
1176
- label: quantityLimitLabel,
1177
- onClick: onClickQuantityLimit,
1178
- className: "mt-2"
1179
- }
1180
- )
1309
+ quantityLimitLabel && /* @__PURE__ */ jsx33("div", { className: "px-5 py-4", children: /* @__PURE__ */ jsx33(TextButton2, { label: quantityLimitLabel, onClick: onClickQuantityLimit }) })
1181
1310
  ] })
1182
1311
  ] });
1183
1312
  }
1184
1313
  );
1185
1314
  var Stepper = ({ step, title, isOpen, collapsible, onClick, className }) => {
1186
- const label = /* @__PURE__ */ jsxs17("span", { children: [
1315
+ const label = /* @__PURE__ */ jsxs18("span", { children: [
1187
1316
  step,
1188
1317
  " | ",
1189
1318
  title
1190
1319
  ] });
1191
- const base = "w-full flex items-center justify-between px-3 py-2.5 text-body1-medium text-strong text-left bg-white";
1320
+ 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";
1192
1321
  if (!collapsible) {
1193
- return /* @__PURE__ */ jsx32("div", { className: cn(base, className), children: label });
1322
+ return /* @__PURE__ */ jsx33("div", { className: cn(base, className), children: label });
1194
1323
  }
1195
- return /* @__PURE__ */ jsxs17(
1324
+ return /* @__PURE__ */ jsxs18(
1196
1325
  "button",
1197
1326
  {
1198
1327
  type: "button",
@@ -1200,14 +1329,7 @@ var Stepper = ({ step, title, isOpen, collapsible, onClick, className }) => {
1200
1329
  className: cn(base, "cursor-pointer hover:bg-gray00 active:bg-gray01", className),
1201
1330
  children: [
1202
1331
  label,
1203
- /* @__PURE__ */ jsx32(
1204
- "img",
1205
- {
1206
- src: ChevronDown_default,
1207
- alt: "",
1208
- className: cn("transition-transform", isOpen && "rotate-180")
1209
- }
1210
- )
1332
+ /* @__PURE__ */ jsx33(IconChevronDownXS, { className: cn("transition-transform", isOpen && "rotate-180") })
1211
1333
  ]
1212
1334
  }
1213
1335
  );
@@ -1226,29 +1348,29 @@ var RadioToggleItem = ({
1226
1348
  }) => {
1227
1349
  const rowBg = !open ? "bg-white hover:bg-gray00" : color ? void 0 : printColor ? printColorBgClass[printColor] : "bg-gray00";
1228
1350
  const style = open && color ? { backgroundColor: color } : void 0;
1229
- return /* @__PURE__ */ jsxs17("div", { className: "w-full", children: [
1230
- /* @__PURE__ */ jsxs17(
1351
+ return /* @__PURE__ */ jsxs18("div", { className: "w-full", children: [
1352
+ /* @__PURE__ */ jsxs18(
1231
1353
  "button",
1232
1354
  {
1233
1355
  type: "button",
1234
1356
  onClick: onSelect,
1235
1357
  style,
1236
1358
  className: cn(
1237
- "w-full flex items-center gap-1.5 px-3 py-2.5",
1238
- "text-body2-regular text-primary text-left cursor-pointer",
1359
+ "w-full flex items-center gap-1.5 p-3",
1360
+ "text-body1-regular text-secondary text-left cursor-pointer",
1239
1361
  rowBg,
1240
1362
  className
1241
1363
  ),
1242
1364
  children: [
1243
- /* @__PURE__ */ jsx32(Radio, { selected: open }),
1244
- /* @__PURE__ */ jsx32("span", { children: title })
1365
+ /* @__PURE__ */ jsx33(Radio, { selected: open }),
1366
+ /* @__PURE__ */ jsx33("span", { children: title })
1245
1367
  ]
1246
1368
  }
1247
1369
  ),
1248
- open && /* @__PURE__ */ jsxs17("div", { className: "flex flex-col gap-2 px-3 py-3 bg-white", children: [
1249
- /* @__PURE__ */ jsx32("p", { className: "text-caption-regular text-secondary", children: content }),
1250
- badges && badges.length > 0 && /* @__PURE__ */ jsx32("div", { className: "flex gap-1", children: badges.map((badge) => /* @__PURE__ */ jsx32(Badge, { label: badge }, badge)) }),
1251
- labelTextButton && /* @__PURE__ */ jsx32(
1370
+ open && /* @__PURE__ */ jsxs18("div", { className: "flex flex-col gap-2 px-3 py-3 bg-white", children: [
1371
+ /* @__PURE__ */ jsx33("p", { className: "text-caption-regular text-secondary", children: content }),
1372
+ badges && badges.length > 0 && /* @__PURE__ */ jsx33("div", { className: "flex flex-wrap gap-1", children: badges.map((badge) => /* @__PURE__ */ jsx33(Badge, { label: badge }, badge)) }),
1373
+ labelTextButton && /* @__PURE__ */ jsx33(
1252
1374
  TextButton2,
1253
1375
  {
1254
1376
  label: labelTextButton,
@@ -1261,17 +1383,11 @@ var RadioToggleItem = ({
1261
1383
  ] });
1262
1384
  };
1263
1385
  var Radio = ({ selected = false, className }) => {
1264
- return /* @__PURE__ */ jsx32(
1265
- "img",
1266
- {
1267
- src: selected ? RadioSelected_default : RadioUnselected_default,
1268
- alt: "",
1269
- className: cn("w-4 h-4", className)
1270
- }
1271
- );
1386
+ const Icon = selected ? IconRadioSelected : IconRadioUnselected;
1387
+ return /* @__PURE__ */ jsx33(Icon, { className: cn("w-6 h-6", className) });
1272
1388
  };
1273
1389
  var TextButton2 = ({ label, onClick, showIcon = false, className }) => {
1274
- return /* @__PURE__ */ jsxs17(
1390
+ return /* @__PURE__ */ jsxs18(
1275
1391
  "button",
1276
1392
  {
1277
1393
  type: "button",
@@ -1284,18 +1400,18 @@ var TextButton2 = ({ label, onClick, showIcon = false, className }) => {
1284
1400
  className
1285
1401
  ),
1286
1402
  children: [
1287
- showIcon && /* @__PURE__ */ jsx32("img", { src: Exclamation_default, alt: "" }),
1403
+ showIcon && /* @__PURE__ */ jsx33(IconExclamation, {}),
1288
1404
  label
1289
1405
  ]
1290
1406
  }
1291
1407
  );
1292
1408
  };
1293
1409
  var Badge = ({ label, className }) => {
1294
- return /* @__PURE__ */ jsx32(
1410
+ return /* @__PURE__ */ jsx33(
1295
1411
  "div",
1296
1412
  {
1297
1413
  className: cn(
1298
- "w-fit h-fit px-2 py-0.5 border border-gray02",
1414
+ "w-fit h-fit px-2 py-0.5 border border-gray02 shrink-0 whitespace-nowrap",
1299
1415
  "text-tertiary text-caption-book",
1300
1416
  className
1301
1417
  ),
@@ -1305,7 +1421,7 @@ var Badge = ({ label, className }) => {
1305
1421
  };
1306
1422
 
1307
1423
  // src/components/Tag/Tag.tsx
1308
- import { jsx as jsx33 } from "react/jsx-runtime";
1424
+ import { jsx as jsx34 } from "react/jsx-runtime";
1309
1425
  var Tag = ({
1310
1426
  className,
1311
1427
  children,
@@ -1315,7 +1431,7 @@ var Tag = ({
1315
1431
  onClick,
1316
1432
  ...props
1317
1433
  }) => {
1318
- return /* @__PURE__ */ jsx33(
1434
+ return /* @__PURE__ */ jsx34(
1319
1435
  "button",
1320
1436
  {
1321
1437
  className: cn(
@@ -1334,7 +1450,7 @@ var Tag = ({
1334
1450
  disabled,
1335
1451
  style: bgColor ? { backgroundColor: bgColor, border: "none" } : void 0,
1336
1452
  ...props,
1337
- children: /* @__PURE__ */ jsx33("span", { children })
1453
+ children: /* @__PURE__ */ jsx34("span", { children })
1338
1454
  }
1339
1455
  );
1340
1456
  };
@@ -1376,7 +1492,7 @@ var formatWeekRange = (weekStart) => {
1376
1492
  };
1377
1493
 
1378
1494
  // src/components/Timetable/WeekNavigation.tsx
1379
- import { jsx as jsx34, jsxs as jsxs18 } from "react/jsx-runtime";
1495
+ import { jsx as jsx35, jsxs as jsxs19 } from "react/jsx-runtime";
1380
1496
  var weekLabel = {
1381
1497
  thisWeek: "\uC774\uBC88 \uC8FC",
1382
1498
  nextWeek: "\uB2E4\uC74C \uC8FC",
@@ -1387,53 +1503,62 @@ var WeekNavigation = forwardRef2(
1387
1503
  const showPrev = canPrev ?? (week ? week !== "thisWeek" : true);
1388
1504
  const showNext = canNext ?? (week ? week !== "twoWeeksLater" : true);
1389
1505
  const text = label ?? (week ? `${weekLabel[week]} (${formatWeekRange(date)})` : formatWeekRange(date));
1390
- return /* @__PURE__ */ jsxs18(
1506
+ return /* @__PURE__ */ jsxs19(
1391
1507
  "div",
1392
1508
  {
1393
1509
  ref,
1394
1510
  className: cn(
1395
- "flex items-center justify-between",
1396
- "w-full h-11 px-3",
1397
- "bg-white border border-gray02",
1398
- "text-body2-regular text-primary",
1511
+ "flex items-stretch justify-between",
1512
+ "w-full h-12",
1513
+ "bg-white border-b border-gray02",
1514
+ "text-body1-medium text-secondary",
1399
1515
  className
1400
1516
  ),
1401
1517
  children: [
1402
- /* @__PURE__ */ jsx34(ArrowButton, { direction: "left", visible: showPrev, onClick: onPrevWeek }),
1403
- /* @__PURE__ */ jsx34("span", { children: text }),
1404
- /* @__PURE__ */ jsx34(ArrowButton, { direction: "right", visible: showNext, onClick: onNextWeek })
1518
+ /* @__PURE__ */ jsx35(ArrowButton, { direction: "left", visible: showPrev, onClick: onPrevWeek }),
1519
+ /* @__PURE__ */ jsx35("span", { className: "flex flex-1 items-center justify-center text-center", children: text }),
1520
+ /* @__PURE__ */ jsx35(ArrowButton, { direction: "right", visible: showNext, onClick: onNextWeek })
1405
1521
  ]
1406
1522
  }
1407
1523
  );
1408
1524
  }
1409
1525
  );
1410
1526
  var ArrowButton = ({ direction, visible, onClick }) => {
1527
+ const divider = /* @__PURE__ */ jsx35("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" });
1411
1528
  if (!visible) {
1412
- return /* @__PURE__ */ jsx34("span", { className: "w-6 h-6" });
1529
+ return /* @__PURE__ */ jsxs19("div", { className: "flex items-stretch", children: [
1530
+ direction === "right" && divider,
1531
+ /* @__PURE__ */ jsx35("span", { className: "w-[42px]" }),
1532
+ direction === "left" && divider
1533
+ ] });
1413
1534
  }
1414
- return /* @__PURE__ */ jsx34(
1415
- "button",
1416
- {
1417
- type: "button",
1418
- onClick,
1419
- className: cn(
1420
- "flex items-center justify-center w-6 h-6",
1421
- "text-gray06 cursor-pointer",
1422
- "hover:bg-gray00 active:bg-gray01"
1423
- ),
1424
- children: /* @__PURE__ */ jsx34(
1425
- IconChevronDownXS,
1426
- {
1427
- className: direction === "left" ? "rotate-90" : "-rotate-90",
1428
- stroke: "currentColor"
1429
- }
1430
- )
1431
- }
1432
- );
1535
+ return /* @__PURE__ */ jsxs19("div", { className: "flex items-stretch", children: [
1536
+ direction === "right" && divider,
1537
+ /* @__PURE__ */ jsx35(
1538
+ "button",
1539
+ {
1540
+ type: "button",
1541
+ onClick,
1542
+ className: cn(
1543
+ "flex w-[42px] items-center justify-center",
1544
+ "text-gray06 cursor-pointer transition-colors",
1545
+ "hover:bg-gray00 active:bg-gray01"
1546
+ ),
1547
+ children: /* @__PURE__ */ jsx35(
1548
+ IconChevronDownXS,
1549
+ {
1550
+ className: direction === "left" ? "rotate-90" : "-rotate-90",
1551
+ stroke: "currentColor"
1552
+ }
1553
+ )
1554
+ }
1555
+ ),
1556
+ direction === "left" && divider
1557
+ ] });
1433
1558
  };
1434
1559
 
1435
1560
  // src/components/Timetable/Timetable.tsx
1436
- import { jsx as jsx35, jsxs as jsxs19 } from "react/jsx-runtime";
1561
+ import { jsx as jsx36, jsxs as jsxs20 } from "react/jsx-runtime";
1437
1562
  var printColorHoverClass = {
1438
1563
  Plotter: "hover:bg-print-plotter",
1439
1564
  Printer: "hover:bg-print-printer",
@@ -1456,8 +1581,8 @@ var Timetable = forwardRef3(function Timetable2({
1456
1581
  canNextWeek,
1457
1582
  className
1458
1583
  }, ref) {
1459
- return /* @__PURE__ */ jsxs19("div", { ref, className: cn(fluid && "w-full", className), children: [
1460
- !hideWeekNavigation && /* @__PURE__ */ jsx35(
1584
+ return /* @__PURE__ */ jsxs20("div", { ref, className: cn(fluid && "w-full", className), children: [
1585
+ !hideWeekNavigation && /* @__PURE__ */ jsx36(
1461
1586
  WeekNavigation,
1462
1587
  {
1463
1588
  date: weekStart,
@@ -1468,7 +1593,7 @@ var Timetable = forwardRef3(function Timetable2({
1468
1593
  onNextWeek
1469
1594
  }
1470
1595
  ),
1471
- /* @__PURE__ */ jsx35("div", { className: cn("flex", fluid && "w-full"), children: days.map((day) => /* @__PURE__ */ jsx35(
1596
+ /* @__PURE__ */ jsx36("div", { className: cn("flex", fluid && "w-full"), children: days.map((day) => /* @__PURE__ */ jsx36(
1472
1597
  DailyTimetable,
1473
1598
  {
1474
1599
  date: day.date,
@@ -1481,9 +1606,9 @@ var Timetable = forwardRef3(function Timetable2({
1481
1606
  ] });
1482
1607
  });
1483
1608
  var DailyTimetable = ({ date, slots, fluid, onSelectTime, className }) => {
1484
- return /* @__PURE__ */ jsxs19("div", { className: cn("flex flex-col", fluid ? "flex-1 min-w-0" : "w-18", className), children: [
1485
- /* @__PURE__ */ jsx35("div", { className: "h-13 flex items-center justify-center text-body3-medium text-secondary", children: formatDayLabel(date) }),
1486
- slots.map((slot) => /* @__PURE__ */ jsx35(
1609
+ return /* @__PURE__ */ jsxs20("div", { className: cn("flex flex-col", fluid ? "flex-1 min-w-0" : "w-18", className), children: [
1610
+ /* @__PURE__ */ jsx36("div", { className: "h-12 flex items-center justify-center border-b border-gray02 text-body1-regular text-secondary", children: formatDayLabel(date) }),
1611
+ slots.map((slot) => /* @__PURE__ */ jsx36(
1487
1612
  TimeItem,
1488
1613
  {
1489
1614
  state: slot.state,
@@ -1509,17 +1634,17 @@ var TimeItem = ({
1509
1634
  }) => {
1510
1635
  const clickable = (state === "default" || state === "selected") && !!onClick;
1511
1636
  const style = state === "default" && color ? { "--tt-hover": color } : void 0;
1512
- return /* @__PURE__ */ jsx35(
1637
+ return /* @__PURE__ */ jsx36(
1513
1638
  "div",
1514
1639
  {
1515
1640
  onClick: clickable ? onClick : void 0,
1516
1641
  style,
1517
1642
  className: cn(
1518
- "h-18 flex items-center justify-center",
1643
+ "h-18 flex items-center justify-center border-b border-gray02",
1519
1644
  fluid ? "w-full" : "w-18",
1520
1645
  "text-body1-medium text-center bg-white text-primary",
1521
1646
  state === "none" && "bg-gray00 text-transparent",
1522
- state === "selected" && "bg-black text-gray02 hover:cursor-pointer",
1647
+ state === "selected" && "bg-black text-white hover:cursor-pointer",
1523
1648
  state === "disabled" && "bg-gray00 text-gray03",
1524
1649
  state === "default" && [
1525
1650
  "hover:cursor-pointer",
@@ -1534,11 +1659,12 @@ var TimeItem = ({
1534
1659
 
1535
1660
  // src/components/TNB/TNB.tsx
1536
1661
  import {
1662
+ Fragment as Fragment2,
1537
1663
  forwardRef as forwardRef4,
1538
1664
  useCallback as useCallback2,
1539
1665
  useState as useState6
1540
1666
  } from "react";
1541
- import { jsx as jsx36, jsxs as jsxs20 } from "react/jsx-runtime";
1667
+ import { jsx as jsx37, jsxs as jsxs21 } from "react/jsx-runtime";
1542
1668
  function useControllableState2(controlled, defaultValue) {
1543
1669
  const isControlled = controlled !== void 0;
1544
1670
  const [uncontrolled, setUncontrolled] = useState6(defaultValue);
@@ -1590,8 +1716,8 @@ var TNB = forwardRef4(function TNB2({
1590
1716
  setLowerValue(label);
1591
1717
  onSelectedLowerChange?.(label);
1592
1718
  };
1593
- return /* @__PURE__ */ jsxs20("nav", { ref, "aria-label": ariaLabel, className: cn("w-full bg-white", className), children: [
1594
- /* @__PURE__ */ jsx36(
1719
+ return /* @__PURE__ */ jsxs21("nav", { ref, "aria-label": ariaLabel, className: cn("w-full bg-white", className), children: [
1720
+ /* @__PURE__ */ jsx37(
1595
1721
  UpperPart,
1596
1722
  {
1597
1723
  logo,
@@ -1602,7 +1728,7 @@ var TNB = forwardRef4(function TNB2({
1602
1728
  linkComponent
1603
1729
  }
1604
1730
  ),
1605
- /* @__PURE__ */ jsx36(
1731
+ /* @__PURE__ */ jsx37(
1606
1732
  LowerPart,
1607
1733
  {
1608
1734
  lowerPartItemList: currentLowerItemList,
@@ -1617,7 +1743,7 @@ var NavClickable = forwardRef4(function NavClickable2({ href, onClick, linkCompo
1617
1743
  const ariaCurrent = current ? "page" : void 0;
1618
1744
  if (href && !disabled) {
1619
1745
  if (Link) {
1620
- return /* @__PURE__ */ jsx36(
1746
+ return /* @__PURE__ */ jsx37(
1621
1747
  Link,
1622
1748
  {
1623
1749
  href,
@@ -1629,7 +1755,7 @@ var NavClickable = forwardRef4(function NavClickable2({ href, onClick, linkCompo
1629
1755
  }
1630
1756
  );
1631
1757
  }
1632
- return /* @__PURE__ */ jsx36(
1758
+ return /* @__PURE__ */ jsx37(
1633
1759
  "a",
1634
1760
  {
1635
1761
  href,
@@ -1641,7 +1767,7 @@ var NavClickable = forwardRef4(function NavClickable2({ href, onClick, linkCompo
1641
1767
  }
1642
1768
  );
1643
1769
  }
1644
- return /* @__PURE__ */ jsx36(
1770
+ return /* @__PURE__ */ jsx37(
1645
1771
  "button",
1646
1772
  {
1647
1773
  type: "button",
@@ -1663,33 +1789,50 @@ var UpperPart = ({
1663
1789
  linkComponent,
1664
1790
  className
1665
1791
  }) => {
1666
- return /* @__PURE__ */ jsxs20("div", { className: cn("w-full h-13 px-4 flex items-center justify-between", className), children: [
1667
- /* @__PURE__ */ jsxs20("div", { className: "flex items-center gap-6", children: [
1668
- /* @__PURE__ */ jsx36(NavIconButton, { ...logo, linkComponent }),
1669
- /* @__PURE__ */ jsx36("div", { className: "flex items-center gap-4", children: upperPartItemList.map((item) => /* @__PURE__ */ jsx36(
1670
- UpperPartTab,
1671
- {
1672
- label: item.label,
1673
- href: item.href,
1674
- selected: item.label === selected,
1675
- linkComponent,
1676
- onClick: () => {
1677
- item.onClick?.();
1678
- onSelectItem(item.label);
1679
- }
1680
- },
1681
- item.id ?? item.label
1682
- )) })
1683
- ] }),
1684
- /* @__PURE__ */ jsx36("div", { className: "flex items-center gap-2", children: upperPartIconList.map((icon, index) => /* @__PURE__ */ jsx36(
1685
- NavIconButton,
1686
- {
1687
- ...icon,
1688
- linkComponent
1689
- },
1690
- icon.id ?? icon.src ?? icon.label ?? index
1691
- )) })
1692
- ] });
1792
+ return /* @__PURE__ */ jsxs21(
1793
+ "div",
1794
+ {
1795
+ className: cn(
1796
+ "w-full min-h-13 flex items-stretch justify-between border-b border-gray02",
1797
+ className
1798
+ ),
1799
+ children: [
1800
+ /* @__PURE__ */ jsxs21("div", { className: "flex items-stretch", children: [
1801
+ /* @__PURE__ */ jsx37("div", { className: "flex w-14 shrink-0 items-center justify-center px-3", children: /* @__PURE__ */ jsx37(NavIconButton, { ...logo, linkComponent }) }),
1802
+ /* @__PURE__ */ jsxs21("div", { className: "flex items-stretch", children: [
1803
+ /* @__PURE__ */ jsx37("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" }),
1804
+ upperPartItemList.map((item) => /* @__PURE__ */ jsxs21(Fragment2, { children: [
1805
+ /* @__PURE__ */ jsx37(
1806
+ UpperPartTab,
1807
+ {
1808
+ label: item.label,
1809
+ href: item.href,
1810
+ selected: item.label === selected,
1811
+ linkComponent,
1812
+ onClick: () => {
1813
+ item.onClick?.();
1814
+ onSelectItem(item.label);
1815
+ }
1816
+ }
1817
+ ),
1818
+ /* @__PURE__ */ jsx37("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" })
1819
+ ] }, item.id ?? item.label))
1820
+ ] })
1821
+ ] }),
1822
+ /* @__PURE__ */ jsxs21("div", { className: "flex items-stretch", children: [
1823
+ /* @__PURE__ */ jsx37("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" }),
1824
+ upperPartIconList.map((icon, index) => /* @__PURE__ */ jsx37(
1825
+ NavIconButton,
1826
+ {
1827
+ ...icon,
1828
+ linkComponent
1829
+ },
1830
+ icon.id ?? icon.src ?? icon.label ?? index
1831
+ ))
1832
+ ] })
1833
+ ]
1834
+ }
1835
+ );
1693
1836
  };
1694
1837
  var UpperPartTab = ({
1695
1838
  label,
@@ -1699,7 +1842,7 @@ var UpperPartTab = ({
1699
1842
  linkComponent,
1700
1843
  className
1701
1844
  }) => {
1702
- return /* @__PURE__ */ jsx36(
1845
+ return /* @__PURE__ */ jsxs21(
1703
1846
  NavClickable,
1704
1847
  {
1705
1848
  href,
@@ -1707,11 +1850,14 @@ var UpperPartTab = ({
1707
1850
  linkComponent,
1708
1851
  current: selected,
1709
1852
  className: cn(
1710
- "inline-flex px-1 py-1.5 text-body2-regular cursor-pointer no-underline",
1711
- selected ? "text-strong font-medium underline underline-offset-4" : "text-quaternary hover:text-secondary",
1853
+ "inline-flex min-h-13 flex-col items-center gap-2 pt-2.5 cursor-pointer no-underline",
1854
+ "transition-colors hover:bg-gray00 active:bg-gray01",
1712
1855
  className
1713
1856
  ),
1714
- children: label
1857
+ children: [
1858
+ /* @__PURE__ */ jsx37("span", { className: cn("px-5 text-head1-medium", selected ? "text-strong" : "text-quaternary"), children: label }),
1859
+ /* @__PURE__ */ jsx37("span", { className: cn("h-0.5 w-full", selected ? "bg-black" : "bg-transparent") })
1860
+ ]
1715
1861
  }
1716
1862
  );
1717
1863
  };
@@ -1719,7 +1865,7 @@ var NavIconButton = forwardRef4(
1719
1865
  function NavIconButton2({ src, icon, alt, label, href, onClick, selected, badge, className, linkComponent }, forwardedRef) {
1720
1866
  const interactive = Boolean(onClick || href);
1721
1867
  const showBadge = badge !== void 0 && badge !== null && badge !== false;
1722
- return /* @__PURE__ */ jsxs20(
1868
+ return /* @__PURE__ */ jsxs21(
1723
1869
  NavClickable,
1724
1870
  {
1725
1871
  ref: forwardedRef,
@@ -1729,15 +1875,15 @@ var NavIconButton = forwardRef4(
1729
1875
  current: selected,
1730
1876
  disabled: !interactive,
1731
1877
  className: cn(
1732
- "relative inline-flex h-8 min-w-8 items-center justify-center gap-1.5 rounded-full px-1.5",
1878
+ "relative inline-flex h-13 min-w-13 items-center justify-center gap-1.5 px-3 transition-colors",
1733
1879
  interactive && "cursor-pointer",
1734
1880
  selected ? "bg-black text-white" : "bg-transparent hover:bg-gray00 active:bg-gray01",
1735
1881
  className
1736
1882
  ),
1737
1883
  children: [
1738
- icon ? /* @__PURE__ */ jsx36("span", { className: "inline-flex h-5 w-5 items-center justify-center", children: icon }) : src ? /* @__PURE__ */ jsx36("img", { src, alt: alt ?? label ?? "", className: "h-5 w-5" }) : null,
1739
- label ? /* @__PURE__ */ jsx36("span", { className: cn("text-body2-regular", selected ? "text-white" : "text-secondary"), children: label }) : null,
1740
- showBadge ? /* @__PURE__ */ jsx36(
1884
+ icon ? /* @__PURE__ */ jsx37("span", { className: "inline-flex h-6 w-6 items-center justify-center", children: icon }) : src ? /* @__PURE__ */ jsx37("img", { src, alt: alt ?? label ?? "", className: "h-6 w-6" }) : null,
1885
+ label ? /* @__PURE__ */ jsx37("span", { className: cn("text-body2-regular", selected ? "text-white" : "text-secondary"), children: label }) : null,
1886
+ showBadge ? /* @__PURE__ */ jsx37(
1741
1887
  "span",
1742
1888
  {
1743
1889
  "aria-hidden": badge === true,
@@ -1763,24 +1909,29 @@ var LowerPart = ({
1763
1909
  if (lowerPartItemList.length === 0) {
1764
1910
  return null;
1765
1911
  }
1766
- return /* @__PURE__ */ jsx36(
1912
+ return /* @__PURE__ */ jsxs21(
1767
1913
  "div",
1768
1914
  {
1769
- className: cn("w-full h-9 px-4 flex items-center gap-4 border-t border-gray02", className),
1770
- children: lowerPartItemList.map((item) => /* @__PURE__ */ jsx36(
1771
- LowerPartItemButton,
1772
- {
1773
- label: item.label,
1774
- href: item.href,
1775
- selected: item.label === selected,
1776
- linkComponent,
1777
- onClick: () => {
1778
- item.onClick?.();
1779
- onSelectItem(item.label);
1780
- }
1781
- },
1782
- item.id ?? item.label
1783
- ))
1915
+ className: cn("w-full h-[42px] pl-14 flex items-stretch border-b border-gray02", className),
1916
+ children: [
1917
+ /* @__PURE__ */ jsx37("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" }),
1918
+ lowerPartItemList.map((item) => /* @__PURE__ */ jsxs21(Fragment2, { children: [
1919
+ /* @__PURE__ */ jsx37(
1920
+ LowerPartItemButton,
1921
+ {
1922
+ label: item.label,
1923
+ href: item.href,
1924
+ selected: item.label === selected,
1925
+ linkComponent,
1926
+ onClick: () => {
1927
+ item.onClick?.();
1928
+ onSelectItem(item.label);
1929
+ }
1930
+ }
1931
+ ),
1932
+ /* @__PURE__ */ jsx37("span", { "aria-hidden": true, className: "w-px self-stretch bg-gray02" })
1933
+ ] }, item.id ?? item.label))
1934
+ ]
1784
1935
  }
1785
1936
  );
1786
1937
  };
@@ -1792,7 +1943,7 @@ var LowerPartItemButton = ({
1792
1943
  linkComponent,
1793
1944
  className
1794
1945
  }) => {
1795
- return /* @__PURE__ */ jsx36(
1946
+ return /* @__PURE__ */ jsx37(
1796
1947
  NavClickable,
1797
1948
  {
1798
1949
  href,
@@ -1800,9 +1951,9 @@ var LowerPartItemButton = ({
1800
1951
  linkComponent,
1801
1952
  current: selected,
1802
1953
  className: cn(
1803
- "inline-flex px-1.5 py-1 text-caption-regular cursor-pointer no-underline",
1804
- "hover:bg-gray00 active:bg-gray01",
1805
- selected ? "text-strong font-medium" : "text-quaternary",
1954
+ "inline-flex h-full items-center justify-center px-5 text-head3-medium cursor-pointer no-underline",
1955
+ "transition-colors hover:bg-gray00 active:bg-gray01",
1956
+ selected ? "text-strong" : "text-quaternary",
1806
1957
  className
1807
1958
  ),
1808
1959
  children: label
@@ -1812,7 +1963,7 @@ var LowerPartItemButton = ({
1812
1963
 
1813
1964
  // src/components/Toast/Toast.tsx
1814
1965
  import { forwardRef as forwardRef5, useEffect as useEffect3, useState as useState7 } from "react";
1815
- import { jsx as jsx37 } from "react/jsx-runtime";
1966
+ import { jsx as jsx38 } from "react/jsx-runtime";
1816
1967
  var EXIT_MS = 300;
1817
1968
  var Toast = forwardRef5(function Toast2({ message, open, duration = 3e3, onClose, position = "none", className }, ref) {
1818
1969
  const controlled = open !== void 0;
@@ -1835,7 +1986,7 @@ var Toast = forwardRef5(function Toast2({ message, open, duration = 3e3, onClose
1835
1986
  return () => clearTimeout(timer);
1836
1987
  }, [controlled, open, duration, onClose]);
1837
1988
  if (!mounted) return null;
1838
- const banner = /* @__PURE__ */ jsx37(
1989
+ const banner = /* @__PURE__ */ jsx38(
1839
1990
  "div",
1840
1991
  {
1841
1992
  ref,
@@ -1843,7 +1994,7 @@ var Toast = forwardRef5(function Toast2({ message, open, duration = 3e3, onClose
1843
1994
  "aria-live": "polite",
1844
1995
  className: cn(
1845
1996
  "w-full h-fit py-2.5 bg-gray06",
1846
- "font-pretendard text-white text-center font-semibold text-[17px]",
1997
+ "font-pretendard text-white text-center font-semibold text-[17px] leading-[1.6]",
1847
1998
  "shadow-[0_2px_15px_rgba(0,0,0,0.18)]",
1848
1999
  controlled && "transition-opacity duration-300",
1849
2000
  controlled && (visible ? "opacity-100" : "opacity-0"),
@@ -1853,7 +2004,7 @@ var Toast = forwardRef5(function Toast2({ message, open, duration = 3e3, onClose
1853
2004
  }
1854
2005
  );
1855
2006
  if (position === "none") return banner;
1856
- return /* @__PURE__ */ jsx37(
2007
+ return /* @__PURE__ */ jsx38(
1857
2008
  "div",
1858
2009
  {
1859
2010
  className: cn(
@@ -1872,6 +2023,8 @@ export {
1872
2023
  CategorySegmentedControl,
1873
2024
  Column,
1874
2025
  ColumnContentContainer,
2026
+ ColumnDescription,
2027
+ ColumnDescriptionList,
1875
2028
  ColumnLabel,
1876
2029
  ColumnSubTitle,
1877
2030
  ColumnText,
@@ -1888,7 +2041,12 @@ export {
1888
2041
  FormTextArea,
1889
2042
  IconCheck,
1890
2043
  IconChevronDownXS,
2044
+ IconClose,
2045
+ IconCompass,
2046
+ IconExclamation,
1891
2047
  IconInfo,
2048
+ IconRadioSelected,
2049
+ IconRadioUnselected,
1892
2050
  List,
1893
2051
  Modal,
1894
2052
  ModalText,