@x-plat/design-system 0.8.0 → 0.8.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.
@@ -2886,7 +2886,7 @@ Chip.displayName = "Chip";
2886
2886
  var Chip_default = Chip;
2887
2887
 
2888
2888
  // src/components/DatePicker/InputDatePicker/index.tsx
2889
- import React13 from "react";
2889
+ import React12 from "react";
2890
2890
 
2891
2891
  // src/components/Input/Input.tsx
2892
2892
  import React8 from "react";
@@ -3077,38 +3077,26 @@ PasswordInput.displayName = "PasswordInput";
3077
3077
  var PasswordInput_default = PasswordInput;
3078
3078
 
3079
3079
  // src/components/Modal/Modal.tsx
3080
- import React11 from "react";
3081
- import { createPortal } from "react-dom";
3082
-
3083
- // src/tokens/hooks/Portal.tsx
3084
3080
  import React10 from "react";
3085
- import ReactDOM from "react-dom";
3081
+ import { createPortal } from "react-dom";
3086
3082
  import { jsx as jsx313 } from "react/jsx-runtime";
3087
- var PortalContainerContext = React10.createContext(null);
3088
- var PortalProvider = ({ container, children }) => /* @__PURE__ */ jsx313(PortalContainerContext.Provider, { value: container, children });
3089
- var Portal = ({ children }) => {
3090
- const contextContainer = React10.useContext(PortalContainerContext);
3091
- if (typeof document === "undefined") return null;
3092
- const container = contextContainer ?? document.body;
3093
- return ReactDOM.createPortal(children, container);
3094
- };
3095
- Portal.displayName = "Portal";
3096
- var Portal_default = Portal;
3097
-
3098
- // src/components/Modal/Modal.tsx
3099
- import { jsx as jsx314 } from "react/jsx-runtime";
3100
3083
  var ANIMATION_DURATION_MS = 200;
