@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.
package/dist/index.js CHANGED
@@ -6989,7 +6989,7 @@ Chip.displayName = "Chip";
6989
6989
  var Chip_default = Chip;
6990
6990
 
6991
6991
  // src/components/DatePicker/InputDatePicker/index.tsx
6992
- import React13 from "react";
6992
+ import React12 from "react";
6993
6993
 
6994
6994
  // src/components/Input/Input.tsx
6995
6995
  import React8 from "react";
@@ -7180,38 +7180,26 @@ PasswordInput.displayName = "PasswordInput";
7180
7180
  var PasswordInput_default = PasswordInput;
7181
7181
 
7182
7182
  // src/components/Modal/Modal.tsx
7183
- import React11 from "react";
7184
- import { createPortal } from "react-dom";
7185
-
7186
- // src/tokens/hooks/Portal.tsx
7187
7183
  import React10 from "react";
7188
- import ReactDOM from "react-dom";
7184
+ import { createPortal } from "react-dom";
7189
7185
  import { jsx as jsx313 } from "react/jsx-runtime";
7190
- var PortalContainerContext = React10.createContext(null);
7191
- var PortalProvider = ({ container, children }) => /* @__PURE__ */ jsx313(PortalContainerContext.Provider, { value: container, children });
7192
- var Portal = ({ children }) => {
7193
- const contextContainer = React10.useContext(PortalContainerContext);
7194
- if (typeof document === "undefined") return null;
7195
- const container = contextContainer ?? document.body;
7196
- return ReactDOM.createPortal(children, container);
7197
- };
7198
- Portal.displayName = "Portal";
7199
- var Portal_default = Portal;
7200
-
7201
- // src/components/Modal/Modal.tsx
7202
- import { jsx as jsx314 } from "react/jsx-runtime";
7203
7186
  var ANIMATION_DURATION_MS = 200;