3101
3084
  var Modal = (props) => {
3102
3085
  const { isOpen, onClose, children } = props;
3103
- const [mounted, setMounted] = React11.useState(false);
3104
- const [visible, setVisible] = React11.useState(false);
3105
- const boxRef = React11.useRef(null);
3106
- React11.useEffect(() => {
3086
+ const [mounted, setMounted] = React10.useState(false);
3087
+ const [visible, setVisible] = React10.useState(false);
3088
+ const [settled, setSettled] = React10.useState(false);
3089
+ React10.useEffect(() => {
3107
3090
  if (isOpen) {
3108
3091
  setMounted(true);
3109
- const t2 = setTimeout(() => setVisible(true), 1);
3110
- return () => clearTimeout(t2);
3092
+ const show = setTimeout(() => setVisible(true), 1);
3093
+ const settle = setTimeout(() => setSettled(true), ANIMATION_DURATION_MS + 50);
3094
+ return () => {
3095
+ clearTimeout(show);
3096
+ clearTimeout(settle);
3097
+ };
3111
3098
  }
3099
+ setSettled(false);
3112
3100
  setVisible(false);
3113
3101
  const t = setTimeout(() => setMounted(false), ANIMATION_DURATION_MS);
3114
3102
  return () => clearTimeout(t);
@@ -3117,20 +3105,19 @@ var Modal = (props) => {
3117
3105
  if (!mounted) return null;
3118
3106
  const stateClass = visible ? "enter" : "exit";
3119
3107
  return createPortal(
3120
- /* @__PURE__ */ jsx314(
3108
+ /* @__PURE__ */ jsx313(
3121
3109
  "div",
3122
3110
  {
3123
3111
  className: clsx_default("lib-xplat-modal", "dim", stateClass),
3124
3112
  onClick: onClose,
3125
- children: /* @__PURE__ */ jsx314(
3113
+ children: /* @__PURE__ */ jsx313(
3126
3114
  "div",
3127
3115
  {
3128
- ref: boxRef,
3129
- className: clsx_default("lib-xplat-modal", "modal-box", stateClass),
3116
+ className: clsx_default("lib-xplat-modal", "modal-box", stateClass, settled && "settled"),
3130
3117
  role: "dialog",
3131
3118
  "aria-modal": "true",
3132
3119
  onClick: (e) => e.stopPropagation(),
3133
- children: /* @__PURE__ */ jsx314(PortalProvider, { container: boxRef.current, children })
3120
+ children
3134
3121
  }
3135
3122
  )
3136
3123
  }
@@ -3142,9 +3129,9 @@ Modal.displayName = "Modal";
3142
3129
  var Modal_default = Modal;
3143
3130
 
3144
3131
  // src/components/DatePicker/SingleDatePicker/index.tsx
3145
- import React12 from "react";
3146
- import { Fragment as Fragment3, jsx as jsx315, jsxs as jsxs200 } from "react/jsx-runtime";
3147
- var DayCell2 = React12.memo(
3132
+ import React11 from "react";
3133
+ import { Fragment as Fragment3, jsx as jsx314, jsxs as jsxs200 } from "react/jsx-runtime";
3134
+ var DayCell2 = React11.memo(
3148
3135
  ({
3149
3136
  day,
3150
3137
  disabled,
@@ -3154,7 +3141,7 @@ var DayCell2 = React12.memo(
3154
3141
  isEnd,
3155
3142
  inRange,
3156
3143
  onSelect
3157
- }) => /* @__PURE__ */ jsx315(
3144
+ }) => /* @__PURE__ */ jsx314(
3158
3145
  "button",
3159
3146
  {
3160
3147
  type: "button",
@@ -3196,26 +3183,26 @@ var SingleDatePicker = (props) => {
3196
3183
  initialYear,
3197
3184
  initialMonth
3198
3185
  );
3199
- const [pickerMode, setPickerMode] = React12.useState("days");
3200
- const [yearRangeStart, setYearRangeStart] = React12.useState(
3186
+ const [pickerMode, setPickerMode] = React11.useState("days");
3187
+ const [yearRangeStart, setYearRangeStart] = React11.useState(
3201
3188
  Math.floor((initialYear ?? (/* @__PURE__ */ new Date()).getFullYear()) / 12) * 12
3202
3189
  );
3203
- const minTime = React12.useMemo(
3190
+ const minTime = React11.useMemo(
3204
3191
  () => minDate ? new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate()).getTime() : -Infinity,
3205
3192
  [minDate]
3206
3193
  );
3207
- const maxTime = React12.useMemo(
3194
+ const maxTime = React11.useMemo(
3208
3195
  () => maxDate ? new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate()).getTime() : Infinity,
3209
3196
  [maxDate]
3210
3197
  );
3211
- const highlightSet = React12.useMemo(() => {
3198
+ const highlightSet = React11.useMemo(() => {
3212
3199
  const set = /* @__PURE__ */ new Set();
3213
3200
  for (const h of highlightDates) {
3214
3201
  set.add(`${h.getFullYear()}-${h.getMonth()}-${h.getDate()}`);
3215
3202
  }
3216
3203
  return set;
3217
3204
  }, [highlightDates]);
3218
- const handleSelect = React12.useCallback(
3205
+ const handleSelect = React11.useCallback(
3219
3206
  (date) => {
3220
3207
  onChange?.(date);
3221
3208
  },
@@ -3258,14 +3245,14 @@ var SingleDatePicker = (props) => {
3258
3245
  className: clsx_default("lib-xplat-datepicker", "single"),
3259
3246
  children: [
3260
3247
  /* @__PURE__ */ jsxs200("div", { className: "datepicker-header", children: [
3261
- /* @__PURE__ */ jsx315("button", { className: "datepicker-nav", onClick: handlePrev, type: "button", children: /* @__PURE__ */ jsx315(ChevronLeftIcon_default, {}) }),
3262
- /* @__PURE__ */ jsx315("button", { className: "datepicker-title", onClick: handleTitleClick, type: "button", children: titleText }),
3263
- /* @__PURE__ */ jsx315("button", { className: "datepicker-nav", onClick: handleNext, type: "button", children: /* @__PURE__ */ jsx315(ChevronRightIcon_default, {}) })
3248
+ /* @__PURE__ */ jsx314("button", { className: "datepicker-nav", onClick: handlePrev, type: "button", children: /* @__PURE__ */ jsx314(ChevronLeftIcon_default, {}) }),
3249
+ /* @__PURE__ */ jsx314("button", { className: "datepicker-title", onClick: handleTitleClick, type: "button", children: titleText }),
3250
+ /* @__PURE__ */ jsx314("button", { className: "datepicker-nav", onClick: handleNext, type: "button", children: /* @__PURE__ */ jsx314(ChevronRightIcon_default, {}) })
3264
3251
  ] }),
3265
3252
  /* @__PURE__ */ jsxs200("div", { className: "datepicker-body", children: [
3266
- pickerMode === "years" && /* @__PURE__ */ jsx315("div", { className: "datepicker-picker-grid", children: Array.from({ length: 12 }, (_, i) => {
3253
+ pickerMode === "years" && /* @__PURE__ */ jsx314("div", { className: "datepicker-picker-grid", children: Array.from({ length: 12 }, (_, i) => {
3267
3254
  const y = yearRangeStart + i;
3268
- return /* @__PURE__ */ jsx315(
3255
+ return /* @__PURE__ */ jsx314(
3269
3256
  "button",
3270
3257
  {
3271
3258
  type: "button",
@@ -3276,7 +3263,7 @@ var SingleDatePicker = (props) => {
3276
3263
  y
3277
3264
  );
3278
3265
  }) }),
3279
- pickerMode === "months" && /* @__PURE__ */ jsx315("div", { className: "datepicker-picker-grid", children: monthLabels.map((label, i) => /* @__PURE__ */ jsx315(
3266
+ pickerMode === "months" && /* @__PURE__ */ jsx314("div", { className: "datepicker-picker-grid", children: monthLabels.map((label, i) => /* @__PURE__ */ jsx314(
3280
3267
  "button",
3281
3268
  {
3282
3269
  type: "button",
@@ -3287,7 +3274,7 @@ var SingleDatePicker = (props) => {
3287
3274
  i
3288
3275
  )) }),
3289
3276
  pickerMode === "days" && /* @__PURE__ */ jsxs200(Fragment3, { children: [
3290
- /* @__PURE__ */ jsx315("div", { className: "datepicker-weekdays", children: weekdays.map((label, i) => /* @__PURE__ */ jsx315(
3277
+ /* @__PURE__ */ jsx314("div", { className: "datepicker-weekdays", children: weekdays.map((label, i) => /* @__PURE__ */ jsx314(
3291
3278
  "div",
3292
3279
  {
3293
3280
  className: clsx_default(
@@ -3299,7 +3286,7 @@ var SingleDatePicker = (props) => {
3299
3286
  },
3300
3287
  label
3301
3288
  )) }),
3302
- /* @__PURE__ */ jsx315("div", { className: "datepicker-grid", children: days.map((day, idx) => {
3289
+ /* @__PURE__ */ jsx314("div", { className: "datepicker-grid", children: days.map((day, idx) => {
3303
3290
  const t = day.date.getTime();
3304
3291
  const disabled = t < minTime || t > maxTime;
3305
3292
  const selected = value ? isSameDay(day.date, value) : false;
@@ -3309,7 +3296,7 @@ var SingleDatePicker = (props) => {
3309
3296
  const isStart = hasRange ? isSameDay(day.date, rangeStart) : false;
3310
3297
  const isEnd = hasRange ? isSameDay(day.date, rangeEnd) : false;
3311
3298
  const inRangeVal = hasRange ? isInRange(day.date, rangeStart, rangeEnd) : false;
3312
- return /* @__PURE__ */ jsx315(
3299
+ return /* @__PURE__ */ jsx314(
3313
3300
  DayCell2,
3314
3301
  {
3315
3302
  day,
@@ -3334,7 +3321,7 @@ SingleDatePicker.displayName = "SingleDatePicker";
3334
3321
  var SingleDatePicker_default = SingleDatePicker;
3335
3322
 
3336
3323
  // src/components/DatePicker/InputDatePicker/index.tsx
3337
- import { jsx as jsx316, jsxs as jsxs201 } from "react/jsx-runtime";
3324
+ import { jsx as jsx315, jsxs as jsxs201 } from "react/jsx-runtime";
3338
3325
  var formatDate = (date) => {
3339
3326
  if (!date || !(date instanceof Date) || isNaN(date.getTime())) return "";
3340
3327
  const y = date.getFullYear();
@@ -3344,8 +3331,8 @@ var formatDate = (date) => {
3344
3331
  };
3345
3332
  var InputDatePicker = (props) => {
3346
3333
  const { value, onChange, minDate, maxDate, disabled, locale = "ko", placeholder } = props;
3347
- const [isOpen, setIsOpen] = React13.useState(false);
3348
- const [tempDate, setTempDate] = React13.useState(value ?? /* @__PURE__ */ new Date());
3334
+ const [isOpen, setIsOpen] = React12.useState(false);
3335
+ const [tempDate, setTempDate] = React12.useState(value ?? /* @__PURE__ */ new Date());
3349
3336
  const handleOpen = () => {
3350
3337
  if (disabled) return;
3351
3338
  setTempDate(value ?? /* @__PURE__ */ new Date());
@@ -3362,18 +3349,18 @@ var InputDatePicker = (props) => {
3362
3349
  setIsOpen(false);
3363
3350
  };
3364
3351
  return /* @__PURE__ */ jsxs201("div", { className: clsx_default("lib-xplat-datepicker input-datepicker", disabled && "disabled"), children: [
3365
- /* @__PURE__ */ jsx316("div", { className: "input-datepicker-trigger", onClick: handleOpen, children: /* @__PURE__ */ jsx316(
3352
+ /* @__PURE__ */ jsx315("div", { className: "input-datepicker-trigger", onClick: handleOpen, children: /* @__PURE__ */ jsx315(
3366
3353
  Input_default,
3367
3354
  {
3368
3355
  value: formatDate(value),
3369
3356
  placeholder,
3370
- suffix: /* @__PURE__ */ jsx316(CalenderIcon_default, {}),
3357
+ suffix: /* @__PURE__ */ jsx315(CalenderIcon_default, {}),
3371
3358
  disabled,
3372
3359
  readOnly: true
3373
3360
  }
3374
3361
  ) }),
3375
- /* @__PURE__ */ jsx316(Modal_default, { isOpen, onClose: handleClose, children: /* @__PURE__ */ jsxs201("div", { className: "lib-xplat-popup-datepicker-card", children: [
3376
- /* @__PURE__ */ jsx316("div", { className: "popup-datepicker-content", children: /* @__PURE__ */ jsx316(
3362
+ /* @__PURE__ */ jsx315(Modal_default, { isOpen, onClose: handleClose, children: /* @__PURE__ */ jsxs201("div", { className: "lib-xplat-popup-datepicker-card", children: [
3363
+ /* @__PURE__ */ jsx315("div", { className: "popup-datepicker-content", children: /* @__PURE__ */ jsx315(
3377
3364
  SingleDatePicker_default,
3378
3365
  {
3379
3366
  value: tempDate,
@@ -3384,8 +3371,8 @@ var InputDatePicker = (props) => {
3384
3371
  }
3385
3372
  ) }),
3386
3373
  /* @__PURE__ */ jsxs201("div", { className: "popup-datepicker-footer", children: [
3387
- /* @__PURE__ */ jsx316(Button_default, { type: "secondary", onClick: handleClose, children: locale === "ko" ? "\uCDE8\uC18C" : "Cancel" }),
3388
- /* @__PURE__ */ jsx316(Button_default, { type: "primary", onClick: handleApply, children: locale === "ko" ? "\uC801\uC6A9" : "Apply" })
3374
+ /* @__PURE__ */ jsx315(Button_default, { type: "secondary", onClick: handleClose, children: locale === "ko" ? "\uCDE8\uC18C" : "Cancel" }),
3375
+ /* @__PURE__ */ jsx315(Button_default, { type: "primary", onClick: handleApply, children: locale === "ko" ? "\uC801\uC6A9" : "Apply" })
3389
3376
  ] })
3390
3377
  ] }) })
3391
3378
  ] });
@@ -3394,20 +3381,20 @@ InputDatePicker.displayName = "InputDatePicker";
3394
3381
  var InputDatePicker_default = InputDatePicker;
3395
3382
 
3396
3383
  // src/components/DatePicker/PopupPicker/index.tsx
3397
- import React17 from "react";
3384
+ import React16 from "react";
3398
3385
 
3399
3386
  // src/components/DatePicker/RangePicker/index.tsx
3400
- import React16 from "react";
3387
+ import React15 from "react";
3401
3388
 
3402
3389
  // src/components/Tab/Tab.tsx
3403
- import React15 from "react";
3390
+ import React14 from "react";
3404
3391
 
3405
3392
  // src/components/Tab/TabItem.tsx
3406
- import React14 from "react";
3407
- import { jsx as jsx317 } from "react/jsx-runtime";
3408
- var TabItem = React14.forwardRef((props, ref) => {
3393
+ import React13 from "react";
3394
+ import { jsx as jsx316 } from "react/jsx-runtime";
3395
+ var TabItem = React13.forwardRef((props, ref) => {
3409
3396
  const { isActive: isActive2, title, onClick } = props;
3410
- return /* @__PURE__ */ jsx317(
3397
+ return /* @__PURE__ */ jsx316(
3411
3398
  "div",
3412
3399
  {
3413
3400
  ref,
@@ -3421,25 +3408,25 @@ TabItem.displayName = "TabItem";
3421
3408
  var TabItem_default = TabItem;
3422
3409
 
3423
3410
  // src/components/Tab/Tab.tsx
3424
- import { jsx as jsx318, jsxs as jsxs202 } from "react/jsx-runtime";
3411
+ import { jsx as jsx317, jsxs as jsxs202 } from "react/jsx-runtime";
3425
3412
  var Tab = (props) => {
3426
3413
  const { activeIndex, onChange, tabs, type, size = "md" } = props;
3427
- const [underlineStyle, setUnderlineStyle] = React15.useState({
3414
+ const [underlineStyle, setUnderlineStyle] = React14.useState({
3428
3415
  left: 0,
3429
3416
  width: 0
3430
3417
  });
3431
- const itemRefs = React15.useRef([]);
3418
+ const itemRefs = React14.useRef([]);
3432
3419
  const handleChangeActiveTab = (tabItem, tabIdx) => {
3433
3420
  onChange(tabItem, tabIdx);
3434
3421
  };
3435
- React15.useEffect(() => {
3422
+ React14.useEffect(() => {
3436
3423
  const el = itemRefs.current[activeIndex];
3437
3424
  if (el) {
3438
3425
  setUnderlineStyle({ left: el.offsetLeft, width: el.offsetWidth });
3439
3426
  }
3440
3427
  }, [activeIndex, tabs.length]);
3441
3428
  return /* @__PURE__ */ jsxs202("div", { className: clsx_default("lib-xplat-tab", `type-${type}`, size), children: [
3442
- tabs.map((tab, idx) => /* @__PURE__ */ jsx318(
3429
+ tabs.map((tab, idx) => /* @__PURE__ */ jsx317(
3443
3430
  TabItem_default,
3444
3431
  {
3445
3432
  onClick: () => handleChangeActiveTab(tab, idx),
@@ -3451,7 +3438,7 @@ var Tab = (props) => {
3451
3438
  },
3452
3439
  `${tab.value}_${idx}`
3453
3440
  )),
3454
- type === "toggle" && /* @__PURE__ */ jsx318(
3441
+ type === "toggle" && /* @__PURE__ */ jsx317(
3455
3442
  "div",
3456
3443
  {
3457
3444
  className: "tab-toggle-underline",
@@ -3467,7 +3454,7 @@ Tab.displayName = "Tab";
3467
3454
  var Tab_default = Tab;
3468
3455
 
3469
3456
  // src/components/DatePicker/RangePicker/index.tsx
3470
- import { jsx as jsx319, jsxs as jsxs203 } from "react/jsx-runtime";
3457
+ import { jsx as jsx318, jsxs as jsxs203 } from "react/jsx-runtime";
3471
3458
  var RangePicker = (props) => {
3472
3459
  const {
3473
3460
  startDate,
@@ -3477,7 +3464,7 @@ var RangePicker = (props) => {
3477
3464
  maxDate,
3478
3465
  locale = "ko"
3479
3466
  } = props;
3480
- const [activeTab, setActiveTab] = React16.useState("start");
3467
+ const [activeTab, setActiveTab] = React15.useState("start");
3481
3468
  const handleStartChange = (date) => {
3482
3469
  if (!date) return;
3483
3470
  const newStart = date > endDate ? endDate : date;
@@ -3491,7 +3478,7 @@ var RangePicker = (props) => {
3491
3478
  const startMaxDate = maxDate && endDate < maxDate ? endDate : endDate;
3492
3479
  const endMinDate = minDate && startDate > minDate ? startDate : startDate;
3493
3480
  return /* @__PURE__ */ jsxs203("div", { className: clsx_default("lib-xplat-datepicker", "range"), children: [
3494
- /* @__PURE__ */ jsx319("div", { className: "datepicker-range-tabs", children: /* @__PURE__ */ jsx319(
3481
+ /* @__PURE__ */ jsx318("div", { className: "datepicker-range-tabs", children: /* @__PURE__ */ jsx318(
3495
3482
  Tab_default,
3496
3483
  {
3497
3484
  activeIndex: activeTab === "start" ? 0 : 1,
@@ -3505,7 +3492,7 @@ var RangePicker = (props) => {
3505
3492
  }
3506
3493
  ) }),
3507
3494
  /* @__PURE__ */ jsxs203("div", { className: "datepicker-range-panels", children: [
3508
- /* @__PURE__ */ jsx319(
3495
+ /* @__PURE__ */ jsx318(
3509
3496
  SingleDatePicker_default,
3510
3497
  {
3511
3498
  value: startDate,
@@ -3517,7 +3504,7 @@ var RangePicker = (props) => {
3517
3504
  locale
3518
3505
  }
3519
3506
  ),
3520
- /* @__PURE__ */ jsx319(
3507
+ /* @__PURE__ */ jsx318(
3521
3508
  SingleDatePicker_default,
3522
3509
  {
3523
3510
  value: endDate,
@@ -3530,7 +3517,7 @@ var RangePicker = (props) => {
3530
3517
  }
3531
3518
  )
3532
3519
  ] }),
3533
- /* @__PURE__ */ jsx319("div", { className: "datepicker-range-mobile", children: activeTab === "start" ? /* @__PURE__ */ jsx319(
3520
+ /* @__PURE__ */ jsx318("div", { className: "datepicker-range-mobile", children: activeTab === "start" ? /* @__PURE__ */ jsx318(
3534
3521
  SingleDatePicker_default,
3535
3522
  {
3536
3523
  value: startDate,
@@ -3541,7 +3528,7 @@ var RangePicker = (props) => {
3541
3528
  rangeEnd: endDate,
3542
3529
  locale
3543
3530
  }
3544
- ) : /* @__PURE__ */ jsx319(
3531
+ ) : /* @__PURE__ */ jsx318(
3545
3532
  SingleDatePicker_default,
3546
3533
  {
3547
3534
  value: endDate,
@@ -3559,10 +3546,10 @@ RangePicker.displayName = "RangePicker";
3559
3546
  var RangePicker_default = RangePicker;
3560
3547
 
3561
3548
  // src/components/DatePicker/PopupPicker/index.tsx
3562
- import { jsx as jsx320, jsxs as jsxs204 } from "react/jsx-runtime";
3549
+ import { jsx as jsx319, jsxs as jsxs204 } from "react/jsx-runtime";
3563
3550
  var PopupPicker = (props) => {
3564
3551
  const { component, type, locale } = props;
3565
- const [isOpen, setIsOpen] = React17.useState(false);
3552
+ const [isOpen, setIsOpen] = React16.useState(false);
3566
3553
  const handleClick = () => setIsOpen(true);
3567
3554
  const handleClose = () => setIsOpen(false);
3568
3555
  const handleSingleChange = (date) => {
@@ -3571,10 +3558,10 @@ var PopupPicker = (props) => {
3571
3558
  handleClose();
3572
3559
  };
3573
3560
  return /* @__PURE__ */ jsxs204("div", { className: "lib-xplat-popup-datepicker", children: [
3574
- React17.cloneElement(component, { onClick: handleClick }),
3575
- /* @__PURE__ */ jsx320(Modal_default, { isOpen, onClose: handleClose, children: /* @__PURE__ */ jsxs204("div", { className: clsx_default("lib-xplat-popup-datepicker-card", type === "range" && "range-mode"), children: [
3561
+ React16.cloneElement(component, { onClick: handleClick }),
3562
+ /* @__PURE__ */ jsx319(Modal_default, { isOpen, onClose: handleClose, children: /* @__PURE__ */ jsxs204("div", { className: clsx_default("lib-xplat-popup-datepicker-card", type === "range" && "range-mode"), children: [
3576
3563
  /* @__PURE__ */ jsxs204("div", { className: "popup-datepicker-content", children: [
3577
- type === "single" && /* @__PURE__ */ jsx320(
3564
+ type === "single" && /* @__PURE__ */ jsx319(
3578
3565
  SingleDatePicker_default,
3579
3566
  {
3580
3567
  value: props.value,
@@ -3584,7 +3571,7 @@ var PopupPicker = (props) => {
3584
3571
  locale
3585
3572
  }
3586
3573
  ),
3587
- type === "range" && /* @__PURE__ */ jsx320(
3574
+ type === "range" && /* @__PURE__ */ jsx319(
3588
3575
  RangePicker_default,
3589
3576
  {
3590
3577
  startDate: props.startDate,
@@ -3597,7 +3584,7 @@ var PopupPicker = (props) => {
3597
3584
  )
3598
3585
  ] }),
3599
3586
  /* @__PURE__ */ jsxs204("div", { className: "popup-datepicker-footer", children: [
3600
- /* @__PURE__ */ jsx320(
3587
+ /* @__PURE__ */ jsx319(
3601
3588
  Button_default,
3602
3589
  {
3603
3590
  type: "secondary",
@@ -3605,7 +3592,7 @@ var PopupPicker = (props) => {
3605
3592
  children: locale === "ko" ? "\uCDE8\uC18C" : "Cancel"
3606
3593
  }
3607
3594
  ),
3608
- /* @__PURE__ */ jsx320(Button_default, { type: "primary", onClick: handleClose, children: locale === "ko" ? "\uC801\uC6A9" : "Apply" })
3595
+ /* @__PURE__ */ jsx319(Button_default, { type: "primary", onClick: handleClose, children: locale === "ko" ? "\uC801\uC6A9" : "Apply" })
3609
3596
  ] })
3610
3597
  ] }) })
3611
3598
  ] });
@@ -3614,10 +3601,10 @@ PopupPicker.displayName = "PopupPicker";
3614
3601
  var PopupPicker_default = PopupPicker;
3615
3602
 
3616
3603
  // src/components/Divider/Divider.tsx
3617
- import { jsx as jsx321 } from "react/jsx-runtime";
3604
+ import { jsx as jsx320 } from "react/jsx-runtime";
3618
3605
  var Divider = (props) => {
3619
3606
  const { orientation = "horizontal" } = props;
3620
- return /* @__PURE__ */ jsx321(
3607
+ return /* @__PURE__ */ jsx320(
3621
3608
  "div",
3622
3609
  {
3623
3610
  className: clsx_default("lib-xplat-divider", orientation),
@@ -3630,15 +3617,15 @@ Divider.displayName = "Divider";
3630
3617
  var Divider_default = Divider;
3631
3618
 
3632
3619
  // src/components/Drawer/Drawer.tsx
3633
- import React18 from "react";
3620
+ import React17 from "react";
3634
3621
  import { createPortal as createPortal2 } from "react-dom";
3635
- import { jsx as jsx322, jsxs as jsxs205 } from "react/jsx-runtime";
3622
+ import { jsx as jsx321, jsxs as jsxs205 } from "react/jsx-runtime";
3636
3623
  var ANIMATION_DURATION_MS2 = 250;
3637
3624
  var Drawer = (props) => {
3638
3625
  const { isOpen, onClose, placement = "right", size = "md", title, children } = props;
3639
- const [mounted, setMounted] = React18.useState(false);
3640
- const [visible, setVisible] = React18.useState(false);
3641
- React18.useEffect(() => {
3626
+ const [mounted, setMounted] = React17.useState(false);
3627
+ const [visible, setVisible] = React17.useState(false);
3628
+ React17.useEffect(() => {
3642
3629
  if (isOpen) {
3643
3630
  setMounted(true);
3644
3631
  const t2 = setTimeout(() => setVisible(true), 1);
@@ -3652,7 +3639,7 @@ var Drawer = (props) => {
3652
3639
  if (!mounted) return null;
3653
3640
  const stateClass = visible ? "enter" : "exit";
3654
3641
  return createPortal2(
3655
- /* @__PURE__ */ jsx322(
3642
+ /* @__PURE__ */ jsx321(
3656
3643
  "div",
3657
3644
  {
3658
3645
  className: clsx_default("lib-xplat-drawer-overlay", stateClass),
@@ -3666,10 +3653,10 @@ var Drawer = (props) => {
3666
3653
  onClick: (e) => e.stopPropagation(),
3667
3654
  children: [
3668
3655
  title && /* @__PURE__ */ jsxs205("div", { className: "drawer-header", children: [
3669
- /* @__PURE__ */ jsx322("span", { className: "drawer-title", children: title }),
3670
- /* @__PURE__ */ jsx322("button", { className: "close-btn", onClick: onClose, "aria-label": "\uB2EB\uAE30", children: "\xD7" })
3656
+ /* @__PURE__ */ jsx321("span", { className: "drawer-title", children: title }),
3657
+ /* @__PURE__ */ jsx321("button", { className: "close-btn", onClick: onClose, "aria-label": "\uB2EB\uAE30", children: "\xD7" })
3671
3658
  ] }),
3672
- /* @__PURE__ */ jsx322("div", { className: "drawer-body", children })
3659
+ /* @__PURE__ */ jsx321("div", { className: "drawer-body", children })
3673
3660
  ]
3674
3661
  }
3675
3662
  )
@@ -3682,16 +3669,25 @@ Drawer.displayName = "Drawer";
3682
3669
  var Drawer_default = Drawer;
3683
3670
 
3684
3671
  // src/components/Dropdown/Dropdown.tsx
3685
- import React21 from "react";
3672
+ import React20 from "react";
3673
+
3674
+ // src/tokens/hooks/Portal.tsx
3675
+ import ReactDOM from "react-dom";
3676
+ var Portal = ({ children }) => {
3677
+ if (typeof document === "undefined") return null;
3678
+ return ReactDOM.createPortal(children, document.body);
3679
+ };
3680
+ Portal.displayName = "Portal";
3681
+ var Portal_default = Portal;
3686
3682
 
3687
3683
  // src/tokens/hooks/useAutoPosition.ts
3688
- import React19 from "react";
3684
+ import React18 from "react";
3689
3685
  var useAutoPosition = (triggerRef, popRef, enabled = true) => {
3690
- const [position, setPosition] = React19.useState({
3686
+ const [position, setPosition] = React18.useState({
3691
3687
  position: {},
3692
3688
  direction: "bottom"
3693
3689
  });
3694
- const calculatePosition = React19.useCallback(() => {
3690
+ const calculatePosition = React18.useCallback(() => {
3695
3691
  if (!triggerRef.current || !popRef.current) return;
3696
3692
  const triggerRect = triggerRef.current.getBoundingClientRect();
3697
3693
  const popW = popRef.current.offsetWidth;
@@ -3718,13 +3714,13 @@ var useAutoPosition = (triggerRef, popRef, enabled = true) => {
3718
3714
  direction
3719
3715
  });
3720
3716
  }, [triggerRef, popRef]);
3721
- React19.useLayoutEffect(() => {
3717
+ React18.useLayoutEffect(() => {
3722
3718
  if (!enabled) return;
3723
3719
  calculatePosition();
3724
3720
  const raf = requestAnimationFrame(calculatePosition);
3725
3721
  return () => cancelAnimationFrame(raf);
3726
3722
  }, [calculatePosition, enabled]);
3727
- React19.useEffect(() => {
3723
+ React18.useEffect(() => {
3728
3724
  if (!enabled || !popRef.current) return;
3729
3725
  const observer = new ResizeObserver(() => {
3730
3726
  calculatePosition();
@@ -3732,7 +3728,7 @@ var useAutoPosition = (triggerRef, popRef, enabled = true) => {
3732
3728
  observer.observe(popRef.current);
3733
3729
  return () => observer.disconnect();
3734
3730
  }, [calculatePosition, enabled, popRef]);
3735
- React19.useEffect(() => {
3731
+ React18.useEffect(() => {
3736
3732
  if (!enabled) return;
3737
3733
  window.addEventListener("resize", calculatePosition);
3738
3734
  window.addEventListener("scroll", calculatePosition, true);
@@ -3746,9 +3742,9 @@ var useAutoPosition = (triggerRef, popRef, enabled = true) => {
3746
3742
  var useAutoPosition_default = useAutoPosition;
3747
3743
 
3748
3744
  // src/tokens/hooks/useClickOutside.ts
3749
- import React20 from "react";
3745
+ import React19 from "react";
3750
3746
  var useClickOutside = (refs, handler, enabled = true) => {
3751
- React20.useEffect(() => {
3747
+ React19.useEffect(() => {
3752
3748
  if (!enabled) return;
3753
3749
  const refArray = Array.isArray(refs) ? refs : [refs];
3754
3750
  const listener = (event) => {
@@ -3771,17 +3767,17 @@ var useClickOutside = (refs, handler, enabled = true) => {
3771
3767
  var useClickOutside_default = useClickOutside;
3772
3768
 
3773
3769
  // src/components/Dropdown/Dropdown.tsx
3774
- import { jsx as jsx323, jsxs as jsxs206 } from "react/jsx-runtime";
3770
+ import { jsx as jsx322, jsxs as jsxs206 } from "react/jsx-runtime";
3775
3771
  var Dropdown = (props) => {
3776
3772
  const { items, children } = props;
3777
- const [isOpen, setIsOpen] = React21.useState(false);
3778
- const [mounted, setMounted] = React21.useState(false);
3779
- const [visible, setVisible] = React21.useState(false);
3780
- const triggerRef = React21.useRef(null);
3781
- const menuRef = React21.useRef(null);
3773
+ const [isOpen, setIsOpen] = React20.useState(false);
3774
+ const [mounted, setMounted] = React20.useState(false);
3775
+ const [visible, setVisible] = React20.useState(false);
3776
+ const triggerRef = React20.useRef(null);
3777
+ const menuRef = React20.useRef(null);
3782
3778
  const { position, direction } = useAutoPosition_default(triggerRef, menuRef, mounted);
3783
3779
  useClickOutside_default([triggerRef, menuRef], () => setIsOpen(false), isOpen);
3784
- React21.useEffect(() => {
3780
+ React20.useEffect(() => {
3785
3781
  if (isOpen) {
3786
3782
  setMounted(true);
3787
3783
  const t2 = setTimeout(() => setVisible(true), 1);
@@ -3797,7 +3793,7 @@ var Dropdown = (props) => {
3797
3793
  setIsOpen(false);
3798
3794
  };
3799
3795
  return /* @__PURE__ */ jsxs206("div", { className: "lib-xplat-dropdown", children: [
3800
- /* @__PURE__ */ jsx323(
3796
+ /* @__PURE__ */ jsx322(
3801
3797
  "div",
3802
3798
  {
3803
3799
  ref: triggerRef,
@@ -3806,14 +3802,14 @@ var Dropdown = (props) => {
3806
3802
  children
3807
3803
  }
3808
3804
  ),
3809
- mounted && /* @__PURE__ */ jsx323(Portal_default, { children: /* @__PURE__ */ jsx323(
3805
+ mounted && /* @__PURE__ */ jsx322(Portal_default, { children: /* @__PURE__ */ jsx322(
3810
3806
  "div",
3811
3807
  {
3812
3808
  ref: menuRef,
3813
3809
  className: clsx_default("lib-xplat-dropdown-menu", direction, { visible }),
3814
3810
  style: { top: position.top, left: position.left },
3815
3811
  role: "menu",
3816
- children: items.map((item) => /* @__PURE__ */ jsx323(
3812
+ children: items.map((item) => /* @__PURE__ */ jsx322(
3817
3813
  "button",
3818
3814
  {
3819
3815
  className: clsx_default("dropdown-item", {
@@ -3835,8 +3831,8 @@ Dropdown.displayName = "Dropdown";
3835
3831
  var Dropdown_default = Dropdown;
3836
3832
 
3837
3833
  // src/components/Editor/Editor.tsx
3838
- import React22 from "react";
3839
- import { jsx as jsx324, jsxs as jsxs207 } from "react/jsx-runtime";
3834
+ import React21 from "react";
3835
+ import { jsx as jsx323, jsxs as jsxs207 } from "react/jsx-runtime";
3840
3836
  var DEFAULT_TOOLBAR = [
3841
3837
  "bold",
3842
3838
  "italic",
@@ -3943,21 +3939,21 @@ var Editor = (props) => {
3943
3939
  onImageUpload,
3944
3940
  minHeight = 200
3945
3941
  } = props;
3946
- const editorRef = React22.useRef(null);
3947
- const lastRangeRef = React22.useRef(null);
3948
- const composingRef = React22.useRef(false);
3949
- const [isFocused, setIsFocused] = React22.useState(false);
3950
- const [isEmpty, setIsEmpty] = React22.useState(!value);
3951
- const [activeFormats, setActiveFormats] = React22.useState(/* @__PURE__ */ new Set());
3952
- const [slashOpen, setSlashOpen] = React22.useState(false);
3953
- const [slashFilter, setSlashFilter] = React22.useState("");
3954
- const [slashIdx, setSlashIdx] = React22.useState(0);
3955
- const [slashPos, setSlashPos] = React22.useState({ top: 0, left: 0 });
3956
- const slashStartRangeRef = React22.useRef(null);
3957
- const [linkOpen, setLinkOpen] = React22.useState(false);
3958
- const [linkValue, setLinkValue] = React22.useState("");
3959
- const [linkPos, setLinkPos] = React22.useState({ top: 0, left: 0 });
3960
- React22.useEffect(() => {
3942
+ const editorRef = React21.useRef(null);
3943
+ const lastRangeRef = React21.useRef(null);
3944
+ const composingRef = React21.useRef(false);
3945
+ const [isFocused, setIsFocused] = React21.useState(false);
3946
+ const [isEmpty, setIsEmpty] = React21.useState(!value);
3947
+ const [activeFormats, setActiveFormats] = React21.useState(/* @__PURE__ */ new Set());
3948
+ const [slashOpen, setSlashOpen] = React21.useState(false);
3949
+ const [slashFilter, setSlashFilter] = React21.useState("");
3950
+ const [slashIdx, setSlashIdx] = React21.useState(0);
3951
+ const [slashPos, setSlashPos] = React21.useState({ top: 0, left: 0 });
3952
+ const slashStartRangeRef = React21.useRef(null);
3953
+ const [linkOpen, setLinkOpen] = React21.useState(false);
3954
+ const [linkValue, setLinkValue] = React21.useState("");
3955
+ const [linkPos, setLinkPos] = React21.useState({ top: 0, left: 0 });
3956
+ React21.useEffect(() => {
3961
3957
  if (!editorRef.current) return;
3962
3958
  if (editorRef.current.innerHTML !== value) {
3963
3959
  editorRef.current.innerHTML = sanitizeHtml(value || "");
@@ -4071,7 +4067,7 @@ var Editor = (props) => {
4071
4067
  setSlashIdx(0);
4072
4068
  slashStartRangeRef.current = null;
4073
4069
  };
4074
- const filteredSlashItems = React22.useMemo(() => {
4070
+ const filteredSlashItems = React21.useMemo(() => {
4075
4071
  if (!slashFilter) return SLASH_ITEMS;
4076
4072
  const f = slashFilter.toLowerCase();
4077
4073
  return SLASH_ITEMS.filter((it) => it.label.toLowerCase().includes(f) || it.key.includes(f));
@@ -4357,7 +4353,7 @@ var Editor = (props) => {
4357
4353
  }
4358
4354
  };
4359
4355
  return /* @__PURE__ */ jsxs207("div", { className: clsx_default("lib-xplat-editor", isFocused && "focused", readOnly && "readonly"), children: [
4360
- !readOnly && /* @__PURE__ */ jsx324(
4356
+ !readOnly && /* @__PURE__ */ jsx323(
4361
4357
  EditorToolbar,
4362
4358
  {
4363
4359
  items: toolbar,
@@ -4366,8 +4362,8 @@ var Editor = (props) => {
4366
4362
  }
4367
4363
  ),
4368
4364
  /* @__PURE__ */ jsxs207("div", { className: "lib-xplat-editor__content", style: { minHeight }, children: [
4369
- isEmpty && !isFocused && /* @__PURE__ */ jsx324("div", { className: "lib-xplat-editor__placeholder", children: placeholder }),
4370
- /* @__PURE__ */ jsx324(
4365
+ isEmpty && !isFocused && /* @__PURE__ */ jsx323("div", { className: "lib-xplat-editor__placeholder", children: placeholder }),
4366
+ /* @__PURE__ */ jsx323(
4371
4367
  "div",
4372
4368
  {
4373
4369
  ref: editorRef,
@@ -4386,7 +4382,7 @@ var Editor = (props) => {
4386
4382
  spellCheck: true
4387
4383
  }
4388
4384
  ),
4389
- slashOpen && filteredSlashItems.length > 0 && /* @__PURE__ */ jsx324(
4385
+ slashOpen && filteredSlashItems.length > 0 && /* @__PURE__ */ jsx323(
4390
4386
  SlashMenu,
4391
4387
  {
4392
4388
  position: slashPos,
@@ -4396,7 +4392,7 @@ var Editor = (props) => {
4396
4392
  onClose: closeSlashMenu
4397
4393
  }
4398
4394
  ),
4399
- linkOpen && /* @__PURE__ */ jsx324(
4395
+ linkOpen && /* @__PURE__ */ jsx323(
4400
4396
  LinkPopover,
4401
4397
  {
4402
4398
  position: linkPos,
@@ -4448,7 +4444,7 @@ var isActive = (item, active) => {
4448
4444
  return active.has(item);
4449
4445
  };
4450
4446
  var EditorToolbar = ({ items, active, onAction }) => {
4451
- return /* @__PURE__ */ jsx324("div", { className: "lib-xplat-editor__toolbar", children: items.map((item) => /* @__PURE__ */ jsx324(
4447
+ return /* @__PURE__ */ jsx323("div", { className: "lib-xplat-editor__toolbar", children: items.map((item) => /* @__PURE__ */ jsx323(
4452
4448
  "button",
4453
4449
  {
4454
4450
  type: "button",
@@ -4464,7 +4460,7 @@ var EditorToolbar = ({ items, active, onAction }) => {
4464
4460
  )) });
4465
4461
  };
4466
4462
  var SlashMenu = ({ position, items, activeIndex, onSelect, onClose }) => {
4467
- React22.useEffect(() => {
4463
+ React21.useEffect(() => {
4468
4464
  const handleClickOutside = (e) => {
4469
4465
  const target = e.target;
4470
4466
  const menu = document.querySelector(".lib-xplat-editor__slash-menu");
@@ -4473,7 +4469,7 @@ var SlashMenu = ({ position, items, activeIndex, onSelect, onClose }) => {
4473
4469
  window.addEventListener("mousedown", handleClickOutside);
4474
4470
  return () => window.removeEventListener("mousedown", handleClickOutside);
4475
4471
  }, [onClose]);
4476
- return /* @__PURE__ */ jsx324(
4472
+ return /* @__PURE__ */ jsx323(
4477
4473
  "div",
4478
4474
  {
4479
4475
  className: "lib-xplat-editor__slash-menu",
@@ -4488,8 +4484,8 @@ var SlashMenu = ({ position, items, activeIndex, onSelect, onClose }) => {
4488
4484
  onSelect(item);
4489
4485
  },
4490
4486
  children: [
4491
- /* @__PURE__ */ jsx324("span", { className: "label", children: item.label }),
4492
- item.hint && /* @__PURE__ */ jsx324("span", { className: "hint", children: item.hint })
4487
+ /* @__PURE__ */ jsx323("span", { className: "label", children: item.label }),
4488
+ item.hint && /* @__PURE__ */ jsx323("span", { className: "hint", children: item.hint })
4493
4489
  ]
4494
4490
  },
4495
4491
  item.key
@@ -4498,8 +4494,8 @@ var SlashMenu = ({ position, items, activeIndex, onSelect, onClose }) => {
4498
4494
  );
4499
4495
  };
4500
4496
  var LinkPopover = ({ position, value, onChange, onConfirm, onClose }) => {
4501
- const inputRef = React22.useRef(null);
4502
- React22.useEffect(() => {
4497
+ const inputRef = React21.useRef(null);
4498
+ React21.useEffect(() => {
4503
4499
  inputRef.current?.focus();
4504
4500
  }, []);
4505
4501
  return /* @__PURE__ */ jsxs207(
@@ -4508,7 +4504,7 @@ var LinkPopover = ({ position, value, onChange, onConfirm, onClose }) => {
4508
4504
  className: "lib-xplat-editor__link-popover",
4509
4505
  style: { top: position.top, left: position.left },
4510
4506
  children: [
4511
- /* @__PURE__ */ jsx324(
4507
+ /* @__PURE__ */ jsx323(
4512
4508
  "input",
4513
4509
  {
4514
4510
  ref: inputRef,
@@ -4528,11 +4524,11 @@ var LinkPopover = ({ position, value, onChange, onConfirm, onClose }) => {
4528
4524
  }
4529
4525
  }
4530
4526
  ),
4531
- /* @__PURE__ */ jsx324("button", { type: "button", onMouseDown: (e) => {
4527
+ /* @__PURE__ */ jsx323("button", { type: "button", onMouseDown: (e) => {
4532
4528
  e.preventDefault();
4533
4529
  onConfirm();
4534
4530
  }, children: "\uC801\uC6A9" }),
4535
- /* @__PURE__ */ jsx324("button", { type: "button", onMouseDown: (e) => {
4531
+ /* @__PURE__ */ jsx323("button", { type: "button", onMouseDown: (e) => {
4536
4532
  e.preventDefault();
4537
4533
  onClose();
4538
4534
  }, children: "\uCDE8\uC18C" })
@@ -4542,23 +4538,23 @@ var LinkPopover = ({ position, value, onChange, onConfirm, onClose }) => {
4542
4538
  };
4543
4539
 
4544
4540
  // src/components/EmptyState/EmptyState.tsx
4545
- import { jsx as jsx325, jsxs as jsxs208 } from "react/jsx-runtime";
4541
+ import { jsx as jsx324, jsxs as jsxs208 } from "react/jsx-runtime";
4546
4542
  var EmptyState = (props) => {
4547
4543
  const { icon, title = "\uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4", description, action } = props;
4548
4544
  return /* @__PURE__ */ jsxs208("div", { className: "lib-xplat-empty-state", children: [
4549
- icon && /* @__PURE__ */ jsx325("div", { className: "empty-icon", children: icon }),
4550
- !icon && /* @__PURE__ */ jsx325("div", { className: "empty-icon", children: /* @__PURE__ */ jsx325("svg", { viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsx325("path", { d: "M20 6h-8l-2-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm0 12H4V8h16v10z" }) }) }),
4551
- /* @__PURE__ */ jsx325("p", { className: "empty-title", children: title }),
4552
- description && /* @__PURE__ */ jsx325("p", { className: "empty-description", children: description }),
4553
- action && /* @__PURE__ */ jsx325("div", { className: "empty-action", children: action })
4545
+ icon && /* @__PURE__ */ jsx324("div", { className: "empty-icon", children: icon }),
4546
+ !icon && /* @__PURE__ */ jsx324("div", { className: "empty-icon", children: /* @__PURE__ */ jsx324("svg", { viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsx324("path", { d: "M20 6h-8l-2-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm0 12H4V8h16v10z" }) }) }),
4547
+ /* @__PURE__ */ jsx324("p", { className: "empty-title", children: title }),
4548
+ description && /* @__PURE__ */ jsx324("p", { className: "empty-description", children: description }),
4549
+ action && /* @__PURE__ */ jsx324("div", { className: "empty-action", children: action })
4554
4550
  ] });
4555
4551
  };
4556
4552
  EmptyState.displayName = "EmptyState";
4557
4553
  var EmptyState_default = EmptyState;
4558
4554
 
4559
4555
  // src/components/FileUpload/FileUpload.tsx
4560
- import React23 from "react";
4561
- import { jsx as jsx326, jsxs as jsxs209 } from "react/jsx-runtime";
4556
+ import React22 from "react";
4557
+ import { jsx as jsx325, jsxs as jsxs209 } from "react/jsx-runtime";
4562
4558
  var FileUpload = (props) => {
4563
4559
  const {
4564
4560
  accept,
@@ -4568,8 +4564,8 @@ var FileUpload = (props) => {
4568
4564
  label = "\uD30C\uC77C\uC744 \uB4DC\uB798\uADF8\uD558\uAC70\uB098 \uD074\uB9AD\uD558\uC5EC \uC5C5\uB85C\uB4DC",
4569
4565
  description
4570
4566
  } = props;
4571
- const [isDragOver, setIsDragOver] = React23.useState(false);
4572
- const inputRef = React23.useRef(null);
4567
+ const [isDragOver, setIsDragOver] = React22.useState(false);
4568
+ const inputRef = React22.useRef(null);
4573
4569
  const handleFiles = (fileList) => {
4574
4570
  let files = Array.from(fileList);
4575
4571
  if (maxSize) {
@@ -4608,7 +4604,7 @@ var FileUpload = (props) => {
4608
4604
  onDragLeave: handleDragLeave,
4609
4605
  onClick: () => inputRef.current?.click(),
4610
4606
  children: [
4611
- /* @__PURE__ */ jsx326(
4607
+ /* @__PURE__ */ jsx325(
4612
4608
  "input",
4613
4609
  {
4614
4610
  ref: inputRef,
@@ -4618,9 +4614,9 @@ var FileUpload = (props) => {
4618
4614
  onChange: handleChange
4619
4615
  }
4620
4616
  ),
4621
- /* @__PURE__ */ jsx326("div", { className: "upload-icon", children: /* @__PURE__ */ jsx326(UploadIcon_default, {}) }),
4622
- /* @__PURE__ */ jsx326("p", { className: "upload-label", children: label }),
4623
- description && /* @__PURE__ */ jsx326("p", { className: "upload-description", children: description })
4617
+ /* @__PURE__ */ jsx325("div", { className: "upload-icon", children: /* @__PURE__ */ jsx325(UploadIcon_default, {}) }),
4618
+ /* @__PURE__ */ jsx325("p", { className: "upload-label", children: label }),
4619
+ description && /* @__PURE__ */ jsx325("p", { className: "upload-description", children: description })
4624
4620
  ]
4625
4621
  }
4626
4622
  );
@@ -4629,10 +4625,10 @@ FileUpload.displayName = "FileUpload";
4629
4625
  var FileUpload_default = FileUpload;
4630
4626
 
4631
4627
  // src/components/HtmlTypeWriter/HtmlTypeWriter.tsx
4632
- import React25 from "react";
4628
+ import React24 from "react";
4633
4629
 
4634
4630
  // src/components/HtmlTypeWriter/utils.ts
4635
- import React24 from "react";
4631
+ import React23 from "react";
4636
4632
  var voidTags = /* @__PURE__ */ new Set([
4637
4633
  "br",
4638
4634
  "img",
@@ -4700,41 +4696,41 @@ var convertNodeToReactWithRange = (node, typedLen, rangeMap) => {
4700
4696
  props[attr.name] = attr.value;
4701
4697
  });
4702
4698
  if (voidTags.has(tag)) {
4703
- return React24.createElement(tag, props);
4699
+ return React23.createElement(tag, props);
4704
4700
  }
4705
4701
  const children = Array.from(element.childNodes).map((child) => convertNodeToReactWithRange(child, typedLen, rangeMap)).filter((n) => n != null);
4706
- return React24.createElement(tag, props, ...children);
4702
+ return React23.createElement(tag, props, ...children);
4707
4703
  };
4708
4704
  var htmlToReactProgressive = (root, typedLen, rangeMap) => {
4709
4705
  const nodes = Array.from(root.childNodes).map((child, idx) => {
4710
4706
  const node = convertNodeToReactWithRange(child, typedLen, rangeMap);
4711
- return node == null ? null : React24.createElement(React24.Fragment, { key: idx }, node);
4707
+ return node == null ? null : React23.createElement(React23.Fragment, { key: idx }, node);
4712
4708
  }).filter(Boolean);
4713
4709
  return nodes.length === 0 ? null : nodes;
4714
4710
  };
4715
4711
 
4716
4712
  // src/components/HtmlTypeWriter/HtmlTypeWriter.tsx
4717
- import { jsx as jsx327 } from "react/jsx-runtime";
4713
+ import { jsx as jsx326 } from "react/jsx-runtime";
4718
4714
  var HtmlTypeWriter = ({
4719
4715
  html,
4720
4716
  duration = 20,
4721
4717
  onDone,
4722
4718
  onChange
4723
4719
  }) => {
4724
- const [typedLen, setTypedLen] = React25.useState(0);
4725
- const doneCalledRef = React25.useRef(false);
4726
- const { doc, rangeMap, totalLength } = React25.useMemo(() => {
4720
+ const [typedLen, setTypedLen] = React24.useState(0);
4721
+ const doneCalledRef = React24.useRef(false);
4722
+ const { doc, rangeMap, totalLength } = React24.useMemo(() => {
4727
4723
  if (typeof window === "undefined") return { doc: null, rangeMap: /* @__PURE__ */ new Map(), totalLength: 0 };
4728
4724
  const decoded = decodeHtmlEntities(html);
4729
4725
  const doc2 = new DOMParser().parseFromString(decoded, "text/html");
4730
4726
  const { rangeMap: rangeMap2, totalLength: totalLength2 } = buildRangeMap(doc2.body);
4731
4727
  return { doc: doc2, rangeMap: rangeMap2, totalLength: totalLength2 };
4732
4728
  }, [html]);
4733
- React25.useEffect(() => {
4729
+ React24.useEffect(() => {
4734
4730
  setTypedLen(0);
4735
4731
  doneCalledRef.current = false;
4736
4732
  }, [html]);
4737
- React25.useEffect(() => {
4733
+ React24.useEffect(() => {
4738
4734
  if (!totalLength) return;
4739
4735
  if (typedLen >= totalLength) return;
4740
4736
  const timer = window.setInterval(() => {
@@ -4742,33 +4738,33 @@ var HtmlTypeWriter = ({
4742
4738
  }, duration);
4743
4739
  return () => window.clearInterval(timer);
4744
4740
  }, [typedLen, totalLength, duration]);
4745
- React25.useEffect(() => {
4741
+ React24.useEffect(() => {
4746
4742
  if (typedLen > 0 && typedLen < totalLength) {
4747
4743
  onChange?.();
4748
4744
  }
4749
4745
  }, [typedLen, totalLength, onChange]);
4750
- React25.useEffect(() => {
4746
+ React24.useEffect(() => {
4751
4747
  if (typedLen === totalLength && totalLength > 0 && !doneCalledRef.current) {
4752
4748
  doneCalledRef.current = true;
4753
4749
  onDone?.();
4754
4750
  }
4755
4751
  }, [typedLen, totalLength, onDone]);
4756
- const parsed = React25.useMemo(
4752
+ const parsed = React24.useMemo(
4757
4753
  () => doc ? htmlToReactProgressive(doc.body, typedLen, rangeMap) : null,
4758
4754
  [doc, typedLen, rangeMap]
4759
4755
  );
4760
- return /* @__PURE__ */ jsx327("div", { className: "lib-xplat-htmlTypewriter", children: parsed });
4756
+ return /* @__PURE__ */ jsx326("div", { className: "lib-xplat-htmlTypewriter", children: parsed });
4761
4757
  };
4762
4758
  HtmlTypeWriter.displayName = "HtmlTypeWriter";
4763
4759
  var HtmlTypeWriter_default = HtmlTypeWriter;
4764
4760
 
4765
4761
  // src/components/ImageSelector/ImageSelector.tsx
4766
- import React26 from "react";
4767
- import { jsx as jsx328, jsxs as jsxs210 } from "react/jsx-runtime";
4762
+ import React25 from "react";
4763
+ import { jsx as jsx327, jsxs as jsxs210 } from "react/jsx-runtime";
4768
4764
  var ImageSelector = (props) => {
4769
4765
  const { value, label, onChange } = props;
4770
- const [previewUrl, setPreviewUrl] = React26.useState();
4771
- React26.useEffect(() => {
4766
+ const [previewUrl, setPreviewUrl] = React25.useState();
4767
+ React25.useEffect(() => {
4772
4768
  if (!value) {
4773
4769
  setPreviewUrl(void 0);
4774
4770
  return;
@@ -4777,7 +4773,7 @@ var ImageSelector = (props) => {
4777
4773
  setPreviewUrl(url);
4778
4774
  return () => URL.revokeObjectURL(url);
4779
4775
  }, [value]);
4780
- const inputRef = React26.useRef(null);
4776
+ const inputRef = React25.useRef(null);
4781
4777
  const handleFileChange = (e) => {
4782
4778
  const selectedFile = e.target.files?.[0];
4783
4779
  if (selectedFile) {
@@ -4791,7 +4787,7 @@ var ImageSelector = (props) => {
4791
4787
  inputRef.current?.click();
4792
4788
  };
4793
4789
  return /* @__PURE__ */ jsxs210("div", { className: `lib-xplat-imageselector${value ? "" : " none-value"}`, children: [
4794
- /* @__PURE__ */ jsx328(
4790
+ /* @__PURE__ */ jsx327(
4795
4791
  "input",
4796
4792
  {
4797
4793
  type: "file",
@@ -4802,12 +4798,12 @@ var ImageSelector = (props) => {
4802
4798
  }
4803
4799
  ),
4804
4800
  value && /* @__PURE__ */ jsxs210("div", { className: "action-bar", children: [
4805
- /* @__PURE__ */ jsx328("div", { className: "icon-wrapper", onClick: handleOpenFileDialog, children: /* @__PURE__ */ jsx328(UploadIcon_default, {}) }),
4806
- /* @__PURE__ */ jsx328("div", { className: "icon-wrapper", onClick: handleDeleteFile, children: /* @__PURE__ */ jsx328(DeleteIcon_default, {}) })
4801
+ /* @__PURE__ */ jsx327("div", { className: "icon-wrapper", onClick: handleOpenFileDialog, children: /* @__PURE__ */ jsx327(UploadIcon_default, {}) }),
4802
+ /* @__PURE__ */ jsx327("div", { className: "icon-wrapper", onClick: handleDeleteFile, children: /* @__PURE__ */ jsx327(DeleteIcon_default, {}) })
4807
4803
  ] }),
4808
- /* @__PURE__ */ jsx328("div", { className: "content", children: previewUrl ? /* @__PURE__ */ jsx328("img", { src: previewUrl, alt: "preview" }) : /* @__PURE__ */ jsxs210("div", { className: "skeleton", onClick: handleOpenFileDialog, children: [
4809
- /* @__PURE__ */ jsx328("div", { className: "icon-wrapper", children: /* @__PURE__ */ jsx328(ImageIcon_default, {}) }),
4810
- /* @__PURE__ */ jsx328("div", { className: "label", children: label || "\uC774\uBBF8\uC9C0 \uCD94\uAC00\uD558\uAE30" })
4804
+ /* @__PURE__ */ jsx327("div", { className: "content", children: previewUrl ? /* @__PURE__ */ jsx327("img", { src: previewUrl, alt: "preview" }) : /* @__PURE__ */ jsxs210("div", { className: "skeleton", onClick: handleOpenFileDialog, children: [
4805
+ /* @__PURE__ */ jsx327("div", { className: "icon-wrapper", children: /* @__PURE__ */ jsx327(ImageIcon_default, {}) }),
4806
+ /* @__PURE__ */ jsx327("div", { className: "label", children: label || "\uC774\uBBF8\uC9C0 \uCD94\uAC00\uD558\uAE30" })
4811
4807
  ] }) })
4812
4808
  ] });
4813
4809
  };
@@ -4815,10 +4811,10 @@ ImageSelector.displayName = "ImageSelector";
4815
4811
  var ImageSelector_default = ImageSelector;
4816
4812
 
4817
4813
  // src/components/Link/Link.tsx
4818
- import { jsx as jsx329 } from "react/jsx-runtime";
4814
+ import { jsx as jsx328 } from "react/jsx-runtime";
4819
4815
  var Link = (props) => {
4820
4816
  const { children, href, underline = "always", target, rel, ...rest } = props;
4821
- return /* @__PURE__ */ jsx329(
4817
+ return /* @__PURE__ */ jsx328(
4822
4818
  "a",
4823
4819
  {
4824
4820
  className: clsx_default("lib-xplat-link", `underline-${underline}`),
@@ -4834,10 +4830,10 @@ Link.displayName = "Link";
4834
4830
  var Link_default = Link;
4835
4831
 
4836
4832
  // src/components/LinkButton/LinkButton.tsx
4837
- import { jsx as jsx330 } from "react/jsx-runtime";
4833
+ import { jsx as jsx329 } from "react/jsx-runtime";
4838
4834
  var LinkButton = (props) => {
4839
4835
  const { children, href, type = "primary", size = "md", target, rel, ...rest } = props;
4840
- return /* @__PURE__ */ jsx330(
4836
+ return /* @__PURE__ */ jsx329(
4841
4837
  "a",
4842
4838
  {
4843
4839
  className: clsx_default("lib-xplat-button", type, size),
@@ -4853,7 +4849,7 @@ LinkButton.displayName = "LinkButton";
4853
4849
  var LinkButton_default = LinkButton;
4854
4850
 
4855
4851
  // src/components/NotificationBadge/NotificationBadge.tsx
4856
- import { jsx as jsx331, jsxs as jsxs211 } from "react/jsx-runtime";
4852
+ import { jsx as jsx330, jsxs as jsxs211 } from "react/jsx-runtime";
4857
4853
  var NotificationBadge = (props) => {
4858
4854
  const {
4859
4855
  children,
@@ -4867,14 +4863,14 @@ var NotificationBadge = (props) => {
4867
4863
  const displayCount = count !== void 0 && count > maxCount ? `${maxCount}+` : count;
4868
4864
  return /* @__PURE__ */ jsxs211("div", { className: clsx_default("lib-xplat-notification-badge", size), children: [
4869
4865
  children,
4870
- showBadge && /* @__PURE__ */ jsx331("span", { className: clsx_default("badge-indicator", type, { dot }), children: !dot && displayCount })
4866
+ showBadge && /* @__PURE__ */ jsx330("span", { className: clsx_default("badge-indicator", type, { dot }), children: !dot && displayCount })
4871
4867
  ] });
4872
4868
  };
4873
4869
  NotificationBadge.displayName = "NotificationBadge";
4874
4870
  var NotificationBadge_default = NotificationBadge;
4875
4871
 
4876
4872
  // src/components/Pagination/Pagination.tsx
4877
- import { jsx as jsx332, jsxs as jsxs212 } from "react/jsx-runtime";
4873
+ import { jsx as jsx331, jsxs as jsxs212 } from "react/jsx-runtime";
4878
4874
  var getPageRange = (current, totalPages, siblingCount) => {
4879
4875
  const totalNumbers = siblingCount * 2 + 5;
4880
4876
  if (totalPages <= totalNumbers) {
@@ -4918,18 +4914,18 @@ var Pagination = (props) => {
4918
4914
  }
4919
4915
  };
4920
4916
  return /* @__PURE__ */ jsxs212("nav", { className: clsx_default("lib-xplat-pagination", size, type), "aria-label": "\uD398\uC774\uC9C0 \uB124\uBE44\uAC8C\uC774\uC158", children: [
4921
- /* @__PURE__ */ jsx332(
4917
+ /* @__PURE__ */ jsx331(
4922
4918
  "button",
4923
4919
  {
4924
4920
  className: "page-btn prev",
4925
4921
  disabled: current <= 1,
4926
4922
  onClick: () => handleClick(current - 1),
4927
4923
  "aria-label": "\uC774\uC804 \uD398\uC774\uC9C0",
4928
- children: /* @__PURE__ */ jsx332(ChevronLeftIcon_default, {})
4924
+ children: /* @__PURE__ */ jsx331(ChevronLeftIcon_default, {})
4929
4925
  }
4930
4926
  ),
4931
4927
  pages.map(
4932
- (page, i) => page === "..." ? /* @__PURE__ */ jsx332("span", { className: "dots", children: "..." }, `dots-${i}`) : /* @__PURE__ */ jsx332(
4928
+ (page, i) => page === "..." ? /* @__PURE__ */ jsx331("span", { className: "dots", children: "..." }, `dots-${i}`) : /* @__PURE__ */ jsx331(
4933
4929
  "button",
4934
4930
  {
4935
4931
  className: clsx_default("page-btn", { active: page === current }),
@@ -4940,14 +4936,14 @@ var Pagination = (props) => {
4940
4936
  page
4941
4937
  )
4942
4938
  ),
4943
- /* @__PURE__ */ jsx332(
4939
+ /* @__PURE__ */ jsx331(
4944
4940
  "button",
4945
4941
  {
4946
4942
  className: "page-btn next",
4947
4943
  disabled: current >= totalPages,
4948
4944
  onClick: () => handleClick(current + 1),
4949
4945
  "aria-label": "\uB2E4\uC74C \uD398\uC774\uC9C0",
4950
- children: /* @__PURE__ */ jsx332(ChevronRightIcon_default, {})
4946
+ children: /* @__PURE__ */ jsx331(ChevronRightIcon_default, {})
4951
4947
  }
4952
4948
  )
4953
4949
  ] });
@@ -4956,17 +4952,17 @@ Pagination.displayName = "Pagination";
4956
4952
  var Pagination_default = Pagination;
4957
4953
 
4958
4954
  // src/components/PopOver/PopOver.tsx
4959
- import React27 from "react";
4960
- import { jsx as jsx333, jsxs as jsxs213 } from "react/jsx-runtime";
4955
+ import React26 from "react";
4956
+ import { jsx as jsx332, jsxs as jsxs213 } from "react/jsx-runtime";
4961
4957
  var PopOver = (props) => {
4962
4958
  const { children, isOpen, onClose, PopOverEl } = props;
4963
- const popRef = React27.useRef(null);
4964
- const triggerRef = React27.useRef(null);
4965
- const [localOpen, setLocalOpen] = React27.useState(false);
4966
- const [eventTrigger, setEventTrigger] = React27.useState(false);
4959
+ const popRef = React26.useRef(null);
4960
+ const triggerRef = React26.useRef(null);
4961
+ const [localOpen, setLocalOpen] = React26.useState(false);
4962
+ const [eventTrigger, setEventTrigger] = React26.useState(false);
4967
4963
  useClickOutside_default([popRef, triggerRef], onClose, isOpen);
4968
4964
  const position = useAutoPosition_default(triggerRef, popRef, localOpen);
4969
- React27.useEffect(() => {
4965
+ React26.useEffect(() => {
4970
4966
  if (isOpen) {
4971
4967
  setLocalOpen(isOpen);
4972
4968
  setTimeout(() => {
@@ -4989,7 +4985,7 @@ var PopOver = (props) => {
4989
4985
  },
4990
4986
  children: [
4991
4987
  children,
4992
- localOpen && /* @__PURE__ */ jsx333(Portal_default, { children: /* @__PURE__ */ jsx333(
4988
+ localOpen && /* @__PURE__ */ jsx332(Portal_default, { children: /* @__PURE__ */ jsx332(
4993
4989
  "div",
4994
4990
  {
4995
4991
  className: clsx_default(
@@ -5012,7 +5008,7 @@ PopOver.displayName = "PopOver";
5012
5008
  var PopOver_default = PopOver;
5013
5009
 
5014
5010
  // src/components/Progress/Progress.tsx
5015
- import { jsx as jsx334, jsxs as jsxs214 } from "react/jsx-runtime";
5011
+ import { jsx as jsx333, jsxs as jsxs214 } from "react/jsx-runtime";
5016
5012
  var Progress = (props) => {
5017
5013
  const {
5018
5014
  value,
@@ -5023,7 +5019,7 @@ var Progress = (props) => {
5023
5019
  } = props;
5024
5020
  const percentage = Math.min(100, Math.max(0, value / max * 100));
5025
5021
  return /* @__PURE__ */ jsxs214("div", { className: clsx_default("lib-xplat-progress", size, type), children: [
5026
- /* @__PURE__ */ jsx334(
5022
+ /* @__PURE__ */ jsx333(
5027
5023
  "div",
5028
5024
  {
5029
5025
  className: "track",
@@ -5031,7 +5027,7 @@ var Progress = (props) => {
5031
5027
  "aria-valuenow": value,
5032
5028
  "aria-valuemin": 0,
5033
5029
  "aria-valuemax": max,
5034
- children: /* @__PURE__ */ jsx334(
5030
+ children: /* @__PURE__ */ jsx333(
5035
5031
  "div",
5036
5032
  {
5037
5033
  className: "bar",
@@ -5050,17 +5046,17 @@ Progress.displayName = "Progress";
5050
5046
  var Progress_default = Progress;
5051
5047
 
5052
5048
  // src/components/Radio/RadioGroupContext.tsx
5053
- import React28 from "react";
5054
- var RadioGroupContext = React28.createContext(
5049
+ import React27 from "react";
5050
+ var RadioGroupContext = React27.createContext(
5055
5051
  null
5056
5052
  );
5057
5053
  var useRadioGroupContext = () => {
5058
- return React28.useContext(RadioGroupContext);
5054
+ return React27.useContext(RadioGroupContext);
5059
5055
  };
5060
5056
  var RadioGroupContext_default = RadioGroupContext;
5061
5057
 
5062
5058
  // src/components/Radio/Radio.tsx
5063
- import { jsx as jsx335, jsxs as jsxs215 } from "react/jsx-runtime";
5059
+ import { jsx as jsx334, jsxs as jsxs215 } from "react/jsx-runtime";
5064
5060
  var Radio = (props) => {
5065
5061
  const {
5066
5062
  label,
@@ -5090,18 +5086,18 @@ var Radio = (props) => {
5090
5086
  className
5091
5087
  ),
5092
5088
  children: [
5093
- /* @__PURE__ */ jsx335("input", { ...rest, ...inputProps, checked: localChecked, type: "radio" }),
5094
- /* @__PURE__ */ jsx335(
5089
+ /* @__PURE__ */ jsx334("input", { ...rest, ...inputProps, checked: localChecked, type: "radio" }),
5090
+ /* @__PURE__ */ jsx334(
5095
5091
  "div",
5096
5092
  {
5097
5093
  className: clsx_default(
5098
5094
  "circle",
5099
5095
  localChecked ? "checked" : void 0
5100
5096
  ),
5101
- children: localChecked && /* @__PURE__ */ jsx335("div", { className: "inner-circle" })
5097
+ children: localChecked && /* @__PURE__ */ jsx334("div", { className: "inner-circle" })
5102
5098
  }
5103
5099
  ),
5104
- label && /* @__PURE__ */ jsx335("span", { children: label })
5100
+ label && /* @__PURE__ */ jsx334("span", { children: label })
5105
5101
  ]
5106
5102
  }
5107
5103
  );
@@ -5110,28 +5106,28 @@ Radio.displayName = "Radio";
5110
5106
  var Radio_default = Radio;
5111
5107
 
5112
5108
  // src/components/Radio/RadioGroup.tsx
5113
- import { Fragment as Fragment4, jsx as jsx336 } from "react/jsx-runtime";
5109
+ import { Fragment as Fragment4, jsx as jsx335 } from "react/jsx-runtime";
5114
5110
  var RadioGroup = (props) => {
5115
5111
  const { children, ...rest } = props;
5116
- return /* @__PURE__ */ jsx336(Fragment4, { children: /* @__PURE__ */ jsx336(RadioGroupContext_default.Provider, { value: rest, children }) });
5112
+ return /* @__PURE__ */ jsx335(Fragment4, { children: /* @__PURE__ */ jsx335(RadioGroupContext_default.Provider, { value: rest, children }) });
5117
5113
  };
5118
5114
  RadioGroup.displayName = "RadioGroup";
5119
5115
  var RadioGroup_default = RadioGroup;
5120
5116
 
5121
5117
  // src/components/Select/Select.tsx
5122
- import React31 from "react";
5118
+ import React30 from "react";
5123
5119
 
5124
5120
  // src/components/Select/context.ts
5125
- import React29 from "react";
5126
- var SelectContext = React29.createContext(null);
5121
+ import React28 from "react";
5122
+ var SelectContext = React28.createContext(null);
5127
5123
  var context_default = SelectContext;
5128
5124
 
5129
5125
  // src/components/Select/SelectItem.tsx
5130
- import React30 from "react";
5131
- import { jsx as jsx337 } from "react/jsx-runtime";
5126
+ import React29 from "react";
5127
+ import { jsx as jsx336 } from "react/jsx-runtime";
5132
5128
  var SelectItem = (props) => {
5133
5129
  const { children, value, onClick, disabled = false } = props;
5134
- const ctx = React30.useContext(context_default);
5130
+ const ctx = React29.useContext(context_default);
5135
5131
  const handleClick = (e) => {
5136
5132
  e.preventDefault();
5137
5133
  e.stopPropagation();
@@ -5141,7 +5137,7 @@ var SelectItem = (props) => {
5141
5137
  onClick?.();
5142
5138
  };
5143
5139
  const isSelected = value !== void 0 ? ctx?.selectedValue === value : ctx?.selectedLabel === children;
5144
- return /* @__PURE__ */ jsx337(
5140
+ return /* @__PURE__ */ jsx336(
5145
5141
  "div",
5146
5142
  {
5147
5143
  className: clsx_default("select-item", disabled && "disabled", isSelected && "is-selected"),
@@ -5162,7 +5158,7 @@ SelectItem.displayName = "Select.Item";
5162
5158
  var SelectItem_default = SelectItem;
5163
5159
 
5164
5160
  // src/components/Select/Select.tsx
5165
- import { jsx as jsx338, jsxs as jsxs216 } from "react/jsx-runtime";
5161
+ import { jsx as jsx337, jsxs as jsxs216 } from "react/jsx-runtime";
5166
5162
  var ANIMATION_DURATION_MS3 = 200;
5167
5163
  var SelectRoot = (props) => {
5168
5164
  const {
@@ -5174,28 +5170,28 @@ var SelectRoot = (props) => {
5174
5170
  error = false,
5175
5171
  size = "md"
5176
5172
  } = props;
5177
- const itemChildren = React31.Children.toArray(children).filter(
5178
- (child) => React31.isValidElement(child) && child.type === SelectItem_default
5173
+ const itemChildren = React30.Children.toArray(children).filter(
5174
+ (child) => React30.isValidElement(child) && child.type === SelectItem_default
5179
5175
  );
5180
5176
  const isControlled = valueProp !== void 0;
5181
- const [isOpen, setOpen] = React31.useState(false);
5182
- const [uncontrolledLabel, setUncontrolledLabel] = React31.useState(null);
5183
- const [uncontrolledValue, setUncontrolledValue] = React31.useState(void 0);
5184
- const controlledLabel = React31.useMemo(() => {
5177
+ const [isOpen, setOpen] = React30.useState(false);
5178
+ const [uncontrolledLabel, setUncontrolledLabel] = React30.useState(null);
5179
+ const [uncontrolledValue, setUncontrolledValue] = React30.useState(void 0);
5180
+ const controlledLabel = React30.useMemo(() => {
5185
5181
  if (!isControlled) return null;
5186
5182
  const match = itemChildren.find((child) => child.props.value === valueProp);
5187
5183
  return match ? match.props.children : null;
5188
5184
  }, [isControlled, valueProp, itemChildren]);
5189
5185
  const selectedLabel = isControlled ? controlledLabel : uncontrolledLabel;
5190
5186
  const selectedValue = isControlled ? valueProp : uncontrolledValue;
5191
- const triggerRef = React31.useRef(null);
5192
- const contentRef = React31.useRef(null);
5193
- const [mounted, setMounted] = React31.useState(false);
5194
- const [visible, setVisible] = React31.useState(false);
5195
- React31.useEffect(() => {
5187
+ const triggerRef = React30.useRef(null);
5188
+ const contentRef = React30.useRef(null);
5189
+ const [mounted, setMounted] = React30.useState(false);
5190
+ const [visible, setVisible] = React30.useState(false);
5191
+ React30.useEffect(() => {
5196
5192
  if (disabled && isOpen) setOpen(false);
5197
5193
  }, [disabled, isOpen]);
5198
- React31.useEffect(() => {
5194
+ React30.useEffect(() => {
5199
5195
  if (isOpen) {
5200
5196
  setMounted(true);
5201
5197
  const t2 = setTimeout(() => setVisible(true), 1);
@@ -5205,12 +5201,12 @@ var SelectRoot = (props) => {
5205
5201
  const t = setTimeout(() => setMounted(false), ANIMATION_DURATION_MS3);
5206
5202
  return () => clearTimeout(t);
5207
5203
  }, [isOpen]);
5208
- const open = React31.useCallback(() => setOpen(true), []);
5209
- const close = React31.useCallback(() => setOpen(false), []);
5210
- const toggle = React31.useCallback(() => setOpen((prev) => !prev), []);
5204
+ const open = React30.useCallback(() => setOpen(true), []);
5205
+ const close = React30.useCallback(() => setOpen(false), []);
5206
+ const toggle = React30.useCallback(() => setOpen((prev) => !prev), []);
5211
5207
  useClickOutside_default([contentRef, triggerRef], close, isOpen);
5212
5208
  const position = useAutoPosition_default(triggerRef, contentRef, mounted);
5213
- const setSelected = React31.useCallback(
5209
+ const setSelected = React30.useCallback(
5214
5210
  (label, itemValue) => {
5215
5211
  if (!isControlled) {
5216
5212
  setUncontrolledLabel(label);
@@ -5220,7 +5216,7 @@ var SelectRoot = (props) => {
5220
5216
  },
5221
5217
  [isControlled, onChange]
5222
5218
  );
5223
- const ctxValue = React31.useMemo(
5219
+ const ctxValue = React30.useMemo(
5224
5220
  () => ({
5225
5221
  isOpen,
5226
5222
  mounted,
@@ -5242,7 +5238,7 @@ var SelectRoot = (props) => {
5242
5238
  if (disabled) return;
5243
5239
  toggle();
5244
5240
  };
5245
- return /* @__PURE__ */ jsx338(context_default.Provider, { value: ctxValue, children: /* @__PURE__ */ jsxs216(
5241
+ return /* @__PURE__ */ jsx337(context_default.Provider, { value: ctxValue, children: /* @__PURE__ */ jsxs216(
5246
5242
  "div",
5247
5243
  {
5248
5244
  className: clsx_default(
@@ -5277,7 +5273,7 @@ var SelectRoot = (props) => {
5277
5273
  }
5278
5274
  },
5279
5275
  children: [
5280
- /* @__PURE__ */ jsx338(
5276
+ /* @__PURE__ */ jsx337(
5281
5277
  "span",
5282
5278
  {
5283
5279
  className: clsx_default(
@@ -5287,25 +5283,25 @@ var SelectRoot = (props) => {
5287
5283
  children: selectedLabel ?? placeholder
5288
5284
  }
5289
5285
  ),
5290
- /* @__PURE__ */ jsx338(
5286
+ /* @__PURE__ */ jsx337(
5291
5287
  "span",
5292
5288
  {
5293
5289
  className: clsx_default("select-trigger-icon", isOpen && "open"),
5294
5290
  "aria-hidden": true,
5295
- children: /* @__PURE__ */ jsx338(ChevronDownIcon_default, {})
5291
+ children: /* @__PURE__ */ jsx337(ChevronDownIcon_default, {})
5296
5292
  }
5297
5293
  )
5298
5294
  ]
5299
5295
  }
5300
5296
  ),
5301
- mounted && /* @__PURE__ */ jsx338(Portal_default, { children: /* @__PURE__ */ jsx338(
5297
+ mounted && /* @__PURE__ */ jsx337(Portal_default, { children: /* @__PURE__ */ jsx337(
5302
5298
  "div",
5303
5299
  {
5304
5300
  className: clsx_default("lib-xplat-select-content", size, position.direction, stateClass),
5305
5301
  ref: contentRef,
5306
5302
  style: { ...position.position, width: triggerRef.current?.offsetWidth },
5307
5303
  role: "listbox",
5308
- children: /* @__PURE__ */ jsx338(context_default.Provider, { value: ctxValue, children: itemChildren })
5304
+ children: /* @__PURE__ */ jsx337(context_default.Provider, { value: ctxValue, children: itemChildren })
5309
5305
  }
5310
5306
  ) })
5311
5307
  ]
@@ -5319,7 +5315,7 @@ var Select = Object.assign(SelectRoot, {
5319
5315
  var Select_default = Select;
5320
5316
 
5321
5317
  // src/components/Skeleton/Skeleton.tsx
5322
- import { jsx as jsx339 } from "react/jsx-runtime";
5318
+ import { jsx as jsx338 } from "react/jsx-runtime";
5323
5319
  var SIZE_MAP = {
5324
5320
  xs: "var(--spacing-space-1)",
5325
5321
  sm: "var(--spacing-space-2)",
@@ -5335,7 +5331,7 @@ var Skeleton = (props) => {
5335
5331
  ...width != null && { width: SIZE_MAP[width] },
5336
5332
  ...height != null && { height: SIZE_MAP[height] }
5337
5333
  };
5338
- return /* @__PURE__ */ jsx339(
5334
+ return /* @__PURE__ */ jsx338(
5339
5335
  "div",
5340
5336
  {
5341
5337
  className: clsx_default("lib-xplat-skeleton", variant),
@@ -5348,20 +5344,20 @@ Skeleton.displayName = "Skeleton";
5348
5344
  var Skeleton_default = Skeleton;
5349
5345
 
5350
5346
  // src/components/Spinner/Spinner.tsx
5351
- import { jsx as jsx340, jsxs as jsxs217 } from "react/jsx-runtime";
5347
+ import { jsx as jsx339, jsxs as jsxs217 } from "react/jsx-runtime";
5352
5348
  var Spinner = (props) => {
5353
5349
  const {
5354
5350
  size = "md",
5355
5351
  type = "brand"
5356
5352
  } = props;
5357
- return /* @__PURE__ */ jsx340(
5353
+ return /* @__PURE__ */ jsx339(
5358
5354
  "div",
5359
5355
  {
5360
5356
  className: clsx_default("lib-xplat-spinner", size, type),
5361
5357
  role: "status",
5362
5358
  "aria-label": "\uB85C\uB529 \uC911",
5363
5359
  children: /* @__PURE__ */ jsxs217("svg", { viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
5364
- /* @__PURE__ */ jsx340(
5360
+ /* @__PURE__ */ jsx339(
5365
5361
  "circle",
5366
5362
  {
5367
5363
  className: "track",
@@ -5371,7 +5367,7 @@ var Spinner = (props) => {
5371
5367
  strokeWidth: "3"
5372
5368
  }
5373
5369
  ),
5374
- /* @__PURE__ */ jsx340(
5370
+ /* @__PURE__ */ jsx339(
5375
5371
  "circle",
5376
5372
  {
5377
5373
  className: "indicator",
@@ -5390,20 +5386,20 @@ Spinner.displayName = "Spinner";
5390
5386
  var Spinner_default = Spinner;
5391
5387
 
5392
5388
  // src/components/Steps/Steps.tsx
5393
- import { jsx as jsx341, jsxs as jsxs218 } from "react/jsx-runtime";
5389
+ import { jsx as jsx340, jsxs as jsxs218 } from "react/jsx-runtime";
5394
5390
  var Steps = (props) => {
5395
5391
  const {
5396
5392
  items,
5397
5393
  current,
5398
5394
  type = "brand"
5399
5395
  } = props;
5400
- return /* @__PURE__ */ jsx341("div", { className: clsx_default("lib-xplat-steps", type), children: items.map((item, index) => {
5396
+ return /* @__PURE__ */ jsx340("div", { className: clsx_default("lib-xplat-steps", type), children: items.map((item, index) => {
5401
5397
  const status = index < current ? "completed" : index === current ? "active" : "pending";
5402
5398
  return /* @__PURE__ */ jsxs218("div", { className: clsx_default("step-item", status), children: [
5403
- /* @__PURE__ */ jsx341("div", { className: "step-circle", children: status === "completed" ? /* @__PURE__ */ jsx341(CheckIcon_default, {}) : /* @__PURE__ */ jsx341("span", { children: index + 1 }) }),
5399
+ /* @__PURE__ */ jsx340("div", { className: "step-circle", children: status === "completed" ? /* @__PURE__ */ jsx340(CheckIcon_default, {}) : /* @__PURE__ */ jsx340("span", { children: index + 1 }) }),
5404
5400
  /* @__PURE__ */ jsxs218("div", { className: "step-content", children: [
5405
- /* @__PURE__ */ jsx341("span", { className: "step-title", children: item.title }),
5406
- item.description && /* @__PURE__ */ jsx341("span", { className: "step-description", children: item.description })
5401
+ /* @__PURE__ */ jsx340("span", { className: "step-title", children: item.title }),
5402
+ item.description && /* @__PURE__ */ jsx340("span", { className: "step-description", children: item.description })
5407
5403
  ] })
5408
5404
  ] }, index);
5409
5405
  }) });
@@ -5412,8 +5408,8 @@ Steps.displayName = "Steps";
5412
5408
  var Steps_default = Steps;
5413
5409
 
5414
5410
  // src/components/Swiper/Swiper.tsx
5415
- import React32 from "react";
5416
- import { jsx as jsx342, jsxs as jsxs219 } from "react/jsx-runtime";
5411
+ import React31 from "react";
5412
+ import { jsx as jsx341, jsxs as jsxs219 } from "react/jsx-runtime";
5417
5413
  var Swiper = (props) => {
5418
5414
  const {
5419
5415
  auto = false,
@@ -5437,26 +5433,26 @@ var Swiper = (props) => {
5437
5433
  const maxIndex = Math.max(0, totalSlides - viewItemCount);
5438
5434
  const useLoop = loop && canSlide;
5439
5435
  const cloneCount = useLoop ? totalSlides : 0;
5440
- const extendedItems = React32.useMemo(() => {
5436
+ const extendedItems = React31.useMemo(() => {
5441
5437
  if (!useLoop) return items;
5442
5438
  return [...items, ...items, ...items];
5443
5439
  }, [items, useLoop]);
5444
5440
  const initialIdx = Math.max(0, Math.min(indexProp ?? 0, maxIndex));
5445
- const [innerIndex, setInnerIndex] = React32.useState(
5441
+ const [innerIndex, setInnerIndex] = React31.useState(
5446
5442
  useLoop ? cloneCount + initialIdx : initialIdx
5447
5443
  );
5448
- const [isDragging, setIsDragging] = React32.useState(false);
5449
- const [dragOffset, setDragOffset] = React32.useState(0);
5450
- const [animated, setAnimated] = React32.useState(false);
5451
- const [containerWidth, setContainerWidth] = React32.useState(0);
5452
- const containerRef = React32.useRef(null);
5453
- const startXRef = React32.useRef(0);
5454
- const startTimeRef = React32.useRef(0);
5455
- const autoplayTimerRef = React32.useRef(null);
5456
- const resumeTimeoutRef = React32.useRef(null);
5457
- const [paused, setPaused] = React32.useState(false);
5458
- const initializedRef = React32.useRef(false);
5459
- React32.useEffect(() => {
5444
+ const [isDragging, setIsDragging] = React31.useState(false);
5445
+ const [dragOffset, setDragOffset] = React31.useState(0);
5446
+ const [animated, setAnimated] = React31.useState(false);
5447
+ const [containerWidth, setContainerWidth] = React31.useState(0);
5448
+ const containerRef = React31.useRef(null);
5449
+ const startXRef = React31.useRef(0);
5450
+ const startTimeRef = React31.useRef(0);
5451
+ const autoplayTimerRef = React31.useRef(null);
5452
+ const resumeTimeoutRef = React31.useRef(null);
5453
+ const [paused, setPaused] = React31.useState(false);
5454
+ const initializedRef = React31.useRef(false);
5455
+ React31.useEffect(() => {
5460
5456
  const el = containerRef.current;
5461
5457
  if (!el) return;
5462
5458
  const ro = new ResizeObserver((entries) => {
@@ -5479,7 +5475,7 @@ var Swiper = (props) => {
5479
5475
  return ((inner - cloneCount) % totalSlides + totalSlides) % totalSlides;
5480
5476
  };
5481
5477
  const realIndex = getRealIndex(innerIndex);
5482
- const moveToInner = React32.useCallback(
5478
+ const moveToInner = React31.useCallback(
5483
5479
  (idx, withAnim = true) => {
5484
5480
  if (!useLoop) {
5485
5481
  setAnimated(withAnim);
@@ -5507,7 +5503,7 @@ var Swiper = (props) => {
5507
5503
  },
5508
5504
  [useLoop, cloneCount, totalSlides]
5509
5505
  );
5510
- const handleTransitionEnd = React32.useCallback(() => {
5506
+ const handleTransitionEnd = React31.useCallback(() => {
5511
5507
  if (!useLoop) return;
5512
5508
  const real = getRealIndex(innerIndex);
5513
5509
  const canonical = cloneCount + real;
@@ -5517,7 +5513,7 @@ var Swiper = (props) => {
5517
5513
  }
5518
5514
  onChange?.(Math.min(real, maxIndex));
5519
5515
  }, [useLoop, innerIndex, cloneCount, totalSlides, maxIndex, onChange]);
5520
- const slideTo = React32.useCallback(
5516
+ const slideTo = React31.useCallback(
5521
5517
  (logicalIndex) => {
5522
5518
  if (!canSlide) return;
5523
5519
  const clamped = useLoop ? logicalIndex : Math.max(0, Math.min(logicalIndex, maxIndex));
@@ -5527,7 +5523,7 @@ var Swiper = (props) => {
5527
5523
  },
5528
5524
  [canSlide, useLoop, cloneCount, maxIndex, onChange, moveToInner]
5529
5525
  );
5530
- const slideNext = React32.useCallback(() => {
5526
+ const slideNext = React31.useCallback(() => {
5531
5527
  if (!canSlide) return;
5532
5528
  const nextInner = innerIndex + slideBy;
5533
5529
  if (useLoop) {
@@ -5536,7 +5532,7 @@ var Swiper = (props) => {
5536
5532
  moveToInner(Math.min(nextInner, maxIndex), true);
5537
5533
  }
5538
5534
  }, [canSlide, useLoop, innerIndex, slideBy, maxIndex, moveToInner]);
5539
- const slidePrev = React32.useCallback(() => {
5535
+ const slidePrev = React31.useCallback(() => {
5540
5536
  if (!canSlide) return;
5541
5537
  const prevInner = innerIndex - slideBy;
5542
5538
  if (useLoop) {
@@ -5545,7 +5541,7 @@ var Swiper = (props) => {
5545
5541
  moveToInner(Math.max(prevInner, 0), true);
5546
5542
  }
5547
5543
  }, [canSlide, useLoop, innerIndex, slideBy, moveToInner]);
5548
- React32.useEffect(() => {
5544
+ React31.useEffect(() => {
5549
5545
  if (indexProp === void 0) return;
5550
5546
  const clamped = Math.max(0, Math.min(indexProp, maxIndex));
5551
5547
  const target = useLoop ? cloneCount + clamped : clamped;
@@ -5553,12 +5549,12 @@ var Swiper = (props) => {
5553
5549
  moveToInner(target, true);
5554
5550
  }
5555
5551
  }, [indexProp]);
5556
- React32.useImperativeHandle(swiperRef, () => ({
5552
+ React31.useImperativeHandle(swiperRef, () => ({
5557
5553
  slidePrev,
5558
5554
  slideNext,
5559
5555
  slideTo
5560
5556
  }));
5561
- React32.useEffect(() => {
5557
+ React31.useEffect(() => {
5562
5558
  if (!auto || !canSlide || paused) return;
5563
5559
  autoplayTimerRef.current = setInterval(slideNext, autoplayDelay);
5564
5560
  return () => {
@@ -5584,7 +5580,7 @@ var Swiper = (props) => {
5584
5580
  resumeTimeoutRef.current = null;
5585
5581
  }, pauseOnInteraction);
5586
5582
  };
5587
- React32.useEffect(() => {
5583
+ React31.useEffect(() => {
5588
5584
  return () => {
5589
5585
  if (resumeTimeoutRef.current) clearTimeout(resumeTimeoutRef.current);
5590
5586
  };
@@ -5602,7 +5598,7 @@ var Swiper = (props) => {
5602
5598
  startXRef.current = getClientX(e);
5603
5599
  startTimeRef.current = Date.now();
5604
5600
  };
5605
- React32.useEffect(() => {
5601
+ React31.useEffect(() => {
5606
5602
  if (!isDragging) return;
5607
5603
  const handleMove = (e) => {
5608
5604
  setDragOffset(getClientX(e) - startXRef.current);
@@ -5641,8 +5637,8 @@ var Swiper = (props) => {
5641
5637
  }, [isDragging, dragOffset, innerIndex, useLoop, maxIndex, slideStep, moveToInner]);
5642
5638
  const slideWidthPercent = 100 / viewItemCount;
5643
5639
  const gapAdjust = spaceBetween * (viewItemCount - 1) / viewItemCount;
5644
- const slideElements = React32.useMemo(
5645
- () => extendedItems.map((item, idx) => /* @__PURE__ */ jsx342(
5640
+ const slideElements = React31.useMemo(
5641
+ () => extendedItems.map((item, idx) => /* @__PURE__ */ jsx341(
5646
5642
  "div",
5647
5643
  {
5648
5644
  className: "lib-xplat-swiper__slide",
@@ -5662,14 +5658,14 @@ var Swiper = (props) => {
5662
5658
  totalSteps - 1
5663
5659
  );
5664
5660
  return /* @__PURE__ */ jsxs219("div", { className: "lib-xplat-swiper", ref: containerRef, children: [
5665
- /* @__PURE__ */ jsx342(
5661
+ /* @__PURE__ */ jsx341(
5666
5662
  "div",
5667
5663
  {
5668
5664
  className: "lib-xplat-swiper__viewport",
5669
5665
  onMouseDown: handleDragStart,
5670
5666
  onTouchStart: handleDragStart,
5671
5667
  onDragStart: (e) => e.preventDefault(),
5672
- children: /* @__PURE__ */ jsx342(
5668
+ children: /* @__PURE__ */ jsx341(
5673
5669
  "div",
5674
5670
  {
5675
5671
  className: clsx_default(
@@ -5687,7 +5683,7 @@ var Swiper = (props) => {
5687
5683
  )
5688
5684
  }
5689
5685
  ),
5690
- showProgress && canSlide && /* @__PURE__ */ jsx342("div", { className: "lib-xplat-swiper__progress", children: /* @__PURE__ */ jsx342("div", { className: "lib-xplat-swiper__progress-track", children: /* @__PURE__ */ jsx342(
5686
+ showProgress && canSlide && /* @__PURE__ */ jsx341("div", { className: "lib-xplat-swiper__progress", children: /* @__PURE__ */ jsx341("div", { className: "lib-xplat-swiper__progress-track", children: /* @__PURE__ */ jsx341(
5691
5687
  "span",
5692
5688
  {
5693
5689
  className: "lib-xplat-swiper__progress-fill",
@@ -5697,7 +5693,7 @@ var Swiper = (props) => {
5697
5693
  }
5698
5694
  }
5699
5695
  ) }) }),
5700
- canSlide && /* @__PURE__ */ jsx342("div", { className: "lib-xplat-swiper__dots", children: Array.from({ length: totalSteps }, (_, i) => /* @__PURE__ */ jsx342(
5696
+ canSlide && /* @__PURE__ */ jsx341("div", { className: "lib-xplat-swiper__dots", children: Array.from({ length: totalSteps }, (_, i) => /* @__PURE__ */ jsx341(
5701
5697
  "button",
5702
5698
  {
5703
5699
  className: clsx_default(
@@ -5715,8 +5711,8 @@ Swiper.displayName = "Swiper";
5715
5711
  var Swiper_default = Swiper;
5716
5712
 
5717
5713
  // src/components/Switch/Switch.tsx
5718
- import React33 from "react";
5719
- import { jsx as jsx343 } from "react/jsx-runtime";
5714
+ import React32 from "react";
5715
+ import { jsx as jsx342 } from "react/jsx-runtime";
5720
5716
  var KNOB_TRANSITION_MS = 250;
5721
5717
  var Switch = (props) => {
5722
5718
  const {
@@ -5726,9 +5722,9 @@ var Switch = (props) => {
5726
5722
  disabled,
5727
5723
  onChange
5728
5724
  } = props;
5729
- const [isAnimating, setIsAnimating] = React33.useState(false);
5730
- const timeoutRef = React33.useRef(null);
5731
- React33.useEffect(() => {
5725
+ const [isAnimating, setIsAnimating] = React32.useState(false);
5726
+ const timeoutRef = React32.useRef(null);
5727
+ React32.useEffect(() => {
5732
5728
  return () => {
5733
5729
  if (timeoutRef.current) clearTimeout(timeoutRef.current);
5734
5730
  };
@@ -5743,7 +5739,7 @@ var Switch = (props) => {
5743
5739
  timeoutRef.current = null;
5744
5740
  }, KNOB_TRANSITION_MS);
5745
5741
  };
5746
- return /* @__PURE__ */ jsx343(
5742
+ return /* @__PURE__ */ jsx342(
5747
5743
  "div",
5748
5744
  {
5749
5745
  className: clsx_default(
@@ -5756,7 +5752,7 @@ var Switch = (props) => {
5756
5752
  ),
5757
5753
  onClick: handleClick,
5758
5754
  "aria-disabled": disabled || isAnimating,
5759
- children: /* @__PURE__ */ jsx343("div", { className: clsx_default("knob", value ? "checked" : void 0) })
5755
+ children: /* @__PURE__ */ jsx342("div", { className: clsx_default("knob", value ? "checked" : void 0) })
5760
5756
  }
5761
5757
  );
5762
5758
  };
@@ -5764,17 +5760,17 @@ Switch.displayName = "Switch";
5764
5760
  var Switch_default = Switch;
5765
5761
 
5766
5762
  // src/components/Table/TableContext.tsx
5767
- import React34 from "react";
5768
- var TableContext = React34.createContext(null);
5763
+ import React33 from "react";
5764
+ var TableContext = React33.createContext(null);
5769
5765
  var useTableContext = () => {
5770
- const ctx = React34.useContext(TableContext);
5766
+ const ctx = React33.useContext(TableContext);
5771
5767
  if (!ctx) throw new Error("Table components must be used inside <Table>");
5772
5768
  return ctx;
5773
5769
  };
5774
5770
  var TableContext_default = TableContext;
5775
5771
 
5776
5772
  // src/components/Table/Table.tsx
5777
- import { jsx as jsx344 } from "react/jsx-runtime";
5773
+ import { jsx as jsx343 } from "react/jsx-runtime";
5778
5774
  var Table = (props) => {
5779
5775
  const {
5780
5776
  children,
@@ -5784,7 +5780,7 @@ var Table = (props) => {
5784
5780
  headerSticky = false,
5785
5781
  stickyShadow = true
5786
5782
  } = props;
5787
- return /* @__PURE__ */ jsx344("div", { className: `lib-xplat-table-wrapper ${size}`, children: /* @__PURE__ */ jsx344(
5783
+ return /* @__PURE__ */ jsx343("div", { className: `lib-xplat-table-wrapper ${size}`, children: /* @__PURE__ */ jsx343(
5788
5784
  TableContext_default.Provider,
5789
5785
  {
5790
5786
  value: {
@@ -5793,7 +5789,7 @@ var Table = (props) => {
5793
5789
  headerSticky,
5794
5790
  stickyShadow
5795
5791
  },
5796
- children: /* @__PURE__ */ jsx344("table", { className: "lib-xplat-table", children })
5792
+ children: /* @__PURE__ */ jsx343("table", { className: "lib-xplat-table", children })
5797
5793
  }
5798
5794
  ) });
5799
5795
  };
@@ -5801,41 +5797,41 @@ Table.displayName = "Table";
5801
5797
  var Table_default = Table;
5802
5798
 
5803
5799
  // src/components/Table/TableBody.tsx
5804
- import { jsx as jsx345 } from "react/jsx-runtime";
5800
+ import { jsx as jsx344 } from "react/jsx-runtime";
5805
5801
  var TableBody = (props) => {
5806
5802
  const { children } = props;
5807
- return /* @__PURE__ */ jsx345("tbody", { children });
5803
+ return /* @__PURE__ */ jsx344("tbody", { children });
5808
5804
  };
5809
5805
  TableBody.displayName = "TableBody";
5810
5806
  var TableBody_default = TableBody;
5811
5807
 
5812
5808
  // src/components/Table/TableCell.tsx
5813
- import React37 from "react";
5809
+ import React36 from "react";
5814
5810
 
5815
5811
  // src/components/Table/TableHeadContext.tsx
5816
- import React35 from "react";
5817
- var TableHeadContext = React35.createContext(
5812
+ import React34 from "react";
5813
+ var TableHeadContext = React34.createContext(
5818
5814
  null
5819
5815
  );
5820
5816
  var useTableHeadContext = () => {
5821
- const ctx = React35.useContext(TableHeadContext);
5817
+ const ctx = React34.useContext(TableHeadContext);
5822
5818
  return ctx;
5823
5819
  };
5824
5820
  var TableHeadContext_default = TableHeadContext;
5825
5821
 
5826
5822
  // src/components/Table/TableRowContext.tsx
5827
- import React36 from "react";
5828
- var TableRowContext = React36.createContext(null);
5823
+ import React35 from "react";
5824
+ var TableRowContext = React35.createContext(null);
5829
5825
  var useTableRowContext = () => {
5830
- const ctx = React36.useContext(TableRowContext);
5826
+ const ctx = React35.useContext(TableRowContext);
5831
5827
  if (!ctx) throw new Error("Table components must be used inside <Table>");
5832
5828
  return ctx;
5833
5829
  };
5834
5830
  var TableRowContext_default = TableRowContext;
5835
5831
 
5836
5832
  // src/components/Table/TableCell.tsx
5837
- import { jsx as jsx346 } from "react/jsx-runtime";
5838
- var TableCell = React37.memo((props) => {
5833
+ import { jsx as jsx345 } from "react/jsx-runtime";
5834
+ var TableCell = React36.memo((props) => {
5839
5835
  const {
5840
5836
  children,
5841
5837
  align = "center",
@@ -5849,9 +5845,9 @@ var TableCell = React37.memo((props) => {
5849
5845
  const { registerStickyCell, stickyCells } = useTableRowContext();
5850
5846
  const { stickyShadow } = useTableContext();
5851
5847
  const headContext = useTableHeadContext();
5852
- const [left, setLeft] = React37.useState(0);
5853
- const cellRef = React37.useRef(null);
5854
- const calculateLeft = React37.useCallback(() => {
5848
+ const [left, setLeft] = React36.useState(0);
5849
+ const cellRef = React36.useRef(null);
5850
+ const calculateLeft = React36.useCallback(() => {
5855
5851
  if (!cellRef.current) return 0;
5856
5852
  let totalLeft = 0;
5857
5853
  for (const ref of stickyCells) {
@@ -5860,7 +5856,7 @@ var TableCell = React37.memo((props) => {
5860
5856
  }
5861
5857
  return totalLeft;
5862
5858
  }, [stickyCells]);
5863
- React37.useEffect(() => {
5859
+ React36.useEffect(() => {
5864
5860
  if (!isSticky || !cellRef.current) return;
5865
5861
  registerStickyCell(cellRef);
5866
5862
  setLeft(calculateLeft());
@@ -5879,7 +5875,7 @@ var TableCell = React37.memo((props) => {
5879
5875
  const CellTag = isHeaderCell ? "th" : "td";
5880
5876
  const isLastSticky = isSticky && stickyCells[stickyCells.length - 1] === cellRef;
5881
5877
  const enableHover = headContext && headContext.cellHover;
5882
- return /* @__PURE__ */ jsx346(
5878
+ return /* @__PURE__ */ jsx345(
5883
5879
  CellTag,
5884
5880
  {
5885
5881
  ref: cellRef,
@@ -5906,21 +5902,21 @@ TableCell.displayName = "TableCell";
5906
5902
  var TableCell_default = TableCell;
5907
5903
 
5908
5904
  // src/components/Table/TableHead.tsx
5909
- import { jsx as jsx347 } from "react/jsx-runtime";
5905
+ import { jsx as jsx346 } from "react/jsx-runtime";
5910
5906
  var TableHead = ({
5911
5907
  children,
5912
5908
  cellHover = false
5913
5909
  }) => {
5914
5910
  const { headerSticky } = useTableContext();
5915
- return /* @__PURE__ */ jsx347(TableHeadContext_default.Provider, { value: { cellHover }, children: /* @__PURE__ */ jsx347("thead", { className: clsx_default(headerSticky ? "table-sticky" : null), children }) });
5911
+ return /* @__PURE__ */ jsx346(TableHeadContext_default.Provider, { value: { cellHover }, children: /* @__PURE__ */ jsx346("thead", { className: clsx_default(headerSticky ? "table-sticky" : null), children }) });
5916
5912
  };
5917
5913
  TableHead.displayName = "TableHead";
5918
5914
  var TableHead_default = TableHead;
5919
5915
 
5920
5916
  // src/components/Table/TableRow.tsx
5921
- import React38 from "react";
5922
- import { jsx as jsx348 } from "react/jsx-runtime";
5923
- var TableRow = React38.memo((props) => {
5917
+ import React37 from "react";
5918
+ import { jsx as jsx347 } from "react/jsx-runtime";
5919
+ var TableRow = React37.memo((props) => {
5924
5920
  const {
5925
5921
  children,
5926
5922
  type = "secondary",
@@ -5929,14 +5925,14 @@ var TableRow = React38.memo((props) => {
5929
5925
  onClick
5930
5926
  } = props;
5931
5927
  const { rowBorderUse } = useTableContext();
5932
- const [stickyCells, setStickyCells] = React38.useState([]);
5928
+ const [stickyCells, setStickyCells] = React37.useState([]);
5933
5929
  const registerStickyCell = (ref) => {
5934
5930
  setStickyCells((prev) => {
5935
5931
  if (prev.includes(ref)) return prev;
5936
5932
  return [...prev, ref];
5937
5933
  });
5938
5934
  };
5939
- return /* @__PURE__ */ jsx348(TableRowContext_default.Provider, { value: { stickyCells, registerStickyCell }, children: /* @__PURE__ */ jsx348(
5935
+ return /* @__PURE__ */ jsx347(TableRowContext_default.Provider, { value: { stickyCells, registerStickyCell }, children: /* @__PURE__ */ jsx347(
5940
5936
  "tr",
5941
5937
  {
5942
5938
  className: clsx_default(
@@ -5960,7 +5956,7 @@ TableRow.displayName = "TableRow";
5960
5956
  var TableRow_default = TableRow;
5961
5957
 
5962
5958
  // src/components/Tag/Tag.tsx
5963
- import { jsx as jsx349, jsxs as jsxs220 } from "react/jsx-runtime";
5959
+ import { jsx as jsx348, jsxs as jsxs220 } from "react/jsx-runtime";
5964
5960
  var Tag = (props) => {
5965
5961
  const {
5966
5962
  children,
@@ -5981,8 +5977,8 @@ var Tag = (props) => {
5981
5977
  disabled && "disabled"
5982
5978
  ),
5983
5979
  children: [
5984
- /* @__PURE__ */ jsx349("span", { className: "tag-label", children }),
5985
- onClose && /* @__PURE__ */ jsx349("button", { className: "tag-close", onClick: onClose, "aria-label": "\uC0AD\uC81C", disabled, children: /* @__PURE__ */ jsx349(XIcon_default, {}) })
5980
+ /* @__PURE__ */ jsx348("span", { className: "tag-label", children }),
5981
+ onClose && /* @__PURE__ */ jsx348("button", { className: "tag-close", onClick: onClose, "aria-label": "\uC0AD\uC81C", disabled, children: /* @__PURE__ */ jsx348(XIcon_default, {}) })
5986
5982
  ]
5987
5983
  }
5988
5984
  );
@@ -5991,9 +5987,9 @@ Tag.displayName = "Tag";
5991
5987
  var Tag_default = Tag;
5992
5988
 
5993
5989
  // src/components/TextArea/TextArea.tsx
5994
- import React39 from "react";
5995
- import { jsx as jsx350 } from "react/jsx-runtime";
5996
- var TextArea = React39.forwardRef(
5990
+ import React38 from "react";
5991
+ import { jsx as jsx349 } from "react/jsx-runtime";
5992
+ var TextArea = React38.forwardRef(
5997
5993
  (props, ref) => {
5998
5994
  const {
5999
5995
  className,
@@ -6003,7 +5999,7 @@ var TextArea = React39.forwardRef(
6003
5999
  disabled,
6004
6000
  ...textareaProps
6005
6001
  } = props;
6006
- return /* @__PURE__ */ jsx350("div", { className: clsx_default("lib-xplat-textarea-wrap", className), children: /* @__PURE__ */ jsx350(
6002
+ return /* @__PURE__ */ jsx349("div", { className: clsx_default("lib-xplat-textarea-wrap", className), children: /* @__PURE__ */ jsx349(
6007
6003
  "textarea",
6008
6004
  {
6009
6005
  ...textareaProps,
@@ -6020,25 +6016,25 @@ TextArea.displayName = "TextArea";
6020
6016
  var TextArea_default = TextArea;
6021
6017
 
6022
6018
  // src/components/Toast/Toast.tsx
6023
- import React40 from "react";
6019
+ import React39 from "react";
6024
6020
  import { createPortal as createPortal3 } from "react-dom";
6025
- import { jsx as jsx351, jsxs as jsxs221 } from "react/jsx-runtime";
6026
- var ToastContext = React40.createContext(null);
6021
+ import { jsx as jsx350, jsxs as jsxs221 } from "react/jsx-runtime";
6022
+ var ToastContext = React39.createContext(null);
6027
6023
  var useToast = () => {
6028
- const ctx = React40.useContext(ToastContext);
6024
+ const ctx = React39.useContext(ToastContext);
6029
6025
  if (!ctx) throw new Error("useToast must be used within ToastProvider");
6030
6026
  return ctx;
6031
6027
  };
6032
6028
  var EXIT_DURATION = 300;
6033
6029
  var ToastItemComponent = ({ item, isExiting, onClose }) => {
6034
- const ref = React40.useRef(null);
6035
- const [height, setHeight] = React40.useState(void 0);
6036
- React40.useEffect(() => {
6030
+ const ref = React39.useRef(null);
6031
+ const [height, setHeight] = React39.useState(void 0);
6032
+ React39.useEffect(() => {
6037
6033
  if (ref.current && !isExiting) {
6038
6034
  setHeight(ref.current.offsetHeight);
6039
6035
  }
6040
6036
  }, [isExiting]);
6041
- return /* @__PURE__ */ jsx351(
6037
+ return /* @__PURE__ */ jsx350(
6042
6038
  "div",
6043
6039
  {
6044
6040
  className: clsx_default("lib-xplat-toast-wrapper", { exit: isExiting }),
@@ -6053,8 +6049,8 @@ var ToastItemComponent = ({ item, isExiting, onClose }) => {
6053
6049
  className: clsx_default("lib-xplat-toast", item.type, { exit: isExiting }),
6054
6050
  role: "alert",
6055
6051
  children: [
6056
- /* @__PURE__ */ jsx351("span", { className: "message", children: item.message }),
6057
- /* @__PURE__ */ jsx351("button", { className: "close-btn", onClick: onClose, "aria-label": "\uB2EB\uAE30", children: "\xD7" })
6052
+ /* @__PURE__ */ jsx350("span", { className: "message", children: item.message }),
6053
+ /* @__PURE__ */ jsx350("button", { className: "close-btn", onClick: onClose, "aria-label": "\uB2EB\uAE30", children: "\xD7" })
6058
6054
  ]
6059
6055
  }
6060
6056
  )
@@ -6065,13 +6061,13 @@ var ToastProvider = ({
6065
6061
  children,
6066
6062
  position = "top-right"
6067
6063
  }) => {
6068
- const [toasts, setToasts] = React40.useState([]);
6069
- const [removing, setRemoving] = React40.useState(/* @__PURE__ */ new Set());
6070
- const [mounted, setMounted] = React40.useState(false);
6071
- React40.useEffect(() => {
6064
+ const [toasts, setToasts] = React39.useState([]);
6065
+ const [removing, setRemoving] = React39.useState(/* @__PURE__ */ new Set());
6066
+ const [mounted, setMounted] = React39.useState(false);
6067
+ React39.useEffect(() => {
6072
6068
  setMounted(true);
6073
6069
  }, []);
6074
- const remove = React40.useCallback((id) => {
6070
+ const remove = React39.useCallback((id) => {
6075
6071
  setRemoving((prev) => new Set(prev).add(id));
6076
6072
  setTimeout(() => {
6077
6073
  setToasts((prev) => prev.filter((t) => t.id !== id));
@@ -6082,7 +6078,7 @@ var ToastProvider = ({
6082
6078
  });
6083
6079
  }, EXIT_DURATION);
6084
6080
  }, []);
6085
- const toast = React40.useCallback(
6081
+ const toast = React39.useCallback(
6086
6082
  (type, message, duration = 3e3) => {
6087
6083
  const id = `${Date.now()}-${Math.random()}`;
6088
6084
  setToasts((prev) => [...prev, { id, type, message }]);
@@ -6095,7 +6091,7 @@ var ToastProvider = ({
6095
6091
  return /* @__PURE__ */ jsxs221(ToastContext.Provider, { value: { toast }, children: [
6096
6092
  children,
6097
6093
  mounted && createPortal3(
6098
- /* @__PURE__ */ jsx351("div", { className: clsx_default("lib-xplat-toast-container", position), children: toasts.map((t) => /* @__PURE__ */ jsx351(
6094
+ /* @__PURE__ */ jsx350("div", { className: clsx_default("lib-xplat-toast-container", position), children: toasts.map((t) => /* @__PURE__ */ jsx350(
6099
6095
  ToastItemComponent,
6100
6096
  {
6101
6097
  item: t,
@@ -6111,8 +6107,8 @@ var ToastProvider = ({
6111
6107
  ToastProvider.displayName = "ToastProvider";
6112
6108
 
6113
6109
  // src/components/Tooltip/Tooltip.tsx
6114
- import React41 from "react";
6115
- import { Fragment as Fragment5, jsx as jsx352, jsxs as jsxs222 } from "react/jsx-runtime";
6110
+ import React40 from "react";
6111
+ import { Fragment as Fragment5, jsx as jsx351, jsxs as jsxs222 } from "react/jsx-runtime";
6116
6112
  var OFFSET = 12;
6117
6113
  var GAP = 8;
6118
6114
  var SHOW_DELAY = 300;
@@ -6125,14 +6121,14 @@ var Tooltip = (props) => {
6125
6121
  follow = false,
6126
6122
  disabled = false
6127
6123
  } = props;
6128
- const triggerRef = React41.useRef(null);
6129
- const tooltipRef = React41.useRef(null);
6130
- const [visible, setVisible] = React41.useState(false);
6131
- const [pos, setPos] = React41.useState({ left: 0, top: 0 });
6132
- const delayTimer = React41.useRef(0);
6133
- const rafRef = React41.useRef(0);
6134
- const cursor = React41.useRef(null);
6135
- const clamp = React41.useCallback((left, top, w, h) => {
6124
+ const triggerRef = React40.useRef(null);
6125
+ const tooltipRef = React40.useRef(null);
6126
+ const [visible, setVisible] = React40.useState(false);
6127
+ const [pos, setPos] = React40.useState({ left: 0, top: 0 });
6128
+ const delayTimer = React40.useRef(0);
6129
+ const rafRef = React40.useRef(0);
6130
+ const cursor = React40.useRef(null);
6131
+ const clamp = React40.useCallback((left, top, w, h) => {
6136
6132
  const vw = window.innerWidth;
6137
6133
  const vh = window.innerHeight;
6138
6134
  return {
@@ -6140,7 +6136,7 @@ var Tooltip = (props) => {
6140
6136
  top: Math.min(Math.max(GAP, top), Math.max(GAP, vh - h - GAP))
6141
6137
  };
6142
6138
  }, []);
6143
- const placeAtCursor = React41.useCallback((x, y) => {
6139
+ const placeAtCursor = React40.useCallback((x, y) => {
6144
6140
  const el = tooltipRef.current;
6145
6141
  if (!el) return;
6146
6142
  const w = el.offsetWidth;
@@ -6151,7 +6147,7 @@ var Tooltip = (props) => {
6151
6147
  if (top < GAP) top = y + OFFSET;
6152
6148
  setPos(clamp(left, top, w, h));
6153
6149
  }, [clamp]);
6154
- const placeAtTrigger = React41.useCallback(() => {
6150
+ const placeAtTrigger = React40.useCallback(() => {
6155
6151
  const el = tooltipRef.current;
6156
6152
  const trigger = triggerRef.current;
6157
6153
  if (!el || !trigger) return;
@@ -6163,19 +6159,19 @@ var Tooltip = (props) => {
6163
6159
  const left = rect.left + rect.width / 2 - w / 2;
6164
6160
  setPos(clamp(left, top, w, h));
6165
6161
  }, [clamp]);
6166
- const reposition = React41.useCallback(() => {
6162
+ const reposition = React40.useCallback(() => {
6167
6163
  if (follow && cursor.current) {
6168
6164
  placeAtCursor(cursor.current.x, cursor.current.y);
6169
6165
  } else {
6170
6166
  placeAtTrigger();
6171
6167
  }
6172
6168
  }, [follow, placeAtCursor, placeAtTrigger]);
6173
- const handleMouseEnter = React41.useCallback((e) => {
6169
+ const handleMouseEnter = React40.useCallback((e) => {
6174
6170
  if (disabled) return;
6175
6171
  cursor.current = { x: e.clientX, y: e.clientY };
6176
6172
  delayTimer.current = window.setTimeout(() => setVisible(true), SHOW_DELAY);
6177
6173
  }, [disabled]);
6178
- const handleMouseMove = React41.useCallback((e) => {
6174
+ const handleMouseMove = React40.useCallback((e) => {
6179
6175
  cursor.current = { x: e.clientX, y: e.clientY };
6180
6176
  if (!visible || !follow) return;
6181
6177
  cancelAnimationFrame(rafRef.current);
@@ -6183,25 +6179,25 @@ var Tooltip = (props) => {
6183
6179
  if (cursor.current) placeAtCursor(cursor.current.x, cursor.current.y);
6184
6180
  });
6185
6181
  }, [visible, follow, placeAtCursor]);
6186
- const close = React41.useCallback(() => {
6182
+ const close = React40.useCallback(() => {
6187
6183
  window.clearTimeout(delayTimer.current);
6188
6184
  cancelAnimationFrame(rafRef.current);
6189
6185
  setVisible(false);
6190
6186
  }, []);
6191
- const handleMouseLeave = React41.useCallback(() => {
6187
+ const handleMouseLeave = React40.useCallback(() => {
6192
6188
  cursor.current = null;
6193
6189
  close();
6194
6190
  }, [close]);
6195
- const handleFocus = React41.useCallback(() => {
6191
+ const handleFocus = React40.useCallback(() => {
6196
6192
  if (disabled) return;
6197
6193
  cursor.current = null;
6198
6194
  setVisible(true);
6199
6195
  }, [disabled]);
6200
- React41.useLayoutEffect(() => {
6196
+ React40.useLayoutEffect(() => {
6201
6197
  if (!visible) return;
6202
6198
  reposition();
6203
6199
  }, [visible, reposition]);
6204
- React41.useEffect(() => {
6200
+ React40.useEffect(() => {
6205
6201
  if (!visible || follow) return;
6206
6202
  const onChange = () => placeAtTrigger();
6207
6203
  window.addEventListener("scroll", onChange, true);
@@ -6211,11 +6207,11 @@ var Tooltip = (props) => {
6211
6207
  window.removeEventListener("resize", onChange);
6212
6208
  };
6213
6209
  }, [visible, follow, placeAtTrigger]);
6214
- React41.useEffect(() => () => {
6210
+ React40.useEffect(() => () => {
6215
6211
  window.clearTimeout(delayTimer.current);
6216
6212
  cancelAnimationFrame(rafRef.current);
6217
6213
  }, []);
6218
- if (!title && !description) return /* @__PURE__ */ jsx352(Fragment5, { children });
6214
+ if (!title && !description) return /* @__PURE__ */ jsx351(Fragment5, { children });
6219
6215
  return /* @__PURE__ */ jsxs222(
6220
6216
  "div",
6221
6217
  {
@@ -6229,7 +6225,7 @@ var Tooltip = (props) => {
6229
6225
  onBlur: close,
6230
6226
  children: [
6231
6227
  children,
6232
- visible && /* @__PURE__ */ jsx352(Portal_default, { children: /* @__PURE__ */ jsxs222(
6228
+ visible && /* @__PURE__ */ jsx351(Portal_default, { children: /* @__PURE__ */ jsxs222(
6233
6229
  "div",
6234
6230
  {
6235
6231
  ref: tooltipRef,
@@ -6237,8 +6233,8 @@ var Tooltip = (props) => {
6237
6233
  className: clsx_default("lib-xplat-tooltip", type),
6238
6234
  style: { position: "fixed", left: pos.left, top: pos.top },
6239
6235
  children: [
6240
- title && /* @__PURE__ */ jsx352("div", { className: "tooltip-title", children: title }),
6241
- description && /* @__PURE__ */ jsx352("div", { className: "tooltip-desc", children: description })
6236
+ title && /* @__PURE__ */ jsx351("div", { className: "tooltip-title", children: title }),
6237
+ description && /* @__PURE__ */ jsx351("div", { className: "tooltip-desc", children: description })
6242
6238
  ]
6243
6239
  }
6244
6240
  ) })
@@ -6250,11 +6246,11 @@ Tooltip.displayName = "Tooltip";
6250
6246
  var Tooltip_default = Tooltip;
6251
6247
 
6252
6248
  // src/components/Video/Video.tsx
6253
- import React42 from "react";
6254
- import { jsx as jsx353, jsxs as jsxs223 } from "react/jsx-runtime";
6249
+ import React41 from "react";
6250
+ import { jsx as jsx352, jsxs as jsxs223 } from "react/jsx-runtime";
6255
6251
  var PipIcon = () => /* @__PURE__ */ jsxs223("svg", { viewBox: "0 0 24 24", width: "1em", height: "1em", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [
6256
- /* @__PURE__ */ jsx353("rect", { x: "3", y: "5", width: "18", height: "14", rx: "2" }),
6257
- /* @__PURE__ */ jsx353("rect", { x: "12", y: "11", width: "7", height: "6", rx: "1", fill: "currentColor" })
6252
+ /* @__PURE__ */ jsx352("rect", { x: "3", y: "5", width: "18", height: "14", rx: "2" }),
6253
+ /* @__PURE__ */ jsx352("rect", { x: "12", y: "11", width: "7", height: "6", rx: "1", fill: "currentColor" })
6258
6254
  ] });
6259
6255
  var formatTime = (sec) => {
6260
6256
  if (!Number.isFinite(sec) || sec < 0) return "0:00";
@@ -6262,7 +6258,7 @@ var formatTime = (sec) => {
6262
6258
  const s = Math.floor(sec % 60);
6263
6259
  return `${m}:${s.toString().padStart(2, "0")}`;
6264
6260
  };
6265
- var Video = React42.forwardRef((props, ref) => {
6261
+ var Video = React41.forwardRef((props, ref) => {
6266
6262
  const {
6267
6263
  src,
6268
6264
  poster,
@@ -6286,21 +6282,21 @@ var Video = React42.forwardRef((props, ref) => {
6286
6282
  children,
6287
6283
  ...rest
6288
6284
  } = props;
6289
- const containerRef = React42.useRef(null);
6290
- const videoRef = React42.useRef(null);
6291
- const [isPlaying, setIsPlaying] = React42.useState(Boolean(autoPlay));
6292
- const [isLoaded, setIsLoaded] = React42.useState(false);
6293
- const [currentTime, setCurrentTime] = React42.useState(0);
6294
- const [duration, setDuration] = React42.useState(0);
6295
- const [buffered, setBuffered] = React42.useState(0);
6296
- const [volume, setVolume] = React42.useState(1);
6297
- const [isMuted, setIsMuted] = React42.useState(Boolean(muted));
6298
- const [isFullscreen, setIsFullscreen] = React42.useState(false);
6299
- const [playbackRate, setPlaybackRate] = React42.useState(1);
6300
- const [rateMenuOpen, setRateMenuOpen] = React42.useState(false);
6301
- const [captionsOn, setCaptionsOn] = React42.useState(false);
6302
- const [isPip, setIsPip] = React42.useState(false);
6303
- const setRefs = React42.useCallback(
6285
+ const containerRef = React41.useRef(null);
6286
+ const videoRef = React41.useRef(null);
6287
+ const [isPlaying, setIsPlaying] = React41.useState(Boolean(autoPlay));
6288
+ const [isLoaded, setIsLoaded] = React41.useState(false);
6289
+ const [currentTime, setCurrentTime] = React41.useState(0);
6290
+ const [duration, setDuration] = React41.useState(0);
6291
+ const [buffered, setBuffered] = React41.useState(0);
6292
+ const [volume, setVolume] = React41.useState(1);
6293
+ const [isMuted, setIsMuted] = React41.useState(Boolean(muted));
6294
+ const [isFullscreen, setIsFullscreen] = React41.useState(false);
6295
+ const [playbackRate, setPlaybackRate] = React41.useState(1);
6296
+ const [rateMenuOpen, setRateMenuOpen] = React41.useState(false);
6297
+ const [captionsOn, setCaptionsOn] = React41.useState(false);
6298
+ const [isPip, setIsPip] = React41.useState(false);
6299
+ const setRefs = React41.useCallback(
6304
6300
  (el) => {
6305
6301
  videoRef.current = el;
6306
6302
  if (typeof ref === "function") ref(el);
@@ -6308,14 +6304,14 @@ var Video = React42.forwardRef((props, ref) => {
6308
6304
  },
6309
6305
  [ref]
6310
6306
  );
6311
- React42.useEffect(() => {
6307
+ React41.useEffect(() => {
6312
6308
  const onFsChange = () => {
6313
6309
  setIsFullscreen(document.fullscreenElement === containerRef.current);
6314
6310
  };
6315
6311
  document.addEventListener("fullscreenchange", onFsChange);
6316
6312
  return () => document.removeEventListener("fullscreenchange", onFsChange);
6317
6313
  }, []);
6318
- React42.useEffect(() => {
6314
+ React41.useEffect(() => {
6319
6315
  const v = videoRef.current;
6320
6316
  if (!v) return;
6321
6317
  const onEnter = () => setIsPip(true);
@@ -6435,7 +6431,7 @@ var Video = React42.forwardRef((props, ref) => {
6435
6431
  ref: containerRef,
6436
6432
  className: clsx_default("lib-xplat-video", showControls && "has-controls"),
6437
6433
  children: [
6438
- /* @__PURE__ */ jsx353(
6434
+ /* @__PURE__ */ jsx352(
6439
6435
  "video",
6440
6436
  {
6441
6437
  ref: setRefs,
@@ -6456,7 +6452,7 @@ var Video = React42.forwardRef((props, ref) => {
6456
6452
  children
6457
6453
  }
6458
6454
  ),
6459
- showCenterPlay && /* @__PURE__ */ jsx353(
6455
+ showCenterPlay && /* @__PURE__ */ jsx352(
6460
6456
  "button",
6461
6457
  {
6462
6458
  type: "button",
@@ -6468,11 +6464,11 @@ var Video = React42.forwardRef((props, ref) => {
6468
6464
  onClick: togglePlay,
6469
6465
  "aria-label": isPlaying ? "\uC77C\uC2DC\uC815\uC9C0" : "\uC7AC\uC0DD",
6470
6466
  tabIndex: -1,
6471
- children: /* @__PURE__ */ jsx353("span", { className: "center-play-icon", children: /* @__PURE__ */ jsx353(PlayCircleIcon_default, {}) })
6467
+ children: /* @__PURE__ */ jsx352("span", { className: "center-play-icon", children: /* @__PURE__ */ jsx352(PlayCircleIcon_default, {}) })
6472
6468
  }
6473
6469
  ),
6474
6470
  showControls && /* @__PURE__ */ jsxs223("div", { className: "controls", onClick: (e) => e.stopPropagation(), children: [
6475
- /* @__PURE__ */ jsx353(
6471
+ /* @__PURE__ */ jsx352(
6476
6472
  "input",
6477
6473
  {
6478
6474
  type: "range",
@@ -6490,28 +6486,28 @@ var Video = React42.forwardRef((props, ref) => {
6490
6486
  }
6491
6487
  ),
6492
6488
  /* @__PURE__ */ jsxs223("div", { className: "controls-row", children: [
6493
- /* @__PURE__ */ jsx353(
6489
+ /* @__PURE__ */ jsx352(
6494
6490
  "button",
6495
6491
  {
6496
6492
  type: "button",
6497
6493
  className: "control-btn",
6498
6494
  onClick: togglePlay,
6499
6495
  "aria-label": isPlaying ? "\uC77C\uC2DC\uC815\uC9C0" : "\uC7AC\uC0DD",
6500
- children: isPlaying ? /* @__PURE__ */ jsx353(PauseIcon_default, {}) : /* @__PURE__ */ jsx353(PlayIcon_default, {})
6496
+ children: isPlaying ? /* @__PURE__ */ jsx352(PauseIcon_default, {}) : /* @__PURE__ */ jsx352(PlayIcon_default, {})
6501
6497
  }
6502
6498
  ),
6503
6499
  /* @__PURE__ */ jsxs223("div", { className: "volume-group", children: [
6504
- /* @__PURE__ */ jsx353(
6500
+ /* @__PURE__ */ jsx352(
6505
6501
  "button",
6506
6502
  {
6507
6503
  type: "button",
6508
6504
  className: "control-btn",
6509
6505
  onClick: toggleMute,
6510
6506
  "aria-label": isMuted ? "\uC74C\uC18C\uAC70 \uD574\uC81C" : "\uC74C\uC18C\uAC70",
6511
- children: /* @__PURE__ */ jsx353(VolumeGlyph, {})
6507
+ children: /* @__PURE__ */ jsx352(VolumeGlyph, {})
6512
6508
  }
6513
6509
  ),
6514
- /* @__PURE__ */ jsx353(
6510
+ /* @__PURE__ */ jsx352(
6515
6511
  "input",
6516
6512
  {
6517
6513
  type: "range",
@@ -6531,7 +6527,7 @@ var Video = React42.forwardRef((props, ref) => {
6531
6527
  " / ",
6532
6528
  formatTime(duration)
6533
6529
  ] }),
6534
- /* @__PURE__ */ jsx353("div", { className: "controls-spacer" }),
6530
+ /* @__PURE__ */ jsx352("div", { className: "controls-spacer" }),
6535
6531
  playbackRates && playbackRates.length > 0 && /* @__PURE__ */ jsxs223("div", { className: clsx_default("rate-group", rateMenuOpen && "is-open"), children: [
6536
6532
  /* @__PURE__ */ jsxs223(
6537
6533
  "button",
@@ -6547,7 +6543,7 @@ var Video = React42.forwardRef((props, ref) => {
6547
6543
  ]
6548
6544
  }
6549
6545
  ),
6550
- rateMenuOpen && /* @__PURE__ */ jsx353("ul", { className: "rate-menu", role: "menu", children: playbackRates.map((r2) => /* @__PURE__ */ jsx353("li", { children: /* @__PURE__ */ jsxs223(
6546
+ rateMenuOpen && /* @__PURE__ */ jsx352("ul", { className: "rate-menu", role: "menu", children: playbackRates.map((r2) => /* @__PURE__ */ jsx352("li", { children: /* @__PURE__ */ jsxs223(
6551
6547
  "button",
6552
6548
  {
6553
6549
  type: "button",
@@ -6561,7 +6557,7 @@ var Video = React42.forwardRef((props, ref) => {
6561
6557
  }
6562
6558
  ) }, r2)) })
6563
6559
  ] }),
6564
- showCaptions && /* @__PURE__ */ jsx353(
6560
+ showCaptions && /* @__PURE__ */ jsx352(
6565
6561
  "button",
6566
6562
  {
6567
6563
  type: "button",
@@ -6569,37 +6565,37 @@ var Video = React42.forwardRef((props, ref) => {
6569
6565
  onClick: toggleCaptions,
6570
6566
  "aria-label": captionsOn ? "\uC790\uB9C9 \uB044\uAE30" : "\uC790\uB9C9 \uCF1C\uAE30",
6571
6567
  "aria-pressed": captionsOn,
6572
- children: /* @__PURE__ */ jsx353(TypeIcon_default, {})
6568
+ children: /* @__PURE__ */ jsx352(TypeIcon_default, {})
6573
6569
  }
6574
6570
  ),
6575
- showPip && pipSupported && /* @__PURE__ */ jsx353(
6571
+ showPip && pipSupported && /* @__PURE__ */ jsx352(
6576
6572
  "button",
6577
6573
  {
6578
6574
  type: "button",
6579
6575
  className: clsx_default("control-btn", isPip && "is-active"),
6580
6576
  onClick: togglePip,
6581
6577
  "aria-label": isPip ? "PIP \uC885\uB8CC" : "PIP",
6582
- children: /* @__PURE__ */ jsx353(PipIcon, {})
6578
+ children: /* @__PURE__ */ jsx352(PipIcon, {})
6583
6579
  }
6584
6580
  ),
6585
- showDownload && /* @__PURE__ */ jsx353(
6581
+ showDownload && /* @__PURE__ */ jsx352(
6586
6582
  "a",
6587
6583
  {
6588
6584
  className: "control-btn",
6589
6585
  href: src,
6590
6586
  download: downloadFileName ?? true,
6591
6587
  "aria-label": "\uB2E4\uC6B4\uB85C\uB4DC",
6592
- children: /* @__PURE__ */ jsx353(DownloadIcon_default, {})
6588
+ children: /* @__PURE__ */ jsx352(DownloadIcon_default, {})
6593
6589
  }
6594
6590
  ),
6595
- /* @__PURE__ */ jsx353(
6591
+ /* @__PURE__ */ jsx352(
6596
6592
  "button",
6597
6593
  {
6598
6594
  type: "button",
6599
6595
  className: "control-btn",
6600
6596
  onClick: toggleFullscreen,
6601
6597
  "aria-label": isFullscreen ? "\uC804\uCCB4\uD654\uBA74 \uC885\uB8CC" : "\uC804\uCCB4\uD654\uBA74",
6602
- children: isFullscreen ? /* @__PURE__ */ jsx353(MinimizeIcon_default, {}) : /* @__PURE__ */ jsx353(MaximizeIcon_default, {})
6598
+ children: isFullscreen ? /* @__PURE__ */ jsx352(MinimizeIcon_default, {}) : /* @__PURE__ */ jsx352(MaximizeIcon_default, {})
6603
6599
  }
6604
6600
  )
6605
6601
  ] })