7204
7187
  var Modal = (props) => {
7205
7188
  const { isOpen, onClose, children } = props;
7206
- const [mounted, setMounted] = React11.useState(false);
7207
- const [visible, setVisible] = React11.useState(false);
7208
- const boxRef = React11.useRef(null);
7209
- React11.useEffect(() => {
7189
+ const [mounted, setMounted] = React10.useState(false);
7190
+ const [visible, setVisible] = React10.useState(false);
7191
+ const [settled, setSettled] = React10.useState(false);
7192
+ React10.useEffect(() => {
7210
7193
  if (isOpen) {
7211
7194
  setMounted(true);
7212
- const t2 = setTimeout(() => setVisible(true), 1);
7213
- return () => clearTimeout(t2);
7195
+ const show = setTimeout(() => setVisible(true), 1);
7196
+ const settle = setTimeout(() => setSettled(true), ANIMATION_DURATION_MS + 50);
7197
+ return () => {
7198
+ clearTimeout(show);
7199
+ clearTimeout(settle);
7200
+ };
7214
7201
  }
7202
+ setSettled(false);
7215
7203
  setVisible(false);
7216
7204
  const t = setTimeout(() => setMounted(false), ANIMATION_DURATION_MS);
7217
7205
  return () => clearTimeout(t);
@@ -7220,20 +7208,19 @@ var Modal = (props) => {
7220
7208
  if (!mounted) return null;
7221
7209
  const stateClass = visible ? "enter" : "exit";
7222
7210
  return createPortal(
7223
- /* @__PURE__ */ jsx314(
7211
+ /* @__PURE__ */ jsx313(
7224
7212
  "div",
7225
7213
  {
7226
7214
  className: clsx_default("lib-xplat-modal", "dim", stateClass),
7227
7215
  onClick: onClose,
7228
- children: /* @__PURE__ */ jsx314(
7216
+ children: /* @__PURE__ */ jsx313(
7229
7217
  "div",
7230
7218
  {
7231
- ref: boxRef,
7232
- className: clsx_default("lib-xplat-modal", "modal-box", stateClass),
7219
+ className: clsx_default("lib-xplat-modal", "modal-box", stateClass, settled && "settled"),
7233
7220
  role: "dialog",
7234
7221
  "aria-modal": "true",
7235
7222
  onClick: (e) => e.stopPropagation(),
7236
- children: /* @__PURE__ */ jsx314(PortalProvider, { container: boxRef.current, children })
7223
+ children
7237
7224
  }
7238
7225
  )
7239
7226
  }
@@ -7245,9 +7232,9 @@ Modal.displayName = "Modal";
7245
7232
  var Modal_default = Modal;
7246
7233
 
7247
7234
  // src/components/DatePicker/SingleDatePicker/index.tsx
7248
- import React12 from "react";
7249
- import { Fragment as Fragment3, jsx as jsx315, jsxs as jsxs200 } from "react/jsx-runtime";
7250
- var DayCell2 = React12.memo(
7235
+ import React11 from "react";
7236
+ import { Fragment as Fragment3, jsx as jsx314, jsxs as jsxs200 } from "react/jsx-runtime";
7237
+ var DayCell2 = React11.memo(
7251
7238
  ({
7252
7239
  day,
7253
7240
  disabled,
@@ -7257,7 +7244,7 @@ var DayCell2 = React12.memo(
7257
7244
  isEnd,
7258
7245
  inRange,
7259
7246
  onSelect
7260
- }) => /* @__PURE__ */ jsx315(
7247
+ }) => /* @__PURE__ */ jsx314(
7261
7248
  "button",
7262
7249
  {
7263
7250
  type: "button",
@@ -7299,26 +7286,26 @@ var SingleDatePicker = (props) => {
7299
7286
  initialYear,
7300
7287
  initialMonth
7301
7288
  );
7302
- const [pickerMode, setPickerMode] = React12.useState("days");
7303
- const [yearRangeStart, setYearRangeStart] = React12.useState(
7289
+ const [pickerMode, setPickerMode] = React11.useState("days");
7290
+ const [yearRangeStart, setYearRangeStart] = React11.useState(
7304
7291
  Math.floor((initialYear ?? (/* @__PURE__ */ new Date()).getFullYear()) / 12) * 12
7305
7292
  );
7306
- const minTime = React12.useMemo(
7293
+ const minTime = React11.useMemo(
7307
7294
  () => minDate ? new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate()).getTime() : -Infinity,
7308
7295
  [minDate]
7309
7296
  );
7310
- const maxTime = React12.useMemo(
7297
+ const maxTime = React11.useMemo(
7311
7298
  () => maxDate ? new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate()).getTime() : Infinity,
7312
7299
  [maxDate]
7313
7300
  );
7314
- const highlightSet = React12.useMemo(() => {
7301
+ const highlightSet = React11.useMemo(() => {
7315
7302
  const set = /* @__PURE__ */ new Set();
7316
7303
  for (const h of highlightDates) {
7317
7304
  set.add(`${h.getFullYear()}-${h.getMonth()}-${h.getDate()}`);
7318
7305
  }
7319
7306
  return set;
7320
7307
  }, [highlightDates]);
7321
- const handleSelect = React12.useCallback(
7308
+ const handleSelect = React11.useCallback(
7322
7309
  (date) => {
7323
7310
  onChange?.(date);
7324
7311
  },
@@ -7361,14 +7348,14 @@ var SingleDatePicker = (props) => {
7361
7348
  className: clsx_default("lib-xplat-datepicker", "single"),
7362
7349
  children: [
7363
7350
  /* @__PURE__ */ jsxs200("div", { className: "datepicker-header", children: [
7364
- /* @__PURE__ */ jsx315("button", { className: "datepicker-nav", onClick: handlePrev, type: "button", children: /* @__PURE__ */ jsx315(ChevronLeftIcon_default, {}) }),
7365
- /* @__PURE__ */ jsx315("button", { className: "datepicker-title", onClick: handleTitleClick, type: "button", children: titleText }),
7366
- /* @__PURE__ */ jsx315("button", { className: "datepicker-nav", onClick: handleNext, type: "button", children: /* @__PURE__ */ jsx315(ChevronRightIcon_default, {}) })
7351
+ /* @__PURE__ */ jsx314("button", { className: "datepicker-nav", onClick: handlePrev, type: "button", children: /* @__PURE__ */ jsx314(ChevronLeftIcon_default, {}) }),
7352
+ /* @__PURE__ */ jsx314("button", { className: "datepicker-title", onClick: handleTitleClick, type: "button", children: titleText }),
7353
+ /* @__PURE__ */ jsx314("button", { className: "datepicker-nav", onClick: handleNext, type: "button", children: /* @__PURE__ */ jsx314(ChevronRightIcon_default, {}) })
7367
7354
  ] }),
7368
7355
  /* @__PURE__ */ jsxs200("div", { className: "datepicker-body", children: [
7369
- pickerMode === "years" && /* @__PURE__ */ jsx315("div", { className: "datepicker-picker-grid", children: Array.from({ length: 12 }, (_, i) => {
7356
+ pickerMode === "years" && /* @__PURE__ */ jsx314("div", { className: "datepicker-picker-grid", children: Array.from({ length: 12 }, (_, i) => {
7370
7357
  const y = yearRangeStart + i;
7371
- return /* @__PURE__ */ jsx315(
7358
+ return /* @__PURE__ */ jsx314(
7372
7359
  "button",
7373
7360
  {
7374
7361
  type: "button",
@@ -7379,7 +7366,7 @@ var SingleDatePicker = (props) => {
7379
7366
  y
7380
7367
  );
7381
7368
  }) }),
7382
- pickerMode === "months" && /* @__PURE__ */ jsx315("div", { className: "datepicker-picker-grid", children: monthLabels.map((label, i) => /* @__PURE__ */ jsx315(
7369
+ pickerMode === "months" && /* @__PURE__ */ jsx314("div", { className: "datepicker-picker-grid", children: monthLabels.map((label, i) => /* @__PURE__ */ jsx314(
7383
7370
  "button",
7384
7371
  {
7385
7372
  type: "button",
@@ -7390,7 +7377,7 @@ var SingleDatePicker = (props) => {
7390
7377
  i
7391
7378
  )) }),
7392
7379
  pickerMode === "days" && /* @__PURE__ */ jsxs200(Fragment3, { children: [
7393
- /* @__PURE__ */ jsx315("div", { className: "datepicker-weekdays", children: weekdays.map((label, i) => /* @__PURE__ */ jsx315(
7380
+ /* @__PURE__ */ jsx314("div", { className: "datepicker-weekdays", children: weekdays.map((label, i) => /* @__PURE__ */ jsx314(
7394
7381
  "div",
7395
7382
  {
7396
7383
  className: clsx_default(
@@ -7402,7 +7389,7 @@ var SingleDatePicker = (props) => {
7402
7389
  },
7403
7390
  label
7404
7391
  )) }),
7405
- /* @__PURE__ */ jsx315("div", { className: "datepicker-grid", children: days.map((day, idx) => {
7392
+ /* @__PURE__ */ jsx314("div", { className: "datepicker-grid", children: days.map((day, idx) => {
7406
7393
  const t = day.date.getTime();
7407
7394
  const disabled = t < minTime || t > maxTime;
7408
7395
  const selected = value ? isSameDay(day.date, value) : false;
@@ -7412,7 +7399,7 @@ var SingleDatePicker = (props) => {
7412
7399
  const isStart = hasRange ? isSameDay(day.date, rangeStart) : false;
7413
7400
  const isEnd = hasRange ? isSameDay(day.date, rangeEnd) : false;
7414
7401
  const inRangeVal = hasRange ? isInRange(day.date, rangeStart, rangeEnd) : false;
7415
- return /* @__PURE__ */ jsx315(
7402
+ return /* @__PURE__ */ jsx314(
7416
7403
  DayCell2,
7417
7404
  {
7418
7405
  day,
@@ -7437,7 +7424,7 @@ SingleDatePicker.displayName = "SingleDatePicker";
7437
7424
  var SingleDatePicker_default = SingleDatePicker;
7438
7425
 
7439
7426
  // src/components/DatePicker/InputDatePicker/index.tsx
7440
- import { jsx as jsx316, jsxs as jsxs201 } from "react/jsx-runtime";
7427
+ import { jsx as jsx315, jsxs as jsxs201 } from "react/jsx-runtime";
7441
7428
  var formatDate = (date) => {
7442
7429
  if (!date || !(date instanceof Date) || isNaN(date.getTime())) return "";
7443
7430
  const y = date.getFullYear();
@@ -7447,8 +7434,8 @@ var formatDate = (date) => {
7447
7434
  };
7448
7435
  var InputDatePicker = (props) => {
7449
7436
  const { value, onChange, minDate, maxDate, disabled, locale = "ko", placeholder } = props;
7450
- const [isOpen, setIsOpen] = React13.useState(false);
7451
- const [tempDate, setTempDate] = React13.useState(value ?? /* @__PURE__ */ new Date());
7437
+ const [isOpen, setIsOpen] = React12.useState(false);
7438
+ const [tempDate, setTempDate] = React12.useState(value ?? /* @__PURE__ */ new Date());
7452
7439
  const handleOpen = () => {
7453
7440
  if (disabled) return;
7454
7441
  setTempDate(value ?? /* @__PURE__ */ new Date());
@@ -7465,18 +7452,18 @@ var InputDatePicker = (props) => {
7465
7452
  setIsOpen(false);
7466
7453
  };
7467
7454
  return /* @__PURE__ */ jsxs201("div", { className: clsx_default("lib-xplat-datepicker input-datepicker", disabled && "disabled"), children: [
7468
- /* @__PURE__ */ jsx316("div", { className: "input-datepicker-trigger", onClick: handleOpen, children: /* @__PURE__ */ jsx316(
7455
+ /* @__PURE__ */ jsx315("div", { className: "input-datepicker-trigger", onClick: handleOpen, children: /* @__PURE__ */ jsx315(
7469
7456
  Input_default,
7470
7457
  {
7471
7458
  value: formatDate(value),
7472
7459
  placeholder,
7473
- suffix: /* @__PURE__ */ jsx316(CalenderIcon_default, {}),
7460
+ suffix: /* @__PURE__ */ jsx315(CalenderIcon_default, {}),
7474
7461
  disabled,
7475
7462
  readOnly: true
7476
7463
  }
7477
7464
  ) }),
7478
- /* @__PURE__ */ jsx316(Modal_default, { isOpen, onClose: handleClose, children: /* @__PURE__ */ jsxs201("div", { className: "lib-xplat-popup-datepicker-card", children: [
7479
- /* @__PURE__ */ jsx316("div", { className: "popup-datepicker-content", children: /* @__PURE__ */ jsx316(
7465
+ /* @__PURE__ */ jsx315(Modal_default, { isOpen, onClose: handleClose, children: /* @__PURE__ */ jsxs201("div", { className: "lib-xplat-popup-datepicker-card", children: [
7466
+ /* @__PURE__ */ jsx315("div", { className: "popup-datepicker-content", children: /* @__PURE__ */ jsx315(
7480
7467
  SingleDatePicker_default,
7481
7468
  {
7482
7469
  value: tempDate,
@@ -7487,8 +7474,8 @@ var InputDatePicker = (props) => {
7487
7474
  }
7488
7475
  ) }),
7489
7476
  /* @__PURE__ */ jsxs201("div", { className: "popup-datepicker-footer", children: [
7490
- /* @__PURE__ */ jsx316(Button_default, { type: "secondary", onClick: handleClose, children: locale === "ko" ? "\uCDE8\uC18C" : "Cancel" }),
7491
- /* @__PURE__ */ jsx316(Button_default, { type: "primary", onClick: handleApply, children: locale === "ko" ? "\uC801\uC6A9" : "Apply" })
7477
+ /* @__PURE__ */ jsx315(Button_default, { type: "secondary", onClick: handleClose, children: locale === "ko" ? "\uCDE8\uC18C" : "Cancel" }),
7478
+ /* @__PURE__ */ jsx315(Button_default, { type: "primary", onClick: handleApply, children: locale === "ko" ? "\uC801\uC6A9" : "Apply" })
7492
7479
  ] })
7493
7480
  ] }) })
7494
7481
  ] });
@@ -7497,20 +7484,20 @@ InputDatePicker.displayName = "InputDatePicker";
7497
7484
  var InputDatePicker_default = InputDatePicker;
7498
7485
 
7499
7486
  // src/components/DatePicker/PopupPicker/index.tsx
7500
- import React17 from "react";
7487
+ import React16 from "react";
7501
7488
 
7502
7489
  // src/components/DatePicker/RangePicker/index.tsx
7503
- import React16 from "react";
7490
+ import React15 from "react";
7504
7491
 
7505
7492
  // src/components/Tab/Tab.tsx
7506
- import React15 from "react";
7493
+ import React14 from "react";
7507
7494
 
7508
7495
  // src/components/Tab/TabItem.tsx
7509
- import React14 from "react";
7510
- import { jsx as jsx317 } from "react/jsx-runtime";
7511
- var TabItem = React14.forwardRef((props, ref) => {
7496
+ import React13 from "react";
7497
+ import { jsx as jsx316 } from "react/jsx-runtime";
7498
+ var TabItem = React13.forwardRef((props, ref) => {
7512
7499
  const { isActive: isActive2, title, onClick } = props;
7513
- return /* @__PURE__ */ jsx317(
7500
+ return /* @__PURE__ */ jsx316(
7514
7501
  "div",
7515
7502
  {
7516
7503
  ref,
@@ -7524,25 +7511,25 @@ TabItem.displayName = "TabItem";
7524
7511
  var TabItem_default = TabItem;
7525
7512
 
7526
7513
  // src/components/Tab/Tab.tsx
7527
- import { jsx as jsx318, jsxs as jsxs202 } from "react/jsx-runtime";
7514
+ import { jsx as jsx317, jsxs as jsxs202 } from "react/jsx-runtime";
7528
7515
  var Tab = (props) => {
7529
7516
  const { activeIndex, onChange, tabs, type, size = "md" } = props;
7530
- const [underlineStyle, setUnderlineStyle] = React15.useState({
7517
+ const [underlineStyle, setUnderlineStyle] = React14.useState({
7531
7518
  left: 0,
7532
7519
  width: 0
7533
7520
  });
7534
- const itemRefs = React15.useRef([]);
7521
+ const itemRefs = React14.useRef([]);
7535
7522
  const handleChangeActiveTab = (tabItem, tabIdx) => {
7536
7523
  onChange(tabItem, tabIdx);
7537
7524
  };
7538
- React15.useEffect(() => {
7525
+ React14.useEffect(() => {
7539
7526
  const el = itemRefs.current[activeIndex];
7540
7527
  if (el) {
7541
7528
  setUnderlineStyle({ left: el.offsetLeft, width: el.offsetWidth });
7542
7529
  }
7543
7530
  }, [activeIndex, tabs.length]);
7544
7531
  return /* @__PURE__ */ jsxs202("div", { className: clsx_default("lib-xplat-tab", `type-${type}`, size), children: [
7545
- tabs.map((tab, idx) => /* @__PURE__ */ jsx318(
7532
+ tabs.map((tab, idx) => /* @__PURE__ */ jsx317(
7546
7533
  TabItem_default,
7547
7534
  {
7548
7535
  onClick: () => handleChangeActiveTab(tab, idx),
@@ -7554,7 +7541,7 @@ var Tab = (props) => {
7554
7541
  },
7555
7542
  `${tab.value}_${idx}`
7556
7543
  )),
7557
- type === "toggle" && /* @__PURE__ */ jsx318(
7544
+ type === "toggle" && /* @__PURE__ */ jsx317(
7558
7545
  "div",
7559
7546
  {
7560
7547
  className: "tab-toggle-underline",
@@ -7570,7 +7557,7 @@ Tab.displayName = "Tab";
7570
7557
  var Tab_default = Tab;
7571
7558
 
7572
7559
  // src/components/DatePicker/RangePicker/index.tsx
7573
- import { jsx as jsx319, jsxs as jsxs203 } from "react/jsx-runtime";
7560
+ import { jsx as jsx318, jsxs as jsxs203 } from "react/jsx-runtime";
7574
7561
  var RangePicker = (props) => {
7575
7562
  const {
7576
7563
  startDate,
@@ -7580,7 +7567,7 @@ var RangePicker = (props) => {
7580
7567
  maxDate,
7581
7568
  locale = "ko"
7582
7569
  } = props;
7583
- const [activeTab, setActiveTab] = React16.useState("start");
7570
+ const [activeTab, setActiveTab] = React15.useState("start");
7584
7571
  const handleStartChange = (date) => {
7585
7572
  if (!date) return;
7586
7573
  const newStart = date > endDate ? endDate : date;
@@ -7594,7 +7581,7 @@ var RangePicker = (props) => {
7594
7581
  const startMaxDate = maxDate && endDate < maxDate ? endDate : endDate;
7595
7582
  const endMinDate = minDate && startDate > minDate ? startDate : startDate;
7596
7583
  return /* @__PURE__ */ jsxs203("div", { className: clsx_default("lib-xplat-datepicker", "range"), children: [
7597
- /* @__PURE__ */ jsx319("div", { className: "datepicker-range-tabs", children: /* @__PURE__ */ jsx319(
7584
+ /* @__PURE__ */ jsx318("div", { className: "datepicker-range-tabs", children: /* @__PURE__ */ jsx318(
7598
7585
  Tab_default,
7599
7586
  {
7600
7587
  activeIndex: activeTab === "start" ? 0 : 1,
@@ -7608,7 +7595,7 @@ var RangePicker = (props) => {
7608
7595
  }
7609
7596
  ) }),
7610
7597
  /* @__PURE__ */ jsxs203("div", { className: "datepicker-range-panels", children: [
7611
- /* @__PURE__ */ jsx319(
7598
+ /* @__PURE__ */ jsx318(
7612
7599
  SingleDatePicker_default,
7613
7600
  {
7614
7601
  value: startDate,
@@ -7620,7 +7607,7 @@ var RangePicker = (props) => {
7620
7607
  locale
7621
7608
  }
7622
7609
  ),
7623
- /* @__PURE__ */ jsx319(
7610
+ /* @__PURE__ */ jsx318(
7624
7611
  SingleDatePicker_default,
7625
7612
  {
7626
7613
  value: endDate,
@@ -7633,7 +7620,7 @@ var RangePicker = (props) => {
7633
7620
  }
7634
7621
  )
7635
7622
  ] }),
7636
- /* @__PURE__ */ jsx319("div", { className: "datepicker-range-mobile", children: activeTab === "start" ? /* @__PURE__ */ jsx319(
7623
+ /* @__PURE__ */ jsx318("div", { className: "datepicker-range-mobile", children: activeTab === "start" ? /* @__PURE__ */ jsx318(
7637
7624
  SingleDatePicker_default,
7638
7625
  {
7639
7626
  value: startDate,
@@ -7644,7 +7631,7 @@ var RangePicker = (props) => {
7644
7631
  rangeEnd: endDate,
7645
7632
  locale
7646
7633
  }
7647
- ) : /* @__PURE__ */ jsx319(
7634
+ ) : /* @__PURE__ */ jsx318(
7648
7635
  SingleDatePicker_default,
7649
7636
  {
7650
7637
  value: endDate,
@@ -7662,10 +7649,10 @@ RangePicker.displayName = "RangePicker";
7662
7649
  var RangePicker_default = RangePicker;
7663
7650
 
7664
7651
  // src/components/DatePicker/PopupPicker/index.tsx
7665
- import { jsx as jsx320, jsxs as jsxs204 } from "react/jsx-runtime";
7652
+ import { jsx as jsx319, jsxs as jsxs204 } from "react/jsx-runtime";
7666
7653
  var PopupPicker = (props) => {
7667
7654
  const { component, type, locale } = props;
7668
- const [isOpen, setIsOpen] = React17.useState(false);
7655
+ const [isOpen, setIsOpen] = React16.useState(false);
7669
7656
  const handleClick = () => setIsOpen(true);
7670
7657
  const handleClose = () => setIsOpen(false);
7671
7658
  const handleSingleChange = (date) => {
@@ -7674,10 +7661,10 @@ var PopupPicker = (props) => {
7674
7661
  handleClose();
7675
7662
  };
7676
7663
  return /* @__PURE__ */ jsxs204("div", { className: "lib-xplat-popup-datepicker", children: [
7677
- React17.cloneElement(component, { onClick: handleClick }),
7678
- /* @__PURE__ */ jsx320(Modal_default, { isOpen, onClose: handleClose, children: /* @__PURE__ */ jsxs204("div", { className: clsx_default("lib-xplat-popup-datepicker-card", type === "range" && "range-mode"), children: [
7664
+ React16.cloneElement(component, { onClick: handleClick }),
7665
+ /* @__PURE__ */ jsx319(Modal_default, { isOpen, onClose: handleClose, children: /* @__PURE__ */ jsxs204("div", { className: clsx_default("lib-xplat-popup-datepicker-card", type === "range" && "range-mode"), children: [
7679
7666
  /* @__PURE__ */ jsxs204("div", { className: "popup-datepicker-content", children: [
7680
- type === "single" && /* @__PURE__ */ jsx320(
7667
+ type === "single" && /* @__PURE__ */ jsx319(
7681
7668
  SingleDatePicker_default,
7682
7669
  {
7683
7670
  value: props.value,
@@ -7687,7 +7674,7 @@ var PopupPicker = (props) => {
7687
7674
  locale
7688
7675
  }
7689
7676
  ),
7690
- type === "range" && /* @__PURE__ */ jsx320(
7677
+ type === "range" && /* @__PURE__ */ jsx319(
7691
7678
  RangePicker_default,
7692
7679
  {
7693
7680
  startDate: props.startDate,
@@ -7700,7 +7687,7 @@ var PopupPicker = (props) => {
7700
7687
  )
7701
7688
  ] }),
7702
7689
  /* @__PURE__ */ jsxs204("div", { className: "popup-datepicker-footer", children: [
7703
- /* @__PURE__ */ jsx320(
7690
+ /* @__PURE__ */ jsx319(
7704
7691
  Button_default,
7705
7692
  {
7706
7693
  type: "secondary",
@@ -7708,7 +7695,7 @@ var PopupPicker = (props) => {
7708
7695
  children: locale === "ko" ? "\uCDE8\uC18C" : "Cancel"
7709
7696
  }
7710
7697
  ),
7711
- /* @__PURE__ */ jsx320(Button_default, { type: "primary", onClick: handleClose, children: locale === "ko" ? "\uC801\uC6A9" : "Apply" })
7698
+ /* @__PURE__ */ jsx319(Button_default, { type: "primary", onClick: handleClose, children: locale === "ko" ? "\uC801\uC6A9" : "Apply" })
7712
7699
  ] })
7713
7700
  ] }) })
7714
7701
  ] });
@@ -7717,10 +7704,10 @@ PopupPicker.displayName = "PopupPicker";
7717
7704
  var PopupPicker_default = PopupPicker;
7718
7705
 
7719
7706
  // src/components/Divider/Divider.tsx
7720
- import { jsx as jsx321 } from "react/jsx-runtime";
7707
+ import { jsx as jsx320 } from "react/jsx-runtime";
7721
7708
  var Divider = (props) => {
7722
7709
  const { orientation = "horizontal" } = props;
7723
- return /* @__PURE__ */ jsx321(
7710
+ return /* @__PURE__ */ jsx320(
7724
7711
  "div",
7725
7712
  {
7726
7713
  className: clsx_default("lib-xplat-divider", orientation),
@@ -7733,15 +7720,15 @@ Divider.displayName = "Divider";
7733
7720
  var Divider_default = Divider;
7734
7721
 
7735
7722
  // src/components/Drawer/Drawer.tsx
7736
- import React18 from "react";
7723
+ import React17 from "react";
7737
7724
  import { createPortal as createPortal2 } from "react-dom";
7738
- import { jsx as jsx322, jsxs as jsxs205 } from "react/jsx-runtime";
7725
+ import { jsx as jsx321, jsxs as jsxs205 } from "react/jsx-runtime";
7739
7726
  var ANIMATION_DURATION_MS2 = 250;
7740
7727
  var Drawer = (props) => {
7741
7728
  const { isOpen, onClose, placement = "right", size = "md", title, children } = props;
7742
- const [mounted, setMounted] = React18.useState(false);
7743
- const [visible, setVisible] = React18.useState(false);
7744
- React18.useEffect(() => {
7729
+ const [mounted, setMounted] = React17.useState(false);
7730
+ const [visible, setVisible] = React17.useState(false);
7731
+ React17.useEffect(() => {
7745
7732
  if (isOpen) {
7746
7733
  setMounted(true);
7747
7734
  const t2 = setTimeout(() => setVisible(true), 1);
@@ -7755,7 +7742,7 @@ var Drawer = (props) => {
7755
7742
  if (!mounted) return null;
7756
7743
  const stateClass = visible ? "enter" : "exit";
7757
7744
  return createPortal2(
7758
- /* @__PURE__ */ jsx322(
7745
+ /* @__PURE__ */ jsx321(
7759
7746
  "div",
7760
7747
  {
7761
7748
  className: clsx_default("lib-xplat-drawer-overlay", stateClass),
@@ -7769,10 +7756,10 @@ var Drawer = (props) => {
7769
7756
  onClick: (e) => e.stopPropagation(),
7770
7757
  children: [
7771
7758
  title && /* @__PURE__ */ jsxs205("div", { className: "drawer-header", children: [
7772
- /* @__PURE__ */ jsx322("span", { className: "drawer-title", children: title }),
7773
- /* @__PURE__ */ jsx322("button", { className: "close-btn", onClick: onClose, "aria-label": "\uB2EB\uAE30", children: "\xD7" })
7759
+ /* @__PURE__ */ jsx321("span", { className: "drawer-title", children: title }),
7760
+ /* @__PURE__ */ jsx321("button", { className: "close-btn", onClick: onClose, "aria-label": "\uB2EB\uAE30", children: "\xD7" })
7774
7761
  ] }),
7775
- /* @__PURE__ */ jsx322("div", { className: "drawer-body", children })
7762
+ /* @__PURE__ */ jsx321("div", { className: "drawer-body", children })
7776
7763
  ]
7777
7764
  }
7778
7765
  )
@@ -7785,16 +7772,25 @@ Drawer.displayName = "Drawer";
7785
7772
  var Drawer_default = Drawer;
7786
7773
 
7787
7774
  // src/components/Dropdown/Dropdown.tsx
7788
- import React21 from "react";
7775
+ import React20 from "react";
7776
+
7777
+ // src/tokens/hooks/Portal.tsx
7778
+ import ReactDOM from "react-dom";
7779
+ var Portal = ({ children }) => {
7780
+ if (typeof document === "undefined") return null;
7781
+ return ReactDOM.createPortal(children, document.body);
7782
+ };
7783
+ Portal.displayName = "Portal";
7784
+ var Portal_default = Portal;
7789
7785
 
7790
7786
  // src/tokens/hooks/useAutoPosition.ts
7791
- import React19 from "react";
7787
+ import React18 from "react";
7792
7788
  var useAutoPosition = (triggerRef, popRef, enabled = true) => {
7793
- const [position, setPosition] = React19.useState({
7789
+ const [position, setPosition] = React18.useState({
7794
7790
  position: {},
7795
7791
  direction: "bottom"
7796
7792
  });
7797
- const calculatePosition = React19.useCallback(() => {
7793
+ const calculatePosition = React18.useCallback(() => {
7798
7794
  if (!triggerRef.current || !popRef.current) return;
7799
7795
  const triggerRect = triggerRef.current.getBoundingClientRect();
7800
7796
  const popW = popRef.current.offsetWidth;
@@ -7821,13 +7817,13 @@ var useAutoPosition = (triggerRef, popRef, enabled = true) => {
7821
7817
  direction
7822
7818
  });
7823
7819
  }, [triggerRef, popRef]);
7824
- React19.useLayoutEffect(() => {
7820
+ React18.useLayoutEffect(() => {
7825
7821
  if (!enabled) return;
7826
7822
  calculatePosition();
7827
7823
  const raf = requestAnimationFrame(calculatePosition);
7828
7824
  return () => cancelAnimationFrame(raf);
7829
7825
  }, [calculatePosition, enabled]);
7830
- React19.useEffect(() => {
7826
+ React18.useEffect(() => {
7831
7827
  if (!enabled || !popRef.current) return;
7832
7828
  const observer = new ResizeObserver(() => {
7833
7829
  calculatePosition();
@@ -7835,7 +7831,7 @@ var useAutoPosition = (triggerRef, popRef, enabled = true) => {
7835
7831
  observer.observe(popRef.current);
7836
7832
  return () => observer.disconnect();
7837
7833
  }, [calculatePosition, enabled, popRef]);
7838
- React19.useEffect(() => {
7834
+ React18.useEffect(() => {
7839
7835
  if (!enabled) return;
7840
7836
  window.addEventListener("resize", calculatePosition);
7841
7837
  window.addEventListener("scroll", calculatePosition, true);
@@ -7849,9 +7845,9 @@ var useAutoPosition = (triggerRef, popRef, enabled = true) => {
7849
7845
  var useAutoPosition_default = useAutoPosition;
7850
7846
 
7851
7847
  // src/tokens/hooks/useClickOutside.ts
7852
- import React20 from "react";
7848
+ import React19 from "react";
7853
7849
  var useClickOutside = (refs, handler, enabled = true) => {
7854
- React20.useEffect(() => {
7850
+ React19.useEffect(() => {
7855
7851
  if (!enabled) return;
7856
7852
  const refArray = Array.isArray(refs) ? refs : [refs];
7857
7853
  const listener = (event) => {
@@ -7874,17 +7870,17 @@ var useClickOutside = (refs, handler, enabled = true) => {
7874
7870
  var useClickOutside_default = useClickOutside;
7875
7871
 
7876
7872
  // src/components/Dropdown/Dropdown.tsx
7877
- import { jsx as jsx323, jsxs as jsxs206 } from "react/jsx-runtime";
7873
+ import { jsx as jsx322, jsxs as jsxs206 } from "react/jsx-runtime";
7878
7874
  var Dropdown = (props) => {
7879
7875
  const { items, children } = props;
7880
- const [isOpen, setIsOpen] = React21.useState(false);
7881
- const [mounted, setMounted] = React21.useState(false);
7882
- const [visible, setVisible] = React21.useState(false);
7883
- const triggerRef = React21.useRef(null);
7884
- const menuRef = React21.useRef(null);
7876
+ const [isOpen, setIsOpen] = React20.useState(false);
7877
+ const [mounted, setMounted] = React20.useState(false);
7878
+ const [visible, setVisible] = React20.useState(false);
7879
+ const triggerRef = React20.useRef(null);
7880
+ const menuRef = React20.useRef(null);
7885
7881
  const { position, direction } = useAutoPosition_default(triggerRef, menuRef, mounted);
7886
7882
  useClickOutside_default([triggerRef, menuRef], () => setIsOpen(false), isOpen);
7887
- React21.useEffect(() => {
7883
+ React20.useEffect(() => {
7888
7884
  if (isOpen) {
7889
7885
  setMounted(true);
7890
7886
  const t2 = setTimeout(() => setVisible(true), 1);
@@ -7900,7 +7896,7 @@ var Dropdown = (props) => {
7900
7896
  setIsOpen(false);
7901
7897
  };
7902
7898
  return /* @__PURE__ */ jsxs206("div", { className: "lib-xplat-dropdown", children: [
7903
- /* @__PURE__ */ jsx323(
7899
+ /* @__PURE__ */ jsx322(
7904
7900
  "div",
7905
7901
  {
7906
7902
  ref: triggerRef,
@@ -7909,14 +7905,14 @@ var Dropdown = (props) => {
7909
7905
  children
7910
7906
  }
7911
7907
  ),
7912
- mounted && /* @__PURE__ */ jsx323(Portal_default, { children: /* @__PURE__ */ jsx323(
7908
+ mounted && /* @__PURE__ */ jsx322(Portal_default, { children: /* @__PURE__ */ jsx322(
7913
7909
  "div",
7914
7910
  {
7915
7911
  ref: menuRef,
7916
7912
  className: clsx_default("lib-xplat-dropdown-menu", direction, { visible }),
7917
7913
  style: { top: position.top, left: position.left },
7918
7914
  role: "menu",
7919
- children: items.map((item) => /* @__PURE__ */ jsx323(
7915
+ children: items.map((item) => /* @__PURE__ */ jsx322(
7920
7916
  "button",
7921
7917
  {
7922
7918
  className: clsx_default("dropdown-item", {
@@ -7938,8 +7934,8 @@ Dropdown.displayName = "Dropdown";
7938
7934
  var Dropdown_default = Dropdown;
7939
7935
 
7940
7936
  // src/components/Editor/Editor.tsx
7941
- import React22 from "react";
7942
- import { jsx as jsx324, jsxs as jsxs207 } from "react/jsx-runtime";
7937
+ import React21 from "react";
7938
+ import { jsx as jsx323, jsxs as jsxs207 } from "react/jsx-runtime";
7943
7939
  var DEFAULT_TOOLBAR = [
7944
7940
  "bold",
7945
7941
  "italic",
@@ -8046,21 +8042,21 @@ var Editor = (props) => {
8046
8042
  onImageUpload,
8047
8043
  minHeight = 200
8048
8044
  } = props;
8049
- const editorRef = React22.useRef(null);
8050
- const lastRangeRef = React22.useRef(null);
8051
- const composingRef = React22.useRef(false);
8052
- const [isFocused, setIsFocused] = React22.useState(false);
8053
- const [isEmpty, setIsEmpty] = React22.useState(!value);
8054
- const [activeFormats, setActiveFormats] = React22.useState(/* @__PURE__ */ new Set());
8055
- const [slashOpen, setSlashOpen] = React22.useState(false);
8056
- const [slashFilter, setSlashFilter] = React22.useState("");
8057
- const [slashIdx, setSlashIdx] = React22.useState(0);
8058
- const [slashPos, setSlashPos] = React22.useState({ top: 0, left: 0 });
8059
- const slashStartRangeRef = React22.useRef(null);
8060
- const [linkOpen, setLinkOpen] = React22.useState(false);
8061
- const [linkValue, setLinkValue] = React22.useState("");
8062
- const [linkPos, setLinkPos] = React22.useState({ top: 0, left: 0 });
8063
- React22.useEffect(() => {
8045
+ const editorRef = React21.useRef(null);
8046
+ const lastRangeRef = React21.useRef(null);
8047
+ const composingRef = React21.useRef(false);
8048
+ const [isFocused, setIsFocused] = React21.useState(false);
8049
+ const [isEmpty, setIsEmpty] = React21.useState(!value);
8050
+ const [activeFormats, setActiveFormats] = React21.useState(/* @__PURE__ */ new Set());
8051
+ const [slashOpen, setSlashOpen] = React21.useState(false);
8052
+ const [slashFilter, setSlashFilter] = React21.useState("");
8053
+ const [slashIdx, setSlashIdx] = React21.useState(0);
8054
+ const [slashPos, setSlashPos] = React21.useState({ top: 0, left: 0 });
8055
+ const slashStartRangeRef = React21.useRef(null);
8056
+ const [linkOpen, setLinkOpen] = React21.useState(false);
8057
+ const [linkValue, setLinkValue] = React21.useState("");
8058
+ const [linkPos, setLinkPos] = React21.useState({ top: 0, left: 0 });
8059
+ React21.useEffect(() => {
8064
8060
  if (!editorRef.current) return;
8065
8061
  if (editorRef.current.innerHTML !== value) {
8066
8062
  editorRef.current.innerHTML = sanitizeHtml(value || "");
@@ -8174,7 +8170,7 @@ var Editor = (props) => {
8174
8170
  setSlashIdx(0);
8175
8171
  slashStartRangeRef.current = null;
8176
8172
  };
8177
- const filteredSlashItems = React22.useMemo(() => {
8173
+ const filteredSlashItems = React21.useMemo(() => {
8178
8174
  if (!slashFilter) return SLASH_ITEMS;
8179
8175
  const f = slashFilter.toLowerCase();
8180
8176
  return SLASH_ITEMS.filter((it) => it.label.toLowerCase().includes(f) || it.key.includes(f));
@@ -8460,7 +8456,7 @@ var Editor = (props) => {
8460
8456
  }
8461
8457
  };
8462
8458
  return /* @__PURE__ */ jsxs207("div", { className: clsx_default("lib-xplat-editor", isFocused && "focused", readOnly && "readonly"), children: [
8463
- !readOnly && /* @__PURE__ */ jsx324(
8459
+ !readOnly && /* @__PURE__ */ jsx323(
8464
8460
  EditorToolbar,
8465
8461
  {
8466
8462
  items: toolbar,
@@ -8469,8 +8465,8 @@ var Editor = (props) => {
8469
8465
  }
8470
8466
  ),
8471
8467
  /* @__PURE__ */ jsxs207("div", { className: "lib-xplat-editor__content", style: { minHeight }, children: [
8472
- isEmpty && !isFocused && /* @__PURE__ */ jsx324("div", { className: "lib-xplat-editor__placeholder", children: placeholder }),
8473
- /* @__PURE__ */ jsx324(
8468
+ isEmpty && !isFocused && /* @__PURE__ */ jsx323("div", { className: "lib-xplat-editor__placeholder", children: placeholder }),
8469
+ /* @__PURE__ */ jsx323(
8474
8470
  "div",
8475
8471
  {
8476
8472
  ref: editorRef,
@@ -8489,7 +8485,7 @@ var Editor = (props) => {
8489
8485
  spellCheck: true
8490
8486
  }
8491
8487
  ),
8492
- slashOpen && filteredSlashItems.length > 0 && /* @__PURE__ */ jsx324(
8488
+ slashOpen && filteredSlashItems.length > 0 && /* @__PURE__ */ jsx323(
8493
8489
  SlashMenu,
8494
8490
  {
8495
8491
  position: slashPos,
@@ -8499,7 +8495,7 @@ var Editor = (props) => {
8499
8495
  onClose: closeSlashMenu
8500
8496
  }
8501
8497
  ),
8502
- linkOpen && /* @__PURE__ */ jsx324(
8498
+ linkOpen && /* @__PURE__ */ jsx323(
8503
8499
  LinkPopover,
8504
8500
  {
8505
8501
  position: linkPos,
@@ -8551,7 +8547,7 @@ var isActive = (item, active) => {
8551
8547
  return active.has(item);
8552
8548
  };
8553
8549
  var EditorToolbar = ({ items, active, onAction }) => {
8554
- return /* @__PURE__ */ jsx324("div", { className: "lib-xplat-editor__toolbar", children: items.map((item) => /* @__PURE__ */ jsx324(
8550
+ return /* @__PURE__ */ jsx323("div", { className: "lib-xplat-editor__toolbar", children: items.map((item) => /* @__PURE__ */ jsx323(
8555
8551
  "button",
8556
8552
  {
8557
8553
  type: "button",
@@ -8567,7 +8563,7 @@ var EditorToolbar = ({ items, active, onAction }) => {
8567
8563
  )) });
8568
8564
  };
8569
8565
  var SlashMenu = ({ position, items, activeIndex, onSelect, onClose }) => {
8570
- React22.useEffect(() => {
8566
+ React21.useEffect(() => {
8571
8567
  const handleClickOutside = (e) => {
8572
8568
  const target = e.target;
8573
8569
  const menu = document.querySelector(".lib-xplat-editor__slash-menu");
@@ -8576,7 +8572,7 @@ var SlashMenu = ({ position, items, activeIndex, onSelect, onClose }) => {
8576
8572
  window.addEventListener("mousedown", handleClickOutside);
8577
8573
  return () => window.removeEventListener("mousedown", handleClickOutside);
8578
8574
  }, [onClose]);
8579
- return /* @__PURE__ */ jsx324(
8575
+ return /* @__PURE__ */ jsx323(
8580
8576
  "div",
8581
8577
  {
8582
8578
  className: "lib-xplat-editor__slash-menu",
@@ -8591,8 +8587,8 @@ var SlashMenu = ({ position, items, activeIndex, onSelect, onClose }) => {
8591
8587
  onSelect(item);
8592
8588
  },
8593
8589
  children: [
8594
- /* @__PURE__ */ jsx324("span", { className: "label", children: item.label }),
8595
- item.hint && /* @__PURE__ */ jsx324("span", { className: "hint", children: item.hint })
8590
+ /* @__PURE__ */ jsx323("span", { className: "label", children: item.label }),
8591
+ item.hint && /* @__PURE__ */ jsx323("span", { className: "hint", children: item.hint })
8596
8592
  ]
8597
8593
  },
8598
8594
  item.key
@@ -8601,8 +8597,8 @@ var SlashMenu = ({ position, items, activeIndex, onSelect, onClose }) => {
8601
8597
  );
8602
8598
  };
8603
8599
  var LinkPopover = ({ position, value, onChange, onConfirm, onClose }) => {
8604
- const inputRef = React22.useRef(null);
8605
- React22.useEffect(() => {
8600
+ const inputRef = React21.useRef(null);
8601
+ React21.useEffect(() => {
8606
8602
  inputRef.current?.focus();
8607
8603
  }, []);
8608
8604
  return /* @__PURE__ */ jsxs207(
@@ -8611,7 +8607,7 @@ var LinkPopover = ({ position, value, onChange, onConfirm, onClose }) => {
8611
8607
  className: "lib-xplat-editor__link-popover",
8612
8608
  style: { top: position.top, left: position.left },
8613
8609
  children: [
8614
- /* @__PURE__ */ jsx324(
8610
+ /* @__PURE__ */ jsx323(
8615
8611
  "input",
8616
8612
  {
8617
8613
  ref: inputRef,
@@ -8631,11 +8627,11 @@ var LinkPopover = ({ position, value, onChange, onConfirm, onClose }) => {
8631
8627
  }
8632
8628
  }
8633
8629
  ),
8634
- /* @__PURE__ */ jsx324("button", { type: "button", onMouseDown: (e) => {
8630
+ /* @__PURE__ */ jsx323("button", { type: "button", onMouseDown: (e) => {
8635
8631
  e.preventDefault();
8636
8632
  onConfirm();
8637
8633
  }, children: "\uC801\uC6A9" }),
8638
- /* @__PURE__ */ jsx324("button", { type: "button", onMouseDown: (e) => {
8634
+ /* @__PURE__ */ jsx323("button", { type: "button", onMouseDown: (e) => {
8639
8635
  e.preventDefault();
8640
8636
  onClose();
8641
8637
  }, children: "\uCDE8\uC18C" })
@@ -8645,23 +8641,23 @@ var LinkPopover = ({ position, value, onChange, onConfirm, onClose }) => {
8645
8641
  };
8646
8642
 
8647
8643
  // src/components/EmptyState/EmptyState.tsx
8648
- import { jsx as jsx325, jsxs as jsxs208 } from "react/jsx-runtime";
8644
+ import { jsx as jsx324, jsxs as jsxs208 } from "react/jsx-runtime";
8649
8645
  var EmptyState = (props) => {
8650
8646
  const { icon, title = "\uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4", description, action } = props;
8651
8647
  return /* @__PURE__ */ jsxs208("div", { className: "lib-xplat-empty-state", children: [
8652
- icon && /* @__PURE__ */ jsx325("div", { className: "empty-icon", children: icon }),
8653
- !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" }) }) }),
8654
- /* @__PURE__ */ jsx325("p", { className: "empty-title", children: title }),
8655
- description && /* @__PURE__ */ jsx325("p", { className: "empty-description", children: description }),
8656
- action && /* @__PURE__ */ jsx325("div", { className: "empty-action", children: action })
8648
+ icon && /* @__PURE__ */ jsx324("div", { className: "empty-icon", children: icon }),
8649
+ !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" }) }) }),
8650
+ /* @__PURE__ */ jsx324("p", { className: "empty-title", children: title }),
8651
+ description && /* @__PURE__ */ jsx324("p", { className: "empty-description", children: description }),
8652
+ action && /* @__PURE__ */ jsx324("div", { className: "empty-action", children: action })
8657
8653
  ] });
8658
8654
  };
8659
8655
  EmptyState.displayName = "EmptyState";
8660
8656
  var EmptyState_default = EmptyState;
8661
8657
 
8662
8658
  // src/components/FileUpload/FileUpload.tsx
8663
- import React23 from "react";
8664
- import { jsx as jsx326, jsxs as jsxs209 } from "react/jsx-runtime";
8659
+ import React22 from "react";
8660
+ import { jsx as jsx325, jsxs as jsxs209 } from "react/jsx-runtime";
8665
8661
  var FileUpload = (props) => {
8666
8662
  const {
8667
8663
  accept,
@@ -8671,8 +8667,8 @@ var FileUpload = (props) => {
8671
8667
  label = "\uD30C\uC77C\uC744 \uB4DC\uB798\uADF8\uD558\uAC70\uB098 \uD074\uB9AD\uD558\uC5EC \uC5C5\uB85C\uB4DC",
8672
8668
  description
8673
8669
  } = props;
8674
- const [isDragOver, setIsDragOver] = React23.useState(false);
8675
- const inputRef = React23.useRef(null);
8670
+ const [isDragOver, setIsDragOver] = React22.useState(false);
8671
+ const inputRef = React22.useRef(null);
8676
8672
  const handleFiles = (fileList) => {
8677
8673
  let files = Array.from(fileList);
8678
8674
  if (maxSize) {
@@ -8711,7 +8707,7 @@ var FileUpload = (props) => {
8711
8707
  onDragLeave: handleDragLeave,
8712
8708
  onClick: () => inputRef.current?.click(),
8713
8709
  children: [
8714
- /* @__PURE__ */ jsx326(
8710
+ /* @__PURE__ */ jsx325(
8715
8711
  "input",
8716
8712
  {
8717
8713
  ref: inputRef,
@@ -8721,9 +8717,9 @@ var FileUpload = (props) => {
8721
8717
  onChange: handleChange
8722
8718
  }
8723
8719
  ),
8724
- /* @__PURE__ */ jsx326("div", { className: "upload-icon", children: /* @__PURE__ */ jsx326(UploadIcon_default, {}) }),
8725
- /* @__PURE__ */ jsx326("p", { className: "upload-label", children: label }),
8726
- description && /* @__PURE__ */ jsx326("p", { className: "upload-description", children: description })
8720
+ /* @__PURE__ */ jsx325("div", { className: "upload-icon", children: /* @__PURE__ */ jsx325(UploadIcon_default, {}) }),
8721
+ /* @__PURE__ */ jsx325("p", { className: "upload-label", children: label }),
8722
+ description && /* @__PURE__ */ jsx325("p", { className: "upload-description", children: description })
8727
8723
  ]
8728
8724
  }
8729
8725
  );
@@ -8732,10 +8728,10 @@ FileUpload.displayName = "FileUpload";
8732
8728
  var FileUpload_default = FileUpload;
8733
8729
 
8734
8730
  // src/components/HtmlTypeWriter/HtmlTypeWriter.tsx
8735
- import React25 from "react";
8731
+ import React24 from "react";
8736
8732
 
8737
8733
  // src/components/HtmlTypeWriter/utils.ts
8738
- import React24 from "react";
8734
+ import React23 from "react";
8739
8735
  var voidTags = /* @__PURE__ */ new Set([
8740
8736
  "br",
8741
8737
  "img",
@@ -8803,41 +8799,41 @@ var convertNodeToReactWithRange = (node, typedLen, rangeMap) => {
8803
8799
  props[attr.name] = attr.value;
8804
8800
  });
8805
8801
  if (voidTags.has(tag)) {
8806
- return React24.createElement(tag, props);
8802
+ return React23.createElement(tag, props);
8807
8803
  }
8808
8804
  const children = Array.from(element.childNodes).map((child) => convertNodeToReactWithRange(child, typedLen, rangeMap)).filter((n) => n != null);
8809
- return React24.createElement(tag, props, ...children);
8805
+ return React23.createElement(tag, props, ...children);
8810
8806
  };
8811
8807
  var htmlToReactProgressive = (root, typedLen, rangeMap) => {
8812
8808
  const nodes = Array.from(root.childNodes).map((child, idx) => {
8813
8809
  const node = convertNodeToReactWithRange(child, typedLen, rangeMap);
8814
- return node == null ? null : React24.createElement(React24.Fragment, { key: idx }, node);
8810
+ return node == null ? null : React23.createElement(React23.Fragment, { key: idx }, node);
8815
8811
  }).filter(Boolean);
8816
8812
  return nodes.length === 0 ? null : nodes;
8817
8813
  };
8818
8814
 
8819
8815
  // src/components/HtmlTypeWriter/HtmlTypeWriter.tsx
8820
- import { jsx as jsx327 } from "react/jsx-runtime";
8816
+ import { jsx as jsx326 } from "react/jsx-runtime";
8821
8817
  var HtmlTypeWriter = ({
8822
8818
  html,
8823
8819
  duration = 20,
8824
8820
  onDone,
8825
8821
  onChange
8826
8822
  }) => {
8827
- const [typedLen, setTypedLen] = React25.useState(0);
8828
- const doneCalledRef = React25.useRef(false);
8829
- const { doc, rangeMap, totalLength } = React25.useMemo(() => {
8823
+ const [typedLen, setTypedLen] = React24.useState(0);
8824
+ const doneCalledRef = React24.useRef(false);
8825
+ const { doc, rangeMap, totalLength } = React24.useMemo(() => {
8830
8826
  if (typeof window === "undefined") return { doc: null, rangeMap: /* @__PURE__ */ new Map(), totalLength: 0 };
8831
8827
  const decoded = decodeHtmlEntities(html);
8832
8828
  const doc2 = new DOMParser().parseFromString(decoded, "text/html");
8833
8829
  const { rangeMap: rangeMap2, totalLength: totalLength2 } = buildRangeMap(doc2.body);
8834
8830
  return { doc: doc2, rangeMap: rangeMap2, totalLength: totalLength2 };
8835
8831
  }, [html]);
8836
- React25.useEffect(() => {
8832
+ React24.useEffect(() => {
8837
8833
  setTypedLen(0);
8838
8834
  doneCalledRef.current = false;
8839
8835
  }, [html]);
8840
- React25.useEffect(() => {
8836
+ React24.useEffect(() => {
8841
8837
  if (!totalLength) return;
8842
8838
  if (typedLen >= totalLength) return;
8843
8839
  const timer = window.setInterval(() => {
@@ -8845,33 +8841,33 @@ var HtmlTypeWriter = ({
8845
8841
  }, duration);
8846
8842
  return () => window.clearInterval(timer);
8847
8843
  }, [typedLen, totalLength, duration]);
8848
- React25.useEffect(() => {
8844
+ React24.useEffect(() => {
8849
8845
  if (typedLen > 0 && typedLen < totalLength) {
8850
8846
  onChange?.();
8851
8847
  }
8852
8848
  }, [typedLen, totalLength, onChange]);
8853
- React25.useEffect(() => {
8849
+ React24.useEffect(() => {
8854
8850
  if (typedLen === totalLength && totalLength > 0 && !doneCalledRef.current) {
8855
8851
  doneCalledRef.current = true;
8856
8852
  onDone?.();
8857
8853
  }
8858
8854
  }, [typedLen, totalLength, onDone]);
8859
- const parsed = React25.useMemo(
8855
+ const parsed = React24.useMemo(
8860
8856
  () => doc ? htmlToReactProgressive(doc.body, typedLen, rangeMap) : null,
8861
8857
  [doc, typedLen, rangeMap]
8862
8858
  );
8863
- return /* @__PURE__ */ jsx327("div", { className: "lib-xplat-htmlTypewriter", children: parsed });
8859
+ return /* @__PURE__ */ jsx326("div", { className: "lib-xplat-htmlTypewriter", children: parsed });
8864
8860
  };
8865
8861
  HtmlTypeWriter.displayName = "HtmlTypeWriter";
8866
8862
  var HtmlTypeWriter_default = HtmlTypeWriter;
8867
8863
 
8868
8864
  // src/components/ImageSelector/ImageSelector.tsx
8869
- import React26 from "react";
8870
- import { jsx as jsx328, jsxs as jsxs210 } from "react/jsx-runtime";
8865
+ import React25 from "react";
8866
+ import { jsx as jsx327, jsxs as jsxs210 } from "react/jsx-runtime";
8871
8867
  var ImageSelector = (props) => {
8872
8868
  const { value, label, onChange } = props;
8873
- const [previewUrl, setPreviewUrl] = React26.useState();
8874
- React26.useEffect(() => {
8869
+ const [previewUrl, setPreviewUrl] = React25.useState();
8870
+ React25.useEffect(() => {
8875
8871
  if (!value) {
8876
8872
  setPreviewUrl(void 0);
8877
8873
  return;
@@ -8880,7 +8876,7 @@ var ImageSelector = (props) => {
8880
8876
  setPreviewUrl(url);
8881
8877
  return () => URL.revokeObjectURL(url);
8882
8878
  }, [value]);
8883
- const inputRef = React26.useRef(null);
8879
+ const inputRef = React25.useRef(null);
8884
8880
  const handleFileChange = (e) => {
8885
8881
  const selectedFile = e.target.files?.[0];
8886
8882
  if (selectedFile) {
@@ -8894,7 +8890,7 @@ var ImageSelector = (props) => {
8894
8890
  inputRef.current?.click();
8895
8891
  };
8896
8892
  return /* @__PURE__ */ jsxs210("div", { className: `lib-xplat-imageselector${value ? "" : " none-value"}`, children: [
8897
- /* @__PURE__ */ jsx328(
8893
+ /* @__PURE__ */ jsx327(
8898
8894
  "input",
8899
8895
  {
8900
8896
  type: "file",
@@ -8905,12 +8901,12 @@ var ImageSelector = (props) => {
8905
8901
  }
8906
8902
  ),
8907
8903
  value && /* @__PURE__ */ jsxs210("div", { className: "action-bar", children: [
8908
- /* @__PURE__ */ jsx328("div", { className: "icon-wrapper", onClick: handleOpenFileDialog, children: /* @__PURE__ */ jsx328(UploadIcon_default, {}) }),
8909
- /* @__PURE__ */ jsx328("div", { className: "icon-wrapper", onClick: handleDeleteFile, children: /* @__PURE__ */ jsx328(DeleteIcon_default, {}) })
8904
+ /* @__PURE__ */ jsx327("div", { className: "icon-wrapper", onClick: handleOpenFileDialog, children: /* @__PURE__ */ jsx327(UploadIcon_default, {}) }),
8905
+ /* @__PURE__ */ jsx327("div", { className: "icon-wrapper", onClick: handleDeleteFile, children: /* @__PURE__ */ jsx327(DeleteIcon_default, {}) })
8910
8906
  ] }),
8911
- /* @__PURE__ */ jsx328("div", { className: "content", children: previewUrl ? /* @__PURE__ */ jsx328("img", { src: previewUrl, alt: "preview" }) : /* @__PURE__ */ jsxs210("div", { className: "skeleton", onClick: handleOpenFileDialog, children: [
8912
- /* @__PURE__ */ jsx328("div", { className: "icon-wrapper", children: /* @__PURE__ */ jsx328(ImageIcon_default, {}) }),
8913
- /* @__PURE__ */ jsx328("div", { className: "label", children: label || "\uC774\uBBF8\uC9C0 \uCD94\uAC00\uD558\uAE30" })
8907
+ /* @__PURE__ */ jsx327("div", { className: "content", children: previewUrl ? /* @__PURE__ */ jsx327("img", { src: previewUrl, alt: "preview" }) : /* @__PURE__ */ jsxs210("div", { className: "skeleton", onClick: handleOpenFileDialog, children: [
8908
+ /* @__PURE__ */ jsx327("div", { className: "icon-wrapper", children: /* @__PURE__ */ jsx327(ImageIcon_default, {}) }),
8909
+ /* @__PURE__ */ jsx327("div", { className: "label", children: label || "\uC774\uBBF8\uC9C0 \uCD94\uAC00\uD558\uAE30" })
8914
8910
  ] }) })
8915
8911
  ] });
8916
8912
  };
@@ -8918,10 +8914,10 @@ ImageSelector.displayName = "ImageSelector";
8918
8914
  var ImageSelector_default = ImageSelector;
8919
8915
 
8920
8916
  // src/components/Link/Link.tsx
8921
- import { jsx as jsx329 } from "react/jsx-runtime";
8917
+ import { jsx as jsx328 } from "react/jsx-runtime";
8922
8918
  var Link = (props) => {
8923
8919
  const { children, href, underline = "always", target, rel, ...rest } = props;
8924
- return /* @__PURE__ */ jsx329(
8920
+ return /* @__PURE__ */ jsx328(
8925
8921
  "a",
8926
8922
  {
8927
8923
  className: clsx_default("lib-xplat-link", `underline-${underline}`),
@@ -8937,10 +8933,10 @@ Link.displayName = "Link";
8937
8933
  var Link_default = Link;
8938
8934
 
8939
8935
  // src/components/LinkButton/LinkButton.tsx
8940
- import { jsx as jsx330 } from "react/jsx-runtime";
8936
+ import { jsx as jsx329 } from "react/jsx-runtime";
8941
8937
  var LinkButton = (props) => {
8942
8938
  const { children, href, type = "primary", size = "md", target, rel, ...rest } = props;
8943
- return /* @__PURE__ */ jsx330(
8939
+ return /* @__PURE__ */ jsx329(
8944
8940
  "a",
8945
8941
  {
8946
8942
  className: clsx_default("lib-xplat-button", type, size),
@@ -8956,7 +8952,7 @@ LinkButton.displayName = "LinkButton";
8956
8952
  var LinkButton_default = LinkButton;
8957
8953
 
8958
8954
  // src/components/NotificationBadge/NotificationBadge.tsx
8959
- import { jsx as jsx331, jsxs as jsxs211 } from "react/jsx-runtime";
8955
+ import { jsx as jsx330, jsxs as jsxs211 } from "react/jsx-runtime";
8960
8956
  var NotificationBadge = (props) => {
8961
8957
  const {
8962
8958
  children,
@@ -8970,14 +8966,14 @@ var NotificationBadge = (props) => {
8970
8966
  const displayCount = count !== void 0 && count > maxCount ? `${maxCount}+` : count;
8971
8967
  return /* @__PURE__ */ jsxs211("div", { className: clsx_default("lib-xplat-notification-badge", size), children: [
8972
8968
  children,
8973
- showBadge && /* @__PURE__ */ jsx331("span", { className: clsx_default("badge-indicator", type, { dot }), children: !dot && displayCount })
8969
+ showBadge && /* @__PURE__ */ jsx330("span", { className: clsx_default("badge-indicator", type, { dot }), children: !dot && displayCount })
8974
8970
  ] });
8975
8971
  };
8976
8972
  NotificationBadge.displayName = "NotificationBadge";
8977
8973
  var NotificationBadge_default = NotificationBadge;
8978
8974
 
8979
8975
  // src/components/Pagination/Pagination.tsx
8980
- import { jsx as jsx332, jsxs as jsxs212 } from "react/jsx-runtime";
8976
+ import { jsx as jsx331, jsxs as jsxs212 } from "react/jsx-runtime";
8981
8977
  var getPageRange = (current, totalPages, siblingCount) => {
8982
8978
  const totalNumbers = siblingCount * 2 + 5;
8983
8979
  if (totalPages <= totalNumbers) {
@@ -9021,18 +9017,18 @@ var Pagination = (props) => {
9021
9017
  }
9022
9018
  };
9023
9019
  return /* @__PURE__ */ jsxs212("nav", { className: clsx_default("lib-xplat-pagination", size, type), "aria-label": "\uD398\uC774\uC9C0 \uB124\uBE44\uAC8C\uC774\uC158", children: [
9024
- /* @__PURE__ */ jsx332(
9020
+ /* @__PURE__ */ jsx331(
9025
9021
  "button",
9026
9022
  {
9027
9023
  className: "page-btn prev",
9028
9024
  disabled: current <= 1,
9029
9025
  onClick: () => handleClick(current - 1),
9030
9026
  "aria-label": "\uC774\uC804 \uD398\uC774\uC9C0",
9031
- children: /* @__PURE__ */ jsx332(ChevronLeftIcon_default, {})
9027
+ children: /* @__PURE__ */ jsx331(ChevronLeftIcon_default, {})
9032
9028
  }
9033
9029
  ),
9034
9030
  pages.map(
9035
- (page, i) => page === "..." ? /* @__PURE__ */ jsx332("span", { className: "dots", children: "..." }, `dots-${i}`) : /* @__PURE__ */ jsx332(
9031
+ (page, i) => page === "..." ? /* @__PURE__ */ jsx331("span", { className: "dots", children: "..." }, `dots-${i}`) : /* @__PURE__ */ jsx331(
9036
9032
  "button",
9037
9033
  {
9038
9034
  className: clsx_default("page-btn", { active: page === current }),
@@ -9043,14 +9039,14 @@ var Pagination = (props) => {
9043
9039
  page
9044
9040
  )
9045
9041
  ),
9046
- /* @__PURE__ */ jsx332(
9042
+ /* @__PURE__ */ jsx331(
9047
9043
  "button",
9048
9044
  {
9049
9045
  className: "page-btn next",
9050
9046
  disabled: current >= totalPages,
9051
9047
  onClick: () => handleClick(current + 1),
9052
9048
  "aria-label": "\uB2E4\uC74C \uD398\uC774\uC9C0",
9053
- children: /* @__PURE__ */ jsx332(ChevronRightIcon_default, {})
9049
+ children: /* @__PURE__ */ jsx331(ChevronRightIcon_default, {})
9054
9050
  }
9055
9051
  )
9056
9052
  ] });
@@ -9059,17 +9055,17 @@ Pagination.displayName = "Pagination";
9059
9055
  var Pagination_default = Pagination;
9060
9056
 
9061
9057
  // src/components/PopOver/PopOver.tsx
9062
- import React27 from "react";
9063
- import { jsx as jsx333, jsxs as jsxs213 } from "react/jsx-runtime";
9058
+ import React26 from "react";
9059
+ import { jsx as jsx332, jsxs as jsxs213 } from "react/jsx-runtime";
9064
9060
  var PopOver = (props) => {
9065
9061
  const { children, isOpen, onClose, PopOverEl } = props;
9066
- const popRef = React27.useRef(null);
9067
- const triggerRef = React27.useRef(null);
9068
- const [localOpen, setLocalOpen] = React27.useState(false);
9069
- const [eventTrigger, setEventTrigger] = React27.useState(false);
9062
+ const popRef = React26.useRef(null);
9063
+ const triggerRef = React26.useRef(null);
9064
+ const [localOpen, setLocalOpen] = React26.useState(false);
9065
+ const [eventTrigger, setEventTrigger] = React26.useState(false);
9070
9066
  useClickOutside_default([popRef, triggerRef], onClose, isOpen);
9071
9067
  const position = useAutoPosition_default(triggerRef, popRef, localOpen);
9072
- React27.useEffect(() => {
9068
+ React26.useEffect(() => {
9073
9069
  if (isOpen) {
9074
9070
  setLocalOpen(isOpen);
9075
9071
  setTimeout(() => {
@@ -9092,7 +9088,7 @@ var PopOver = (props) => {
9092
9088
  },
9093
9089
  children: [
9094
9090
  children,
9095
- localOpen && /* @__PURE__ */ jsx333(Portal_default, { children: /* @__PURE__ */ jsx333(
9091
+ localOpen && /* @__PURE__ */ jsx332(Portal_default, { children: /* @__PURE__ */ jsx332(
9096
9092
  "div",
9097
9093
  {
9098
9094
  className: clsx_default(
@@ -9115,7 +9111,7 @@ PopOver.displayName = "PopOver";
9115
9111
  var PopOver_default = PopOver;
9116
9112
 
9117
9113
  // src/components/Progress/Progress.tsx
9118
- import { jsx as jsx334, jsxs as jsxs214 } from "react/jsx-runtime";
9114
+ import { jsx as jsx333, jsxs as jsxs214 } from "react/jsx-runtime";
9119
9115
  var Progress = (props) => {
9120
9116
  const {
9121
9117
  value,
@@ -9126,7 +9122,7 @@ var Progress = (props) => {
9126
9122
  } = props;
9127
9123
  const percentage = Math.min(100, Math.max(0, value / max * 100));
9128
9124
  return /* @__PURE__ */ jsxs214("div", { className: clsx_default("lib-xplat-progress", size, type), children: [
9129
- /* @__PURE__ */ jsx334(
9125
+ /* @__PURE__ */ jsx333(
9130
9126
  "div",
9131
9127
  {
9132
9128
  className: "track",
@@ -9134,7 +9130,7 @@ var Progress = (props) => {
9134
9130
  "aria-valuenow": value,
9135
9131
  "aria-valuemin": 0,
9136
9132
  "aria-valuemax": max,
9137
- children: /* @__PURE__ */ jsx334(
9133
+ children: /* @__PURE__ */ jsx333(
9138
9134
  "div",
9139
9135
  {
9140
9136
  className: "bar",
@@ -9153,17 +9149,17 @@ Progress.displayName = "Progress";
9153
9149
  var Progress_default = Progress;
9154
9150
 
9155
9151
  // src/components/Radio/RadioGroupContext.tsx
9156
- import React28 from "react";
9157
- var RadioGroupContext = React28.createContext(
9152
+ import React27 from "react";
9153
+ var RadioGroupContext = React27.createContext(
9158
9154
  null
9159
9155
  );
9160
9156
  var useRadioGroupContext = () => {
9161
- return React28.useContext(RadioGroupContext);
9157
+ return React27.useContext(RadioGroupContext);
9162
9158
  };
9163
9159
  var RadioGroupContext_default = RadioGroupContext;
9164
9160
 
9165
9161
  // src/components/Radio/Radio.tsx
9166
- import { jsx as jsx335, jsxs as jsxs215 } from "react/jsx-runtime";
9162
+ import { jsx as jsx334, jsxs as jsxs215 } from "react/jsx-runtime";
9167
9163
  var Radio = (props) => {
9168
9164
  const {
9169
9165
  label,
@@ -9193,18 +9189,18 @@ var Radio = (props) => {
9193
9189
  className
9194
9190
  ),
9195
9191
  children: [
9196
- /* @__PURE__ */ jsx335("input", { ...rest, ...inputProps, checked: localChecked, type: "radio" }),
9197
- /* @__PURE__ */ jsx335(
9192
+ /* @__PURE__ */ jsx334("input", { ...rest, ...inputProps, checked: localChecked, type: "radio" }),
9193
+ /* @__PURE__ */ jsx334(
9198
9194
  "div",
9199
9195
  {
9200
9196
  className: clsx_default(
9201
9197
  "circle",
9202
9198
  localChecked ? "checked" : void 0
9203
9199
  ),
9204
- children: localChecked && /* @__PURE__ */ jsx335("div", { className: "inner-circle" })
9200
+ children: localChecked && /* @__PURE__ */ jsx334("div", { className: "inner-circle" })
9205
9201
  }
9206
9202
  ),
9207
- label && /* @__PURE__ */ jsx335("span", { children: label })
9203
+ label && /* @__PURE__ */ jsx334("span", { children: label })
9208
9204
  ]
9209
9205
  }
9210
9206
  );
@@ -9213,28 +9209,28 @@ Radio.displayName = "Radio";
9213
9209
  var Radio_default = Radio;
9214
9210
 
9215
9211
  // src/components/Radio/RadioGroup.tsx
9216
- import { Fragment as Fragment4, jsx as jsx336 } from "react/jsx-runtime";
9212
+ import { Fragment as Fragment4, jsx as jsx335 } from "react/jsx-runtime";
9217
9213
  var RadioGroup = (props) => {
9218
9214
  const { children, ...rest } = props;
9219
- return /* @__PURE__ */ jsx336(Fragment4, { children: /* @__PURE__ */ jsx336(RadioGroupContext_default.Provider, { value: rest, children }) });
9215
+ return /* @__PURE__ */ jsx335(Fragment4, { children: /* @__PURE__ */ jsx335(RadioGroupContext_default.Provider, { value: rest, children }) });
9220
9216
  };
9221
9217
  RadioGroup.displayName = "RadioGroup";
9222
9218
  var RadioGroup_default = RadioGroup;
9223
9219
 
9224
9220
  // src/components/Select/Select.tsx
9225
- import React31 from "react";
9221
+ import React30 from "react";
9226
9222
 
9227
9223
  // src/components/Select/context.ts
9228
- import React29 from "react";
9229
- var SelectContext = React29.createContext(null);
9224
+ import React28 from "react";
9225
+ var SelectContext = React28.createContext(null);
9230
9226
  var context_default = SelectContext;
9231
9227
 
9232
9228
  // src/components/Select/SelectItem.tsx
9233
- import React30 from "react";
9234
- import { jsx as jsx337 } from "react/jsx-runtime";
9229
+ import React29 from "react";
9230
+ import { jsx as jsx336 } from "react/jsx-runtime";
9235
9231
  var SelectItem = (props) => {
9236
9232
  const { children, value, onClick, disabled = false } = props;
9237
- const ctx = React30.useContext(context_default);
9233
+ const ctx = React29.useContext(context_default);
9238
9234
  const handleClick = (e) => {
9239
9235
  e.preventDefault();
9240
9236
  e.stopPropagation();
@@ -9244,7 +9240,7 @@ var SelectItem = (props) => {
9244
9240
  onClick?.();
9245
9241
  };
9246
9242
  const isSelected = value !== void 0 ? ctx?.selectedValue === value : ctx?.selectedLabel === children;
9247
- return /* @__PURE__ */ jsx337(
9243
+ return /* @__PURE__ */ jsx336(
9248
9244
  "div",
9249
9245
  {
9250
9246
  className: clsx_default("select-item", disabled && "disabled", isSelected && "is-selected"),
@@ -9265,7 +9261,7 @@ SelectItem.displayName = "Select.Item";
9265
9261
  var SelectItem_default = SelectItem;
9266
9262
 
9267
9263
  // src/components/Select/Select.tsx
9268
- import { jsx as jsx338, jsxs as jsxs216 } from "react/jsx-runtime";
9264
+ import { jsx as jsx337, jsxs as jsxs216 } from "react/jsx-runtime";
9269
9265
  var ANIMATION_DURATION_MS3 = 200;
9270
9266
  var SelectRoot = (props) => {
9271
9267
  const {
@@ -9277,28 +9273,28 @@ var SelectRoot = (props) => {
9277
9273
  error = false,
9278
9274
  size = "md"
9279
9275
  } = props;
9280
- const itemChildren = React31.Children.toArray(children).filter(
9281
- (child) => React31.isValidElement(child) && child.type === SelectItem_default
9276
+ const itemChildren = React30.Children.toArray(children).filter(
9277
+ (child) => React30.isValidElement(child) && child.type === SelectItem_default
9282
9278
  );
9283
9279
  const isControlled = valueProp !== void 0;
9284
- const [isOpen, setOpen] = React31.useState(false);
9285
- const [uncontrolledLabel, setUncontrolledLabel] = React31.useState(null);
9286
- const [uncontrolledValue, setUncontrolledValue] = React31.useState(void 0);
9287
- const controlledLabel = React31.useMemo(() => {
9280
+ const [isOpen, setOpen] = React30.useState(false);
9281
+ const [uncontrolledLabel, setUncontrolledLabel] = React30.useState(null);
9282
+ const [uncontrolledValue, setUncontrolledValue] = React30.useState(void 0);
9283
+ const controlledLabel = React30.useMemo(() => {
9288
9284
  if (!isControlled) return null;
9289
9285
  const match = itemChildren.find((child) => child.props.value === valueProp);
9290
9286
  return match ? match.props.children : null;
9291
9287
  }, [isControlled, valueProp, itemChildren]);
9292
9288
  const selectedLabel = isControlled ? controlledLabel : uncontrolledLabel;
9293
9289
  const selectedValue = isControlled ? valueProp : uncontrolledValue;
9294
- const triggerRef = React31.useRef(null);
9295
- const contentRef = React31.useRef(null);
9296
- const [mounted, setMounted] = React31.useState(false);
9297
- const [visible, setVisible] = React31.useState(false);
9298
- React31.useEffect(() => {
9290
+ const triggerRef = React30.useRef(null);
9291
+ const contentRef = React30.useRef(null);
9292
+ const [mounted, setMounted] = React30.useState(false);
9293
+ const [visible, setVisible] = React30.useState(false);
9294
+ React30.useEffect(() => {
9299
9295
  if (disabled && isOpen) setOpen(false);
9300
9296
  }, [disabled, isOpen]);
9301
- React31.useEffect(() => {
9297
+ React30.useEffect(() => {
9302
9298
  if (isOpen) {
9303
9299
  setMounted(true);
9304
9300
  const t2 = setTimeout(() => setVisible(true), 1);
@@ -9308,12 +9304,12 @@ var SelectRoot = (props) => {
9308
9304
  const t = setTimeout(() => setMounted(false), ANIMATION_DURATION_MS3);
9309
9305
  return () => clearTimeout(t);
9310
9306
  }, [isOpen]);
9311
- const open = React31.useCallback(() => setOpen(true), []);
9312
- const close = React31.useCallback(() => setOpen(false), []);
9313
- const toggle = React31.useCallback(() => setOpen((prev) => !prev), []);
9307
+ const open = React30.useCallback(() => setOpen(true), []);
9308
+ const close = React30.useCallback(() => setOpen(false), []);
9309
+ const toggle = React30.useCallback(() => setOpen((prev) => !prev), []);
9314
9310
  useClickOutside_default([contentRef, triggerRef], close, isOpen);
9315
9311
  const position = useAutoPosition_default(triggerRef, contentRef, mounted);
9316
- const setSelected = React31.useCallback(
9312
+ const setSelected = React30.useCallback(
9317
9313
  (label, itemValue) => {
9318
9314
  if (!isControlled) {
9319
9315
  setUncontrolledLabel(label);
@@ -9323,7 +9319,7 @@ var SelectRoot = (props) => {
9323
9319
  },
9324
9320
  [isControlled, onChange]
9325
9321
  );
9326
- const ctxValue = React31.useMemo(
9322
+ const ctxValue = React30.useMemo(
9327
9323
  () => ({
9328
9324
  isOpen,
9329
9325
  mounted,
@@ -9345,7 +9341,7 @@ var SelectRoot = (props) => {
9345
9341
  if (disabled) return;
9346
9342
  toggle();
9347
9343
  };
9348
- return /* @__PURE__ */ jsx338(context_default.Provider, { value: ctxValue, children: /* @__PURE__ */ jsxs216(
9344
+ return /* @__PURE__ */ jsx337(context_default.Provider, { value: ctxValue, children: /* @__PURE__ */ jsxs216(
9349
9345
  "div",
9350
9346
  {
9351
9347
  className: clsx_default(
@@ -9380,7 +9376,7 @@ var SelectRoot = (props) => {
9380
9376
  }
9381
9377
  },
9382
9378
  children: [
9383
- /* @__PURE__ */ jsx338(
9379
+ /* @__PURE__ */ jsx337(
9384
9380
  "span",
9385
9381
  {
9386
9382
  className: clsx_default(
@@ -9390,25 +9386,25 @@ var SelectRoot = (props) => {
9390
9386
  children: selectedLabel ?? placeholder
9391
9387
  }
9392
9388
  ),
9393
- /* @__PURE__ */ jsx338(
9389
+ /* @__PURE__ */ jsx337(
9394
9390
  "span",
9395
9391
  {
9396
9392
  className: clsx_default("select-trigger-icon", isOpen && "open"),
9397
9393
  "aria-hidden": true,
9398
- children: /* @__PURE__ */ jsx338(ChevronDownIcon_default, {})
9394
+ children: /* @__PURE__ */ jsx337(ChevronDownIcon_default, {})
9399
9395
  }
9400
9396
  )
9401
9397
  ]
9402
9398
  }
9403
9399
  ),
9404
- mounted && /* @__PURE__ */ jsx338(Portal_default, { children: /* @__PURE__ */ jsx338(
9400
+ mounted && /* @__PURE__ */ jsx337(Portal_default, { children: /* @__PURE__ */ jsx337(
9405
9401
  "div",
9406
9402
  {
9407
9403
  className: clsx_default("lib-xplat-select-content", size, position.direction, stateClass),
9408
9404
  ref: contentRef,
9409
9405
  style: { ...position.position, width: triggerRef.current?.offsetWidth },
9410
9406
  role: "listbox",
9411
- children: /* @__PURE__ */ jsx338(context_default.Provider, { value: ctxValue, children: itemChildren })
9407
+ children: /* @__PURE__ */ jsx337(context_default.Provider, { value: ctxValue, children: itemChildren })
9412
9408
  }
9413
9409
  ) })
9414
9410
  ]
@@ -9422,7 +9418,7 @@ var Select = Object.assign(SelectRoot, {
9422
9418
  var Select_default = Select;
9423
9419
 
9424
9420
  // src/components/Skeleton/Skeleton.tsx
9425
- import { jsx as jsx339 } from "react/jsx-runtime";
9421
+ import { jsx as jsx338 } from "react/jsx-runtime";
9426
9422
  var SIZE_MAP = {
9427
9423
  xs: "var(--spacing-space-1)",
9428
9424
  sm: "var(--spacing-space-2)",
@@ -9438,7 +9434,7 @@ var Skeleton = (props) => {
9438
9434
  ...width != null && { width: SIZE_MAP[width] },
9439
9435
  ...height != null && { height: SIZE_MAP[height] }
9440
9436
  };
9441
- return /* @__PURE__ */ jsx339(
9437
+ return /* @__PURE__ */ jsx338(
9442
9438
  "div",
9443
9439
  {
9444
9440
  className: clsx_default("lib-xplat-skeleton", variant),
@@ -9451,20 +9447,20 @@ Skeleton.displayName = "Skeleton";
9451
9447
  var Skeleton_default = Skeleton;
9452
9448
 
9453
9449
  // src/components/Spinner/Spinner.tsx
9454
- import { jsx as jsx340, jsxs as jsxs217 } from "react/jsx-runtime";
9450
+ import { jsx as jsx339, jsxs as jsxs217 } from "react/jsx-runtime";
9455
9451
  var Spinner = (props) => {
9456
9452
  const {
9457
9453
  size = "md",
9458
9454
  type = "brand"
9459
9455
  } = props;
9460
- return /* @__PURE__ */ jsx340(
9456
+ return /* @__PURE__ */ jsx339(
9461
9457
  "div",
9462
9458
  {
9463
9459
  className: clsx_default("lib-xplat-spinner", size, type),
9464
9460
  role: "status",
9465
9461
  "aria-label": "\uB85C\uB529 \uC911",
9466
9462
  children: /* @__PURE__ */ jsxs217("svg", { viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
9467
- /* @__PURE__ */ jsx340(
9463
+ /* @__PURE__ */ jsx339(
9468
9464
  "circle",
9469
9465
  {
9470
9466
  className: "track",
@@ -9474,7 +9470,7 @@ var Spinner = (props) => {
9474
9470
  strokeWidth: "3"
9475
9471
  }
9476
9472
  ),
9477
- /* @__PURE__ */ jsx340(
9473
+ /* @__PURE__ */ jsx339(
9478
9474
  "circle",
9479
9475
  {
9480
9476
  className: "indicator",
@@ -9493,20 +9489,20 @@ Spinner.displayName = "Spinner";
9493
9489
  var Spinner_default = Spinner;
9494
9490
 
9495
9491
  // src/components/Steps/Steps.tsx
9496
- import { jsx as jsx341, jsxs as jsxs218 } from "react/jsx-runtime";
9492
+ import { jsx as jsx340, jsxs as jsxs218 } from "react/jsx-runtime";
9497
9493
  var Steps = (props) => {
9498
9494
  const {
9499
9495
  items,
9500
9496
  current,
9501
9497
  type = "brand"
9502
9498
  } = props;
9503
- return /* @__PURE__ */ jsx341("div", { className: clsx_default("lib-xplat-steps", type), children: items.map((item, index) => {
9499
+ return /* @__PURE__ */ jsx340("div", { className: clsx_default("lib-xplat-steps", type), children: items.map((item, index) => {
9504
9500
  const status = index < current ? "completed" : index === current ? "active" : "pending";
9505
9501
  return /* @__PURE__ */ jsxs218("div", { className: clsx_default("step-item", status), children: [
9506
- /* @__PURE__ */ jsx341("div", { className: "step-circle", children: status === "completed" ? /* @__PURE__ */ jsx341(CheckIcon_default, {}) : /* @__PURE__ */ jsx341("span", { children: index + 1 }) }),
9502
+ /* @__PURE__ */ jsx340("div", { className: "step-circle", children: status === "completed" ? /* @__PURE__ */ jsx340(CheckIcon_default, {}) : /* @__PURE__ */ jsx340("span", { children: index + 1 }) }),
9507
9503
  /* @__PURE__ */ jsxs218("div", { className: "step-content", children: [
9508
- /* @__PURE__ */ jsx341("span", { className: "step-title", children: item.title }),
9509
- item.description && /* @__PURE__ */ jsx341("span", { className: "step-description", children: item.description })
9504
+ /* @__PURE__ */ jsx340("span", { className: "step-title", children: item.title }),
9505
+ item.description && /* @__PURE__ */ jsx340("span", { className: "step-description", children: item.description })
9510
9506
  ] })
9511
9507
  ] }, index);
9512
9508
  }) });
@@ -9515,8 +9511,8 @@ Steps.displayName = "Steps";
9515
9511
  var Steps_default = Steps;
9516
9512
 
9517
9513
  // src/components/Swiper/Swiper.tsx
9518
- import React32 from "react";
9519
- import { jsx as jsx342, jsxs as jsxs219 } from "react/jsx-runtime";
9514
+ import React31 from "react";
9515
+ import { jsx as jsx341, jsxs as jsxs219 } from "react/jsx-runtime";
9520
9516
  var Swiper = (props) => {
9521
9517
  const {
9522
9518
  auto = false,
@@ -9540,26 +9536,26 @@ var Swiper = (props) => {
9540
9536
  const maxIndex = Math.max(0, totalSlides - viewItemCount);
9541
9537
  const useLoop = loop && canSlide;
9542
9538
  const cloneCount = useLoop ? totalSlides : 0;
9543
- const extendedItems = React32.useMemo(() => {
9539
+ const extendedItems = React31.useMemo(() => {
9544
9540
  if (!useLoop) return items;
9545
9541
  return [...items, ...items, ...items];
9546
9542
  }, [items, useLoop]);
9547
9543
  const initialIdx = Math.max(0, Math.min(indexProp ?? 0, maxIndex));
9548
- const [innerIndex, setInnerIndex] = React32.useState(
9544
+ const [innerIndex, setInnerIndex] = React31.useState(
9549
9545
  useLoop ? cloneCount + initialIdx : initialIdx
9550
9546
  );
9551
- const [isDragging, setIsDragging] = React32.useState(false);
9552
- const [dragOffset, setDragOffset] = React32.useState(0);
9553
- const [animated, setAnimated] = React32.useState(false);
9554
- const [containerWidth, setContainerWidth] = React32.useState(0);
9555
- const containerRef = React32.useRef(null);
9556
- const startXRef = React32.useRef(0);
9557
- const startTimeRef = React32.useRef(0);
9558
- const autoplayTimerRef = React32.useRef(null);
9559
- const resumeTimeoutRef = React32.useRef(null);
9560
- const [paused, setPaused] = React32.useState(false);
9561
- const initializedRef = React32.useRef(false);
9562
- React32.useEffect(() => {
9547
+ const [isDragging, setIsDragging] = React31.useState(false);
9548
+ const [dragOffset, setDragOffset] = React31.useState(0);
9549
+ const [animated, setAnimated] = React31.useState(false);
9550
+ const [containerWidth, setContainerWidth] = React31.useState(0);
9551
+ const containerRef = React31.useRef(null);
9552
+ const startXRef = React31.useRef(0);
9553
+ const startTimeRef = React31.useRef(0);
9554
+ const autoplayTimerRef = React31.useRef(null);
9555
+ const resumeTimeoutRef = React31.useRef(null);
9556
+ const [paused, setPaused] = React31.useState(false);
9557
+ const initializedRef = React31.useRef(false);
9558
+ React31.useEffect(() => {
9563
9559
  const el = containerRef.current;
9564
9560
  if (!el) return;
9565
9561
  const ro = new ResizeObserver((entries) => {
@@ -9582,7 +9578,7 @@ var Swiper = (props) => {
9582
9578
  return ((inner - cloneCount) % totalSlides + totalSlides) % totalSlides;
9583
9579
  };
9584
9580
  const realIndex = getRealIndex(innerIndex);
9585
- const moveToInner = React32.useCallback(
9581
+ const moveToInner = React31.useCallback(
9586
9582
  (idx, withAnim = true) => {
9587
9583
  if (!useLoop) {
9588
9584
  setAnimated(withAnim);
@@ -9610,7 +9606,7 @@ var Swiper = (props) => {
9610
9606
  },
9611
9607
  [useLoop, cloneCount, totalSlides]
9612
9608
  );
9613
- const handleTransitionEnd = React32.useCallback(() => {
9609
+ const handleTransitionEnd = React31.useCallback(() => {
9614
9610
  if (!useLoop) return;
9615
9611
  const real = getRealIndex(innerIndex);
9616
9612
  const canonical = cloneCount + real;
@@ -9620,7 +9616,7 @@ var Swiper = (props) => {
9620
9616
  }
9621
9617
  onChange?.(Math.min(real, maxIndex));
9622
9618
  }, [useLoop, innerIndex, cloneCount, totalSlides, maxIndex, onChange]);
9623
- const slideTo = React32.useCallback(
9619
+ const slideTo = React31.useCallback(
9624
9620
  (logicalIndex) => {
9625
9621
  if (!canSlide) return;
9626
9622
  const clamped = useLoop ? logicalIndex : Math.max(0, Math.min(logicalIndex, maxIndex));
@@ -9630,7 +9626,7 @@ var Swiper = (props) => {
9630
9626
  },
9631
9627
  [canSlide, useLoop, cloneCount, maxIndex, onChange, moveToInner]
9632
9628
  );
9633
- const slideNext = React32.useCallback(() => {
9629
+ const slideNext = React31.useCallback(() => {
9634
9630
  if (!canSlide) return;
9635
9631
  const nextInner = innerIndex + slideBy;
9636
9632
  if (useLoop) {
@@ -9639,7 +9635,7 @@ var Swiper = (props) => {
9639
9635
  moveToInner(Math.min(nextInner, maxIndex), true);
9640
9636
  }
9641
9637
  }, [canSlide, useLoop, innerIndex, slideBy, maxIndex, moveToInner]);
9642
- const slidePrev = React32.useCallback(() => {
9638
+ const slidePrev = React31.useCallback(() => {
9643
9639
  if (!canSlide) return;
9644
9640
  const prevInner = innerIndex - slideBy;
9645
9641
  if (useLoop) {
@@ -9648,7 +9644,7 @@ var Swiper = (props) => {
9648
9644
  moveToInner(Math.max(prevInner, 0), true);
9649
9645
  }
9650
9646
  }, [canSlide, useLoop, innerIndex, slideBy, moveToInner]);
9651
- React32.useEffect(() => {
9647
+ React31.useEffect(() => {
9652
9648
  if (indexProp === void 0) return;
9653
9649
  const clamped = Math.max(0, Math.min(indexProp, maxIndex));
9654
9650
  const target = useLoop ? cloneCount + clamped : clamped;
@@ -9656,12 +9652,12 @@ var Swiper = (props) => {
9656
9652
  moveToInner(target, true);
9657
9653
  }
9658
9654
  }, [indexProp]);
9659
- React32.useImperativeHandle(swiperRef, () => ({
9655
+ React31.useImperativeHandle(swiperRef, () => ({
9660
9656
  slidePrev,
9661
9657
  slideNext,
9662
9658
  slideTo
9663
9659
  }));
9664
- React32.useEffect(() => {
9660
+ React31.useEffect(() => {
9665
9661
  if (!auto || !canSlide || paused) return;
9666
9662
  autoplayTimerRef.current = setInterval(slideNext, autoplayDelay);
9667
9663
  return () => {
@@ -9687,7 +9683,7 @@ var Swiper = (props) => {
9687
9683
  resumeTimeoutRef.current = null;
9688
9684
  }, pauseOnInteraction);
9689
9685
  };
9690
- React32.useEffect(() => {
9686
+ React31.useEffect(() => {
9691
9687
  return () => {
9692
9688
  if (resumeTimeoutRef.current) clearTimeout(resumeTimeoutRef.current);
9693
9689
  };
@@ -9705,7 +9701,7 @@ var Swiper = (props) => {
9705
9701
  startXRef.current = getClientX(e);
9706
9702
  startTimeRef.current = Date.now();
9707
9703
  };
9708
- React32.useEffect(() => {
9704
+ React31.useEffect(() => {
9709
9705
  if (!isDragging) return;
9710
9706
  const handleMove = (e) => {
9711
9707
  setDragOffset(getClientX(e) - startXRef.current);
@@ -9744,8 +9740,8 @@ var Swiper = (props) => {
9744
9740
  }, [isDragging, dragOffset, innerIndex, useLoop, maxIndex, slideStep, moveToInner]);
9745
9741
  const slideWidthPercent = 100 / viewItemCount;
9746
9742
  const gapAdjust = spaceBetween * (viewItemCount - 1) / viewItemCount;
9747
- const slideElements = React32.useMemo(
9748
- () => extendedItems.map((item, idx) => /* @__PURE__ */ jsx342(
9743
+ const slideElements = React31.useMemo(
9744
+ () => extendedItems.map((item, idx) => /* @__PURE__ */ jsx341(
9749
9745
  "div",
9750
9746
  {
9751
9747
  className: "lib-xplat-swiper__slide",
@@ -9765,14 +9761,14 @@ var Swiper = (props) => {
9765
9761
  totalSteps - 1
9766
9762
  );
9767
9763
  return /* @__PURE__ */ jsxs219("div", { className: "lib-xplat-swiper", ref: containerRef, children: [
9768
- /* @__PURE__ */ jsx342(
9764
+ /* @__PURE__ */ jsx341(
9769
9765
  "div",
9770
9766
  {
9771
9767
  className: "lib-xplat-swiper__viewport",
9772
9768
  onMouseDown: handleDragStart,
9773
9769
  onTouchStart: handleDragStart,
9774
9770
  onDragStart: (e) => e.preventDefault(),
9775
- children: /* @__PURE__ */ jsx342(
9771
+ children: /* @__PURE__ */ jsx341(
9776
9772
  "div",
9777
9773
  {
9778
9774
  className: clsx_default(
@@ -9790,7 +9786,7 @@ var Swiper = (props) => {
9790
9786
  )
9791
9787
  }
9792
9788
  ),
9793
- showProgress && canSlide && /* @__PURE__ */ jsx342("div", { className: "lib-xplat-swiper__progress", children: /* @__PURE__ */ jsx342("div", { className: "lib-xplat-swiper__progress-track", children: /* @__PURE__ */ jsx342(
9789
+ showProgress && canSlide && /* @__PURE__ */ jsx341("div", { className: "lib-xplat-swiper__progress", children: /* @__PURE__ */ jsx341("div", { className: "lib-xplat-swiper__progress-track", children: /* @__PURE__ */ jsx341(
9794
9790
  "span",
9795
9791
  {
9796
9792
  className: "lib-xplat-swiper__progress-fill",
@@ -9800,7 +9796,7 @@ var Swiper = (props) => {
9800
9796
  }
9801
9797
  }
9802
9798
  ) }) }),
9803
- canSlide && /* @__PURE__ */ jsx342("div", { className: "lib-xplat-swiper__dots", children: Array.from({ length: totalSteps }, (_, i) => /* @__PURE__ */ jsx342(
9799
+ canSlide && /* @__PURE__ */ jsx341("div", { className: "lib-xplat-swiper__dots", children: Array.from({ length: totalSteps }, (_, i) => /* @__PURE__ */ jsx341(
9804
9800
  "button",
9805
9801
  {
9806
9802
  className: clsx_default(
@@ -9818,8 +9814,8 @@ Swiper.displayName = "Swiper";
9818
9814
  var Swiper_default = Swiper;
9819
9815
 
9820
9816
  // src/components/Switch/Switch.tsx
9821
- import React33 from "react";
9822
- import { jsx as jsx343 } from "react/jsx-runtime";
9817
+ import React32 from "react";
9818
+ import { jsx as jsx342 } from "react/jsx-runtime";
9823
9819
  var KNOB_TRANSITION_MS = 250;
9824
9820
  var Switch = (props) => {
9825
9821
  const {
@@ -9829,9 +9825,9 @@ var Switch = (props) => {
9829
9825
  disabled,
9830
9826
  onChange
9831
9827
  } = props;
9832
- const [isAnimating, setIsAnimating] = React33.useState(false);
9833
- const timeoutRef = React33.useRef(null);
9834
- React33.useEffect(() => {
9828
+ const [isAnimating, setIsAnimating] = React32.useState(false);
9829
+ const timeoutRef = React32.useRef(null);
9830
+ React32.useEffect(() => {
9835
9831
  return () => {
9836
9832
  if (timeoutRef.current) clearTimeout(timeoutRef.current);
9837
9833
  };
@@ -9846,7 +9842,7 @@ var Switch = (props) => {
9846
9842
  timeoutRef.current = null;
9847
9843
  }, KNOB_TRANSITION_MS);
9848
9844
  };
9849
- return /* @__PURE__ */ jsx343(
9845
+ return /* @__PURE__ */ jsx342(
9850
9846
  "div",
9851
9847
  {
9852
9848
  className: clsx_default(
@@ -9859,7 +9855,7 @@ var Switch = (props) => {
9859
9855
  ),
9860
9856
  onClick: handleClick,
9861
9857
  "aria-disabled": disabled || isAnimating,
9862
- children: /* @__PURE__ */ jsx343("div", { className: clsx_default("knob", value ? "checked" : void 0) })
9858
+ children: /* @__PURE__ */ jsx342("div", { className: clsx_default("knob", value ? "checked" : void 0) })
9863
9859
  }
9864
9860
  );
9865
9861
  };
@@ -9867,17 +9863,17 @@ Switch.displayName = "Switch";
9867
9863
  var Switch_default = Switch;
9868
9864
 
9869
9865
  // src/components/Table/TableContext.tsx
9870
- import React34 from "react";
9871
- var TableContext = React34.createContext(null);
9866
+ import React33 from "react";
9867
+ var TableContext = React33.createContext(null);
9872
9868
  var useTableContext = () => {
9873
- const ctx = React34.useContext(TableContext);
9869
+ const ctx = React33.useContext(TableContext);
9874
9870
  if (!ctx) throw new Error("Table components must be used inside <Table>");
9875
9871
  return ctx;
9876
9872
  };
9877
9873
  var TableContext_default = TableContext;
9878
9874
 
9879
9875
  // src/components/Table/Table.tsx
9880
- import { jsx as jsx344 } from "react/jsx-runtime";
9876
+ import { jsx as jsx343 } from "react/jsx-runtime";
9881
9877
  var Table = (props) => {
9882
9878
  const {
9883
9879
  children,
@@ -9887,7 +9883,7 @@ var Table = (props) => {
9887
9883
  headerSticky = false,
9888
9884
  stickyShadow = true
9889
9885
  } = props;
9890
- return /* @__PURE__ */ jsx344("div", { className: `lib-xplat-table-wrapper ${size}`, children: /* @__PURE__ */ jsx344(
9886
+ return /* @__PURE__ */ jsx343("div", { className: `lib-xplat-table-wrapper ${size}`, children: /* @__PURE__ */ jsx343(
9891
9887
  TableContext_default.Provider,
9892
9888
  {
9893
9889
  value: {
@@ -9896,7 +9892,7 @@ var Table = (props) => {
9896
9892
  headerSticky,
9897
9893
  stickyShadow
9898
9894
  },
9899
- children: /* @__PURE__ */ jsx344("table", { className: "lib-xplat-table", children })
9895
+ children: /* @__PURE__ */ jsx343("table", { className: "lib-xplat-table", children })
9900
9896
  }
9901
9897
  ) });
9902
9898
  };
@@ -9904,41 +9900,41 @@ Table.displayName = "Table";
9904
9900
  var Table_default = Table;
9905
9901
 
9906
9902
  // src/components/Table/TableBody.tsx
9907
- import { jsx as jsx345 } from "react/jsx-runtime";
9903
+ import { jsx as jsx344 } from "react/jsx-runtime";
9908
9904
  var TableBody = (props) => {
9909
9905
  const { children } = props;
9910
- return /* @__PURE__ */ jsx345("tbody", { children });
9906
+ return /* @__PURE__ */ jsx344("tbody", { children });
9911
9907
  };
9912
9908
  TableBody.displayName = "TableBody";
9913
9909
  var TableBody_default = TableBody;
9914
9910
 
9915
9911
  // src/components/Table/TableCell.tsx
9916
- import React37 from "react";
9912
+ import React36 from "react";
9917
9913
 
9918
9914
  // src/components/Table/TableHeadContext.tsx
9919
- import React35 from "react";
9920
- var TableHeadContext = React35.createContext(
9915
+ import React34 from "react";
9916
+ var TableHeadContext = React34.createContext(
9921
9917
  null
9922
9918
  );
9923
9919
  var useTableHeadContext = () => {
9924
- const ctx = React35.useContext(TableHeadContext);
9920
+ const ctx = React34.useContext(TableHeadContext);
9925
9921
  return ctx;
9926
9922
  };
9927
9923
  var TableHeadContext_default = TableHeadContext;
9928
9924
 
9929
9925
  // src/components/Table/TableRowContext.tsx
9930
- import React36 from "react";
9931
- var TableRowContext = React36.createContext(null);
9926
+ import React35 from "react";
9927
+ var TableRowContext = React35.createContext(null);
9932
9928
  var useTableRowContext = () => {
9933
- const ctx = React36.useContext(TableRowContext);
9929
+ const ctx = React35.useContext(TableRowContext);
9934
9930
  if (!ctx) throw new Error("Table components must be used inside <Table>");
9935
9931
  return ctx;
9936
9932
  };
9937
9933
  var TableRowContext_default = TableRowContext;
9938
9934
 
9939
9935
  // src/components/Table/TableCell.tsx
9940
- import { jsx as jsx346 } from "react/jsx-runtime";
9941
- var TableCell = React37.memo((props) => {
9936
+ import { jsx as jsx345 } from "react/jsx-runtime";
9937
+ var TableCell = React36.memo((props) => {
9942
9938
  const {
9943
9939
  children,
9944
9940
  align = "center",
@@ -9952,9 +9948,9 @@ var TableCell = React37.memo((props) => {
9952
9948
  const { registerStickyCell, stickyCells } = useTableRowContext();
9953
9949
  const { stickyShadow } = useTableContext();
9954
9950
  const headContext = useTableHeadContext();
9955
- const [left, setLeft] = React37.useState(0);
9956
- const cellRef = React37.useRef(null);
9957
- const calculateLeft = React37.useCallback(() => {
9951
+ const [left, setLeft] = React36.useState(0);
9952
+ const cellRef = React36.useRef(null);
9953
+ const calculateLeft = React36.useCallback(() => {
9958
9954
  if (!cellRef.current) return 0;
9959
9955
  let totalLeft = 0;
9960
9956
  for (const ref of stickyCells) {
@@ -9963,7 +9959,7 @@ var TableCell = React37.memo((props) => {
9963
9959
  }
9964
9960
  return totalLeft;
9965
9961
  }, [stickyCells]);
9966
- React37.useEffect(() => {
9962
+ React36.useEffect(() => {
9967
9963
  if (!isSticky || !cellRef.current) return;
9968
9964
  registerStickyCell(cellRef);
9969
9965
  setLeft(calculateLeft());
@@ -9982,7 +9978,7 @@ var TableCell = React37.memo((props) => {
9982
9978
  const CellTag = isHeaderCell ? "th" : "td";
9983
9979
  const isLastSticky = isSticky && stickyCells[stickyCells.length - 1] === cellRef;
9984
9980
  const enableHover = headContext && headContext.cellHover;
9985
- return /* @__PURE__ */ jsx346(
9981
+ return /* @__PURE__ */ jsx345(
9986
9982
  CellTag,
9987
9983
  {
9988
9984
  ref: cellRef,
@@ -10009,21 +10005,21 @@ TableCell.displayName = "TableCell";
10009
10005
  var TableCell_default = TableCell;
10010
10006
 
10011
10007
  // src/components/Table/TableHead.tsx
10012
- import { jsx as jsx347 } from "react/jsx-runtime";
10008
+ import { jsx as jsx346 } from "react/jsx-runtime";
10013
10009
  var TableHead = ({
10014
10010
  children,
10015
10011
  cellHover = false
10016
10012
  }) => {
10017
10013
  const { headerSticky } = useTableContext();
10018
- return /* @__PURE__ */ jsx347(TableHeadContext_default.Provider, { value: { cellHover }, children: /* @__PURE__ */ jsx347("thead", { className: clsx_default(headerSticky ? "table-sticky" : null), children }) });
10014
+ return /* @__PURE__ */ jsx346(TableHeadContext_default.Provider, { value: { cellHover }, children: /* @__PURE__ */ jsx346("thead", { className: clsx_default(headerSticky ? "table-sticky" : null), children }) });
10019
10015
  };
10020
10016
  TableHead.displayName = "TableHead";
10021
10017
  var TableHead_default = TableHead;
10022
10018
 
10023
10019
  // src/components/Table/TableRow.tsx
10024
- import React38 from "react";
10025
- import { jsx as jsx348 } from "react/jsx-runtime";
10026
- var TableRow = React38.memo((props) => {
10020
+ import React37 from "react";
10021
+ import { jsx as jsx347 } from "react/jsx-runtime";
10022
+ var TableRow = React37.memo((props) => {
10027
10023
  const {
10028
10024
  children,
10029
10025
  type = "secondary",
@@ -10032,14 +10028,14 @@ var TableRow = React38.memo((props) => {
10032
10028
  onClick
10033
10029
  } = props;
10034
10030
  const { rowBorderUse } = useTableContext();
10035
- const [stickyCells, setStickyCells] = React38.useState([]);
10031
+ const [stickyCells, setStickyCells] = React37.useState([]);
10036
10032
  const registerStickyCell = (ref) => {
10037
10033
  setStickyCells((prev) => {
10038
10034
  if (prev.includes(ref)) return prev;
10039
10035
  return [...prev, ref];
10040
10036
  });
10041
10037
  };
10042
- return /* @__PURE__ */ jsx348(TableRowContext_default.Provider, { value: { stickyCells, registerStickyCell }, children: /* @__PURE__ */ jsx348(
10038
+ return /* @__PURE__ */ jsx347(TableRowContext_default.Provider, { value: { stickyCells, registerStickyCell }, children: /* @__PURE__ */ jsx347(
10043
10039
  "tr",
10044
10040
  {
10045
10041
  className: clsx_default(
@@ -10063,7 +10059,7 @@ TableRow.displayName = "TableRow";
10063
10059
  var TableRow_default = TableRow;
10064
10060
 
10065
10061
  // src/components/Tag/Tag.tsx
10066
- import { jsx as jsx349, jsxs as jsxs220 } from "react/jsx-runtime";
10062
+ import { jsx as jsx348, jsxs as jsxs220 } from "react/jsx-runtime";
10067
10063
  var Tag = (props) => {
10068
10064
  const {
10069
10065
  children,
@@ -10084,8 +10080,8 @@ var Tag = (props) => {
10084
10080
  disabled && "disabled"
10085
10081
  ),
10086
10082
  children: [
10087
- /* @__PURE__ */ jsx349("span", { className: "tag-label", children }),
10088
- onClose && /* @__PURE__ */ jsx349("button", { className: "tag-close", onClick: onClose, "aria-label": "\uC0AD\uC81C", disabled, children: /* @__PURE__ */ jsx349(XIcon_default, {}) })
10083
+ /* @__PURE__ */ jsx348("span", { className: "tag-label", children }),
10084
+ onClose && /* @__PURE__ */ jsx348("button", { className: "tag-close", onClick: onClose, "aria-label": "\uC0AD\uC81C", disabled, children: /* @__PURE__ */ jsx348(XIcon_default, {}) })
10089
10085
  ]
10090
10086
  }
10091
10087
  );
@@ -10094,9 +10090,9 @@ Tag.displayName = "Tag";
10094
10090
  var Tag_default = Tag;
10095
10091
 
10096
10092
  // src/components/TextArea/TextArea.tsx
10097
- import React39 from "react";
10098
- import { jsx as jsx350 } from "react/jsx-runtime";
10099
- var TextArea = React39.forwardRef(
10093
+ import React38 from "react";
10094
+ import { jsx as jsx349 } from "react/jsx-runtime";
10095
+ var TextArea = React38.forwardRef(
10100
10096
  (props, ref) => {
10101
10097
  const {
10102
10098
  className,
@@ -10106,7 +10102,7 @@ var TextArea = React39.forwardRef(
10106
10102
  disabled,
10107
10103
  ...textareaProps
10108
10104
  } = props;
10109
- return /* @__PURE__ */ jsx350("div", { className: clsx_default("lib-xplat-textarea-wrap", className), children: /* @__PURE__ */ jsx350(
10105
+ return /* @__PURE__ */ jsx349("div", { className: clsx_default("lib-xplat-textarea-wrap", className), children: /* @__PURE__ */ jsx349(
10110
10106
  "textarea",
10111
10107
  {
10112
10108
  ...textareaProps,
@@ -10123,25 +10119,25 @@ TextArea.displayName = "TextArea";
10123
10119
  var TextArea_default = TextArea;
10124
10120
 
10125
10121
  // src/components/Toast/Toast.tsx
10126
- import React40 from "react";
10122
+ import React39 from "react";
10127
10123
  import { createPortal as createPortal3 } from "react-dom";
10128
- import { jsx as jsx351, jsxs as jsxs221 } from "react/jsx-runtime";
10129
- var ToastContext = React40.createContext(null);
10124
+ import { jsx as jsx350, jsxs as jsxs221 } from "react/jsx-runtime";
10125
+ var ToastContext = React39.createContext(null);
10130
10126
  var useToast = () => {
10131
- const ctx = React40.useContext(ToastContext);
10127
+ const ctx = React39.useContext(ToastContext);
10132
10128
  if (!ctx) throw new Error("useToast must be used within ToastProvider");
10133
10129
  return ctx;
10134
10130
  };
10135
10131
  var EXIT_DURATION = 300;
10136
10132
  var ToastItemComponent = ({ item, isExiting, onClose }) => {
10137
- const ref = React40.useRef(null);
10138
- const [height, setHeight] = React40.useState(void 0);
10139
- React40.useEffect(() => {
10133
+ const ref = React39.useRef(null);
10134
+ const [height, setHeight] = React39.useState(void 0);
10135
+ React39.useEffect(() => {
10140
10136
  if (ref.current && !isExiting) {
10141
10137
  setHeight(ref.current.offsetHeight);
10142
10138
  }
10143
10139
  }, [isExiting]);
10144
- return /* @__PURE__ */ jsx351(
10140
+ return /* @__PURE__ */ jsx350(
10145
10141
  "div",
10146
10142
  {
10147
10143
  className: clsx_default("lib-xplat-toast-wrapper", { exit: isExiting }),
@@ -10156,8 +10152,8 @@ var ToastItemComponent = ({ item, isExiting, onClose }) => {
10156
10152
  className: clsx_default("lib-xplat-toast", item.type, { exit: isExiting }),
10157
10153
  role: "alert",
10158
10154
  children: [
10159
- /* @__PURE__ */ jsx351("span", { className: "message", children: item.message }),
10160
- /* @__PURE__ */ jsx351("button", { className: "close-btn", onClick: onClose, "aria-label": "\uB2EB\uAE30", children: "\xD7" })
10155
+ /* @__PURE__ */ jsx350("span", { className: "message", children: item.message }),
10156
+ /* @__PURE__ */ jsx350("button", { className: "close-btn", onClick: onClose, "aria-label": "\uB2EB\uAE30", children: "\xD7" })
10161
10157
  ]
10162
10158
  }
10163
10159
  )
@@ -10168,13 +10164,13 @@ var ToastProvider = ({
10168
10164
  children,
10169
10165
  position = "top-right"
10170
10166
  }) => {
10171
- const [toasts, setToasts] = React40.useState([]);
10172
- const [removing, setRemoving] = React40.useState(/* @__PURE__ */ new Set());
10173
- const [mounted, setMounted] = React40.useState(false);
10174
- React40.useEffect(() => {
10167
+ const [toasts, setToasts] = React39.useState([]);
10168
+ const [removing, setRemoving] = React39.useState(/* @__PURE__ */ new Set());
10169
+ const [mounted, setMounted] = React39.useState(false);
10170
+ React39.useEffect(() => {
10175
10171
  setMounted(true);
10176
10172
  }, []);
10177
- const remove = React40.useCallback((id) => {
10173
+ const remove = React39.useCallback((id) => {
10178
10174
  setRemoving((prev) => new Set(prev).add(id));
10179
10175
  setTimeout(() => {
10180
10176
  setToasts((prev) => prev.filter((t) => t.id !== id));
@@ -10185,7 +10181,7 @@ var ToastProvider = ({
10185
10181
  });
10186
10182
  }, EXIT_DURATION);
10187
10183
  }, []);
10188
- const toast = React40.useCallback(
10184
+ const toast = React39.useCallback(
10189
10185
  (type, message, duration = 3e3) => {
10190
10186
  const id = `${Date.now()}-${Math.random()}`;
10191
10187
  setToasts((prev) => [...prev, { id, type, message }]);
@@ -10198,7 +10194,7 @@ var ToastProvider = ({
10198
10194
  return /* @__PURE__ */ jsxs221(ToastContext.Provider, { value: { toast }, children: [
10199
10195
  children,
10200
10196
  mounted && createPortal3(
10201
- /* @__PURE__ */ jsx351("div", { className: clsx_default("lib-xplat-toast-container", position), children: toasts.map((t) => /* @__PURE__ */ jsx351(
10197
+ /* @__PURE__ */ jsx350("div", { className: clsx_default("lib-xplat-toast-container", position), children: toasts.map((t) => /* @__PURE__ */ jsx350(
10202
10198
  ToastItemComponent,
10203
10199
  {
10204
10200
  item: t,
@@ -10214,8 +10210,8 @@ var ToastProvider = ({
10214
10210
  ToastProvider.displayName = "ToastProvider";
10215
10211
 
10216
10212
  // src/components/Tooltip/Tooltip.tsx
10217
- import React41 from "react";
10218
- import { Fragment as Fragment5, jsx as jsx352, jsxs as jsxs222 } from "react/jsx-runtime";
10213
+ import React40 from "react";
10214
+ import { Fragment as Fragment5, jsx as jsx351, jsxs as jsxs222 } from "react/jsx-runtime";
10219
10215
  var OFFSET = 12;
10220
10216
  var GAP = 8;
10221
10217
  var SHOW_DELAY = 300;
@@ -10228,14 +10224,14 @@ var Tooltip = (props) => {
10228
10224
  follow = false,
10229
10225
  disabled = false
10230
10226
  } = props;
10231
- const triggerRef = React41.useRef(null);
10232
- const tooltipRef = React41.useRef(null);
10233
- const [visible, setVisible] = React41.useState(false);
10234
- const [pos, setPos] = React41.useState({ left: 0, top: 0 });
10235
- const delayTimer = React41.useRef(0);
10236
- const rafRef = React41.useRef(0);
10237
- const cursor = React41.useRef(null);
10238
- const clamp = React41.useCallback((left, top, w, h) => {
10227
+ const triggerRef = React40.useRef(null);
10228
+ const tooltipRef = React40.useRef(null);
10229
+ const [visible, setVisible] = React40.useState(false);
10230
+ const [pos, setPos] = React40.useState({ left: 0, top: 0 });
10231
+ const delayTimer = React40.useRef(0);
10232
+ const rafRef = React40.useRef(0);
10233
+ const cursor = React40.useRef(null);
10234
+ const clamp = React40.useCallback((left, top, w, h) => {
10239
10235
  const vw = window.innerWidth;
10240
10236
  const vh = window.innerHeight;
10241
10237
  return {
@@ -10243,7 +10239,7 @@ var Tooltip = (props) => {
10243
10239
  top: Math.min(Math.max(GAP, top), Math.max(GAP, vh - h - GAP))
10244
10240
  };
10245
10241
  }, []);
10246
- const placeAtCursor = React41.useCallback((x, y) => {
10242
+ const placeAtCursor = React40.useCallback((x, y) => {
10247
10243
  const el = tooltipRef.current;
10248
10244
  if (!el) return;
10249
10245
  const w = el.offsetWidth;
@@ -10254,7 +10250,7 @@ var Tooltip = (props) => {
10254
10250
  if (top < GAP) top = y + OFFSET;
10255
10251
  setPos(clamp(left, top, w, h));
10256
10252
  }, [clamp]);
10257
- const placeAtTrigger = React41.useCallback(() => {
10253
+ const placeAtTrigger = React40.useCallback(() => {
10258
10254
  const el = tooltipRef.current;
10259
10255
  const trigger = triggerRef.current;
10260
10256
  if (!el || !trigger) return;
@@ -10266,19 +10262,19 @@ var Tooltip = (props) => {
10266
10262
  const left = rect.left + rect.width / 2 - w / 2;
10267
10263
  setPos(clamp(left, top, w, h));
10268
10264
  }, [clamp]);
10269
- const reposition = React41.useCallback(() => {
10265
+ const reposition = React40.useCallback(() => {
10270
10266
  if (follow && cursor.current) {
10271
10267
  placeAtCursor(cursor.current.x, cursor.current.y);
10272
10268
  } else {
10273
10269
  placeAtTrigger();
10274
10270
  }
10275
10271
  }, [follow, placeAtCursor, placeAtTrigger]);
10276
- const handleMouseEnter = React41.useCallback((e) => {
10272
+ const handleMouseEnter = React40.useCallback((e) => {
10277
10273
  if (disabled) return;
10278
10274
  cursor.current = { x: e.clientX, y: e.clientY };
10279
10275
  delayTimer.current = window.setTimeout(() => setVisible(true), SHOW_DELAY);
10280
10276
  }, [disabled]);
10281
- const handleMouseMove = React41.useCallback((e) => {
10277
+ const handleMouseMove = React40.useCallback((e) => {
10282
10278
  cursor.current = { x: e.clientX, y: e.clientY };
10283
10279
  if (!visible || !follow) return;
10284
10280
  cancelAnimationFrame(rafRef.current);
@@ -10286,25 +10282,25 @@ var Tooltip = (props) => {
10286
10282
  if (cursor.current) placeAtCursor(cursor.current.x, cursor.current.y);
10287
10283
  });
10288
10284
  }, [visible, follow, placeAtCursor]);
10289
- const close = React41.useCallback(() => {
10285
+ const close = React40.useCallback(() => {
10290
10286
  window.clearTimeout(delayTimer.current);
10291
10287
  cancelAnimationFrame(rafRef.current);
10292
10288
  setVisible(false);
10293
10289
  }, []);
10294
- const handleMouseLeave = React41.useCallback(() => {
10290
+ const handleMouseLeave = React40.useCallback(() => {
10295
10291
  cursor.current = null;
10296
10292
  close();
10297
10293
  }, [close]);
10298
- const handleFocus = React41.useCallback(() => {
10294
+ const handleFocus = React40.useCallback(() => {
10299
10295
  if (disabled) return;
10300
10296
  cursor.current = null;
10301
10297
  setVisible(true);
10302
10298
  }, [disabled]);
10303
- React41.useLayoutEffect(() => {
10299
+ React40.useLayoutEffect(() => {
10304
10300
  if (!visible) return;
10305
10301
  reposition();
10306
10302
  }, [visible, reposition]);
10307
- React41.useEffect(() => {
10303
+ React40.useEffect(() => {
10308
10304
  if (!visible || follow) return;
10309
10305
  const onChange = () => placeAtTrigger();
10310
10306
  window.addEventListener("scroll", onChange, true);
@@ -10314,11 +10310,11 @@ var Tooltip = (props) => {
10314
10310
  window.removeEventListener("resize", onChange);
10315
10311
  };
10316
10312
  }, [visible, follow, placeAtTrigger]);
10317
- React41.useEffect(() => () => {
10313
+ React40.useEffect(() => () => {
10318
10314
  window.clearTimeout(delayTimer.current);
10319
10315
  cancelAnimationFrame(rafRef.current);
10320
10316
  }, []);
10321
- if (!title && !description) return /* @__PURE__ */ jsx352(Fragment5, { children });
10317
+ if (!title && !description) return /* @__PURE__ */ jsx351(Fragment5, { children });
10322
10318
  return /* @__PURE__ */ jsxs222(
10323
10319
  "div",
10324
10320
  {
@@ -10332,7 +10328,7 @@ var Tooltip = (props) => {
10332
10328
  onBlur: close,
10333
10329
  children: [
10334
10330
  children,
10335
- visible && /* @__PURE__ */ jsx352(Portal_default, { children: /* @__PURE__ */ jsxs222(
10331
+ visible && /* @__PURE__ */ jsx351(Portal_default, { children: /* @__PURE__ */ jsxs222(
10336
10332
  "div",
10337
10333
  {
10338
10334
  ref: tooltipRef,
@@ -10340,8 +10336,8 @@ var Tooltip = (props) => {
10340
10336
  className: clsx_default("lib-xplat-tooltip", type),
10341
10337
  style: { position: "fixed", left: pos.left, top: pos.top },
10342
10338
  children: [
10343
- title && /* @__PURE__ */ jsx352("div", { className: "tooltip-title", children: title }),
10344
- description && /* @__PURE__ */ jsx352("div", { className: "tooltip-desc", children: description })
10339
+ title && /* @__PURE__ */ jsx351("div", { className: "tooltip-title", children: title }),
10340
+ description && /* @__PURE__ */ jsx351("div", { className: "tooltip-desc", children: description })
10345
10341
  ]
10346
10342
  }
10347
10343
  ) })
@@ -10353,11 +10349,11 @@ Tooltip.displayName = "Tooltip";
10353
10349
  var Tooltip_default = Tooltip;
10354
10350
 
10355
10351
  // src/components/Video/Video.tsx
10356
- import React42 from "react";
10357
- import { jsx as jsx353, jsxs as jsxs223 } from "react/jsx-runtime";
10352
+ import React41 from "react";
10353
+ import { jsx as jsx352, jsxs as jsxs223 } from "react/jsx-runtime";
10358
10354
  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: [
10359
- /* @__PURE__ */ jsx353("rect", { x: "3", y: "5", width: "18", height: "14", rx: "2" }),
10360
- /* @__PURE__ */ jsx353("rect", { x: "12", y: "11", width: "7", height: "6", rx: "1", fill: "currentColor" })
10355
+ /* @__PURE__ */ jsx352("rect", { x: "3", y: "5", width: "18", height: "14", rx: "2" }),
10356
+ /* @__PURE__ */ jsx352("rect", { x: "12", y: "11", width: "7", height: "6", rx: "1", fill: "currentColor" })
10361
10357
  ] });
10362
10358
  var formatTime = (sec) => {
10363
10359
  if (!Number.isFinite(sec) || sec < 0) return "0:00";
@@ -10365,7 +10361,7 @@ var formatTime = (sec) => {
10365
10361
  const s = Math.floor(sec % 60);
10366
10362
  return `${m}:${s.toString().padStart(2, "0")}`;
10367
10363
  };
10368
- var Video = React42.forwardRef((props, ref) => {
10364
+ var Video = React41.forwardRef((props, ref) => {
10369
10365
  const {
10370
10366
  src,
10371
10367
  poster,
@@ -10389,21 +10385,21 @@ var Video = React42.forwardRef((props, ref) => {
10389
10385
  children,
10390
10386
  ...rest
10391
10387
  } = props;
10392
- const containerRef = React42.useRef(null);
10393
- const videoRef = React42.useRef(null);
10394
- const [isPlaying, setIsPlaying] = React42.useState(Boolean(autoPlay));
10395
- const [isLoaded, setIsLoaded] = React42.useState(false);
10396
- const [currentTime, setCurrentTime] = React42.useState(0);
10397
- const [duration, setDuration] = React42.useState(0);
10398
- const [buffered, setBuffered] = React42.useState(0);
10399
- const [volume, setVolume] = React42.useState(1);
10400
- const [isMuted, setIsMuted] = React42.useState(Boolean(muted));
10401
- const [isFullscreen, setIsFullscreen] = React42.useState(false);
10402
- const [playbackRate, setPlaybackRate] = React42.useState(1);
10403
- const [rateMenuOpen, setRateMenuOpen] = React42.useState(false);
10404
- const [captionsOn, setCaptionsOn] = React42.useState(false);
10405
- const [isPip, setIsPip] = React42.useState(false);
10406
- const setRefs = React42.useCallback(
10388
+ const containerRef = React41.useRef(null);
10389
+ const videoRef = React41.useRef(null);
10390
+ const [isPlaying, setIsPlaying] = React41.useState(Boolean(autoPlay));
10391
+ const [isLoaded, setIsLoaded] = React41.useState(false);
10392
+ const [currentTime, setCurrentTime] = React41.useState(0);
10393
+ const [duration, setDuration] = React41.useState(0);
10394
+ const [buffered, setBuffered] = React41.useState(0);
10395
+ const [volume, setVolume] = React41.useState(1);
10396
+ const [isMuted, setIsMuted] = React41.useState(Boolean(muted));
10397
+ const [isFullscreen, setIsFullscreen] = React41.useState(false);
10398
+ const [playbackRate, setPlaybackRate] = React41.useState(1);
10399
+ const [rateMenuOpen, setRateMenuOpen] = React41.useState(false);
10400
+ const [captionsOn, setCaptionsOn] = React41.useState(false);
10401
+ const [isPip, setIsPip] = React41.useState(false);
10402
+ const setRefs = React41.useCallback(
10407
10403
  (el) => {
10408
10404
  videoRef.current = el;
10409
10405
  if (typeof ref === "function") ref(el);
@@ -10411,14 +10407,14 @@ var Video = React42.forwardRef((props, ref) => {
10411
10407
  },
10412
10408
  [ref]
10413
10409
  );
10414
- React42.useEffect(() => {
10410
+ React41.useEffect(() => {
10415
10411
  const onFsChange = () => {
10416
10412
  setIsFullscreen(document.fullscreenElement === containerRef.current);
10417
10413
  };
10418
10414
  document.addEventListener("fullscreenchange", onFsChange);
10419
10415
  return () => document.removeEventListener("fullscreenchange", onFsChange);
10420
10416
  }, []);
10421
- React42.useEffect(() => {
10417
+ React41.useEffect(() => {
10422
10418
  const v = videoRef.current;
10423
10419
  if (!v) return;
10424
10420
  const onEnter = () => setIsPip(true);
@@ -10538,7 +10534,7 @@ var Video = React42.forwardRef((props, ref) => {
10538
10534
  ref: containerRef,
10539
10535
  className: clsx_default("lib-xplat-video", showControls && "has-controls"),
10540
10536
  children: [
10541
- /* @__PURE__ */ jsx353(
10537
+ /* @__PURE__ */ jsx352(
10542
10538
  "video",
10543
10539
  {
10544
10540
  ref: setRefs,
@@ -10559,7 +10555,7 @@ var Video = React42.forwardRef((props, ref) => {
10559
10555
  children
10560
10556
  }
10561
10557
  ),
10562
- showCenterPlay && /* @__PURE__ */ jsx353(
10558
+ showCenterPlay && /* @__PURE__ */ jsx352(
10563
10559
  "button",
10564
10560
  {
10565
10561
  type: "button",
@@ -10571,11 +10567,11 @@ var Video = React42.forwardRef((props, ref) => {
10571
10567
  onClick: togglePlay,
10572
10568
  "aria-label": isPlaying ? "\uC77C\uC2DC\uC815\uC9C0" : "\uC7AC\uC0DD",
10573
10569
  tabIndex: -1,
10574
- children: /* @__PURE__ */ jsx353("span", { className: "center-play-icon", children: /* @__PURE__ */ jsx353(PlayCircleIcon_default, {}) })
10570
+ children: /* @__PURE__ */ jsx352("span", { className: "center-play-icon", children: /* @__PURE__ */ jsx352(PlayCircleIcon_default, {}) })
10575
10571
  }
10576
10572
  ),
10577
10573
  showControls && /* @__PURE__ */ jsxs223("div", { className: "controls", onClick: (e) => e.stopPropagation(), children: [
10578
- /* @__PURE__ */ jsx353(
10574
+ /* @__PURE__ */ jsx352(
10579
10575
  "input",
10580
10576
  {
10581
10577
  type: "range",
@@ -10593,28 +10589,28 @@ var Video = React42.forwardRef((props, ref) => {
10593
10589
  }
10594
10590
  ),
10595
10591
  /* @__PURE__ */ jsxs223("div", { className: "controls-row", children: [
10596
- /* @__PURE__ */ jsx353(
10592
+ /* @__PURE__ */ jsx352(
10597
10593
  "button",
10598
10594
  {
10599
10595
  type: "button",
10600
10596
  className: "control-btn",
10601
10597
  onClick: togglePlay,
10602
10598
  "aria-label": isPlaying ? "\uC77C\uC2DC\uC815\uC9C0" : "\uC7AC\uC0DD",
10603
- children: isPlaying ? /* @__PURE__ */ jsx353(PauseIcon_default, {}) : /* @__PURE__ */ jsx353(PlayIcon_default, {})
10599
+ children: isPlaying ? /* @__PURE__ */ jsx352(PauseIcon_default, {}) : /* @__PURE__ */ jsx352(PlayIcon_default, {})
10604
10600
  }
10605
10601
  ),
10606
10602
  /* @__PURE__ */ jsxs223("div", { className: "volume-group", children: [
10607
- /* @__PURE__ */ jsx353(
10603
+ /* @__PURE__ */ jsx352(
10608
10604
  "button",
10609
10605
  {
10610
10606
  type: "button",
10611
10607
  className: "control-btn",
10612
10608
  onClick: toggleMute,
10613
10609
  "aria-label": isMuted ? "\uC74C\uC18C\uAC70 \uD574\uC81C" : "\uC74C\uC18C\uAC70",
10614
- children: /* @__PURE__ */ jsx353(VolumeGlyph, {})
10610
+ children: /* @__PURE__ */ jsx352(VolumeGlyph, {})
10615
10611
  }
10616
10612
  ),
10617
- /* @__PURE__ */ jsx353(
10613
+ /* @__PURE__ */ jsx352(
10618
10614
  "input",
10619
10615
  {
10620
10616
  type: "range",
@@ -10634,7 +10630,7 @@ var Video = React42.forwardRef((props, ref) => {
10634
10630
  " / ",
10635
10631
  formatTime(duration)
10636
10632
  ] }),
10637
- /* @__PURE__ */ jsx353("div", { className: "controls-spacer" }),
10633
+ /* @__PURE__ */ jsx352("div", { className: "controls-spacer" }),
10638
10634
  playbackRates && playbackRates.length > 0 && /* @__PURE__ */ jsxs223("div", { className: clsx_default("rate-group", rateMenuOpen && "is-open"), children: [
10639
10635
  /* @__PURE__ */ jsxs223(
10640
10636
  "button",
@@ -10650,7 +10646,7 @@ var Video = React42.forwardRef((props, ref) => {
10650
10646
  ]
10651
10647
  }
10652
10648
  ),
10653
- rateMenuOpen && /* @__PURE__ */ jsx353("ul", { className: "rate-menu", role: "menu", children: playbackRates.map((r2) => /* @__PURE__ */ jsx353("li", { children: /* @__PURE__ */ jsxs223(
10649
+ rateMenuOpen && /* @__PURE__ */ jsx352("ul", { className: "rate-menu", role: "menu", children: playbackRates.map((r2) => /* @__PURE__ */ jsx352("li", { children: /* @__PURE__ */ jsxs223(
10654
10650
  "button",
10655
10651
  {
10656
10652
  type: "button",
@@ -10664,7 +10660,7 @@ var Video = React42.forwardRef((props, ref) => {
10664
10660
  }
10665
10661
  ) }, r2)) })
10666
10662
  ] }),
10667
- showCaptions && /* @__PURE__ */ jsx353(
10663
+ showCaptions && /* @__PURE__ */ jsx352(
10668
10664
  "button",
10669
10665
  {
10670
10666
  type: "button",
@@ -10672,37 +10668,37 @@ var Video = React42.forwardRef((props, ref) => {
10672
10668
  onClick: toggleCaptions,
10673
10669
  "aria-label": captionsOn ? "\uC790\uB9C9 \uB044\uAE30" : "\uC790\uB9C9 \uCF1C\uAE30",
10674
10670
  "aria-pressed": captionsOn,
10675
- children: /* @__PURE__ */ jsx353(TypeIcon_default, {})
10671
+ children: /* @__PURE__ */ jsx352(TypeIcon_default, {})
10676
10672
  }
10677
10673
  ),
10678
- showPip && pipSupported && /* @__PURE__ */ jsx353(
10674
+ showPip && pipSupported && /* @__PURE__ */ jsx352(
10679
10675
  "button",
10680
10676
  {
10681
10677
  type: "button",
10682
10678
  className: clsx_default("control-btn", isPip && "is-active"),
10683
10679
  onClick: togglePip,
10684
10680
  "aria-label": isPip ? "PIP \uC885\uB8CC" : "PIP",
10685
- children: /* @__PURE__ */ jsx353(PipIcon, {})
10681
+ children: /* @__PURE__ */ jsx352(PipIcon, {})
10686
10682
  }
10687
10683
  ),
10688
- showDownload && /* @__PURE__ */ jsx353(
10684
+ showDownload && /* @__PURE__ */ jsx352(
10689
10685
  "a",
10690
10686
  {
10691
10687
  className: "control-btn",
10692
10688
  href: src,
10693
10689
  download: downloadFileName ?? true,
10694
10690
  "aria-label": "\uB2E4\uC6B4\uB85C\uB4DC",
10695
- children: /* @__PURE__ */ jsx353(DownloadIcon_default, {})
10691
+ children: /* @__PURE__ */ jsx352(DownloadIcon_default, {})
10696
10692
  }
10697
10693
  ),
10698
- /* @__PURE__ */ jsx353(
10694
+ /* @__PURE__ */ jsx352(
10699
10695
  "button",
10700
10696
  {
10701
10697
  type: "button",
10702
10698
  className: "control-btn",
10703
10699
  onClick: toggleFullscreen,
10704
10700
  "aria-label": isFullscreen ? "\uC804\uCCB4\uD654\uBA74 \uC885\uB8CC" : "\uC804\uCCB4\uD654\uBA74",
10705
- children: isFullscreen ? /* @__PURE__ */ jsx353(MinimizeIcon_default, {}) : /* @__PURE__ */ jsx353(MaximizeIcon_default, {})
10701
+ children: isFullscreen ? /* @__PURE__ */ jsx352(MinimizeIcon_default, {}) : /* @__PURE__ */ jsx352(MaximizeIcon_default, {})
10706
10702
  }
10707
10703
  )
10708
10704
  ] })
@@ -10715,7 +10711,7 @@ Video.displayName = "Video";
10715
10711
  var Video_default = Video;
10716
10712
 
10717
10713
  // src/layout/Grid/FullGrid/FullGrid.tsx
10718
- import { jsx as jsx354 } from "react/jsx-runtime";
10714
+ import { jsx as jsx353 } from "react/jsx-runtime";
10719
10715
  var GAP_MAP = {
10720
10716
  none: "var(--spacing-space-none)",
10721
10717
  xs: "var(--spacing-space-1)",
@@ -10728,13 +10724,13 @@ var GAP_MAP = {
10728
10724
  var FullGrid = (props) => {
10729
10725
  const { children, gap } = props;
10730
10726
  const style = gap != null ? { gap: GAP_MAP[gap] } : void 0;
10731
- return /* @__PURE__ */ jsx354("div", { className: "lib-xplat-full-grid", style, children });
10727
+ return /* @__PURE__ */ jsx353("div", { className: "lib-xplat-full-grid", style, children });
10732
10728
  };
10733
10729
  FullGrid.displayName = "FullGrid";
10734
10730
  var FullGrid_default = FullGrid;
10735
10731
 
10736
10732
  // src/layout/Grid/FullScreen/FullScreen.tsx
10737
- import { jsx as jsx355 } from "react/jsx-runtime";
10733
+ import { jsx as jsx354 } from "react/jsx-runtime";
10738
10734
  var GAP_MAP2 = {
10739
10735
  none: "var(--spacing-space-none)",
10740
10736
  xs: "var(--spacing-space-1)",
@@ -10747,13 +10743,13 @@ var GAP_MAP2 = {
10747
10743
  var FullScreen = (props) => {
10748
10744
  const { children, gap } = props;
10749
10745
  const style = gap != null ? { gap: GAP_MAP2[gap] } : void 0;
10750
- return /* @__PURE__ */ jsx355("div", { className: "lib-xplat-full-screen", style, children });
10746
+ return /* @__PURE__ */ jsx354("div", { className: "lib-xplat-full-screen", style, children });
10751
10747
  };
10752
10748
  FullScreen.displayName = "FullScreen";
10753
10749
  var FullScreen_default = FullScreen;
10754
10750
 
10755
10751
  // src/layout/Grid/Item/Item.tsx
10756
- import { jsx as jsx356 } from "react/jsx-runtime";
10752
+ import { jsx as jsx355 } from "react/jsx-runtime";
10757
10753
  var calculateSpans = (column) => {
10758
10754
  const spans = {};
10759
10755
  let inherited = column.default;
@@ -10770,35 +10766,35 @@ var GridItem = ({ column, children, className }) => {
10770
10766
  Object.entries(spans).forEach(([key, value]) => {
10771
10767
  style[`--column-${key}`] = value;
10772
10768
  });
10773
- return /* @__PURE__ */ jsx356("div", { className: clsx_default("lib-xplat-grid-item", className), style, children });
10769
+ return /* @__PURE__ */ jsx355("div", { className: clsx_default("lib-xplat-grid-item", className), style, children });
10774
10770
  };
10775
10771
  GridItem.displayName = "GridItem";
10776
10772
  var Item_default = GridItem;
10777
10773
 
10778
10774
  // src/layout/Header/Header.tsx
10779
- import { jsx as jsx357, jsxs as jsxs224 } from "react/jsx-runtime";
10775
+ import { jsx as jsx356, jsxs as jsxs224 } from "react/jsx-runtime";
10780
10776
  var Header = ({
10781
10777
  logo,
10782
10778
  centerContent,
10783
10779
  rightContent
10784
10780
  }) => {
10785
10781
  return /* @__PURE__ */ jsxs224("div", { className: "lib-xplat-layout-header", children: [
10786
- /* @__PURE__ */ jsx357("div", { children: logo }),
10787
- /* @__PURE__ */ jsx357("div", { children: centerContent }),
10788
- /* @__PURE__ */ jsx357("div", { children: rightContent })
10782
+ /* @__PURE__ */ jsx356("div", { children: logo }),
10783
+ /* @__PURE__ */ jsx356("div", { children: centerContent }),
10784
+ /* @__PURE__ */ jsx356("div", { children: rightContent })
10789
10785
  ] });
10790
10786
  };
10791
10787
  Header.displayName = "Header";
10792
10788
  var Header_default = Header;
10793
10789
 
10794
10790
  // src/layout/Layout/Layout.tsx
10795
- import { Fragment as Fragment6, jsx as jsx358, jsxs as jsxs225 } from "react/jsx-runtime";
10791
+ import { Fragment as Fragment6, jsx as jsx357, jsxs as jsxs225 } from "react/jsx-runtime";
10796
10792
  var Layout = (props) => {
10797
10793
  const { header, sideBar, children } = props;
10798
- return /* @__PURE__ */ jsx358("div", { className: "lib-xplat-layout", children: /* @__PURE__ */ jsxs225("div", { className: "lib-xplat-layout-content-wrapper", children: [
10799
- sideBar && /* @__PURE__ */ jsx358(Fragment6, { children: sideBar }),
10794
+ return /* @__PURE__ */ jsx357("div", { className: "lib-xplat-layout", children: /* @__PURE__ */ jsxs225("div", { className: "lib-xplat-layout-content-wrapper", children: [
10795
+ sideBar && /* @__PURE__ */ jsx357(Fragment6, { children: sideBar }),
10800
10796
  /* @__PURE__ */ jsxs225("div", { className: "lib-xplat-layout-content", children: [
10801
- header && /* @__PURE__ */ jsx358("div", { className: "lib-xplat-layout-conent-header", children: header }),
10797
+ header && /* @__PURE__ */ jsx357("div", { className: "lib-xplat-layout-conent-header", children: header }),
10802
10798
  children
10803
10799
  ] })
10804
10800
  ] }) });
@@ -10807,31 +10803,31 @@ Layout.displayName = "Layout";
10807
10803
  var Layout_default = Layout;
10808
10804
 
10809
10805
  // src/layout/SideBar/SideBar.tsx
10810
- import React44 from "react";
10806
+ import React43 from "react";
10811
10807
 
10812
10808
  // src/layout/SideBar/SideBarContext.tsx
10813
- import React43 from "react";
10814
- var SideBarContext = React43.createContext(null);
10809
+ import React42 from "react";
10810
+ var SideBarContext = React42.createContext(null);
10815
10811
  var useSideBarContext = () => {
10816
- const ctx = React43.useContext(SideBarContext);
10812
+ const ctx = React42.useContext(SideBarContext);
10817
10813
  if (!ctx) throw new Error("Error");
10818
10814
  return ctx;
10819
10815
  };
10820
10816
  var SideBarContext_default = SideBarContext;
10821
10817
 
10822
10818
  // src/layout/SideBar/SideBar.tsx
10823
- import { jsx as jsx359 } from "react/jsx-runtime";
10819
+ import { jsx as jsx358 } from "react/jsx-runtime";
10824
10820
  var SideBar = (props) => {
10825
10821
  const { children, className } = props;
10826
- const [isOpen, setIsOpen] = React44.useState(true);
10822
+ const [isOpen, setIsOpen] = React43.useState(true);
10827
10823
  const handleSwitchSideBar = () => {
10828
10824
  setIsOpen((prev) => !prev);
10829
10825
  };
10830
- return /* @__PURE__ */ jsx359(
10826
+ return /* @__PURE__ */ jsx358(
10831
10827
  SideBarContext_default.Provider,
10832
10828
  {
10833
10829
  value: { isSidebarOpen: isOpen, handleSwitchSideBar },
10834
- children: /* @__PURE__ */ jsx359(
10830
+ children: /* @__PURE__ */ jsx358(
10835
10831
  "div",
10836
10832
  {
10837
10833
  className: clsx_default(